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