2016-07-04 2 views
0

Я хотел бы синтезировать FF с положительным фронтом и активным низким сбросом. Я написал следующий код Verilog:синтезируемый FF в Verilog с активным низким сбросом

module dff_rstL (q,qn,clk,d, clearL); 
input clk,d, clearL ; 
output q,qn; 
reg q; 
always @(posedge clk or negedge clearL)   //asynchronous reset 
begin 
    if (clearL) begin 
     q <= d;    
    end 
else begin  
    q <= 1'b0;     
    end   
end 
assign qn=~q; 
endmodule 

Но я получаю следующее сообщение об ошибке в процессе синтеза:

Не удается проверить переменную «clearL», потому что это не было в выражении событий или с неправильной полярностью. (ELAB-300) * Престо компиляция завершена с 1 ошибкой. *

Знаете ли вы, что я могу сделать его синтезируемым? Большое спасибо!!!

ответ

2

логика тестирования должна быть ~ clearL и первой строкой/условием блока сброса.

module dff_rstL (q,qn,clk,d, clearL); 
input clk,d, clearL ; 
output q,qn; 
reg q; 
always @(posedge clk or negedge clearL)   //asynchronous reset 
begin 
    if (~clearL) begin 
    q <= 1'b0; 
    end 
else begin 
     q <= d; 
    end 
end 
assign qn=~q; 
endmodule 
Смежные вопросы