我为移位寄存器创建了一个模块,并试图通过变量值将其初始化为。但它不起作用
这是代码
module shiftreg(dataOut,EN, in, CLK, Q,init);
parameter n = 4;
input [n-1:0] init; //the initial value of the register
input EN; input in;
input CLK; output [n-1:0] Q; output dataOut; reg dataOut;
reg [n-1:0] Q; //needs to be saved for future shifts.
initial
begin
Q=init; dataOut=init[0];
end
always @(posedge CLK)
begin
if (EN)
begin
Q={in,Q[n-1:1]};
dataOut=Q[0];
end
end
endmodule发布于 2013-11-14 21:06:47
init需要是在initial块内部工作的内容,它只适用于RTL仿真和一些FPGA。大多数合成器忽略initial块。一种更好的方法是增加一些加载。将非阻塞的作业输出到寄存器是个好主意。您可以使用赋值语句使用dataOut保存失败。
always @(posedge CLK) begin
if (LOAD) Q <= init;
else if (EN) Q <= {in,Q[n-1:1]};
end
assign dataOut = Q[0];https://stackoverflow.com/questions/19988085
复制相似问题