我必须在管道中延迟一些控制信号,这是由管道中的级数设计的.这显然非常直接 - 只需在输入信号和输出信号之间放置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
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用generate语句创建基本相同的效果.
| 归档时间: |
|
| 查看次数: |
4237 次 |
| 最近记录: |