2016-04-02 8 views
1
module median_five(out1,a[0],a[1],a[2],a[3],a[4],en,clka);    
    input [7:0] a[0:4];    
    output out1;    
    endmodule    

**エラーを起こしています。入力ポートをVerilogで配列として取ることは可能ですか?

module median_five(out1,a,b,c,d,e,en,clka);    
     input [7:0] a,b,c,d,e;    
     output out1;    
     endmodule 

**正しいです。

しかし、私は次のように、アレイ内の入力A、B、C、D、Eをしたい:Verilogのがモジュールのポートのような2次元アレイをサポートしていない

array[0]<=a;    
array[1]<=b;    
array[2]<=c;    
array[3]<=d;    
array[4]<=e;    

答えて

2

。この機能はSystemVerilogでのみサポートされています。 スニペットで

、あなたがサポートされていない入力として二次元アレイaを渡します。 後者の場合、1次元ベクトルが正常に動作するモジュールに渡されます。

あなたがarrayで何をしたいのか明確ではありません。ここにはのオプションがあります。 モジュールの中に2次元配列を宣言することができます。以下のようなものは次のとおりです。あなたが行うことができます

module median_five(out1,a,b,c,d,e,en,clka); 
input [7:0] a,b,c,d,e; 
output out1; 

ref [7:0] array [5]; // array local to module 

//always @(posedge clka) // use non blocking assignments 
always @(*)    // use blocking assignments 
begin 
// .. Some stuff 
array[0]=a;    
array[1]=b;    
array[2]=c;    
array[3]=d;    
array[4]=e;  
//..  
end 

//.. some other stuff 

endmodule 

もう一つは、配列を平らにし、入力として、それを渡すことです。ここで、Iは単一ベクターin)に8ビット入力(abc等各)のそれぞれをを平坦化されているし、それに応じてアレイの各個々の要素を割り当てます。

module top (in, out); 
    input [31:0] in; // flattened array as input 
    output [31:0] out; 

    wire  [7:0] array [0:3]; // local array 

    assign {array[3],array[2],array[1],array[0]} = in; 
    //... some operations/procedural blocks etc. 
    assign out = {array[3],array[2],array[1],array[0]}; 
endmodule 

同様の質問のためにInputs as two dimensional arrayリンクを参照してください。 similar blog postもあります。

+0

私は並べ替えをしたいと思いました。それは配列内の要素が必要です。ありがとう –

+0

reg [3:0] r = 1; +(e> b)+(e> c)+(e> d))である。それは出力において未知の価値を与える。しかし、私はreg [3:0] r = 1と書いた。 +(e> b)+(e> c)+(e> d))である。それに応じて与えられる出力は、最初の式r <= r+ ((e> a)+(e> b)+(e> c)+(e> d))になりました。正しくシミュレートする必要がありました。ヒントを教えてください。 –

+0

最初の式を使用すると、[combinational loop](http://fpga-hdl.blogspot.in/2012/07/test.html)を作成している可能性があります。組み合わせループを回避する1つの方法が、[ここ](http://electronics.stackexchange.com/questions/121161/understanding-combinational-feedback-loops)に記載されている。私は[EDAPlayground](http://www.edaplayground.com/x/eke)でサンプルを作成しました。 – sharvil111

関連する問題