我是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;
end
if(negedge axi_clk & first[1]) begin
load_seed=1'b0;
first=2'b00;
end
end
我的错误
错误:HDLC编译器:806 - " K:/ final project / codes / v2 / input_arbiter.v"第252行:" posedge"附近的语法错误 错误:HDLC编译器:806 - " K:/ final project / codes / v2 / input_arbiter.v"第258行:" negedge"附近的语法错误 错误:HDLC编译器:598 - " K:/ final project / codes / v2 / input_arbiter.v"第46行:由于先前的错误而忽略了模块。
答案 0 :(得分:1)
您以错误的方式使用posedge
/ negedge
。这些关键字应该在always block的灵敏度列表中使用,例如:
always @(posedge clk)
或
always @(negedge clk)
always @(*)
用于描述组合逻辑或逻辑门。你想要实现的是顺序逻辑。
您还应该知道(请参阅this主题)
当您在边沿敏感的始终块中分配寄存器时,您将定义一个触发器。 FPGA没有可以在时钟的两个边沿触发的触发器。 这就是为什么你需要两个独立的始终块,一个用于时钟的每个边缘,然后找出一种方法来组合两个块的输出而不会产生毛刺。