verilog設計經驗點滴
1, 敏感變數的描述完備性
Verilog中,用always塊設計組合邏輯電路時,在賦值運算式右端參與賦值的所有信號都必須在always@(敏感電平串列)中列出,always中if陳述句的判斷運算式必須在敏感電平串列中列出。如果在賦值運算式右端參考了敏感電平串列中沒有列出的信號,在綜合時將會為沒有列出的信號隱含地產生一個透明鎖存器。這是因為該信號的變化不會立刻引起所賦值的變化,而必須等到敏感電平串列中的某一個信號變化時,它的作用才表現出來,即相當于存在一個透明鎖存器,把該信號的變化暫存起來,待敏感電平串列中的某一個信號變化時再起作用,純組合邏輯電路不可能作到這一點。綜合器會發出警告。
Example1:
input a,b,c;
reg e,d;
always @(a or b or c)
begin
e=d&a&b; /*d沒有在敏感電平串列中,d變化時e不會立刻變化,直到a,b,c中某一個變化*/
d=e |c;
end
Example2:
input a,b,c;
reg e,d;
always @(a or b or c or d)
begin
e=d&a&b; /*d在敏感電平串列中,d變化時e立刻變化*/
d=e |c;
end
uj5u.com熱心網友回復:
等待敏感電平串列觸發後再去讀 reg d 進行運算,想法是這樣但不知道內部綜合後有何不一樣uj5u.com熱心網友回復:
學習了。。。。。。。。。。。。。。uj5u.com熱心網友回復:
學習了。。。。。。。uj5u.com熱心網友回復:
最好還是寫always*轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/105513.html
標籤:硬件設計
上一篇:16位運算器的設計
