Sehr schön. Also das folgende funktioniert schon direkt:
| 1 | architecture Behavioral of BridgeDriver is
 | 
| 2 |     type State_t is (Off, Start, Charge, Enabled, Running);
 | 
| 3 |     signal State : State_t := Start;
 | 
| 4 |     
 | 
| 5 |     signal ALI : STD_LOGIC := '0';
 | 
| 6 |     signal AHI : STD_LOGIC := '0';
 | 
| 7 |     signal BLI : STD_LOGIC := '0';
 | 
| 8 |     signal BHI : STD_LOGIC := '0';
 | 
| 9 |     
 | 
| 10 | begin
 | 
| 11 |     process(IN_CLOCK, State)
 | 
| 12 |     begin
 | 
| 13 |         if rising_edge(IN_CLOCK) then
 | 
| 14 |             case State is 
 | 
| 15 |                 when Start =>   ALI <= '0';
 | 
| 16 |                                 AHI <= '0';
 | 
| 17 |                                 BLI <= '0';
 | 
| 18 |                                 BHI <= '0';
 | 
| 19 |                                 State <= Charge;
 | 
| 20 |                                         
 | 
| 21 |                 when Charge =>  ALI <= '1';
 | 
| 22 |                                 BLI <= '1';
 | 
| 23 |                                 State <= Enabled;
 | 
| 24 |                 
 | 
| 25 |                 when Enabled => ALI <= '0';
 | 
| 26 |                                 AHI <= '1';
 | 
| 27 |                                 State <= Running;
 | 
| 28 |                                         
 | 
| 29 |                 when Running => ALI <= not ALI;
 | 
| 30 |                                 AHI <= not AHI;
 | 
| 31 | 
 | 
| 32 |                 when others =>                                        
 | 
| 33 |             end case;
 | 
| 34 |         end if;
 | 
| 35 |     end process;
 | 
| 36 |     
 | 
| 37 |     OUT_ALI <= ALI;
 | 
| 38 |     OUT_AHI <= AHI;
 | 
| 39 |     OUT_BLI <= BLI;
 | 
| 40 |     OUT_BHI <= BHI;
 | 
| 41 |         
 | 
| 42 | end Behavioral;
 | 
Jetzt möchte ich aber in meinem CPLD asynchrone Logik entwickeln. Das 
heißt ich möchte jetzt, dass die Ausgänge asynchron verändert werden 
können. Das ganze soll ein Chopper-Stromgregler werden.
- Bei Taktbeginn (rising_edge von IN_CLOCK) sollen die Ausgänge gesetzt 
werden.
- Bei einem "Komparator-Interrupt" sollen die Ausgänge zurückgesetzt 
werden.
Ich dachte nun eigentlich, dass die Signale ALI, AHI, BLI, BHI intern 
als Flipflops realisiert werden (können). Und zwar ein solches FF, was 
asynchron gesetzt oder zurückgesetzt werden kann. Das Prinzipschaltbild 
ist mal im Anhang angehängt (Datenblatt L297).
Wenn ich allerdings einen zweiten Prozess machen möchte, der die Signale 
entsprechend zurücksetzt, dann beschwert sich VHDL darüber, dass die 
"Signals connected to multiple drivers".
| 1 |     process(IN_COMP, State)
 | 
| 2 |     begin
 | 
| 3 |         if rising_edge(IN_COMP) then
 | 
| 4 |             case State is
 | 
| 5 |                 when Enabled => ALI <= '1';
 | 
| 6 |                                 AHI <= '0';
 | 
| 7 |                 
 | 
| 8 |                 when others =>
 | 
| 9 |             end case;
 | 
| 10 |         end if;
 | 
| 11 |     end process;
 | 
Ich bin ein Hardware Mensch und bin gerade etwas empört, dass man als 
Hardware Mensch erst wieder auf Software ebene "hochgehen" muss um 
Hardware zu definieren ;-) Sprich, ich weiß, wie die Hardware aussehen 
muss und muss jetzt einen Weg finden das korrekt in Software zu 
beschreiben.