在Verilog中實現單週期mips。 PC初始化爲地址0 ,然後更新其值爲PC + 1在時鐘的posedge,也被初始化爲0.初始塊在verilog中延遲
問題是在模擬中,地址0的指令只需要半個時鐘週期,然後PC增加4,然後第二條指令進入處理器。
simulation screenshot http://imagizer.imageshack.us/v2/800x600q90/36/0cxn.jpg
也不由1初始化時鐘也將延遲初始化PC解決了這個問題之前
這是我的時鐘模塊
`timescale 1ps/1ps
module clk_gen(clk);
output reg clk ;
initial begin
clk<=0;
end
always begin
#1400 clk=!clk;
end
endmodule
PC模塊:
module PC(inPC, Address, clk);
input [31:0] inPC;
input clk;
output reg [31:0] Address;
initial begin
Address=32'd0;
end
always @(posedge clk) begin
Address <= inPC;
end
endmodule
模塊PC(INPC,地址,CLK); \t input [31:0] inPC; \t input clk; \t輸出reg [31:0]地址; \t \t 初始 \t開始 \t \t \t地址= 32'd0; \t端 \t \t總是@(posedge時鐘) \t開始 \t \t \t地址<= INPC; \t end endmodule – Fawzinov
在設計中是否有觸發'@(negedge clk)'的東西?使用非阻塞賦值('<=')初始化時鐘將始終在時間0時觸發邊沿事件。 – Greg
您可以在截圖中發佈信號名稱嗎? PC是來自頂端的第四個信號?這是唯一的信號初始化爲0,然後增加到4,但這種情況發生在2050年左右。你有沒有延遲數據通路? – Ari