Hallo,
Mein Problem ist folgendes ich bekomme in den FPGA einen Datenstrom.
Sobalt daten anliegen (wird über Flag signalisiert) läuft eine
Statemachine an welche eine Kennung in einen Buffer füllt und
anschließen den Datenstrom hinterher.
Jetzt hatte ich das Problem das ich um die 2 Byte kennung
davorzuschreiben 2 Takte brauche (Es ist ein 8 Bit breiter Fifo).
Also hab ich mir gedacht das ich den Datenstrom einfach in einem zweiten
process durch zwei Flip Flops enstprechend verzögere und nach der
Kennung die Verzögerten Daten sende.
In der Simulation funktioniert dies. Ich kann das Design auch
synthetisieren und auf mein FPGA Board spielen dort funktioniert diese
Verzögerung aber nicht mehr und ich kriege das gleiche Ergebniss als
hätte ich diese gar nicht eingebaut.
Ich benutze als Entwicklungsumgebung Quartus 2 und spiele das ganze auf
einen Cyclone 3
Hier der für das Verzögern verantwortliche Code:
1 | process (CLK,RES_N)
|
2 | begin
|
3 | if(rising_edge(CLK)) then
|
4 | if RES_N='0' then
|
5 | data_reg1 <= "0000000000000000";
|
6 | data_reg2 <= "0000000000000000";
|
7 | data_valid_reg1 <= '1';
|
8 | data_valid_reg2 <= '1';
|
9 | else
|
10 | data_reg1 <= INDATA(15 downto 0);
|
11 | data_reg2 <= data_reg1;
|
12 | data_valid_reg1 <= DATA_VALID;
|
13 | data_valid_reg2 <= data_valid_reg1;
|
14 | end if;
|
15 | end if;
|
16 | end process;
|
Anschließend wird in einem zweiten Process das data_reg2 als Datenstrom
für die State Machine genutzt.