多路选择器mux是数字电路设计中很常见的一种电路结构,平时写verilog也经常会需要用到。
但想象一个场景,输入是256bit信号,输出是8bit信号,选通信号是8bit,如果写一个组合逻辑电路,用case来描述,未免太麻烦了。
因此用for循环来构造mux就更方便了,示例代码如下:
1 module test1(input wire clk, 2 input wire [15:0] datain, 3 input wire [3:0] sel, 4 output reg [3:0] dataout); 5 6 integer i; 7 8 //always @(*) begin 9 always @(sel) begin 10 dataout = 'd0; 11 for(i=0;i<4;i=i+1)begin:mux 12 if(sel[i])begin 13 dataout = datain[i*4+:4]; 14 disable mux; 15 end 16 end 17 end 18 19 endmoduleView Code
简单构造一个tb看看效果,是可以实现对应功能的
参考来源:https://mp.weixin.qq.com/s/5HpilLOonRPc2U-5No0pwA
标签:wire,--,数字电路,mux,8bit,input,sel From: https://www.cnblogs.com/Achilles7/p/17892438.html