我正在嘗試使用VHDL中修改的MIPS指令集來生成32位CPU。我目前正試圖讓我的程序計數器爲下一條指令遞增1,除非它是跳轉指令,然後程序計數器將等於跳轉值。VHDL通過1遞增10位程序計數器
entity PC is
Port (PC_IN : in STD_LOGIC_VECTOR (9 downto 0); --New PC in value (PC+1 or jump)
PC_OUT : out STD_LOGIC_VECTOR (9 downto 0); --PC out to instruction memory
Jump_Inst : in STD_LOGIC_VECTOR(9 downto 0); --Jump address
Jump : in STD_LOGIC; --Jump MUX
clk : in STD_LOGIC);
end PC;
architecture Behavioral of PC is
begin
PC_IN <= (PC_IN + "0000000001") when (Jump = '0')
else Jump_Inst;
process(clk)
begin
if rising_edge(clk) then --If it is the next clock cycle (i.e time for the next instruction)
PC_OUT <= PC_IN;
end if;
end process;
end Behavioral;
我在這條線上收到錯誤PC_IN <= (PC_IN + "0000000001") when (Jump = '0')
。錯誤由無法更新對象pc_in和運營商「+」的0定義匹配,所以它不喜歡我使用+運算符,也許pc_in需要是輸出?
有誰知道如何讓我的程序計數器增加1爲下一個指令?任何幫助,將不勝感激。謝謝。
Signal Jump是在另一個文件中聲明的,其中所有的控制信號都是在其中創建的。然後它鏈接到PC文件使用組件減速和端口映射在一個名爲cpu的開銷文件,它連接我的電腦,指令內存,寄存器,控制等 – oodan123
因此,因爲我不能作出模式的對象的任務,我應該改變它改爲PC_Out? – oodan123