第一节 基本逻辑门设计与仿真
一、1bits反相器
1.电路符号
2.真值表
3.电路原理图
4.verilog设计代码
module inverter_gate(A,Y); input A; output Y; assign Y = ~ A; endmodule
5.仿真代码
//testbench of inverter_gate `timescale 1ns/10ps module inverter_gate_testbench; reg aa; wire yy; //instantiation module inverter_gate U1( .A(aa), .Y(yy) ); initial begin #0 aa <= 0; #10 aa <= 1; #10 aa <= 0; #10 aa <= 1; #10 aa <= 0; #10 aa <= 1; #10 $stop; end endmodule
6.仿真结果
二、1bits与非门
1.电路符号
2.真值表
3.电路原理图
两个NMOS串联和两个PMOS并联
4.verilog设计代码
module nand_gate( input A,B, output Y ); assign Y = ~(A&B); endmodule
5.仿真代码
//Testbench of nand_gate `timescale 1ns/10ps module nand_gate_testbench(); reg aa,bb; wire yy; //instantiation the module nand_gate U1( .A(aa), .B(bb), .Y(yy) ); // aa and bb signal initial begin #0 aa <= 0; bb <= 0; #20 aa <= 0; bb <= 1; #10 aa <= 1; bb <= 0; #20 aa <= 1; bb <= 1; #20 $stop; end endmodule
6.仿真结果
三、其它知识点
1.reg型变量必须使用非阻塞赋值,即使用 “<=”。
2.使用非阻塞赋值才能综合出实际电路。
四、8bits反相器
1.电路符号
2.verilog 设计代码
module inverter8_gate( input [7:0] A, output [7:0] Y ); assign Y = ~ A; endmodule
3. 仿真代码
//testbench of inverter_gate `timescale 1ns/10ps module inverter8_gate_testbench; reg [7:0] aa; wire [7:0] yy; //instantiation the module inverter8_gate U1( .A(aa), .Y(yy) ); initial begin #0 aa <= 8'b0000_0000; #10 aa <= 8'b0000_0010; #10 aa <= 8'b0000_0100; #10 aa <= 8'b0000_1000; #10 aa <= 8'b0001_0000; #10 aa <= 8'b1111_0000; #10 $stop; end endmodule
4.仿真结果
五、4bits与非门
1.电路符号
2.verilog 设计代码
module nand4_gate( input [3:0] A,B, output [3:0] Y ); assign Y = ~(A&B); endmodule
3. 仿真代码
//Testbench of nand_gate `timescale 1ns/10ps module nand4_gate_testbench(); reg [3:0] aa,bb; wire [3:0] yy; //instantiation the module nand4_gate U1( .A(aa), .B(bb), .Y(yy) ); // aa and bb signal initial begin #0 aa <= 4'b0000; bb <= 4'b0000; #20 aa <= 4'b0000; bb <= 4'b0001; #10 aa <= 4'b0010; bb <= 4'b0000; #20 aa <= 4'b1111; bb <= 4'b1111; #20 $stop; end endmodule
4.仿真结果
六、位运算符
以下表中的运算符叫位运算符,表示按位进行运算,表中位宽为1只是特例。