zoukankan      html  css  js  c++  java
  • 多路选择器实现总线结构——Verilog

     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
  • 相关阅读:
    22_selenium_使用cookie直接登录
    21_无头模式
    自动化测试-设计模式-介绍
    Doorls
    pytest-Allure报告
    pytest-架构1
    pytest-第一次学习梳理
    web测试
    测试-工时评估
    封装pyuic5转换ui文件的脚本
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9394980.html
Copyright © 2011-2022 走看看