- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: [VHDL] Globale Variable/Signal?

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Anzeige

    Praxistest und DIY Projekte
    Sequentielle Schaltungen realisiert man meistens mit einer FSM. Sprich man hat ein Register (Signal in VHDL), welches den aktuellen Zustand speichert, und bei jeder steigenden Taktflanke wird anhand des Registerwerts (also des Zustands) und der Eingaben ein neuer Zustand berechnet und im Register gespeichert. Parallel dazu (also außerhalb des Prozesses) wird der Ausgabewert mithilfe des aktuellen Zustandes ermittelt, ggf. auch mithilfe der aktuellen Eingabe beim Mealy-Automat. Der Synthesiser wird dann schon selbst ermitteln, an welcher Stelle Flipflops nötig sind.

    Die von redraven beschriebene Schaltung macht im Prinzip auch nichts anderes.

    Siehe dazu auch die Artikel über Moore- und Mealy Automaten bei Wikipedia.

    MfG Mark

    PS: Wenn Du dich für soetwas interessierst, kann ich Dir das Buch "Digital Design and Computer Architecture" von David und Sarah Harris nur empfehlen. Das fängt quasi bei Null an und geht bis zum Entwurf eines einfachen MIPS-ähnlichen Prozessors sowie Caches und MMU. Alles ist sehr gut erklärt und zu jeder Schaltung gibt es Beispiel-Code in VHDL und Verilog.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    53
    Beiträge
    502
    Danke für die ausführliche Erklärung und den Tipp

    sast

    雅思特史特芬
    开发及研究

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    08.10.2010
    Beiträge
    7
    Zitat Zitat von p_mork
    Du kannst auch alle drei Prozesse in einen verpacken. Dabei prüfst Du, ob Reset auf '1' steht (nicht auf rising_edge). Wenn ja, dann wird alles auf '0' gesetzt, ansonsten auf die anderen Eingaben reagiert. Also etwa so

    Code:
    LIBRARY ieee; 
    USE ieee.std_logic_1164.all; 
    USE ieee.std_logic_arith.all; 
    
    ENTITY auswahl IS 
       PORT( 
          rst            : IN     std_logic; 
          start          : IN     std_logic; 
          zw_zeit        : IN     std_logic; 
          enable_zaehler : OUT    std_logic; 
          in_w_en        : OUT    std_logic; 
          up_dn_zahler   : OUT    std_logic 
       ); 
    
    -- Declarations 
    
    END auswahl ; 
    
    -- 
    ARCHITECTURE verh_auswahl OF auswahl IS 
    
    signal zw_z: std_logic := '0'; 
    signal z_alt: integer := 1; 
    
    BEGIN  
      --Taster Reset Prozess 
      
        reset_proc: process(rst, zw_zeit, start) 
      begin 
        if rst = '1' then -- bei Reset auf nichts anderes reagieren
          enable_zaehler <= '0'; 
          in_w_en <= '0'; 
          up_dn_zahler <= '1'; 
          zw_z <= '0'; 
          z_alt <= 1; 
    	else -- Kein Reset
    	  --Taster Zwischenzeit Prozess
    	  if rising_edge (zw_zeit) then 
    		  if zw_z = '0' then 
    			zw_z <= '1'; 
    			in_w_en <= '1'; 
    		  else 
    			in_w_en <= '0'; 
    		  end if; 
    	   end if;
    	   
    	   --Enable-Zähler-Signal Prozess 
    	   if rising_edge(start) then 
            if zw_z = '0' then        
              if z_alt = 1 then 
                enable_zaehler <= '1'; 
                up_dn_zahler <= '1'; 
                z_alt <= 2; 
              elsif z_alt = 2 then 
                enable_zaehler <= '0'; 
                z_alt <= 3; 
              elsif z_alt = 3 then 
                enable_zaehler <= '1'; 
                up_dn_zahler <= '0'; 
                z_alt <= 4; 
              else 
                enable_zaehler <= '0'; 
                z_alt <= 1; 
              end if; 
            end if; 
          end if; 
        end if;
      end process; 
    END ARCHITECTURE verh_auswahl;
    Dann hat jedes Signal genau eine Quelle.

    MfG Mark

    Edit: 'then' nach dem ersten if eingefügt.
    Danke =) Hat funktioniert! =)

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen