Mips verilog中的初始块延迟
在Verilog中实现单周期mips时。PC已初始化为地址0 然后在同样初始化为0的时钟边缘将其值更新为PC+1 问题是在模拟中,地址0处的指令只需半个时钟周期,然后PC递增4,然后第二条指令进入处理器 无论是通过1初始化时钟,还是在初始化PC之前增加延迟,都不能解决这个问题 这是我的时钟模块Mips verilog中的初始块延迟,mips,verilog,clock,Mips,Verilog,Clock,在Verilog中实现单周期mips时。PC已初始化为地址0 然后在同样初始化为0的时钟边缘将其值更新为PC+1 问题是在模拟中,地址0处的指令只需半个时钟周期,然后PC递增4,然后第二条指令进入处理器 无论是通过1初始化时钟,还是在初始化PC之前增加延迟,都不能解决这个问题 这是我的时钟模块 `timescale 1ps / 1ps module clk_gen( clk ); output reg clk ; initial begin clk<=0; end
`timescale 1ps / 1ps
module clk_gen( clk );
output reg clk ;
initial begin
clk<=0;
end
always begin
#1400 clk=!clk;
end
endmodule
`时标1ps/1ps
clk_gen模块(clk);
输出寄存器时钟;
初始开始
clk问题似乎与您的时钟模块无关,而是基于该代码
假设您不希望这是可合成的。理想情况下,您可以在一个进程中定义reg
或logic
值
注意:如果您的模拟器支持,我会为您的延迟定义绝对时间,即#1.4ns
initial begin
clk <= 1'b0;
forever begin
#1.4ns clk <= ~clk ;
end
end
初始开始
clk在模拟中,第一条指令只需半个时钟周期。。这不是关于时间的问题我贴了一张模拟的剪报我想问题出在我的时钟上generator@Fawzinov我很困惑,你说问题可能出在时钟的产生上,然后说答案不是关于时间。我们只能根据给出的信息进行回答,非常确定问题出在使用时钟的模块中。如果你的评论是关于#1.4ns
的,那只是一个提示,让你的代码更可靠/可移植/可读。@Fawzinov如果答案有帮助,你可以接受它,或者自己发布一个答案,说明你做了什么来修复它。Stackoverflow是一种跟踪常见错误的好方法,可以帮助其他人解决问题;输入[31:0]inPC;输入时钟;输出寄存器[31:0]地址;初始起始地址=32'd0;end always@(posedge clk)begin Address设计中是否有触发@(NEGDEDGE clk)
的内容?使用非阻塞分配初始化时钟(你能在屏幕截图中公布信号名称吗?PC是从顶部开始的第四个信号吗?这是唯一一个初始化为0然后递增为4的信号,但这种情况会在2050年左右发生。数据路径中有延迟吗?是的。我在数据路径中有延迟,我将其设为字可寻址。因此它递增1而不是4 PC是秒d信号..我设法解决了问题顺便说一句:)通过添加另一个充当“启用”的模块。最初等于零,一段时间后inc为1,并将其作为条件添加到第二条指令进入MIPS时递增PC管理,感谢您的帮助:)
initial begin
clk <= 1'b0;
forever begin
#1.4ns clk <= ~clk ;
end
end