2013-12-15 7 views
0

크기 16 비트의 공통 "BUS"를 공유하는 여러 모듈을 Verilog에 연결하려고합니다. 여러 입력 (드라이버)을 버스에 연결하는 데 문제가 있습니다. 하나 이상의 드라이버를 연결하면 Xilinx에서 오류가 발생합니다. 단위여러 드라이버가있는 Verilog에서 BUS를 처리하는 방법

신호 BUS {Top_Module_Name}은 다음 여러 드라이버에 접속된다

I는이 코드 모듈은 상부 모듈

input   en; 
output [15:0] BUS; 
reg [15:0] data; 

if (en) begin BUS = data; 
else BUS = 16'dZ; 

는 I가 비슷한 갖는다위한

module1(en1,wBUS); 
module2(en2,wBUS); 
module3(en3,wBUS); 

나는 1 핫 인코딩.

답변

1

BUS 출력은 reg이 아니라 wire입니다. 당연히 문 (조합 번호 always 내부)에 BUS을 사용하려면 BUSreg으로 정의해야합니다. 이 같은

뭔가 :

module something (input en, 
        output reg [15:0] bus 
       ); 
    reg [15:0] data = 16'hABCD; // some value; 

    always @* begin 
    if (en) 
     bus = data; 
    else 
     bus = 16'hZZZZ; 
    end 
endmodule 

bus 경우

module something (input en, 
        output [15:0] bus 
       ); 
    reg [15:0] data = 16'hABCD; // some value; 
    assign bus = (en)? data : 16'hZZZZ; 
endmodule 
+0

원하는 버스 와이어 것입니다 ... 와이어 될 것입니다. Swore 나는 전에 그것을 시도했고 그것은 같은 오류를 주었다. 네델란드 일수록 더 효과적이지. 고마워요! – zKarp