|
Verilog的常數(shù)的聲明(parameter和define) 1、語法
數(shù)字聲明 Verilog中有兩種數(shù)字生命:指明位數(shù)的數(shù)字和不指明位數(shù)的數(shù)字 指明位數(shù)的數(shù)字表示形式:<size>’<base format><number> Size用來指明數(shù)字位寬度,只能用十進(jìn)制整數(shù)表示 Base format包括十進(jìn)制(’d或’D),二進(jìn)制(’b或’B),八進(jìn)制(‘o或’O),十六進(jìn)制(‘h或’H) 例如 要注意的是這不是表示12位16進(jìn)制數(shù),表示12位二進(jìn)制顯示是16進(jìn)制數(shù)
例子 parameter LinePeriod =12'd1040; parameter H_SyncPulse=8'd120; parameter H_BackPorch=10'd1040; parameter H_ActivePix=706;
綜合(Synthesize)后 LinePeriod = "010000010000" H_SyncPulse = "01111000" H_BackPorch = "0000010000" H_ActivePix = "00000000000000000000001011000010" 可以看出 如果限定多余32位的話,綜合時(shí)會(huì)報(bào)錯(cuò)。 如
parameter H_ActivePix=33'b706;
會(huì)報(bào)錯(cuò),報(bào)錯(cuò)信息如下:
ERROR:HDLCompilers:34 - "VGA_800X600.v" line 19 Illegal digit(s) in binary constant '706' 還有注意的一個(gè)問題是LinePeriod和H_BackPorch都是1040(十進(jìn)制),1040二進(jìn)制為11位(2的十次方為1024),但“H_BackPorch”沒有因?yàn)槲粩?shù)不夠報(bào)錯(cuò),但是把高位截掉了,變成“
不限定位數(shù),默認(rèn)為32位,這很浪費(fèi)寄存器資源。 限定位數(shù)小于常數(shù)的位數(shù)時(shí),賦值就不正確了。 所以賦值的位數(shù)要有富裕但不至于太浪費(fèi)寄存器資源。 參考資料: 1) Verilog的parameter和define 2) Verilog HDL語法基礎(chǔ)(1) |
|
|