VHDL-rookie
Gast
|
Erstellt: 08.12.08, 18:14 Betreff: Hausaufgabe
drucken
weiterempfehlen
|
|
|
Hallo liebe VHDL-Profis,
ich habe richtig Probleme mit der Lösung einer Hausaufgabe.
Ich poste mal schnell die Angabe hier und würde mich super freuen, wenn mir jemand helfen könnte.
"Um den auftretenden Ressourcen-Konflikt lösen zu können, muss ein spezieller Zugriffsregler(Arbiter) mit dem Namen Mem_Interface(VHDL-Module) angefertigt werden. Positioniert werden muss der Arbiter zwischen dem Speichermodul und der Pipeline. Die Aufgabe des Arbiters ist die Steuerung von Zugriffen der Pipeline auf den Speicher. Anfragen von Speicherzugriffen können von der Instruction-Fetch Stufe zum Holen des nächsten Befehls oder Lese-/Schreibzugriffen innerhalb der Pipeline ausgehen. Die Möglichkeit, Speicherzugriffsbefehle auszuführen, muss nicht realisiert werden.
Im Regelfall sind die Steuersignale WR und RD gelöscht; alle andere hier aufgeführten Signale (siehe VHDL-Code unten) sind dann irrelevant. Ist einer der beiden Steuersignale gesetzt (es kann nur eines zu einer Zeit gesetzt sein), so soll die entsprechende Operation ausgeführt werden, d.h. ein Schreib- oder Lesevorgang im Speicher ausgeführt werden. Für einen Speicherzugriff sind von der Adresse nur die Bits 11-2 von Bedeutung. Tritt der Regelfall ein, d.h. beide Steuersignale sind gelöscht, so muss das Memory-Interface die ständig von der IF-Stufe (implizit) anliegende Anforderung eines Fetch-Vorgangs bearbeiten. Dazu wird der von der Intstruction-Fetch-Stufe bereitgestellte PC benutzt. Andernfalls muss der IF-Stufe bekannt gegeben werden, dass die derzeitige Anforderung nicht bearbeitet werden konnte (fetch_valid_out = 0). Des weiteren müssen Daten bzw. Steuersignale zwischen mem_interface und dem Speicher ausgetauscht werden. Erweitern sie die Portliste des mem_interfaces selbständig um die Signale, die zum Zugriff auf den Speicher notwendig sind."
So das war die Angabe und nun meine VHDL-Code, das ich bisher hab... ist fast nur die Portliste...
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all;
entity Mem_Interface is Port ( Address : in std_logic_vector(31 downto 0); Data_WR : in std_logic_vector(31 downto 0); Data_RD : in std_logic_vector(31 downto 0); WR : in std_logic; RD : in std_logic; PC : in std_logic_vector(9 downto 0); fetch_valid : out std_logic; Instruction : out std_logic_vector(31 downto 0); we_out : out std_logic; addr_out : out std_logic_vector(9 downto 0); di_out : out std_logic_vector(31 downto 0)); end Mem_Interface;
architecture Behavioral of Mem_Interface is
begin process(Address, WR, RD, PC, Data_WR) begin
if(WR=0 and RD=0) then elsif(WR=1 and RD=0) then elsif(WR=0 and RD=1) then end if;
end process;
Es wäre super, wenn mir jemand helfen könnte!!! Ich brauche die Lösung echt dringend!
Besten Dank vorab!
Martin
|
|