2017-03-07 58 views
0

我在我的計劃中有一些模塊,我想通過大量的電線連接它。它是如何看在我的腦海裏:通過大量電線連接方案中的所有模塊。 Verilog

input_output_wire模塊進來頂層模塊變量some​​_trigger的變化,在這一刻頂層模塊發送信號a1 - >模塊a1做一些東西 - >模塊a1送過模塊a2massive_input_output_wire[0] - >模塊a2做一些東西 - >a2明年線在龐大massive_input_output_wire[1]發送到模塊a3 - >a3做一些東西 - >通過massive_input_output_wire[2]發送到a4等等...

module a(
input_output_wire; 
); 
input input_output_wire; 
output input_output_wire; 
always @(posedge input_output_wire) 
begin 
    if(input_output_wire) begin 
     .... 
      make some stuff 
     .... 
    end 
end 
end module 


`include "a.v" 
module top_level(
clk, 
rst, 
some_trigger 
); 
input clk, rst, some_trigger; 
parameter NUM_OF_MODULES_A = 5; 

wire massive_input_output_wire[0:NUM_OF_MODULES_A]; 

a a1(.input_output_wire(massive_input_output_wire[0])); 
a an(.input_output_wire(massive_input_output_wire[NUM_OF_MODULES_A-1])); 
genvar i; 
genarate 
     for(i=1;i<NUM_OF_MODULES_A-2; i = i + 1) 
     begin : modules_a 
      a modules_a(
      .(input_output_wire(massive_input_output_wire[i])) 
      ); 
     end 
endgenerate 


always @(posedge some_trigger) 
begin 
    if(some_trigger) 
     massive_input_output_wire[0] = 1; 
end 
endmodule 
+1

對不起:我不明白你在問什麼。請你能添加更多解釋嗎? –

+0

電線不像編程語言中的變量。他們不會連續分配最後一場勝利。同時驅動通常導致Xs。你不應該使用'assign'或'force'語句在always塊中分配一條線(我猜這就是你現在正在做的)。 – Greg

+0

@MatthewTaylor好的,我想在這個邏輯中連接我所有的模塊('a1','a2',....'an'):'a1'('massive_input_output_wire [0]')的輸出線必須去輸入'a2'。來自a2('massive_input_output_wire [1]')的輸出線必須到a3的輸入端。來自'a [n-1]'('massive_input_output_wire [n]')的輸出線必須到達輸入端'a [n]'。問題是如何正確地編寫生成模塊('modules_a')的代碼以及爲我編寫的模塊而不生成'a1'和'an' – Anton

回答

0

正如你在你的解釋中所說的那樣,每個模塊接收一個信號並做出一些東西,並給另一個模塊提供另一個信號來做出另一些東西。

對此你的模塊應該包含兩個端口
像...

module a (input_wire,output_wire); 
input input_wire; 
output reg out_wire; 
always 
begin 
Make some stuff 
End 
Endmodule 

接下來在你實例像下面

Module top(input_wire,output_wire,another); 

Input input_wire ; 
Output output_wire [0:3] 

Make some stuff 
a a1(input_wire [0],output_wire [0]); 
a a2 (output_wire [0],output_wire [1]); 
a a3 (output_wire [1],output_wire [2]); 
Intantiations 

Endmodule 

這可能會幫助你,如果我理解你的解釋頂模塊正確