• HDL源文件

    // 3217005109_BasGate.v
    module gates_1(A,B,Y1,Y2,Y3,Y4,Y5);
        input A,B;
        output Y1,Y2,Y3,Y4,Y5;
        assign Y1=A&B; //为输出信号赋值;可以使用三目运算符:y = (s == 0) ? a : b; s为0时y=a,否则y=b
        assign Y2=A|B;
        assign Y3=~(A&B);
        assign Y4=~(A|B);
        assign Y5=A^B;
    endmodule
    module gates_2(A,Y);
        input [1:6]A;
        output [1:6]Y;
        assign Y=~A;
    endmodule
    
    //3输入、1输入的举重裁判表决电路
    module gates_3(A,B,C,Y);
        input A,B,C;
        output Y;
        assign Y=A&B|B&C|A&C;
    endmodule
    
    //3输入、1输入的交通灯故障检测电路
    module gates_4(R,Y,G,Z);
        input R,Y,G;
        output Z;
        assign ~(R|Y|G)|RY|RG|YG;
    endmodule
    
  • 按hdl editor旁边那个按钮新建测试文件

    // test_BasGate.v
    `timescale 1ns/1ns
    module testBasGate_1();
        reg A,B; //输入信号:reg表示需要保存
        wire Y1,Y2,Y3,Y4,Y5; //wire:默认类型,不保存值
        gates_1 v1(A,B,Y1,Y2,Y3,Y4,Y5); //实例化了一个gates_1模块,名为v1;后面有很多个同名的,其实应该不同才对,这样就可以不注释掉模块二通过指定options来对特定模块进行仿真
    
        initial
            begin
            A=0;B=0;
            #10 B=1; //信号翻转;10ns后B变为1
            #10 A=1;
            #10 B=0;
            #10;
            end
    endmodule
    
    module testBasGate_2();
        reg [1:6]A;
        wire [1:6]Y;
        gates_2 v2(A,Y);
        initial
            begin
            A=000001;
            #10 A=A<<1;
            #10 A=A<<1;
            #10 A=A<<1;
            #10 A=A<<1;
            #10 A=A<<1;
            end
    endmodule
    
    //举重电路
    module testBasGate_3();
        reg A,B,C; //输入信号:reg表示需要保存
        wire Y; //wire:默认类型,不保存值
        gates_3 v1(A,B,C,Y); //实例化了一个gates_1模块,名为v1
    
        initial
            begin
            #10 A=0;B=0;C=0; //信号翻转;10ns后B变为1
            #10 A=0;B=0;C=1;
            #10 A=0;B=1;C=0;
            #10 A=0;B=1;C=1;
            #10 A=1;B=0;C=0;
            #10 A=1;B=0;C=1;
            #10 A=1;B=1;C=0;
            #10 A=1;B=1;C=1;
            end
    endmodule
    
    //交通灯故障电路
    module testBasGate_4();
        reg R,Y,G; //输入信号:reg表示需要保存
        wire Z; //wire:默认类型,不保存值
        gates_4 v1(R,Y,G,Z); //实例化了一个gates_1模块,名为v1
    
        initial
            begin
            #10 R=0;Y=0;G=0; //信号翻转;10ns后B变为1
            #10 R=0;Y=0;G=1;
            #10 R=0;Y=1;G=0;
            #10 R=0;Y=1;G=1;
            #10 R=1;Y=0;G=0;
            #10 R=1;Y=0;G=1;
            #10 R=1;Y=1;G=0;
            #10 R=1;Y=1;G=1;
            end
    endmodule
    
  • 按M开头那个按钮进行第一次仿真,先进行options配置
  • 1000ns:随便设置都可以
  • testBasGate_3:测试文件中的module名
  • v1: 实例化模块名
  • 然后按sy开头那个按钮运行综合结果
  • 进行第二次仿真
    按最下面那个按钮,把所有模块都点绿(一路按默认值)
  • 进行第三次仿真
  • 点最后一行第二个按钮,接烧录器,开箱子电源,点最后一个模块,pass之后拔下烧录器,点开主界面最后一行的按钮,查看io引脚,开始接线。