2013-04-20 144 views
1

這是我第一次在stackoverflow.com上進行Verilog編碼。我可能會錯誤地使用一些術語,所以如果我這樣做,請糾正一下,這樣我可以在將來的帖子中更清楚。Verilog - 獨立輸出陣列

我正在使用Altera FPGA板,其中有7個LEDG燈可以觸發開和關。對於我的項目,我製作了一個BCD加法器,當BCD值不是0 - 9時,LEDG [7]打開。但是,我不想聲明輸出[6:4]。 LEDG [3:0]顯示兩個輸入之和的二進制等值。

我想我可以使用兩個單獨的聲明語句,但它告訴我,LEDG已經聲明它是。然後,我試圖用括號將它結合起來,但它也抱怨說。有什麼方法可以簡化我的代碼。下面是我嘗試過的例子。

實施例1:

module BCD (..., LEDG, ...); 
output reg [3:0] LEDG; 
output reg [7] LEDG; 
endmodule 

實施例2:

module BCD (..., LEDG, ...); 
output reg ({[3:0], [7]} LEDG); 
endmodule 

任何幫助將不勝感激!提前致謝。 :-)

+0

輸出全寬,但將數組的不需要的位設置爲「Z」狀態? – osgx 2013-04-20 02:22:40

+0

糾正我,如果我錯了,但Z狀態是不關心狀態?我如何去聲明數組的位爲「Z」?是否像[6:4] LEDG = Z那麼簡單? – ButtahNBred 2013-04-20 02:24:52

+0

'X'未知,Z爲高阻抗。 http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual/DataTypes/tris.html「有一個信號值:z,它被稱爲」高阻抗「。這基本上意味着一個節點是隔離的,不是被驅動的,可以將這個值分配給一個網絡。「 Z就像「不輸出」,不是0也不是1.如果引腳是LED驅動器,這意味着LED關閉(未連接到地或VCC) – osgx 2013-04-20 18:34:17

回答

0

如果要輸出總線,則必須指定一個連續的範圍,但是您所要做的不可能。

如果需要輸出[7]和[3:0],則應該聲明輸出reg [7:0]。

您可以不使用未使用位,或者如果這給出綜合警告/錯誤,那麼如果您不關心它們的值(LEDG[6:4] = 3'b0),則將它們關閉到0或1。

0
module(...NBCD_FLAG, LEDG...); 
output reg [3:0] LEDG; 
output wire NBCD_FLAG; 

在你.qsf文件分配到LEDG 3-0的LED在你登上 和NBED_FLAG帶隊7 這樣,您就可以使用LED 6-4用於其他目的。