Hallo zusammen!
Ich habe ein Anfänger Problem mit VHDL. Und zwar habe ich auf einer PCIe
Tranceiver Karte einen lauffähigen UART-Ausgang, der sich per Treiber
ansprechen lässt (Design nicht von mir). Nun habe ich im Design noch
einen Softcore (f32c) hinzugefügt. Es lässt sich auch alles
synthetisieren und ich sehe an den LEDs, dass der Softcore läuft. Der
Softcore hat auch einen UART. Nun wollte ich gerne zwecks Test den
externen UART von den PINs "abklemmen" und intern an den Softcore
verbinden. Also so:
UART_EXT_RX <= UART_SOFTCORE_TX
UART_SOFTCORE_RX <= UART_EXT_TX
So dass ich dann Putty aufmachen kann und automatisch immer mit dem
Softcore verbunden bin. Die Pin Verbindung habe ich getrennt (neue RX TX
Variablen, die nicht verbunden sind). Leider bekomme ich es aber nicht
gebacken :-/ Hier mal mein Auszug wie ich es probiert habe.
1 | entity qsys_system_wrapper is
|
2 | port (
|
3 | ...
|
4 |
|
5 | uart_sc_rx : inout std_logic;
|
6 | uart_sc_tx : inout std_logic;
|
7 | uart_ext_rx : inout std_logic := 'X';
|
8 | uart_ext_tx : inout std_logic;
|
9 |
|
10 | uart_sc_to_ext : inout std_logic;
|
11 | uart_ext_to_sc : inout std_logic
|
12 | );
|
13 | END qsys_system_wrapper;
|
Dann sind die RX und TX Leitungen ganz normal an die entsprechenden
ports gemappt. Und anschliessend probiere ich die Verbindung wie folgt
herzustellen:
1 | process(clk_50)
|
2 | begin
|
3 | if ( rising_edge(clk_50) ) then
|
4 | uart_ext_to_sc <= uart_ext_tx;
|
5 | uart_sc_to_ext <= uart_sc_tx;
|
6 | elsif ( falling_edge(clk_50) ) then
|
7 | uart_sc_rx <= uart_ext_to_sc;
|
8 | uart_ext_rx <= uart_sc_to_ext;
|
9 | end if;
|
10 | end process;
|
Ist vielleicht jemand so nett und hilft mir VHDL Noob etwas auf die
Sprünge? Mir ist klar, dass ich das irgendwie puffern muss, aber wie??
Vielen Dank!