Verilog事件控制语句

问题描述 投票:1回答:2

我目前在fpga上的按钮的防抖器中有以下代码,但是我收到一个错误消息:“在这种情况下,不支持在一个Always / Initial Process Block中使用多个事件控制语句。”每当我尝试合成设计时。导致问题的行是@(posedge clk),但我想知道如何精确地替换此逻辑。我本质上需要的是always @ (quarter & posedge clk)作为第一个Always Block的敏感度列表,但这也不起作用。我是该语言的新手,因此我仍在研究一些语法问题。代码片段如下:

always @(quarter)
        begin

            @(posedge clk)
             begin
                 if (quarter != new) begin new <= quarter; count <= 0; end
                 else if (count == DELAY) cleanq <= new;
                 else count <= count+1;
              end
          end
verilog fpga hdl
2个回答
0
投票
而不是总是

@(posedge event1) @(posedge event2) create aflag (1bit reg) event2done : reg event2done; initial event2done=0; always@(posedge event1) begin if (!event2done & event 2) // event2done=1; + type ur code else if(event2done & !event 2) event2done =0; end


-1
投票
伪代码:

always@(something1) @(something2) do something

查看评论以了解为何无法合成的解释

always @(posedge clk) /* over here you'll have to set the default values for everything that's being changed in this always block, you'll otherwise generate latches. Which is likely not what you want */ begin if (quarter != new) begin new <= quarter; count <= 0; end else if (count == DELAY) cleanq <= new; else count <= count+1; end

我目前无法访问我的Verilog绑定,因此我无法确认语法的正确性
© www.soinside.com 2019 - 2024. All rights reserved.