Diese 3 VHDL-Dateien passen nicht zusammen.
Ich bekomme die Fehler:
1 | Line 97: Formal port <sw_i> does not exist in entity <ioctrl>.
|
2 | Line 100: Formal port <ct_instructions> does not exist in entity <ioctrl>.
|
Ok, dann behebe ich das mal....
Und tatsächlich: keine Änderung am Ausgang. Suspekt.
Was liefert die Synthese? Der RTL-Plan zeigt: Ausgänge hart auf 0
verdrahtet. Da geht doch irgendwas mit dem Takt nicht richtig zu...
Kurz: ich reduziere das Problem mal auf das allernötigste. Dann kommst
du sicher selber drauf, was da passiert:
1 | entity ioctrl is
|
2 | port
|
3 | ( ...
|
4 | clock : in std_logic := '0';
|
5 | ...
|
6 | );
|
7 | end ioctrl;
|
8 |
|
9 | :
|
10 | :
|
11 |
|
12 | signal clk_50 : std_logic:= '0';
|
13 |
|
14 | :
|
15 | :
|
16 | dff_2_bit_1 : d_ff_2bit
|
17 | port map
|
18 | ( ...
|
19 | clk_i => clk_50,
|
20 | ...
|
Das zweite Problem lauert dann dort:
1 | entity ioctrl is
|
2 | port
|
3 | ( ...
|
4 | reset : in std_logic:= '0';
|
5 | :
|
6 | :
|
7 |
|
8 | signal reset_all : std_logic:= '0';
|
9 |
|
10 | :
|
11 | :
|
12 | dff_2_bit_1 : d_ff_2bit
|
13 | port map
|
14 | (
|
15 | r_i => reset_all,
|
Fazit: am besten nennst du deinen Takt und deinen Reset (wenn du schon
einen verwendest) immer gleich. Dann kann sowas nicht passieren...
BTW:
Es ist sinnlos, Eingangssignale vorzubelegen:
1 |
|
2 | pb_i : in std_logic_vector (1 downto 0):=(others => '0');
|
Wie sollte denn das in der realen Hardware funktionieren?
Fazit: Simulation passt nicht zur Hardware, Simulation falsch.