![](/img/trans.png)
[英]verilog generate instances from another module in always @(posedge clk)
[英]Verilog Latch in always@(posedge clk)
如果我正確理解閂鎖,則會在組合塊中創建該閂鎖,其中在將變量分配給值時並未聲明所有可能的條件。 我如何在順序塊中獲取鎖存器?
當我通過Quartus編譯代碼時,它撤回了2 Fmax,這表明我有一個鎖存器。
always@(posedge clk or negedge nreset) begin
case(counter)
0: begin
if(state == IDLE) begin
// DOES SOMETHING
end
end
1: begin
// DOES ASSIGNMENT
end // PROLOG
81: begin
// DOES ASSIGNMENT
end // EPILOG
82: begin
// DOES ASSIGNMENT
end // POSTPROC
default: begin
// DOES ASSIGNMENT
end // ROUNDS
endcase
我已經檢查了每種情況,並確保所有分配都沒有阻塞。 知道為什么我會閂鎖嗎?
我的代碼正在計算SHA1
我有2個always @(posedge clk),一個計算下一個Wt,上面計算一個下一個A,B,C,D,E值。
if
您的if
語句上沒有else
, if
合成器對於接下來需要做什么感到困惑,從而推斷出鎖存器。
如果這不是故意的,而只是您為堆棧溢出示例編寫的內容,那么問題可能出在您的其他always塊中。
鎖存器只是沒有時鍾的觸發器。 合成器認為它們很差的原因是因為它們可能導致時序錯誤。 閂鎖也不總是一個問題,實際上有時您可能已經知道,它們是有意的。
檢查您的assign
語句,看看是否在always
初始化為0或某個值的Always塊之外聲明了任何reg。
在這種情況下,您可能想嘗試初始塊。 句法:
initial
begin
value = 0;
input = 0; // or something
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.