一.多路选择器
多路选择器是数据选择器的别称。在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关
二.二选一多路器
很简单,二选一多路器就是,两个输入数据,我们定义为in_a、in_b,一个选择数据sel,如sel输入0时,输出为in_a,sel输入1时,输出为in_b。
三.Verilog代码设计
根据二选一多路器的原理来设计,输入端口有三个,分别是in_a、in_b、sel,输出端口有一个,为out。我们的设计是sel输入0时,输出为in_a,sel输入1时,输出为in_b。
`timescale 1ns / 1ps
module mux2(
sel,
in_a,
in_b,
out
);
input sel;
input in_a;
input in_b;
output out;
assign out = (sel==0)?in_a:in_b;
endmodule
使用此方法所设计的电路图如下:
四.仿真代码以及仿真结果
仿真代码:
`timescale 1ns / 1ps
module mux2_tb();
reg sel;
reg in_a;
reg in_b;
wire out;
mux2 mux2_tb0(
.in_a(in_a),
.in_b(in_b),
.sel(sel),
.out(out)
);
initial begin
sel=0;in_a=0;in_b=0;
#20;
sel=0;in_a=1;in_b=0;
#20;
sel=1;in_a=0;in_b=0;
#20;
sel=1;in_a=0;in_b=1;
end
仿真结果:
通过整体的代码逻辑和仿真输出来看,仿真波形符合设计的逻辑。
五.引脚约束
set_property PACKAGE_PIN AA20 [get_ports sel]
set_property PACKAGE_PIN AB22 [get_ports in_a]
set_property PACKAGE_PIN AB21 [get_ports in_b]
set_property PACKAGE_PIN AB14 [get_ports out]
set_property IOSTANDARD LVCMOS33 [get_ports in_b]
set_property IOSTANDARD LVCMOS33 [get_ports in_a]
set_property IOSTANDARD LVCMOS33 [get_ports out]
set_property IOSTANDARD LVCMOS33 [get_ports sel]
六.上板测试
通过整体的代码逻辑上板测试的输出来看,上板测试的结果符合设计的逻辑。