一、实验任务
本节的实验任务是使用 ZYNQ 开发板来设计一个简单的 2 选 1 多路选择器,主要功能是通过选通控制 信号 sel 确定输入信号 in1 和 in2 哪一个信号作为输出。当选通控制信号 sel 为 1 时,输出为 in2 端信 号;当选通控制信号 sel 为 0 时,信号输出为 in1 端信号。
二、Verilog代码
module MUX(
input in1,
input in2,
input sel,
output out
);
assign out =(sel==1'b1)? in2 : in1;
//always@(*)
// begin
// case(sel)
// 1'b1:out<=in2;
// 1'b0:out<=in1;
// default:;
// endcase
// end
endmodule
三、testbench 的编写
module MUX_tb();
reg in1;
reg in2;
reg sel;
wire out;
initial
begin
in1=1'b0;
in2=1'b0;
sel=1'b0;
#100
in1=1'b0;
in2=1'b0;
sel=1'b1;
#100
in1=1'b0;
in2=1'b1;
sel=1'b0;
#100
in1=1'b0;
in2=1'b1;
sel=1'b1;
#100
in1=1'b1;
in2=1'b0;
sel=1'b0;
#100
in1=1'b1;
in2=1'b0;
sel=1'b1;
#100
in1=1'b1;
in2=1'b1;
sel=1'b0;
#100
in1=1'b1;
in2=1'b1;
sel=1'b1;
end
MUX MUX2_1(
.in1(in1),
.in2(in2),
.sel(sel),
.out(out)
) ;
endmodule
三、仿真
点击vivado中run simulation ,得到波形图如下:
若出现错误。可以查看xvlog.log文件,在sim_1\behave\xsim目录下
四、添加引脚约束
根据板子的引脚来配置
set_property -dict {PACKAGE_PIN L14 IOSTANDARD LVCMOS33} [get_ports in1]
set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS33} [get_ports in2]
set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sel]
set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports out]
五、RTL原理图
可以通过 Vivado 软件查看 RTL 分析原理图,通过原理图可以快速掌握项目设 计的架构图,方便后续对代码进行优化。在左侧导航栏点击 Schematic
(位于 Flow Navigator→RTL ANALYSIS→Open Elaborated Design→Schematic),打开 RTL 原理图设计。
最后就是上板验证了。