1.设计输入(编写verilog语言代码)
module mux2(
/*
整个模块所存在端口
*/
a,
b,
sel,
out
);
/*
对端口进行定义
*/
input a;
input b;
input sel;
output out;
/*
二选一多路器
assign表示赋值语句
(sel==1)?a:b,sel==1条件满足把a赋给out,条件不满足把b赋给out
*/
assign out = (sel==1)?a:b;
endmodule
2.分析和综合
点击红色箭头按钮选择'Run Synthesis',右上角圈圈在转表明在运行,运行完后选则观察报告,如绿色箭头所示,没有红色报错,说明语法和逻辑错误。

3.仿真
a.创建仿真文件

b.仿真代码
`timescale 1ns / 1ns
module mux2_tb();
//激励信号要定义成reg型,reg用于表示寄存器类型,用于存储数据,在过程块中进行操作
//wire用于表示线类型,用于建立模块之间的连接,在端口声明中使用
reg s_a;
reg s_b;
reg sel;
//out输出像是一根电缆,定义为wire型
wire out;
mux2 mux2_inst0(
/*
整个模块所存在端口
*/
.a(s_a),
.b(s_b),
.sel(sel),
.out(out)
);
initial begin
s_a=0;s_b=0;sel=0;
#200;//延时2s
s_a=0;s_b=0;sel=1;
#200;//延时2s
s_a=0;s_b=1;sel=0;
#200;//延时2s
s_a=0;s_b=1;sel=1;
#200;//延时2s
s_a=1;s_b=0;sel=0;
#200;//延时2s
s_a=1;s_b=0;sel=1;
#200;//延时2s
s_a=1;s_b=1;sel=0;
#200;//延时2s
s_a=1;s_b=1;sel=1;
#200;//延时2s
end
endmodule
c.进行仿真

d.仿真结果

4.布局布线

布局布线之后再次仿真,发现out信号变化出现延迟。


被折叠的 条评论
为什么被折叠?



