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.
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.
ja, richtig ist ja nicht sonst hätte ich nicht gefragt !!! aber woran es liegt weiss ich leider nicht !! Danke auf jedenfall...
> 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?
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.
harri schrieb:
> beim simulieren lässt sich eingentlich nicht simulieren.
Gibts einen Fehler? Oder wie?
ES gibt kein Unterschied zwischen 'lässt sich simulieren ' und 'gibt Fehler beim simulieren'. aber danke für dein Hinweise.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.