Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Verilog:同一寄存器在always语句中可以被引用多次吗?_Verilog_Hardware_System Verilog_Hdl_Flip Flop - Fatal编程技术网

Verilog:同一寄存器在always语句中可以被引用多次吗?

Verilog:同一寄存器在always语句中可以被引用多次吗?,verilog,hardware,system-verilog,hdl,flip-flop,Verilog,Hardware,System Verilog,Hdl,Flip Flop,我正在写一个Verilog HDL模块来消除按下按钮时的抖动。首先,我使用两个名为sync_0和sync_1的触发器将按键与时钟同步,如下所示: Input -> sync_0 -> sync_1 我的问题是,我是否可以将这两个操作合并为一个始终块,如下所示: // Synchronize the switch input to the clock reg sync_0, sync_1; always @(posedge clk) begin sync_0

我正在写一个Verilog HDL模块来消除按下按钮时的抖动。首先,我使用两个名为sync_0和sync_1的触发器将按键与时钟同步,如下所示:

Input -> sync_0 -> sync_1
我的问题是,我是否可以将这两个操作合并为一个始终块,如下所示:

// Synchronize the switch input to the clock 
reg sync_0, sync_1;
always @(posedge clk)
    begin
        sync_0 <= switch_input;
        sync_1 <= sync_0;
    end
// Synchronize the switch input to the clock 
reg sync_0, sync_1;
always @(posedge clk)
    begin
        sync_0 <= switch_input;
    end

always @(posedge clk)
    begin 
        sync_1 <= sync_0;
    end
还是需要像这样分解:

// Synchronize the switch input to the clock 
reg sync_0, sync_1;
always @(posedge clk)
    begin
        sync_0 <= switch_input;
        sync_1 <= sync_0;
    end
// Synchronize the switch input to the clock 
reg sync_0, sync_1;
always @(posedge clk)
    begin
        sync_0 <= switch_input;
    end

always @(posedge clk)
    begin 
        sync_1 <= sync_0;
    end

编辑:更清楚地说,我的问题是:可以将sync_0放在非阻塞赋值的左侧和右侧的同一个always块中吗。或者应该将这两个作业分成两个单独的“始终”块。两者都很好,我只是想知道哪个练习更好。

语法正确。只要这些reg具有相同的敏感度列表,就可以将它们放在一个始终块中。每个reg都是一个独立的电路实体,它有自己的驱动锥并并行运行。工具可以解决这个问题。然而,在现实世界中,建议仅描述那些功能相关信号和/或共享相同控制结构的信号,例如相同或几乎相同的if-else控制。在你的情况下,你当然可以把它们放在一起。我更喜欢这样,因为在屏幕上阅读时可以看到更多的代码