要求:
(1)分别新建工程文件(工程名:_学号_chap2_4_X),新建 verilog HDL 文件,将代码输入;
(2)选择菜单 Processing--Start Compilation,分析并综合电路,若有错误请自行更正,打印 代码和编译报告(Flow Summary);
(3)选择菜单 Tools—Netlist Viewers—RTL Viewer,查看逻辑电路图并截图打印;
(4)将文件 Waveform.vwf(群文件中下载)拷贝到新建的工程文件夹中(也可自行建立该文 件),打开该文件,并选择菜单 Simulation—Run Functional Simulation,分析仿真结果;
第一个文件是一个顶层文件下面包含四个文件,分别对应包含的四段代码。
module dingcengwenjian(A,B,SEL,L,OUT);//这里的文件名是一个顶层文件,需要改成你自己的工程文件名
input A,B,SEL;
output [2:0] L;
output OUT;
mux2to1_ga (A,B,SEL,OUT);
_2to1muxtri(A,B,SEL,L[0]);
mux2x1_df(A,B,SEL,L[1]);
mux2to1_bh(A,B,SEL,L[2]);
endmodule
module mux2to1_ga(A,B,SEL,OUT);//代码1
input A,B,SEL;
output OUT;
wire selnot,A1,B1;
not U1(selnot,SEL);
and U2(A1,A,selnot);
and U3(B1,B,SEL);
or U4(OUT,A1,B1);
endmodule
module _2to1muxtri(A,B,SEL,L);//代码2
input A,B,SEL;
output L;
tri L; //三态信号:高阻态,低电平,高电平
bufif0(L,A,SEL); //低电平使能 将A的值传入L
bufif1(L,B,SEL); //高电平使能 将B的值传入L
endmodule
module mux2x1_df(A,B,SEL,L);//代码三
input A,B,SEL;
output L;
assign L=SEL?B:A;//sel为1 将B的值赋给L,反之,将A的值赋给L
endmodule
module mux2to1_bh(A,B,SEL,L);//代码4 一个简单的if else语句
input A,B,SEL;
output L;
reg L;
always@(SEL or A or B)
if (SEL==1)
L=B;
else
L=A;
endmodule
仿真波形图:
RTL图: