Verilog HDL獨(dú)家程序設(shè)計(jì)經(jīng)驗(yàn)分享
對(duì)于Verilog HDL的初學(xué)者,經(jīng)常會(huì)對(duì)語(yǔ)法中的幾個(gè)容易混淆的地方產(chǎn)生困惑。下面列出幾個(gè)常見(jiàn)問(wèn)題和解決它們的小竅門(mén)。
1.“=”和“<=”的區(qū)分方法
前面的內(nèi)容已經(jīng)從原理上解釋了阻塞(=)和非阻塞(<=)賦值的區(qū)別,但對(duì)于初學(xué)者來(lái)說(shuō),在實(shí)際應(yīng)用過(guò)程中還會(huì)產(chǎn)生一些困惑。下面的方法可以幫助初學(xué)者來(lái)弄清楚兩種賦值符號(hào)的應(yīng)用場(chǎng)合。在always語(yǔ)句中,所有的賦值符號(hào)用非阻塞的,即“<=”; 在always語(yǔ)句外,所有的賦值符號(hào)用阻塞的,即“=”。
2.“reg”和“wire”的區(qū)分方法
reg類(lèi)型和wire類(lèi)型是Verilog HDL語(yǔ)法中兩種最常用的變量。在對(duì)module定義的端口信號(hào)進(jìn)行類(lèi)型描述的時(shí)候,初學(xué)者會(huì)對(duì)何時(shí)需要指定為reg型感到困惑。可以參考下面的方法。
(1)如果這個(gè)信號(hào)需要在always塊里面被賦值,那么必須指定為reg類(lèi)型的。
(2)如果這個(gè)信號(hào)需要在always塊外面被賦值,那么必須指定為wire類(lèi)型的。如果這個(gè)信號(hào)是端口信號(hào),那么沒(méi)默認(rèn)的類(lèi)型就是wire類(lèi)型的,不需要另外指定。