Hallo Zusammen, ich hätte eine kurze Frage. Ich möchte gerne ein UART Datastream von einem µC mit 115200bauds in ein CPLD einschleifen und an mehreren Pins von einem CPLD ausgeben. Also µC_Tx-->CPLD-->viele µCRx´s... Klar könnte ich auch einige RxSlaves an einem µCTx betreiben,aber das soll später alles etwas flexibler werden mittels CPLD. Eigentlich muss ich den Eingang vom CPLD ja einfach auf zb auf ein Port bzw Vektor ausgeben... Brauche ich da eine Clock? Oder kann man das kombinatorisch aufbauen? Treten da irgendwelche gravierenden Delays auf? Beste Grüße Marco
Du willst ja im Prinzip nur Puffern, also rein kombinatorische Logik. Klar gibts Verzögerungen, aber die sind wohl irrelevant...
Besten Dank für die Antwort... Was genau meinst du mit Puffern? ich möchte "direkt" die ankommenden high/low Pegel am Eingang des CPLDs auf ein Port verteilen. Liege ich da richtig, dass bei kombinatorischer Logik auf "Events" an dem Eingang reagiert wird? Wird da auf die Flanken getriggert oder auf die Pegel? Vielen Dank nochmal Gruß Marco
Nix Trigger, nix event. Das "läuft" einfach so durch, wie durch ein 74HC08. Nur eben mit der CPDL-Verzögerungszeit. Vorausgesetzt, du machst nicht irgendwas wildes im CPLD...
Danke nochmal an alle... ich bin seit ca. 3 Std in dem Gebiet der CPLDs und VHDL "drin" und tue mich noch besonders schwer... kann mal bitte einer drüberschauen? Wie caste ich ein Bit/Pin als Vector in VHDL? library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity uart is Port (input: in STD_LOGIC; uarts : out STD_LOGIC_VECTOR (7 downto 0)); end uart; architecture Behavioral of uart is begin uarts <= std_logic_vector(input); end Behavioral; Danke und Gruß Marco
Du musst den Eingang auf alle Ausgänge zuweisen, bei dir also auf 8. for i in uarts'range loop uarts(i) <= input; end loop; Das ganze wird vom Synthesetool praktisch "ausgerollt" und entspricht uarts(0) <= input; ... uarts(7) <= input;
Marco schrieb: > Also µC_Tx-->CPLD-->viele µCRx´s Wozu der Aufwand, das geht auch mit einem Dekoder a la 74xx138. Gruss Reinhard
@Reinhard >aber das soll später alles etwas flexibler werden mittels CPLD aus Spaß an der Freud, weil es ein Development Board ist und ich mich momentan in CPLDs und VHDL einarbeite...
Alexander F. schrieb: > for i in uarts'range loop > uarts(i) <= input; > end loop; Ich würde das eher so machen:
1 | uarts <= (uarts'range => input); |
BTW: gehört der Thread nicht eher nach "FPGA, VHDL & Co."?
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.