assign用法


  

assign相當於連線,一般是將一個變量的值不間斷地賦值給另一個變量,就像把這兩個變量連在一起,所以習慣性的當做連線用,比如把一個模塊的輸出給另一個模塊當輸入。

例如:

wire A,B,SEL,L;//聲明4個線型變量

assign L=(A&~SEL)|(B&SEL);//連續賦值

在assign語句中,左邊變量的數據類型必須是wire型。input和output如果不特別聲明類型,默認是wire類型。

舉例2選1的數據選擇器:

            module mux2x1_df(A,B,SEL,L);

            input A,B,SEL;

            output L;

            assign L=SEL?A:B;

            endmodule

 

注意事項

assign的功能屬於組合邏輯的范疇,應用范圍可概括為以下三點:

1、持續賦值;

2、連線;

3、對wire型變量賦值,wire是線網,相當於實際的連接線,如果要用assign直接連接,就用wire型變量。wire型變量的值隨時變化。其實以上三點是相通的。

要更好的把握assign的使用,Verilog中有幾個要點需要深入理解和掌握:

1、在Verilog module中的所有過程塊(如initial塊和always塊)、連續賦值語句(如assign語句)和實例引用都是並行的。在同一module中這三者出現的先后順序沒有關系。

2、只有連續賦值語句assign和實例引用語句可以獨立於過程塊而存在於module的功能定義部分。

3、連續賦值assign語句獨立於過程塊,所以不能在always過程塊中使用assign語句。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM