1.二选一数据选择器---mux2tol(7月9号)
``门级描述方式:
module mux2tol(D0,D1,S,Y);
input D0,D1,S;
output Y;
wire Snot,A,B;//内部节点说明
//对电路的逻辑功能进行描述
not U1(Snot,S);
and U2(A,D0,Snot);
and U3(B,S,D1);
or U4(Y,A,B);
endmodule
``数据流描述方式:
module mux2tol_dataflow(D0,D1,S,Y)
input D0,D1,S,Y; //输入端口声明
output Y; //输出端口声明
wire Y; //变量的数据类型声明
//电路功能描述
assign Y = ( ~S & D0 | S & D1); //存疑:与门用逻辑与还是按位与
endmodule
``
``行为描述方式:
module mux2tol_bh(D0,D1,S,Y);
input D0,D1,S;
output Y;
reg Y;
//高级语言对电路的行为进行描述:
always @(S or D0 or D1) //敏感变量列表:循环执行语句
if(S==1) Y = D1;
else Y = D0;
endmodule //利用if-else的过程性语言
``
always PK assign:
always:过程赋值语句只能给寄存器变量赋值,描述时序逻辑,且内部包含的语句是按代码排列顺序执行。
assign:描述组合逻辑电路,多条assign语句都是并行执行的。
修订后的Verilog标准的敏感变量列表中,可以用逗号代替or,也可以用*号来代替敏感变量列表中所有输入信号
``修订后:
module mux2_tol_bh( )
input D0,D1,S,Y;
output reg Y ;
always@(D0,D1,S)
if(S) Y = D1;
else Y = D0;
``
2018.7.11
``开关级建模方法:nmos(d,s,g);
module NAND2(L,A,B);
input A,B;
output L;
supply1 Vdd;
supply0 GND;
wire W1;
pmos(L,Vdd,A); //顺序:d,s,g
pmos(L,Vdd,B);
nmos(L,W1,A);
nmos(W1,GND,B);
endmodule
``
2.CMOS传输门构成的异或门:
``CMOS传输门:开关级建模
//cmos C1(输出信号,输入信号,Tn管控制信号,Tp管控制信号)
module mymux2tol(A,B,L);
input A,B;
output L;
wire Anot,Bnot;
inverterV1(Anot,A);
//调用开关级自定义下层模块inverter,调用名不能省略
inverterV2(Bout,B);
cmos (L,Anot,B,Bnot);
cmos (L,A,Bnot,B);
endmodule
***********************************************************************************3.CMOS反相器
``CMOS反相器
module inverter(Vo,Vi);
input Vi;
output Vo;
supply1 Vdd;
supply0 GND;
pmos (Vo,Vdd,Vi);
nmos(Vo,GND,Vi);
endmodule
``