mikrocontroller.net

Forum: FPGA, VHDL & Co. Buswahl und RS232 - invertieren?


Autor: Stefan Hanke (stefanhanke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will Daten zwischen zwei (asynchronen) FPGAs  austauschen. Dazu habe 
ich RS232 nachgebaut; das braucht nur ein Bit und ist (war) relativ 
schnell implementiert.

Das Signal ist elektrisch per LVTTL kodiert, und RS232 hat als 
Ruhezustand die '1'. Ist es da nicht besser, das Signal zu invertieren, 
so dass im Ruhezustand (fast) kein Strom fließt? Oder brauche ich mir 
darum keine Sorgen zu machen?

Das ist hier alles ein bisschen verzwickt. Ich habe es vorher nicht 
geschafft, per Handshake Daten korrekt zu übertragen. Das einzige, was 
da eigentlich schief gehen kann, ist eine fehlerhafte Abtastung der 
Handshake-Signale. Aber selbst, als ich den Takt phasenverschoben habe, 
hat es nicht geklappt. Kann man da sonst noch was falsch machen?

Anmerkungen bezüglich der "Bus"wahl? Ich werde innerhalb des 
Datenstromes zwar schon irgendwie "Addressen" haben, aber ich 
addressiere damit keine Teilnehmer im Sinne eines Busses. Wobei, man 
kann es natürlich so hinbiegen ;-)

 -- stefan

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist es da nicht besser, das Signal zu invertieren,
>so dass im Ruhezustand (fast) kein Strom fließt? Oder brauche ich mir
>darum keine Sorgen zu machen?

ich glaube da brauchst du dir keine sorgen drum machen, denn "richtig" 
(sprich nennenswert) strom fließt ja eh nur beim wechsel von 0 nach 1 
bzw. umgekehrt.

hast du genügend ff (3-4) zum einsynchronisieren deiner handshake 
leitungen ?!
hast du das als statemachine aufgebaut ? poste vielleicht mal deinen 
code.

gruß
rene

Autor: Stefan Hanke (stefanhanke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TheMason wrote:
> ich glaube da brauchst du dir keine sorgen drum machen, denn "richtig"
> (sprich nennenswert) strom fließt ja eh nur beim wechsel von 0 nach 1
> bzw. umgekehrt.
OK.

> hast du genügend ff (3-4) zum einsynchronisieren deiner handshake
> leitungen ?!
Öhm, ich habe ein einsames FF...

> hast du das als statemachine aufgebaut ? poste vielleicht mal deinen
> code.
Es gibt ein FIFO mit 16 bit Breite. Die ersten zwei Zustände brauche 
ich, um Daten aus dem FIFO zu holen. Die nächsten drei Zustände 
wiederholen sich viermal. st_write und st_write_again schreiben das 
Datum zweimal raus, bevor im st_wait_for_ack VALID auf '1' gesetzt wird.
      when st_idle =>
        if S_CMDQUEUE_EMPTY = '1' then
          next_wa_state <= st_idle;
        else
          next_wa_state <= st_idle_wait;
          next_S_CMDQUEUE_RD_EN <= '1';
        end if;
      when st_idle_wait =>
        -- now rd_en is at fifo, wait one more cycle
        -- for data being served.
        next_wa_state <= st_write_1;
      
      when st_write_1 =>
        next_wa_cmd <= S_CMDQUEUE_DOUT(3 downto 0);
        next_wa_state <= st_write_1_again;
      when st_write_1_again =>
        next_wa_cmd <= S_CMDQUEUE_DOUT(3 downto 0);
        next_wa_state <= st_wait_for_ack_1;
      when st_wait_for_ack_1 =>
        if S_ACK = '1' then
          next_wa_cmd <= S_CMDQUEUE_DOUT(3 downto 0);
          next_wa_state <= st_write_2;
        else
          next_wa_cmd <= S_CMDQUEUE_DOUT(3 downto 0);
          next_valid <= '1';
          next_wa_state <= st_wait_for_ack_1;
        end if;

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.