多路选择器实现总线结构——Verilog

本文介绍了一种使用多路选择器(MUX)实现总线读写功能的Verilog模块设计方法。该模块接收四个输入请求,根据优先级编码选择其中一个设备的数据作为总线输出,同时避免了潜在的锁存器产生,确保了数据的正确传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 //////////////////////////////////////////////////////////////////////////////////
 2 //该程序完成通过多路选择器MUX完成总线读写的功能。
 3 module MuxBus(input request1,input request2,input request3,input request4,input[7:0] unit0_out,input[7:0] unit1_out,
 4               input[7:0] unit2_out,input[7:0] unit3_out,
 5               output[7:0] unit0_in, output[7:0] unit1_in, output[7:0] unit2_in, output[7:0] unit3_in);
 6  reg[1:0] sel;
 7  reg[7:0] bus;
 8  always@(request1,request2,request3,request4)
 9      begin 
10         casex({request1,request2,request3,request4})//注意这里要想使用这种优先级编码译码器,用的是casex,而不是case
11         4'b0001:sel=2'b00;                          //casex表示不关心x,z,?这三种符号
12         4'b001x:sel=2'b01;
13         4'b01xx:sel=2'b10;
14         default:sel=2'b11;
15         
16         endcase
17      end
18 always@(sel,unit0_out,unit1_out,unit2_out,unit3_out)
19     begin 
20         case(sel)
21         2'b00:bus=unit0_out;
22         2'b01:bus=unit1_out;
23         2'b10:bus=unit2_out;
24         2'b11:bus=unit3_out;
25     endcase
26     end 
27 //仔细分析就知道下述代码从逻辑上和上述代码有冲突,sel作为选择信号,不可能选择了某个器件后,同时对总线进行读和写的操作,
28 //总线某一时刻只能处于读状态或者写状态。如果对总线进行读或者写,需要读写控制信号
29 /*always@(sel,bus)
30     begin 
31      case(sel)
32        2'b00:unit0_in=bus;  //同时,这样的代码书写产生了锁存器单元,比如sel=2'b01时,unit0,2,3_in这三个器件只能保持它原来的值。
33        2'b01:unit1_in=bus;
34        2'b10:unit2_in=bus;
35        2'b11:unit3_in=bus;
36      endcase
37     end
38 */   //不产生锁存的条件在于对同一个变量满足所有的情况,并不单单是case后面的变量,写出了所有情况即可,要注意不同变量存在时导致的锁存
39 assign unit0_in=bus;
40 assign unit1_in=bus;
41 assign unit2_in=bus;
42 assign unit3_in=bus;
43 endmodule

 

转载于:https://www.cnblogs.com/shaonianpi/p/9394980.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值