Verilog語言 if 語句
三種形式的if語句:
1)if(表達式)語句。如
if(a>b)
out1 = int1;
2)if(表達式)
語句;
else
語句;如
if(a>b)
out1 = int1;
else
out1 = int2;
3)if(表達式1)
語句1;
else if(表達式2) 語句2;
else if(表達式3) 語句3;
…………………。
else if(表達式m) 語句m;
else 語句n;
條件語句必須在過程塊語句中是用(initial和always語句),除了這兩個語句引導的bedin end塊中可以編寫條件語句外,模塊中的其他地方都不能編寫。
verilog語言
always 不是循環語句,always 是一個進程塊。 always@(A or B or C)我們經常能看到的always語句如上面那句,當括號里的A,B或C信號發生變化的時候,這個ALWAYS模塊就被激活,模塊中的語句才能執行。括號里的信號稱之為敏感信號列表。 所有的ALWAYs塊之間是并行的關系,誰在前誰在后不影響執行的順序。
for 是一個循環語句,但是不可以綜合(編譯)。for通常是用在測試文件里面。或者用于對RAM附初值。比如定義了一個RAM空間
reg [N-1:0] mem [word-1:0];
初始化時可以用for循環
integer i;
for(i=0;i<word;i=i+1)
mem[i]<=0;
這樣就把RAM的內容全部定義為0了。但是FOR不能用在電路實體中。
VERILOG是硬件描述語言,用來描述硬件的結構和行為,不是軟件,不是C語言,有很大的不同,沒有循環這種說法。可以說VERILOG做的程序實際和硬件工程師畫圖是一回事,每個語句,每個模塊,表示的是使用了一塊芯片,然后連上線這樣,硬件電路哪兒來的循環一說,要注意好好區別。
【verilog語言中請問這是什么意思啊?h11-est-i2={h11-a-re[11],h11-a-
這個賦值語句主要是由拼接操作符{},重復操作符{{}}和位選構成.這個賦值語句的具體意思是:其中{h11_a_re[11],h11_a_re,4'h0}就是h11_a_re的第11位(0或1)和h11_a_re(本身),以及4位的0(0000)拼接在一起組成一個數加上后面的部分,其中{3{h11_a_re[11]}}由重復操作符{{}}構成,即{h11_a_re[11],h11_a_re[11],h11_a_re[11]}也就是有3位.要理解這個只要將拼接操作符和重復操作符,位選弄懂就很容易看懂了.舉個例子:定義 wire [15:0] h11_a_re = 16'b1010_0111_1011_0000;其中位選第15位h11_a_re[15] =1,第11位h11_a_re[11] = 0;wire a = 3'b101; wire b = 2'b01; {a,b}即a和b的拼接等于{3'b101,2'b01}=5'b10101; {h11_a_re[11],a,b}即{0,101,01} = 6'b010101; 重復操作符{2{b}}= {2'b01,2'b01}= 4'b0101;也就相當與復制.弄懂這3個看上面的就沒問題了.。