Hallo,
ich habe 4 parallele Eingänge die ich in 2 Stufen einsynchronisieren
will.
Ich baue mir also ein Array mit einer Breite von 4 Elementen und mache
es 2 Bit tief.
1. steigende Flanke
2.Stufe 1.Stufe
0 <- 0
0 <- 1
0 <- 1
0 <- 0
2. steigende Flanke
2.Stufe 1.Stufe
0 <- 0
1 <- 1
1 <- 1
0 <- 0
1 | type ELEMENT is array (0 to 1) of std_ulogic_vector(3 downto 0);
|
2 | type TYP_CS is array (0 to 1) of ELEMENT;
|
3 | signal S_CS : TYP_CS;
|
Im ersten Schritt will ich das Array mit 0en initialisieren.
Im zweiten Schritt weise ich den Eingangsvektor zu
und im dritten Schritt will ich den Inhalt des 2D-Arrays an die zweite
Stelle schieben.
Anbei mein Prozess:
1 | SYNC : process (CLK)
|
2 | begin
|
3 | if rising_edge(CLK) then
|
4 | if RESET = '1' then
|
5 |
|
6 | S_CS <= (others =>(others => '0'));
|
7 | ENABLE <= '0';
|
8 |
|
9 | else
|
10 |
|
11 | S_CS (0) <= I_CS; -- 1. Stufe
|
12 | ENABLE <= '1';
|
13 |
|
14 | if ENABLE = '1' then
|
15 | S_CS (1) <= S_CS (0); -- 2. Stufe
|
16 | ENABLE <= '1';
|
17 | end if;
|
18 | end if;
|
19 | end if;
|
20 |
|
21 | end process SYNC;
|
So recht will das ganze nicht klappen, villeicht kann mir jemand
weiterhelfen.
Danke.