verilog语法错误(HDLCompiler:806)
我是Verilog的新手,不断地遇到这些编译错误。我用谷歌搜索了错误,但没有得到答案。这是我的代码和错误verilog语法错误(HDLCompiler:806),verilog,Verilog,我是Verilog的新手,不断地遇到这些编译错误。我用谷歌搜索了错误,但没有得到答案。这是我的代码和错误 always @(*) begin //seed=32'habcd123cd;//assigning seed if(posedge axi_clk & first[0]) begin load_seed=1'b1; end if(load_seed) begin first[1]=1'b1;
always @(*) begin
//seed=32'habcd123cd;//assigning seed
if(posedge axi_clk & first[0]) begin
load_seed=1'b1;
end
if(load_seed) begin
first[1]=1'b1;
end
if(negedge axi_clk & first[1]) begin
load_seed=1'b0;
first=2'b00;
end
end
我的错误
错误:HDLCompiler:806-“K:/final project/codes/v2/input\u arbiter.v”第252行:“posedge”附近的语法错误。错误:HDLCompiler:806-“K:/final project/codes/v2/input\u arbiter.v”第258行:“negedge”附近的语法错误。
错误:HDLCompiler:598-“K:/final project/codes/v2/input\u arbiter.v”第46行:由于以前的错误,模块被忽略
您以错误的方式使用了
posedge
/negedge
。这些关键字应在始终块的敏感度列表中使用,例如:
always @(posedge clk)
或
始终@(*)
用于描述组合逻辑或逻辑门。你想要达到的是顺序逻辑
您还应该知道(请参阅主题)
当您在边缘敏感始终块中分配寄存器时,您定义的是触发器。FPGA没有可以在时钟两侧触发的触发器这就是为什么您需要两个单独的always块,每个时钟边缘一个,然后找到一种方法来组合这两个块的输出而不产生故障
请注意,您也可以在
initial
中使用posedge/negedge,并在测试台代码中使用其他块(如initial begin…@(posedge clk));谢谢您的回答。正如您所说,我制作了两个始终块,一个用于负边缘,另一个用于正边缘,效果很好。
always @(negedge clk)