verilog - verilog中参数化的周期延迟数?

标签 verilog

我必须根据管道中的级数来延迟我设计的管道中的一些控制信号。这显然非常简单——只需在输入信号和输出信号之间放置 N 个触发器即可。我想知道是否有一种方法来参数化 N。如果我改变了管道中的级数,我必须返回并添加/删除触发器,这有点烦人。我想过只编写一个脚本来读取某处的定义并生成模块,但这似乎有点矫枉过正。 genvar 循环是这里的正确方法吗?

最佳答案

您可以使用参数化移位寄存器来执行此操作。类似于:

module shift
(
  input clk,
  input data_in,
  output data_out
);

parameter DEPTH = 3;
reg [DEPTH-1:0] holding_register;

always @ (posedge clk) begin
  holding_register <= {holding_register[DEPTH-2:0], data_in};
end

assign data_out = holding_register[DEPTH-1];

endmodule

另一种选择是使用生成语句来创建本质上相同的效果。

关于verilog - verilog中参数化的周期延迟数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153405/

相关文章:

verilog - 如何将 'assign' 值写入 Verilog 中的输出寄存器?

Verilog 测试台时钟

verilog - "parameter"和 "localparam"之间的区别

VHDL/Verilog 相关的编程论坛?

verilog - seg Controller 故障计数器如何解决

非阻塞赋值的 Verilog 序列

Verilog:值与数组范围不匹配,模拟不匹配

verilog - "net"在Verilog中代表什么?

Verilog:是否可以进行索引实例化?

module - Verilog:连接模块端口而不实例化新线