RS-232 mit Bitsampling

Moderator (Firma: Titel) Persönliche Seite #3968910
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.