Forum: FPGA, VHDL & Co. RS-232 mit Bitsampling


von VHDLer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich hae ein RS232-Modul geschrieben mit Bitsampling. Die Siumlation 
läuft gut  aber es gibt eine Bit-Verschiebung.

Wenn einer oder der andere Vorschläge hat, freue ich mich

von keinguternick (Gast)


Lesenswert?

Cooles Muster, gibt es das auch als Schal oder Teppich?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

VHDLer schrieb:
> Die Siumlation läuft gut  aber es gibt eine Bit-Verschiebung.
Dann läuft sie als nicht gut, oder?
Wo ist die TB zur Waveform? Und wo genau sollte man da jetzt schauen? 
Was sind das alles für Signale? Haben die auch Namen oder ist das ein 
Ratespiel?

> Wenn einer oder der andere Vorschläge hat
Ich hätte da was... ;-)

1.
1
use IEEE.STD_LOGIC_ARITH.ALL;
2
use IEEE.STD_LOGIC_UNSIGNED.ALL;
3
use IEEE.NUMERIC_STD.all;
Niemals alle drei zusammen! Die letzte reicht locker aus...
Siehe den Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete" und viele 
Andere...

2.
1
        COUNT1_SIM      : OUT INTEGER RANGE 0 TO 519;
2
        COUNT2_SIM      : OUT INTEGER RANGE 0 TO 1560;
3
        COUNT3_SIM      : OUT INTEGER RANGE 0 TO 2603;
4
        COUNT4_SIM      : OUT INTEGER RANGE 0 TO 3645;
5
        COUNT5_SIM      : OUT INTEGER RANGE 0 TO 4686;
6
        BIT_COUNT2_SIM    : OUT INTEGER RANGE 0 TO 9;
7
        FLAG_SIM        : OUT STD_LOGIC;
8
        OFFSET_SIM      : OUT INTEGER RANGE 0 TO 199;
9
        RECEIVE_COUNT_SIM  : OUT INTEGER RANGE 0 TO 5207;
10
        NOADD_COUNT_SIM    : OUT INTEGER RANGE 0 TO 2 := 2;
11
        FILL_COUNT_SIM    : OUT INTEGER RANGE 0 TO 7 := 0;
Wozu Ports für solche Signale? Mit dem Simulator kann man auch interne 
Signale von instantiierten Modulen ansehen. Einfach mal ein wenig mit 
den Listen/Bäumen links am Rand herumklicken...

3.
1
            zCLK <= not zCLK;
So werden keine Takte erzeugt. Überhaupt sollte so ein Anfängerdesign 
nur 1 einzigen Takt enthalten. Wenn man unbedingt in höchster Not 
mehrere Takte braucht, dann verwendet man die Taktmanager im FPGA.

Auf den zweiten Blick: Glück gehabt, der zCLK ist gar kein Takt sondern 
nur ein Clock-Enable und trägt zu Unrecht diesen großen Namen "CLK" in 
sich...

4.
1
      :
2
      ELSIF (RISING_EDGE(CLK)) THEN
3
            CASE STATE2 is
4
                      
5
                    WHEN IDLE2 =>
6
                        ...
7
                        IF (RXD   = '0' AND zCLK = '0') THEN
8
                        ...                
9
                                        CASE RXD IS
RXD ist ein asynchrones Signal, das in eine FSM geht. Jedes asynchrone 
Signal MUSS einsynchronisiert werden. Siehe das dort:
http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren

5.
DIESE AUSUFERNDE GROSSSCHREIBEREI BRINGT EINEM JA DIE KRÄTZE ANS AUGE!

6.
Warum ist dein RS232 Modul so unübersichtlich, aufwändig (so viele 
Ressourcen/Flipflops für die Zähler!) und umständlich?
(Warum) wurdest du gezwungen, das so zu machen?

Ich würde da mal damit kontern:
http://www.lothar-miller.de/s9y/categories/42-RS232
http://www.lothar-miller.de/s9y/archives/60-RS232-IO.html#extended

: Bearbeitet durch Moderator
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
Noch kein Account? Hier anmelden.