我需要創建一個接收時鐘,復位,來自指令字(最低有效字節)的立即數和來自ALU的零輸出作爲輸入的Verilog模塊,並生成一個8-用於輸出的程序計數器(PC)。這個任務說明,在這個架構中,當我們有一個分支時,下一個PC值應該是當前PC值加上從分支指令中提取的偏移量。偏移量以二進制補碼錶示,因此分支目標的範圍是從PC-128到PC + 127.請注意,PC的值不應超過0xFF,因爲我們有256深度的指令內存。您不需要在硬件中檢查這種情況。帶分支的Verilog程序計數器
這是我到目前爲止,但我知道這是不完整的,我不知道如何處理直接或如果我需要添加的分支指令的東西。任何幫助/建議?
module pc(input clk,
input rst,
input [7:0] immediate,
input alu_output,
output [7:0] pc)
reg [7:0] pc;
[email protected](posedge clk)
begin
if(rst)
begin
pc <= 0;
end
else
begin
pc <= pc + 1;
end
end
endmodule
只是爲了正確,他想要的是相對跳躍,而不是絕對跳躍,因爲他的直接值被添加到當前PC跳躍,而不是加載到PC。 – Unn
我是不是寫了兩個呢?我只是繼續前進,並認爲他的任務需要兩個,儘管他沒有指定它。 – Hida