mikrocontroller.net

Forum: FPGA, VHDL & Co. Verständnis Frage(FSM)!


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Alle!
ich will mir ein zustandsautomat in Vhdl implementieren.In einem Zustand 
muss ich da meine Daten in einem 16 bit register speichern.Soll ich mir 
in diesem Zustand ein register mit 16 als Wert intialisieren und mit 
jeder Positiven Flanke wird ein bit gespeichert und register wert wird 
verringert oder gibt es eine andere lösung.Ich hoffe,dass meine frage 
deutlich ist.
Best regard

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die 16 Bit seriell kommen, würde ich das in 16 verschiedenen 
Zuständen (oder sogar 32) formulieren, nicht als nur einen einzigen.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal für Deine Antwort.Die Bits werden seriell gekommen,aber 
ich muss nach jedem Bit Auslesen 4 clocks warten und da hab ich mir 4 
leere zustände hinzugefügt.Das heisst ich lese ein bit dann muss ich 4 
clocks warten und dann wieder Bit Auslesen .Wenn ich die 16 Bits 
erreiche ,gehe zum anfangszustand zurück.

Autor: Thomas Hertwig (mac4ever)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde eine FSM mit 5 Zuständen machen ... 1x lesen 4x warten
Zusätzlich noch einen Counter der die eingelesenen Bits zählt. Wenn der 
Counter den Wert 16 erreicht hat ein Flag setzen, dass die 16 Bits 
angekommen sind und anschließend kannst Du die Daten weiterverarbeiten 
...

Ansonsten müsstest du ja eine FSM mit 16 x 5 Zuständen machen ... wer 
will das schon ;)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja eine sache ist mir noch nicht deutlich!ok nehmen wir an ädass ich in 
diesem zustand einncounter der bis 16 zaehlen soll programmiert.Aber die 
daten was ich bekomme,muss ich auch in einem register speichern.meine 
frage kann ich den register programm auch in meinen zustand schreibe.Das 
heisst ich lese ein bit wird in register gespeichert und counter wird 
inkrementiert(naechstes clock bit wird nach links geschoben und 
counter++..) wenn ich 16 erreiche dann wieder anfangszustand.Vielleicht 
war ein Algorithmus frage aber ich bin neu in der Vhdl Welt.

Autor: Thomas Hertwig (mac4ever)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich beschränke das ganze mal auf den Zustand der das Bit ausliest.
entity bits_lesen is
 port(
  clk    : in std_logic;
  bit_in : in std_logic );
end entity

architecture arch of bits_lesen is

 signal bit_reg_16 : std_logic_vector(15 downto 0);
 signal reg_full   : std_logic; -- Flag für 16 Bit gelesen;

 type state_type is (lese_bit, wait1, wait2, wait3, wait4);
 signal current_state: state_type;

begin
...
 process(clk)
 begin
  -- hier ist die FSM drin
 case current_state is
  when lese_bit =>
   if counter < 16 then
    counter <= counter + 1;
    16_bit_reg <= 16_bit_reg(14 downto 0) & bit_in;
   else
    reg_full <= '1';
    counter <= (others=>'0');
   end if;
   current_state <= wait1;
  -- restliche FSM
 end process;
...
end arch;

Fehlt halt noch einiges, aber wenigstens ein Anfang. Das bit_reg_16 ist 
im Prinzip ein Schieberegister.

Autor: ijuz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um mal etwas Werbung zu machen:
http://sourceforge.net/projects/fsmdesigner/

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.