mikrocontroller.net

Forum: FPGA, VHDL & Co. Test_FSM_Sender


Autor: harri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,
ich möchte die Leute fragen, die Ahnung in VHDL haben, ob diesen Code 
richtig von der Funktionalität ist.Da beim simulieren Fehler gibt.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity sender is
    Port ( clk     : in  STD_LOGIC;
           reset  : in  STD_LOGIC;
           parin  : in  STD_LOGIC_VECTOR (7 downto 0);
           serout : out  STD_LOGIC);
end sender;

architecture Behavioral of sender is

type state_type is (senden, pause );
signal state   : state_type;

signal delaycnt : integer range 0 to 9999;
signal bitcnt : integer range 0 to 8;
signal bits  : std_logic_vector(7 downto 0);

begin
    process (clk, reset,parin)
  begin
    if reset = '1' then
      state <= senden;
      delaycnt <= 0; -- Bitdelay zurücksetzen
      bitcnt <= 8;  -- 8 Bits sind zu übertragen
      bits <= parin;
      elsif (clk'EVENT and clk='1') then
      case state is
        when senden =>
            if (bitcnt/=0) then     -- sind noch Bits übrig?
              bits <= '0' & (bits(7 downto 1));
              bitcnt <= bitcnt-1;
              serout <= bits(0);
              else
              state <= pause;
            end if;

        when pause =>
            if (delaycnt/=9999) then   -- 1 ms vorbei?
              delaycnt <= delaycnt+1; -- nein: weiterzählen
              else
              delaycnt <= 0;
              state <= senden ;
            end if;
      end case ;
    end if ;
   end process;
end Behavioral;


danke euch im voraus.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
harri schrieb:
> hallo zusammen,
> ich möchte die Leute fragen, die Ahnung in VHDL haben, ob diesen Code
> richtig von der Funktionalität ist.Da beim simulieren Fehler gibt.
Wenn das Simulieren Fehler gibt ist der Code nicht 'richtig' in seiner 
Funktionalität.

Autor: harri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, richtig ist ja nicht sonst hätte ich nicht gefragt !!!
aber woran es liegt weiss ich leider nicht !!
 Danke auf jedenfall...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da beim simulieren Fehler gibt.
Welchen Fehler?
Dieser Code gibt, nachdem der Reset inaktiv wurde, sofort mit jedem Takt 
ein Bit (von insgesamt 9 Bits) aus. Danach wird (laut Kommentar) 1 ms 
gewartet. Und dann wird im Zustand senden bis zum nächsten Reset 
gewartet.

Abgesehen davon, dass das Laden der Zähler und Register nicht asynchron 
erfolgen sollte (unsaubere Designpraxis), könnte man sich das Warten 
nach dem Senden sparen...

Oder sollte nach jedem einzelnen Bit 1 ms gewartet werden?

Autor: harri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi Lothar,
das sollte eigentlich die 8Bit serielle senden und dann in den Zustand 
Pause sollte 1ms warten und danach sollte das spielschen von Anfang 
wiederholen.

beim simulieren lässt sich eingentlich nicht simulieren.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
harri schrieb:
> beim simulieren lässt sich eingentlich nicht simulieren.
Gibts einen Fehler? Oder wie?

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ES gibt kein Unterschied zwischen 'lässt sich simulieren ' und 'gibt 
Fehler beim simulieren'.

aber danke für dein Hinweise.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist erledigt.funktioniert sowie es sein soll.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank schrieb:
> ist erledigt.funktioniert sowie es sein soll.
Na toll...  :-/
Schön wäre jetzt nur noch, dem Forum zu sagen woran es gelegen hat. 
Nur so können andere was davon lernen.

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.