2014-10-10 116 views
0

比方說,我有一些定義宏,然後定義了一些其他線。
這是什麼意思?從電線中取出2個LSB意味着什麼?[`something] some_vector;意味着在verilog?

`define A_DEFINE 32 
// *SOME CODE IN HERE* 
output [`A_DEFINE-1:0] my_out_wire; 
// *MORE CODE HERE* 

我似乎無法找到對此含義的任何解釋。

回答

1

語法`define A_DEFINE 32聲明瞭一個名爲A_DEFINE的宏。宏可以用於代碼中的文本替換。

語法`A_DEFINE表示展開宏A_DEFINE。這基本上取A_DEFINE的值,並在宏展開的地方進行復制。

預處理器爲您做到這一點。從本質上講,你將得到:

// *SOME CODE IN HERE* 
output [32-1:0] my_out_wire; 
// *MORE CODE HERE* 

如果你需要在你的代碼中有一個可配置的元素,定義是很方便的。這樣,如果你有多個信號應該是一樣寬的,你只需要使用define。如果你需要從32更改爲64,你只需修改定義,就是這樣。

也看看SystemVerilog parameter。這也可能有幫助。

+0

謝謝一堆;還有一個問題,這是否會將my_out_wire設置爲31 downto 0並將A_DEFINE的值粘貼到矢量中?或者是否會以A_DEFINE作爲上半部分,以32 Downto 0? – 2014-10-10 09:13:15

+0

@ user54590它做文本替換,所以你將'輸出[32-1:0] my_out_wire;'這是一個32位線元素31到0. – Morgan 2014-10-10 09:59:15

+0

謝謝摩根!這幫助我超出你的知識! – 2014-10-10 10:06:52