Zuerst muss ich sagen, dass ich immer noch ein Anfänger bin und VHDL lerne, daher ist jeder Rat eine große Hilfe.
Was ich versuche, ist, ein Bild in einem VGA-Monitor mit einem FPGA (Cyclone II) zu steuern, indem ich eine .mif- Datei mit den Bits verwende, die diesem Bild entsprechen, und sie in ein ROM lade , damit ich dann die Werte und lesen kann Zeig's ihnen.
Mein Problem tritt auf, wenn ich die Ports für die Komponente festlegen muss, die ich in meinem Code verwende.
architecture aa of VGA is
--some signal declarations here
component RomImage is
port( address : in std_logic_vector(13 downto 0);
inclock : in std_logic;
outclock : in std_logic;
qrom : out std_logic_vector(23 downto 0)
);
end component;
begin
RomIm : lpm_rom
generic map(lpm_file=>"GameOver.mif",lpm_numwords=>9500, lpm_width=>24, lpm_widthad=>14)
port map(address=>address,inclock=>inclock,outclock=>outclock,q=>qrom);
-- other process and logic
-- Output logic (only red, same for blue and green)
redout(9 downto 7) <= qrom(23 downto 21) when x>=225 and x<=415 and y>=250 and y<=300 else
rojo(5 downto 3);
Ich weiß nicht wirklich, welchen Takt ich für inclock und outclock verwenden muss , einer davon dient zum Lesen der Adresse und der andere für die Ausgabe q[].
Im Design gebe ich einen 50-MHz-Takt ein und teile dann für den VGA-Takt die Frequenz, um 25 MHz zu erhalten, die ich brauche, damit der Bildschirm funktioniert.
Ich könnte mir vorstellen, dass der Screensweep mit der Frequenz synchronisiert werden muss, mit der man die Werte aus dem ROM lesen muss.
Tut mir leid, wenn es zu viel Code oder verwirrend ist, ich werde versuchen, es bei Bedarf zu erweitern
Seit einem Tag unbeantwortet, also lass es mich versuchen. Dieses ROM ist sehr ungewöhnlich. Ich bin seit mehr als 25 Jahren ASIC-Ingenieur und habe noch nie ein ROM (oder einen Speicher) mit einem Port und zwei Takten gesehen.
Versuchen Sie, das Modell für dieses ROM zu finden, oder finden Sie die Spezifikationen, wenn es sich um ein FPGA-Bibliothekselement handelt. Andernfalls wäre es am besten, für beide Ports dieselbe Uhr zu verwenden. Sie sagen, Sie arbeiten an VGA, das 25 MHz benötigt, also ist das wahrscheinlich Ihr Pixeltakt. Dann müssen Sie in jedem Taktzyklus drei analoge Signale ausgeben. (Und hsync, vsync + Pixeltakt). Ihr 24 Bit breites ROM ist wahrscheinlich RGB als 888, daher müssen Sie dieses ROM mit 25 MHz austakten.
Alternativ könnten Sie versuchen, einen entgegengesetzten Takt für Adresse und Daten zu verwenden.
Saurabh-Tapas
Jakob A.
Bill Moore