verilog語言入門教程


轉自https://www.cnblogs.com/jian-jia/archive/2019/11/24/11924371.html

 

module a(b, c, d,...z);//module: 模塊頭 a:模塊名 (b,c,d,...z):端口列表
    input b;//輸入聲明
    input wire c;//輸入聲明線網類型用wire,wire可省略
    input wire [7:0] d;//[7:0]:輸入總線位寬0~7所以是8bit總線
    output e;//輸出聲明
    output [7:0] f;//輸出總線位寬說明,默認為wire類型,此處省略wire
    output reg [7:0] f;//輸出總線寄存器類型用reg   ...//為了篇幅小一些省略e~y的聲明,實際代碼中不可省略
    assign d = a & b;//assign語句也叫數據流建模語句也叫連續賦值語句,后面接的是組合邏輯
    assign e = (f < g)?  1 : 0;//三目運算符
    
    always @ (posedge a or negedge b or posedge c...)//always語句,posedge為上升沿觸發,negedge為下降沿觸發,后面接信號表示當這個信號上升沿或下降沿時執行下面的程序
        begin //begin...end 相當於()
            if(!b)//if語句
                begin
                    h <= 4'b0000;//非阻塞賦值語句用<=,4'b0000表示位寬為4,二進制表示的數0000
                    i <= 32'haabbccdd;//此處表示32位寬,16進制表示的數aabbccdd
                end
    
            else//else表示分支
                case(j)//case語句
                    0 : k <= k + 1'b1;//verilog中沒有自加的表示,所以用k = k + 1'b1
                    1 : if(k<m) begin  l <= 8'd7;j <= 2; end// j <= 2表示下一個時鍾沿觸發后跳到2:語句
                    2 : m < = 4'b0001 << 2;//<<移位符號
                 default: j <=0; //default語句表示當j取值不是上面列出的0,1,2時走這條語句
                endcase //case多路分支語句結束標志                 
        end//整個always循環結束標志     
endmodule//整個模塊結束標志

 


免責聲明!

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



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