verilog語言簡介 verilog語言是一種語法類似於c的語言,但是與c語言也有不同之處,比如: 1.verilog語言是並行的,每個always塊都是同時執行,而c語言是順序執行的 2.verilog又被稱作硬體描述語言,在用verilog語言編程的時候,不如說是在用verilog描述一段電路 ...
verilog語言簡介
verilog語言是一種語法類似於c的語言,但是與c語言也有不同之處,比如:
1.verilog語言是並行的,每個always塊都是同時執行,而c語言是順序執行的
2.verilog又被稱作硬體描述語言,在用verilog語言編程的時候,不如說是在用verilog描述一段電路,而c語言則是一段程式
verilog基本語法
本塊只講常用的基本語法,至於一些高級的語法到以後案例的時候會講到
verilog文件.v基本結構
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//整個模塊結束標誌
就講這麼多,以後有具體的例子再細講