题意整理

本题要求设计一个四选一的多路器,注意输出的定义是线网类型,因此不能使用always组合逻辑块,但是实际上,在语言中使用reg并不一定会被综合成寄存器。

题解主体

可以得到状态转换:
d0    11
d1    10
d2    01
d3    00
根据激励方程和输出方程以及思路整理,关键电路如下:



通过2/1选择器进行判断,需要三个这种结构
将电路转换成Verilog代码描述如下:
wire [1:0]line1,line2;
assign line1 = (sel[1]) ? d0 : d2;
assign line2 = (sel[1]) ? d1 : d3;
assign mux_out = (sel[0]) ? line1 : line2;
因此实现方式为如下的电路,综合得到:


参考答案

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
wire [1:0]line1,line2;
assign line1 = (sel[1]) ? d0 : d2;
assign line2 = (sel[1]) ? d1 : d3;
assign mux_out = (sel[0]) ? line1 : line2;
endmodule