www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Verhalten von Signalen nach zuweisung


Autor: Der Anfänger (vimes_ankh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine wahrscheinlich doofe Frage:
Ich habe ein design und füge hier drei gleiche Komponenten zur 
Berechnung einer Gleitkommazahl ein. Die Komponenten haben jeweils zwei 
eingänge von 32 bit breite und einen genau so breiten ausgang.
In der Logik, in die ich die Komponenten gehängt habe, habe ich für jede 
der Komponenten drei Signale der gleichen bitbreite. Also insgesamt 9 
Signale für ein- und Ausgabe der drei Komponenten.

Mein IPCore hat zwei writable register, von denen sollen die Daten 
kommen.

Mein Problem: Ich will jetzt abwechselnd auf die erste, dann auf die 
zweite und dann auf die dritte Komponente die Registerinhalte als 
Eingangsdaten legen. Ich habe einen Automaten geschrieben, in dem im 
ersten schritt reg1 und reg2 auf die eingangssignale der ersten 
komponente gelegt werden. Wenn ich jetzt im zweiten zustand, nach 
registeränderung, den Inhalt der Registersignale auf die eingangssignale 
der zweiten komponente lege, "behalten" sich die eingänge für Komponente 
eins dann die ersten Registerinhalte?

Vielen Dank für eure Antworten!

Autor: Der Anfänger (vimes_ankh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder einfacher Ausgedrückt: Wie behalten sich die sechs Eingangssignale 
für meine Komponenten die Daten, bis die Bereichnung fertig ist?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Der Anfänger

>Oder einfacher Ausgedrückt: Wie behalten sich die sechs Eingangssignale
>für meine Komponenten die Daten, bis die Bereichnung fertig ist?

Mittels Register/FlipFlops?

MfG
Falk


Autor: Der Anfänger (vimes_ankh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da bin ich jetzt auch drauf gekommen. Ich mache es jetzt 
folgendermassen, es wäre super, wenn jemand sagt, ob das totaler Quatsch 
ist:

Ich habe einen synchronisierten Prozess. Das einzige, was er macht, ist 
zu warten, ob ein std_logic auf 1 ist. Wenn das der Fall ist, mache ich 
eine Signalzuweisung der Eingangsregister auf die Eingänge meiner 
Komponenten. Bei 0 macht er nix. Wenn ich jetzt das Signal auf die 
Eingänge lege, mache ich das nicht per Signalzuweisung, sondern per 
setzen des std_logic auf 1, im nächsten Takt dann wieder auf Null.

Die Eingänge für meine Komponenten müssten den Zustand ja dann wieder 
halten, oder?

@Falk: Danke für dein Engagement im Forum. Ich persönlich habe schon 
sehr oft davon profitiert.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Der Anfänger

>Da bin ich jetzt auch drauf gekommen. Ich mache es jetzt
>folgendermassen, es wäre super, wenn jemand sagt, ob das totaler Quatsch
>ist:

Poste mal ein wenig Code (als Anhang), das sagt mehr als tausend 
allgmeine Worte.

>Ich habe einen synchronisierten Prozess. Das einzige, was er macht, ist
>zu warten, ob ein std_logic auf 1 ist. Wenn das der Fall ist, mache ich
>eine Signalzuweisung der Eingangsregister auf die Eingänge meiner
>Komponenten. Bei 0 macht er nix. Wenn ich jetzt das Signal auf die
>Eingänge lege, mache ich das nicht per Signalzuweisung, sondern per
>setzen des std_logic auf 1, im nächsten Takt dann wieder auf Null.

So in etwa passt das.

>Die Eingänge für meine Komponenten müssten den Zustand ja dann wieder
>halten, oder?

Die Eingänge nicht, aber die FlipFlops, welche die Eingänge speisen, 
schon. ;-)

MfG
Falk

Autor: Der Anfänger (vimes_ankh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Prozess zum Legen der Register auf die Eingänge:
  SCHREIBE_EINGANGSREGISTER1 : process( Bus2IP_Clk ) is
  begin

    if ( Bus2IP_Clk'event and Bus2IP_Clk = '1' ) then
     if(sax1_eingang_schreiben = '1') then
        sax1_x_in <= slv_reg2(32 to 63);
      sax1_y_in <= slv_reg3(32 to 63);
    end if;
   end if;     
  end process   SCHREIBE_EINGANGSREGISTER1;
Hier der Automat, der dann das Signal genau einen Takt auf 1 setzen soll 
(habs mal auf eine Komponente reduziert):
  ADDIERE_PROCESS : process( Bus2IP_Clk ) is
  begin
    if ( Bus2IP_Clk'event and Bus2IP_Clk = '1' ) then
      if ( Bus2IP_Reset = '1' ) then
        addier_zustand <= IDLE;
      sax1_exc_in <= '0';
      else
        case addier_zustand is
      
        when IDLE=>
        sax1_rdy_in <= '0';
        addier_zustand <= IDLE;
        if(addiere_aussen = '1') then
          sax1_rdy_in <= '0';
          sax1_eingang_schreiben <= '1';
          addier_zustand <= EINS;
          else 
            addier_zustand <= IDLE;
        end if;
         
       when EINS =>
         sax1_eingang_schreiben <= '0';
        sax1_rdy_in <= '1';
         if (fertig_geschrieben = '1') then 
          addier_zustand <= IDLE;    
          fertig_gerechnet <= '0';
          fertig_gerechnet <= '0';
            else 
              addier_zustand <= EINS;
              if (sax1_done = '1') then
            fertig_gerechnet <= '1';      
          end if;           
        end if;          
          when others =>
            addier_zustand    <= IDLE;       
        end case; 
      end if;
    end if;
  end process ADDIERE_PROCESS;

  

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Passt soweit. Aber die Formatierung ist grausam.

MfG
Falk

Autor: Der Anfänger (vimes_ankh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, weiss ich, war auf die schnelle gemacht. Nochmal danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.