再建一个工程,调用2选1多路选择器 IP 核核实现4选1多路选择器。对该工程进行仿真测试。
时间: 2024-03-10 16:50:30 浏览: 160
实验二 2选1多路选择器-IP核的封装与调用
好的,以下是具体步骤:
1. 打开Vivado,创建一个新工程。
2. 在IP Integrator页面,点击左侧菜单栏中的“IP Catalog”选项。
3. 在IP Catalog中搜索“MUX”,可找到Xilinx提供的2:1 MUX IP核。
4. 双击2:1 MUX IP核,打开配置界面,在“Output Width”中将输出宽度设置为1。
5. 将2:1 MUX IP核拖拽到设计视图中。
6. 复制粘贴2:1 MUX IP核,得到两个2:1 MUX IP核。
7. 将两个2:1 MUX IP核的输入端口和输出端口连接起来,组成4选1多路选择器。
8. 在IP Integrator页面左侧菜单栏中选择“Run Block Automation”选项,进行引脚分配和时钟约束设置。
9. 在设计视图中右键点击4选1多路选择器模块,选择“Create HDL Wrapper”,生成顶层模块。
10. 在顶层模块中添加输入输出信号。
11. 在顶层模块中实例化4选1多路选择器模块。
12. 在顶层模块中为4选1多路选择器模块的输入端口赋值。
13. 在顶层模块中添加仿真测试代码,对4选1多路选择器模块进行仿真测试。
以下是顶层模块的代码示例:
```
module top_module(
input [1:0] select,
input [3:0] in,
output out
);
wire [1:0] select1;
assign select1[0] = select[0];
assign select1[1] = 1'b0;
wire [1:0] select2;
assign select2[0] = select[1];
assign select2[1] = 1'b0;
mux_2to1 #(.WIDTH(1)) mux1(
.in0(in[0]),
.in1(in[1]),
.select(select1),
.out(out1)
);
mux_2to1 #(.WIDTH(1)) mux2(
.in0(in[2]),
.in1(in[3]),
.select(select2),
.out(out2)
);
mux_2to1 #(.WIDTH(1)) mux3(
.in0(out1),
.in1(out2),
.select(select),
.out(out)
);
reg out1, out2;
initial begin
#10 select = 2'b00; in = 4'b0000; // select in0
#10 select = 2'b01; in = 4'b0000; // select in1
#10 select = 2'b10; in = 4'b0000; // select in2
#10 select = 2'b11; in = 4'b0000; // select in3
#10 select = 2'b01; in = 4'b1010; // select in1
#10 select = 2'b10; in = 4'b0101; // select in2
#10 select = 2'b11; in = 4'b1111; // select in3
#10 select = 2'b00; in = 4'b0001; // select in0
#10 $finish;
end
endmodule
```
在上述代码中,使用了两个2:1 MUX IP核和一个顶层4选1多路选择器模块。在initial块中对输入信号进行赋值,并对输出信号进行验证。
完成顶层模块代码编写后,点击Vivado左侧菜单栏中的“Run Simulation”选项进入仿真测试界面。在仿真界面中添加顶层模块,设置仿真时钟和仿真时间,运行仿真测试。运行完仿真测试后,可以查看波形图验证4选1多路选择器是否正常工作。
注意:在顶层模块中实例化2:1 MUX IP核时,需要添加#(.WIDTH(1))参数,以指定输出宽度为1。
阅读全文