在回顾 LED 工程建立流程的基础上,本文将介绍数据选择器工程的实现方法。
数据选择器原理
数据选择器是从多个输入逻辑信号中选择一个输出。类比理解:电影票 A 和 B 为输入信号 in1 与 in2,检票员为选择信号 sel(select),电影院为输出信号 out。因此可在设计工具中设计出 2-1 数据选择器:

对应的真值表如下:

分析真值表:当选择信号 sel 为 0 时,输入信号 in1 通道开启,输出 out 等于 in1;当 sel 为 1 时,in2 通道开启,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。

仿真设置提示:在'Assignment--Settings'的'Tool name'选项卡中,务必选择'Modelsim'而非'Modelsim-Altera',否则可能报错无法启动软件。







