题解 | #四选一多路器#
四选一多路器
https://www.nowcoder.com/practice/cba4617e1ef64e9ea52cbb400a0725a3
`timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, output[1:0]mux_out ); //*************code***********// wire [1:0]line1,line2; assign line1=(sel[0])?d2:d3; assign line2=(sel[0])?d0:d1; assign mux_out=(sel[1])?line2:line1; //*************code***********// endmodule
题目规定输出类型为wire。
方法一:不使用always,只使用assign。
由三个二选一数据选择器构成四选一数据选择器。
d0 11
d1 10
d2 01
d3 00
分两组,以sel(0)作为第一级两个mux2_1的数据选择端,以sel(1)作为第二级一个mux2_1的数据选择端。
因此高位相同全为1的d0,d1为一组,d2,d3为一组。
方法二:中间变量为reg,使用always+case,最后在用assign赋给输出。