Verilog学习笔记一(反相器、与非门)

设计数字电路的方法演变

Verilog学习笔记一(反相器、与非门)_第1张图片

一、反相器

Verilog学习笔记一(反相器、与非门)_第2张图片

verilog代码

//反相器设计
`timescale 1ns/10ps //1ns为时间单位,10ps的精度
module learning(A, Y);

input A;
output Y;

assign Y=~A;

endmodule

//testbench of inv
module learning_tb;
reg a;
wire y;


learning learning(
        .A(a),
        .Y(y)
        );

initial begin
        a<=0;
    #10 a<=1;
    #10 a<=0;
    #10 a<=1;
    #10 $stop;
end

endmodule

 wire表示直通,即输入有变化,输出马上无条件地反映,reg表示一定要有触发,输出才会反映输入的状态。

在quartus中创建工程后,点击下面的按钮编译:

Verilog学习笔记一(反相器、与非门)_第3张图片

 然后再进行仿真:Verilog学习笔记一(反相器、与非门)_第4张图片

右键点击work下的testbench进行simulate:Verilog学习笔记一(反相器、与非门)_第5张图片

 将参数加人入到波形中:Verilog学习笔记一(反相器、与非门)_第6张图片

 先点击左边的restart,然后再点击右边的run all:

 然后就会出现波形图了:Verilog学习笔记一(反相器、与非门)_第7张图片

Verilog学习笔记一(反相器、与非门)_第8张图片

二、与非门

Verilog学习笔记一(反相器、与非门)_第9张图片

verilog代码:

//与非门设计
`timescale 1ns/10ps //1ns为时间单位,10ps的精度
module and_not_gate(A, B, Y);

input A,B;
output Y;

assign Y=~(A&B);

endmodule

//testbench of and_not_gate

module and_not_gate_tb;
reg a,b;
wire y;

and_not_gate and_not_gate(
    .A(a),
    .B(b),
    .Y(y)
);

initial begin
    a<=0;
    b<=0;
    #2; //延时2s
    a<=1;
    b<=0;
    #2;
    a<=0;
    b<=1;
    #2;
    a<=1;
    b<=1;
    #2;
    $stop;
end

endmodule

Verilog学习笔记一(反相器、与非门)_第10张图片

 波形:Verilog学习笔记一(反相器、与非门)_第11张图片

 Verilog学习笔记一(反相器、与非门)_第12张图片

 代码:

//与非门设计
`timescale 1ns/10ps //1ns为时间单位,10ps的精度
module and_not_gate(A, B, Y);

input[3:0] A,B;
output[3:0] Y;

assign Y=~(A&B);

endmodule

//testbench of and_not_gate

module and_not_gate_tb;
reg[3:0] a,b;
wire[3:0] y;

and_not_gate and_not_gate(
    .A(a),
    .B(b),
    .Y(y)
);

initial begin
    a<=4'b0000;
    b<=4'b0000;
    #2; //延时2s
    a<=4'b1111;
    b<=4'b0000;
    #2;
    a<=4'b0000;
    b<=4'b1111;
    #2;
    a<=4'b1111;
    b<=4'b1111;
    #2;
    $stop;
end

endmodule

Verilog学习笔记一(反相器、与非门)_第13张图片

 Verilog学习笔记一(反相器、与非门)_第14张图片

 Verilog学习笔记一(反相器、与非门)_第15张图片

你可能感兴趣的:(Verilog学习,学习,fpga开发)