关于多驱动源的问题

2019-03-25 10:49发布

一个FPGA初学者容易出差错的地方:多驱动源的问题 例如: 一个主模块M,这个主模块包含3个子模块,M1,M2,M3。

Module M(clk, rst, din, cs, we,dout)
   input             clk, rst;  
    output           cs, we;
    output [7:0]  dout;
    wire ....
    reg....
   
    M1(   .m1_clk(clk),
             .m1_rst(rst),
             .m1_cs(cs),
             .m1_we(we)
             .m1_dout(dout)
         );
     
    M2(   .m2_clk(clk),
             .m2_rst(rst),
             .m2_cs(cs),
             .m2_we(we)
             .m2_dout(dout)
         );

     M3(   .m3_clk(clk),
             .m3_rst(rst),
             .m3_cs(cs),
             .m3_we(we)
             .m3_dout(dout)
         );
....
endmodule   上面典型的多驱动源问题就是,dout ,由于三个模块的数据输出对应dout ,这样就造成dout输出总线短路:(模块一输出全0,而同时模块2输出全1,这样就会造成输出短路)   解决这个问题的办法,定义三个数据总线寄存器,dout1, dout2,dout3 。 然后用一个三选1的选择器分时输出即可。   这是就是典型的实际电路与书写语法的表达式脱节了。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。