Ich versuche, eine 32-Bit-CPU mit einem modifizierten MIPS-Befehl in VHDL festgelegt. Ich versuche gerade, meinen Programmzähler für den nächsten Befehl um 1 zu erhöhen, es sei denn, es handelt sich um einen Sprungbefehl, der dann dem Programmzähler den Sprungwert gleich macht.VHDL Inkrement 10-Bit-Programmzähler von 1
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;
Ich bekomme Fehler bei dieser Linie PC_IN <= (PC_IN + "0000000001") when (Jump = '0')
. Die Fehler bestehen aus kann nicht 'in' Objekt pc_in und 0 Definitionen von Operator "+" passen hier, so dass es nicht mag mich mit dem Operator + und vielleicht pc_in muss eine Ausgabe sein?
Kann jemand meinen Programmzähler um 1 für die nächste Anweisung erhöhen? Jede Hilfe wäre willkommen. Vielen Dank.
Signal Jump wird in einer anderen Datei deklariert, in der alle Steuersignale eingegeben werden. Es verbindet sich dann mit der PC-Datei mit Komponente Verzögerung und Port-Maps in einer Overhead-Datei namens CPU, die meinen PC, Befehlsspeicher, Register, Steuerung usw. – oodan123
Also, weil ich eine Zuordnung zu einem Objekt des Modus in, sollte ich ändern es stattdessen zu PC_Out? – oodan123