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