我想从输入时钟生成一个慢速时钟,即
clk_in
,但它显示以下错误:
事件控制中的时钟不明确
module clk_div_h(rst, clk_in, clk_div);
input rst, clk_in;
output reg clk_div = 0;
reg [3:0]clk_count = 0;
always @(posedge clk_in or posedge rst)
begin
clk_count <= clk_count + 1;
clk_div <= clk_count[3];
end
endmodule
如何解决该错误?我正在使用 nexys 4 DDR FPGA。
错误消息意味着您的代码不遵循综合工具支持的综合结构之一。
您尝试使用 Verilog 代码描述 D 触发器行为,但您的综合软件无法将代码模式识别为其支持的任何触发器。 触发器需要 one 时钟输入信号位于 Verilog 灵敏度列表中:
always @(posedge clk_in or posedge rst)
您的列表的问题是包括 2 个信号(
clk_in
和 rst
),但综合工具不清楚哪个信号应该是时钟输入。 信号的名称无关紧要。 信号的顺序也无关紧要。
避免此错误的一种方法是删除
rst
信号:
always @(posedge clk_in)
综合工具将推断以
clk_in
作为时钟输入的触发器。 在这种情况下,我认为不需要rst
模块input
。