von
Kaffeetasse (Gast)
23.02.2014 17:26
Hallo,
ich bin noch neu im Gebiet des VHDL und habe einen VHDl-Code erzeugt
welcher in der Simulation funktioniert, die Synthese "klappt" auch -
jedoch nach der Simulation der synthetisierten Datei funktioniert leider
nichts mehr... Meine Vermutung ist nun das ich nicht synthesefähigen
Code erzeugt habe. Kann evtl. jemand im nachfolgenden Code die Stelle
benennen an der ich den nicht synthesefähigen Code verwende ? (Info am
Rande: synchronisiert wird das ganze mit dem q_st-Signal)
Vielen Dank!
LG K.
CODE:
1 --funktionsblock: AMPELKREUZUNG
2 ---------------------------------
3 LIBRARY IEEE ;
4 USE IEEE . STD_LOGIC_1164 . ALL ;
5 USE IEEE . STD_LOGIC_ARITH . ALL ;
6 USE IEEE . STD_LOGIC_UNSIGNED . ALL ;
7 ---------------------------------
8
9 -------------------------------------------------------------------------------------------
10 ENTITY ampelkreuzung IS
11 PORT ( sensoren : IN STD_LOGIC ; --EINGANGSSIGNAL NÄHERUNGSSENSOREN KFZ
12 f_sensoren : IN STD_LOGIC ; --EINGANGSSIGNAL FUSSGAENGERAMPEL
13 en : IN STD_LOGIC ; --ON/OFF-SIGNAL
14 t_n : IN STD_LOGIC ; --TAG/NACHT-SENSORSIGNAL
15 q_st : IN STD_LOGIC_VECTOR ( 4 DOWNTO 0 ); --EINGANGSSINAL TAKTGEBER SIGNALUMSCHALTUNG
16 stsig1 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 1
17 stsig2 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 2
18 stsig3 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 3
19 stsig4 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 4
20 stsig5 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL F-AMPEL 1
21 stsig6 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL F-AMPEL 2
22 stsig7 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL F-AMPEL 3
23 stsig8 : OUT BIT_VECTOR ( 3 DOWNTO 0 )); --STEUERSIGNAL F-AMPEL 4
24 END ampelkreuzung ;
25 -------------------------------------------------------------------------------------------
26
27 -------------------------------------------------------------------------------------------
28 ARCHITECTURE behav OF ampelkreuzung IS
29
30 BEGIN
31
32 p1 : PROCESS ( sensoren , en , t_n , q_st )
33
34 -----------------------------------------------------------------------------
35 VARIABLE state : INTEGER RANGE 0 TO 4 ; --ZUSTANDSVARIABLE
36 VARIABLE state_2 : INTEGER RANGE 0 TO 4 ; --NEBENZUSTANDSVARIABLE
37 VARIABLE sig1 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 1
38 VARIABLE sig2 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 2
39 VARIABLE sig3 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 3
40 VARIABLE sig4 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 4
41 VARIABLE sig5 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 5
42 VARIABLE sig6 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 6
43 VARIABLE sig7 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 7
44 VARIABLE sig8 : BIT_VECTOR ( 3 DOWNTO 0 ); --SPEICHERVARIABLE STEUERSIGNAL 8
45 -----------------------------------------------------------------------------
46
47 BEGIN
48
49 IF ( sensoren = '1' AND t_n = '0' AND en = '1' ) THEN state : = 1 ; END IF ; -- ZUSTANDSABFRAGE
50 IF ( f_sensoren = '1' AND t_n = '0' AND en = '1' ) THEN state_2 : = 1 ; END IF ; -- ZUSTANDSABFRAGE_2
51 ------------------------------------------------------------------------------------------------------------------
52 IF ( state = 0 AND ( state_2 = 0 OR state_2 = 1 ) AND t_n = '0' ) THEN sig1 : = "0011" ; sig2 : = "0011" ; sig3 : = "0001" ; sig4 : = "0001" ;
53 sig5 : = "0001" ; sig6 : = "0001" ; sig7 : = "0001" ; sig8 : = "0001" ;
54 --TAG + KEIN AUTO NS = HS GRUEN & NS ROT
55 -------------------------------------------------------------------------------------------------------------------
56 ELSIF ( t_n = '1' AND en = '1' ) THEN sig1 : = "0000" ; sig2 : = "0000" ; sig3 : = "0101" ; sig4 : = "0101" ;
57 sig5 : = "0000" ; sig6 : = "0000" ; sig7 : = "0000" ; sig8 : = "0000" ;
58 --NACHT = HS AUS & NS GELB/AUS + FUSSGAENGERAMPEL AUS
59 -------------------------------------------------------------------------------------------------------------------
60 ELSIF ( state = 1 AND q_st = "00101" AND en = '1' ) THEN sig1 : = "0100" ; sig2 : = "0100" ; sig3 : = "0010" ; sig4 : = "0010" ;
61 --TAG + AUTO DA + TIMER=>5 = HS GELB & NS ROT-GELB
62 ELSIF ( state = 1 AND q_st = "01000" AND en = '1' ) THEN sig1 : = "0001" ; sig2 : = "0001" ; sig3 : = "0010" ; sig4 : = "0010" ;
63 --TAG + AUTO DA + TIMER=>8 = HS ROT & NS ROT-GELB
64 ELSIF ( state = 1 AND q_st = "01001" AND en = '1' ) THEN sig1 : = "0001" ; sig2 : = "0001" ; sig3 : = "0011" ; sig4 : = "0011" ;
65 --TAG + AUTO DA + TIMER=>9 = HS ROT & NS GRUEN
66 ELSIF ( state = 1 AND q_st = "01111" AND en = '1' ) THEN sig1 : = "0010" ; sig2 : = "0010" ; sig3 : = "0100" ; sig4 : = "0100" ;
67 --TAG + AUTO DA + TIMER=>15 = HS ROT-GELB & NS GELB
68 ELSIF ( state = 1 AND q_st = "10000" AND en = '1' ) THEN sig1 : = "0010" ; sig2 : = "0010" ; sig3 : = "0001" ; sig4 : = "0001" ;
69 --TAG + AUTO DA + TIMER=>18 = HS ROT-GELB & NS ROT
70 ELSIF ( state = 1 AND q_st = "10011" AND en = '1' ) THEN sig1 : = "0011" ; sig2 : = "0011" ; sig3 : = "0001" ; sig4 : = "0001" ;
71 --TAG + AUTO DA + TIMER=>19 = HS GRÜN & NS ROT
72 ELSIF ( q_st = "11110" AND en = '1' ) THEN state : = 0 ; state_2 : = 0 ;
73 --TIMER=>30 = STATE WIEDER 0
74 END IF ;
75 ---------------------------------------------------------------------
76 IF ( state = 1 AND state_2 = 1 AND q_st = "01001" AND en = '1' ) THEN
77 sig5 : = "0010" ; sig6 : = "0010" ; sig7 : = "0010" ; sig8 : = "0010" ; END IF ;
78 --TAG + FUSSGAENGER DA + TIMER=>9 = F-AMPEL GRUEN
79 IF ( state = 1 AND state_2 = 1 AND q_st = "01111" AND en = '1' ) THEN
80 sig5 : = "0001" ; sig6 : = "0001" ; sig7 : = "0001" ; sig8 : = "0001" ; END IF ;
81 --TAG + FUSSGAENGER DA + TIMER=>15 = F-AMPEL ROT
82 ---------------------------------------------------------------------
83
84 --SPEICHERVARIABELN ERGEBEN SICH ZU STEUERSIGNALE:
85 -------------
86 stsig1 <= sig1 ;
87 stsig2 <= sig2 ;
88 stsig3 <= sig3 ;
89 stsig4 <= sig4 ;
90 stsig5 <= sig5 ;
91 stsig6 <= sig6 ;
92 stsig7 <= sig7 ;
93 stsig8 <= sig8 ;
94 -------------
95
96 END PROCESS p1 ;
97
98 END behav ;
FORCE-FILE:
force en 1 0 ns;
force t_n 1 0ns, 0 600 ns;
force sensoren 0 0ns, 1 300 ns, 0 500 ns, 1 1200 ns, 0 1800 ns, 1 2300
ns;
force f_sensoren 0 0ns, 1 300 ns, 0 500 ns, 1 1200 ns, 0 1800 ns, 1 2300
ns;
force q_st 2#00000 0;
force q_st 2#00101 1300;
force q_st 2#01000 1500;
force q_st 2#01001 2000;
force q_st 2#01111 2500;
force q_st 2#10000 2700;
force q_st 2#10011 3000;
force q_st 2#10100 3200;
force q_st 2#11110 3500;
von
Selbständiger (Gast)
23.02.2014 17:45
Könnte ein Phantomfehler sein. Das mit den force Anweisungen kenne ich
so nicht. Mach mal lieber eine Testbench, die läuft und die man per
Simulation laufen lassen kann. Dann die Ergebnisse visuell
dokumentieren. Meistens siehst Du dann schon selber, was nicht nicht.
von
PittyJ (Gast)
23.02.2014 18:24
Soll das wirklich auf ein FPGA synthetisiert werden?
Ich habe es anders gelernt. So mit Clock und rising_edge. Und Variablen
sind für mich tabu, ich nehme Signale.
Mit diesen Einschränkungen lief es dann viel besser.
Welches Lehrbuch hast du?
Das Ganze fängt schon damit an, dass Du keine synthetisierbare
Beschreibung für eine getaktete Schaltung verwendest.
Diese schaut nämlich so aus:
1 process ( clk ) is
2 begin
3 if rising_edge ( clk )
4 if . , ...
5 end if ;
6 end process ;
clk wäre bei Dir q_st, nehme ich an.
von
Lothar M.
(Firma: Titel)
(lkmiller )
(Moderator )
23.02.2014 20:30
Kaffeetasse schrieb:
> Meine Vermutung ist nun das ich nicht synthesefähigen Code erzeugt habe.
Du vermutest richtig. Das Ganze ist nur ein unübersichtlicher
monstergroßer Kombinatorikhaufen. Darin ist kein definiertes
Speicherelement, so eines wäre aber zum Speichern des aktuellen
Ampelzustand unbedingt nötig.
Zudem ist durch deine Variablengeschichte die Suimulation einfach
falsch, weil eigentlich eine Änderung von z.B. state auch eine
Neuberechnung des Prozesses nötig macht. Weil aber eine Variable nicht
in die Sensitivliste genommen werden kann , ist die Simulation falsch,
denn die Hardware wird sich anders verhalten. Dazu der Klassiker:
Beitrag "Variable vs Signal"
Kurz: verwende niemals speichernde Variablen . Oder wenn schon, dann
nach frühestens 1 Jahr ausgiebiger VHDL Praxis und nur in einem
getakteten Prozess.
Und zur Simulation: vergiss diesen FORCE-Murks! Du hast doch VHDL für
die Testbench. Mach erst mal eine blinkende LED und die zugehörige
Simulation:
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
Und dann das Lauflicht:
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html
Und insgesamt ist eine Ampel nichts anderes als ein etwas aufwendigeres
Lauflicht...
Sieh dir mal diese Ampel an. Und verstehe sie. Vielleicht wird dir dann
etwas klrer, was du alles falsch machst:
Beitrag "Re: Ampelsteuerung"
von
Kaffeetasse (Gast)
24.02.2014 20:33
vielen dank für die vielen anmerkungen... ich habe mich mal an einige
verbesserungen gemacht aber das problem bleibt das gleiche: simulation
funktioniert, synthese + simulation nicht... im anhang hab ich das
simulationsergebnis VOR der synthese (pic)... mein neuer quelltext + dem
syntheseergebniss hab ich mal am anschluss aufgeführt. weis evtl. wer
was weiterhin falsch ist?
vielen dank!
lg martin
quellcode:
1 LIBRARY IEEE ;
2 USE IEEE . STD_LOGIC_1164 . ALL ;
3 USE IEEE . STD_LOGIC_ARITH . ALL ;
4 USE IEEE . STD_LOGIC_UNSIGNED . ALL ;
5 USE IEEE . NUMERIC_STD . ALL ;
6
7 ENTITY ampelkreuzung IS
8 PORT ( sen1 , sen2 : IN STD_LOGIC ; --EINGANGSSIGNAL NÄHERUNGSSENSOREN KFZ
9 en : IN STD_LOGIC ; --ON/OFF-SIGNAL
10 clk : IN STD_LOGIC ; --TAKT- & RESET-SIGNAL
11 nacht : IN STD_LOGIC ; --TAG/NACHT-SENSORSIGNAL
12 sig1 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 1
13 sig2 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 2
14 sig3 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 3
15 sig4 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL AMPEL 4
16 sig5 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL F-AMPEL 1
17 sig6 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL F-AMPEL 2
18 sig7 : OUT BIT_VECTOR ( 3 DOWNTO 0 ); --STEUERSIGNAL F-AMPEL 3
19 sig8 : OUT BIT_VECTOR ( 3 DOWNTO 0 )); --STEUERSIGNAL F-AMPEL 4
20 END ampelkreuzung ;
21
22 ARCHITECTURE behav OF ampelkreuzung IS
23
24 constant sec : integer : = 5 ; --ZÄHLERKONSTANTE
25 signal time : integer range 0 to 5 * sec ; --ZÄHLERSIGNAL
26 signal state : integer range 0 to 7 ; --STATUSSIGNAL
27 signal sensoren : STD_LOGIC ; --INTERNES SENSORSIGNAL
28
29 BEGIN
30
31 p1 : PROCESS ( clk , sensoren , en , nacht )
32
33 BEGIN
34
35 -----------------------------------------------------------
36 IF ( clk 'EVENT AND clk = '1' AND clk 'LAST_VALUE = '0' ) THEN --SYNCHRONISATION
37
38 ---------------------------------
39 IF ( time /= 0 ) THEN time <= time -1 ; --ZÄHLER
40 END IF ;
41 ---------------------------------
42
43 ---------------------------------------------
44 IF ( sen1 = '1' OR sen2 = '1' ) THEN sensoren <= '1' ; --SENSOR 1 ODER SENSOR 2 DANN OUT AUF HIGH
45 ELSE sensoren <= '0' ; --SONST OUT AUF LOW
46 END IF ;
47 ---------------------------------------------
48
49 ---------------------------------
50 IF ( state = 0 ) THEN --SENSORABFRAGE
51 IF ( sensoren = '1' ) THEN state <= 1 ;
52 time <= 2 * sec ;
53 END IF ;
54 END IF ;
55 ---------------------------------
56
57 ---------------------------------------------------------
58 IF ( nacht = '1' AND en = '1' ) --NACHTSCHALTUNG
59 THEN
60 sig1 <= "0000" ; sig2 <= "0000" ; sig3 <= "0101" ; sig4 <= "0101" ;
61 sig5 <= "0000" ; sig6 <= "0000" ; sig7 <= "0000" ; sig8 <= "0000" ;
62 END IF ;
63 ---------------------------------------------------------
64
65 --------------------------------------------------------------------
66 IF ( time = 0 )
67 THEN
68
69 IF ( nacht = '0' AND en = '1' )
70 THEN
71
72 CASE state IS
73
74 WHEN 0 => sig1 <= "0011" ; sig2 <= "0011" ; sig3 <= "0001" ; sig4 <= "0001" ;
75 sig5 <= "0001" ; sig6 <= "0001" ; sig7 <= "0001" ; sig8 <= "0001" ;
76 --TAG + KEIN AUTO NS = HS GRUEN & NS ROT
77
78 WHEN 1 => sig1 <= "0100" ; sig2 <= "0100" ; sig3 <= "0010" ; sig4 <= "0010" ;
79 time <= 2 * sec ;
80 state <= 2 ;
81 --TAG + AUTO DA + TIMER=>2 = HS GELB & NS ROT-GELB
82
83 WHEN 2 => sig1 <= "0001" ; sig2 <= "0001" ; sig3 <= "0010" ; sig4 <= "0010" ;
84 time <= 2 * sec ;
85 state <= 3 ;
86 --TAG + AUTO DA + TIMER=>2 = HS ROT & NS ROT-GELB
87
88 WHEN 3 => sig1 <= "0001" ; sig2 <= "0001" ; sig3 <= "0011" ; sig4 <= "0011" ;
89 sig5 <= "0010" ; sig6 <= "0010" ; sig7 <= "0010" ; sig8 <= "0010" ;
90 time <= 3 * sec ;
91 state <= 4 ;
92 --TAG + AUTO DA + TIMER=>2 = HS ROT & NS GRUEN + F-AMPEL GRUEN
93
94 WHEN 4 => sig1 <= "0010" ; sig2 <= "0010" ; sig3 <= "0100" ; sig4 <= "0100" ;
95 sig5 <= "0001" ; sig6 <= "0001" ; sig7 <= "0001" ; sig8 <= "0001" ;
96 time <= 2 * sec ;
97 state <= 5 ;
98 --TAG + AUTO DA + TIMER=>2 = HS ROT-GELB & NS GELB + F-AMPEL ROT
99
100 WHEN 5 => sig1 <= "0010" ; sig2 <= "0010" ; sig3 <= "0001" ; sig4 <= "0001" ;
101 time <= 2 * sec ;
102 state <= 6 ;
103 --TAG + AUTO DA + TIMER=>2 = HS ROT-GELB & NS ROT
104
105 WHEN 6 => sig1 <= "0011" ; sig2 <= "0011" ; sig3 <= "0001" ; sig4 <= "0001" ;
106 time <= 2 * sec ;
107 state <= 7 ;
108 --TAG + AUTO DA + TIMER=>2 = HS GRÜN & NS ROT
109
110 WHEN 7 => state <= 0 ;
111
112 END CASE ;
113
114 END IF ;
115
116 END IF ;
117
118 END IF ;
119
120 END PROCESS p1 ;
121
122 END behav ;
synthese:
1 library IEEE , MTC45000 ;
2 use MTC45000 . MTC45000_vcomponents . all ;
3 use IEEE . STD_LOGIC_1164 . all ;
4
5 entity ampelkreuzung_synth is
6 port (
7 sen1 : IN std_logic ;
8 sen2 : IN std_logic ;
9 en : IN std_logic ;
10 clk : IN std_logic ;
11 nacht : IN std_logic ;
12 sig1 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
13 sig2 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
14 sig3 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
15 sig4 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
16 sig5 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
17 sig6 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
18 sig7 : OUT std_logic_vector ( 3 DOWNTO 0 ) ;
19 sig8 : OUT std_logic_vector ( 3 DOWNTO 0 )) ;
20 end ampelkreuzung_synth ;
21
22 architecture behav of ampelkreuzung_synth is
23 signal sig2_dup0_2 , sig2_dup0_1 , sig2_dup0_0 , sig4_dup0_2 , sig4_dup0_1 ,
24 sig4_dup0_0 , sig8_dup0_1 , sig8_dup0_0 , sig1_dup0_3 , state_2 , time_4 ,
25 state_0 , nx1454 , state_1 , sensoren , nx30 , nx40 , nx56 , nx66 , time_3 ,
26 nx1455 , nx1456 , time_2 , time_1 , time_0 , nx74 , NOT_294 , nx166 , nx212 ,
27 nx238 , nx250 , nx262 , nx272 , NOT_nx1453 , nx1466 , nx1496 , nx1504 , nx1514 ,
28 nx1524 , nx1536 , nx1546 , nx1556 , NOT_nx244 , nx1594 , nx1596 , nx1606 ,
29 nx1614 , nx1616 , nx1632 , nx1636 , nx1640 , nx1644 , nx1647 , nx1649 , nx1655 ,
30 nx1662 , nx1664 , nx1667 , nx1671 , nx1677 , nx1680 , nx1684 , nx1688 , nx1691 ,
31 nx1694 , nx1703 , nx1705 , nx1708 , nx1714 , nx1719 , nx1733 : std_logic ;
32
33 begin
34 sig1 ( 3 ) <= sig1_dup0_3 ;
35 sig1 ( 2 ) <= sig2_dup0_2 ;
36 sig1 ( 1 ) <= sig2_dup0_1 ;
37 sig1 ( 0 ) <= sig2_dup0_0 ;
38 sig2 ( 3 ) <= sig1_dup0_3 ;
39 sig2 ( 2 ) <= sig2_dup0_2 ;
40 sig2 ( 1 ) <= sig2_dup0_1 ;
41 sig2 ( 0 ) <= sig2_dup0_0 ;
42 sig3 ( 3 ) <= sig1_dup0_3 ;
43 sig3 ( 2 ) <= sig4_dup0_2 ;
44 sig3 ( 1 ) <= sig4_dup0_1 ;
45 sig3 ( 0 ) <= sig4_dup0_0 ;
46 sig4 ( 3 ) <= sig1_dup0_3 ;
47 sig4 ( 2 ) <= sig4_dup0_2 ;
48 sig4 ( 1 ) <= sig4_dup0_1 ;
49 sig4 ( 0 ) <= sig4_dup0_0 ;
50 sig5 ( 3 ) <= sig1_dup0_3 ;
51 sig5 ( 2 ) <= sig1_dup0_3 ;
52 sig5 ( 1 ) <= sig8_dup0_1 ;
53 sig5 ( 0 ) <= sig8_dup0_0 ;
54 sig6 ( 3 ) <= sig1_dup0_3 ;
55 sig6 ( 2 ) <= sig1_dup0_3 ;
56 sig6 ( 1 ) <= sig8_dup0_1 ;
57 sig6 ( 0 ) <= sig8_dup0_0 ;
58 sig7 ( 3 ) <= sig1_dup0_3 ;
59 sig7 ( 2 ) <= sig1_dup0_3 ;
60 sig7 ( 1 ) <= sig8_dup0_1 ;
61 sig7 ( 0 ) <= sig8_dup0_0 ;
62 sig8 ( 3 ) <= sig1_dup0_3 ;
63 sig8 ( 2 ) <= sig1_dup0_3 ;
64 sig8 ( 1 ) <= sig8_dup0_1 ;
65 sig8 ( 0 ) <= sig8_dup0_0 ;
66 --ix1439 : GND port map ( Y=>sig1_dup0_3);
67 sig1_dup0_3 <= '0' ;
68 ix1547 : AO35X05 port map ( Z => nx1546 , A => state_0 , B => state_1 , C => nx1454 ,
69 D => nx1705 , E => nx212 );
70 ix41 : MUX21X05 port map ( Z => nx40 , A => sensoren , B => nx1632 , S => nx1649 );
71 reg_sensoren : FD1QM port map ( Q => sensoren , CP => clk , D => nx30 );
72 ix31 : OR2 port map ( Z => nx30 , A => sen1 , B => sen2 );
73 reg_state_0 : FD1SM port map ( Q => state_0 , QN => nx1632 , CP => clk , D => nx40 ,
74 TE => NOT_nx1453 , TI => state_0 );
75 ix1635 : NR2 port map ( Z => NOT_nx1453 , A => nx1636 , B => nx1664 );
76 reg_state_1 : FD1M port map ( Q => state_1 , QN => nx1640 , CP => clk , D => nx1466
77 );
78 reg_state_2 : FD1M port map ( Q => state_2 , QN => nx1644 , CP => clk , D => nx1536
79 );
80 ix1537 : AO4 port map ( Z => nx1536 , A => nx1647 , B => NOT_nx1453 , C => nx1644 , D
81 => nx1664 );
82 reg_time_0 : FD1SQM port map ( Q => time_0 , CP => clk , D => nx74 , TE => NOT_294 ,
83 TI => time_0 );
84 ix75 : AO7 port map ( Z => nx74 , A => time_0 , B => nx66 , C => nx1662 );
85 ix1663 : ND4 port map ( Z => nx1662 , A => nx1644 , B => state_1 , C => state_0 , D =>
86 nx1664 );
87 ix1665 : NR4X05 port map ( Z => nx1664 , A => nx1456 , B => time_4 , C => nacht , D =>
88 nx1694 );
89 ix1668 : NR3X05 port map ( Z => nx1667 , A => time_0 , B => time_1 , C => time_2 );
90 ix1497 : AO7 port map ( Z => nx1496 , A => nx1671 , B => nx1455 , C => nx1680 );
91 reg_time_1 : FD1M port map ( Q => time_1 , QN => nx1671 , CP => clk , D => nx1496 );
92 reg_time_4 : FD1M port map ( Q => time_4 , QN => OPEN , CP => clk , D => nx1524 );
93 ix1525 : AN3 port map ( Z => nx1524 , A => nx1677 , B => time_4 , C => nx1456 );
94 ix1678 : AO2 port map ( Z => nx1677 , A => nx56 , B => nx1649 , C => sensoren , D =>
95 nx1636 );
96 ix1681 : AO26X05 port map ( Z => nx1680 , A => time_1 , B => time_0 , C => nx66 , D =>
97 nx1655 , E => nx1455 );
98 ix1505 : AO20X05 port map ( Z => nx1504 , A => nx66 , B => nx1684 , C => nx1662 , D =>
99 NOT_294 );
100 ix1685 : AO20X05 port map ( Z => nx1684 , A => time_0 , B => time_1 , C => time_2 , D
101 => nx1667 );
102 ix1687 : NR3X05 port map ( Z => NOT_294 , A => nx1456 , B => time_4 , C => nx66 );
103 reg_time_3 : FD1M port map ( Q => time_3 , QN => nx1688 , CP => clk , D => nx1514 );
104 ix1515 : AO28 port map ( Z => nx1514 , A => nx1691 , B => nx1677 , C => nx1456 , D =>
105 NOT_294 );
106 ix1695 : IV port map ( Z => nx1694 , A => en );
107 reg_time_2 : FD1M port map ( Q => time_2 , QN => OPEN , CP => clk , D => nx1504 );
108 reg_sig8_0 : FD1M port map ( Q => sig8_dup0_0 , QN => nx1705 , CP => clk , D =>
109 nx1546 );
110 ix213 : ND2 port map ( Z => nx212 , A => nx1708 , B => nx1662 );
111 ix1709 : AO29 port map ( Z => nx1708 , A => nx1664 , B => nx1640 , C => nx1632 , D =>
112 en , E => nacht );
113 reg_sig8_1 : FD1QM port map ( Q => sig8_dup0_1 , CP => clk , D => nx1556 );
114 ix1557 : AO7A port map ( Z => nx1556 , A => sig8_dup0_1 , B => nx212 , C => nx1662 );
115 reg_sig4_0 : FD1SQM port map ( Q => sig4_dup0_0 , CP => clk , D => nx250 , TE =>
116 NOT_nx244 , TI => sig4_dup0_0 );
117 ix251 : AO7 port map ( Z => nx250 , A => nx1714 , B => nx166 , C => nx1664 );
118 ix1718 : AO6 port map ( Z => NOT_nx244 , A => en , B => nacht , C => nx1719 );
119 reg_sig4_1 : FD1SQM port map ( Q => sig4_dup0_1 , CP => clk , D => nx262 , TE =>
120 NOT_nx244 , TI => sig4_dup0_1 );
121 reg_sig4_2 : FD1SQM port map ( Q => sig4_dup0_2 , CP => clk , D => nx272 , TE =>
122 NOT_nx244 , TI => sig4_dup0_2 );
123 ix273 : OR2 port map ( Z => nx272 , A => nx238 , B => nx1714 );
124 ix239 : ND2 port map ( Z => nx238 , A => nx1664 , B => nx56 );
125 reg_sig2_0 : FD1QM port map ( Q => sig2_dup0_0 , CP => clk , D => nx1596 );
126 ix1597 : AO6N port map ( Z => nx1596 , A => sig2_dup0_0 , B => NOT_nx244 , C =>
127 nx1594 );
128 ix1595 : AO20X05 port map ( Z => nx1594 , A => state_2 , B => state_0 , C => nx1640 ,
129 D => nx238 );
130 reg_sig2_1 : FD1QM port map ( Q => sig2_dup0_1 , CP => clk , D => nx1606 );
131 reg_sig2_2 : FD1QM port map ( Q => sig2_dup0_2 , CP => clk , D => nx1616 );
132 ix1617 : AO6N port map ( Z => nx1616 , A => sig2_dup0_2 , B => NOT_nx244 , C =>
133 nx1614 );
134 ix263 : IV port map ( Z => nx262 , A => nx1733 );
135 ix1720 : IV port map ( Z => nx1719 , A => nx238 );
136 ix137 : IV port map ( Z => nx1455 , A => NOT_294 );
137 ix67 : IV port map ( Z => nx66 , A => nx1677 );
138 ix157 : IV port map ( Z => nx1454 , A => nx1664 );
139 ix1637 : AN3 port map ( Z => nx1636 , A => nx1640 , B => nx1644 , C => nx1632 );
140 ix1467 : AO2AN port map ( Z => nx1466 , A => nx1703 , B => nx1664 , C => state_1 , D
141 => NOT_nx1453 );
142 ix1648 : ND3A port map ( Z => nx1647 , A => nx166 , B => nx1649 , C => nx56 );
143 ix1650 : NR2A port map ( Z => nx1649 , B => nx1636 , A => nx1664 );
144 ix1656 : NR2A port map ( Z => nx1655 , B => time_0 , A => nx1671 );
145 ix57 : OR3 port map ( Z => nx56 , A => nx1640 , B => nx1644 , C => nx1632 );
146 ix133 : ND2A port map ( Z => nx1456 , A => time_3 , B => nx1667 );
147 ix1692 : OR2 port map ( Z => nx1691 , A => nx1688 , B => nx1667 );
148 ix1704 : ENX05 port map ( Z => nx1703 , A => nx1632 , B => nx1640 );
149 ix1715 : AN3 port map ( Z => nx1714 , A => nx1640 , B => state_2 , C => nx1632 );
150 ix167 : NR2A port map ( Z => nx166 , B => nx1703 , A => nx1644 );
151 ix1607 : AO2AN port map ( Z => nx1606 , A => nx238 , B => nx1733 , C => sig2_dup0_1 ,
152 D => NOT_nx244 );
153 ix1734 : AO3C port map ( Z => nx1733 , A => state_0 , B => state_1 , C => state_2 , D
154 => nx1664 );
155 ix1615 : AN4 port map ( Z => nx1614 , A => nx1644 , B => nx1640 , C => state_0 , D =>
156 nx1664 );
157 end behav ;
von
bko (Gast)
24.02.2014 21:33
>ich habe mich mal an einige
>verbesserungen gemacht aber das problem bleibt das gleiche: simulation
>funktioniert, synthese + simulation nicht..
Was genau funktioniert nicht? Waveform?
>MTC45000.MTC45000_vcomponents.all;
Was ist dein Zielplattform?
MTC45000 ist doch eine Actel ASIC Lib oder irre ich mich?
von
Kaffeetasse (Gast)
24.02.2014 21:39
naja nachdem von"nacht" in den "tag" geschalten wird bei der
ampelkreuzung sind auf einmal alle ausgänge undefeniert...
zielplattform ist:
Die Entwurfsimplementierung erfolgt an einem Spartan-Board mit dem
FPGA -Typ XC3S500E, Package FG320, Speed Grade -5.
von
bko (Gast)
24.02.2014 22:57
Bin verwirrt, das da ist doch kein Xilinx!
>synthese:
>library IEEE,MTC45000;
>use MTC45000.MTC45000_vcomponents.all;
> (...)
> reg_time_0 : FD1SQM port map ( Q=>time_0, CP=>clk, D=>nx74, >TE=>NOT_294,
> TI=>time_0);
> ix75 : AO7 port map ( Z=>nx74, A=>time_0, B=>nx66, C=>nx1662); D=>
> (...)
Das ist eine Alcatel CMOS 0.5u(o.ä.) CMOS-lib in der die Flipflop-Resets
fehlen!
Wenn du ein Asic machen willst, dann brauchst du eher so einen Reset:
Beitrag "Re: Reset für mehrere Komponenten"
Sonst geht in der Postlayoutsimulation wenig.
Syncron oder Asyncron, der Reset muss so oder so einsyncronisiert werden
Falls du aber tatsächlich ein FPGA als Ziel hast, dann gehen
auch initial Werte wie z.B.:
signal state : integer range 0 to 7 := 0 ;
Beitrag "Xilinx und die Resets"
von
Lothar M.
(Firma: Titel)
(lkmiller )
(Moderator )
24.02.2014 23:37
Kaffeetasse schrieb:
> LIBRARY IEEE ;
> USE IEEE.STD_LOGIC_1164.ALL;
> USE IEEE.STD_LOGIC_ARITH.ALL;
> USE IEEE.STD_LOGIC_UNSIGNED.ALL;
> USE IEEE.NUMERIC_STD.ALL;
Hach....
Viel hilft viel. Such mal hier im Forum nach "STD_LOGIC_ARITH
obsolete"...
> p1 : PROCESS (clk, sensoren, en, nacht)
Wenn das wirklich ein synchroner Prozess ist, der nur auf clk reagiert,
dann ist diese Sensitivliste überdefiniert.
BTW: Lange Quelltexte bitte als VHDL Datei anhängen.
24.02.2014 23:45 :
Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.