本文介绍数据选择器工程的实现方法。
什么是数据选择器
所谓数据选择器,就是从多个输入的逻辑信号中选择一个逻辑信号输出,实现数据选择功能的逻辑电路。打个比方,手中有两张电影票 A 和 B,检票员决定哪张有效,对应的就是输入信号 in1 与 in2,检票员相当于选择信号 sel(select),电影院相当于输出信号 out。因此,可以在设计工具中绘制 2-1 数据选择器原理图:

给出 2-1 数据选择器的真值表:

分析真值表:当选择信号 sel 为 0 时,对应输入信号 in1 的通道开启,无论 in2 取值如何,输出 out 始终等于 in1;反之,sel 为 1 时,out 始终等于 in2。
Verilog 实现
新建工程后,使用 Verilog 语言实现 2-1 数据选择器:
module mux_2to1(
input wire in1,
input wire in2,
input wire sel,
output reg out
);
always @(*) begin
if (sel == 1'b1)
out = in2;
else
out = in1;
end
endmodule
代码语法分析:in1、in2、sel 前加 wire,out 前加 reg。wire 是连线类型,只能传递信号;reg 是寄存器类型,能存储信号。在 always @(*) 模块中,输出信号需持续根据逻辑进程更新,故使用 reg 类型。
验证与仿真
打开 RTL 视图验证电路正确性:

RTL 视图与设计一致。接着进行仿真,直接分析波形图:
第一组红线内波形:sel 恒为 0,无论 in2 变化,out 恒等于 in1。

第二组分析:sel 恒为 1,无论 in1 变化,out 恒等于 in2。

仿真前需注意设置,Tool name 选项卡中应选择 Modelsim 而非 ,否则可能报错:







