Auch wenns schon älter ist, wollte das gerade mal auf meinem neu
erworbenem Baord (Spartan-3A Starter) ausprobieren, leider "rührt und
ruckt" sich nix.
Im UCF sind die Pins nach der Vorgabe von XILINX folgendermaßen gesezt:
NET "RS232_DTE_RXD" LOC = "F16" | IOSTANDARD = LVCMOS33 ;
NET "RS232_DTE_TXD" LOC = "E15" | IOSTANDARD = LVCMOS33 | DRIVE = 8 |
SLEW = SLOW;
Hab das folgendrmaßen eingebunden:
1 | component RS232_Interface is
|
2 | generic(clk_rate : integer := 50000000; -- Taktrate
|
3 | baud_rate: integer := 57600
|
4 | );
|
5 | port(...);
|
6 | end component;
|
7 |
|
8 | RS232if: RS232_Interface
|
9 | port map(
|
10 | clk => CLK_50M,
|
11 | rs232_rxd => RS232_DTE_RXD,
|
12 | rs232_txd => RS232_DTE_TXD,
|
13 | rs232_tra_en => tx_send,
|
14 | rs232_dat_in => tx_data,
|
15 | rs232_txd_busy => tx_busy,
|
16 | rs232_rec_en => rx_ready,
|
17 | rs232_dat_out => rx_data
|
18 | );
|
Da ich noch nicht ganz sicher war wie jezt die Signalzustände liegen
müssen fürs senden, hab ich erstmal die Statusleitungen auf die LEDs
gelegt ebenso die unteren 4bit der Empfangene Daten.
1 | ledkeys: process(CLK_50M)
|
2 | begin
|
3 | if rising_edge(CLK_50M) then
|
4 | led(0) <= BTN_EAST XOR ROT_A XOR SW(3) XOR SW(0) XOR SW(1) XOR SW(2);
|
5 | led(1) <= rx_data(4);
|
6 | led(2) <= rx_data(5);
|
7 | led(3) <= rx_data(6);
|
8 | led(4) <= rx_data(7);
|
9 | led(5) <= rx_ready;
|
10 | led(6) <= tx_send;
|
11 | led(7) <= tx_busy;
|
12 | end if;
|
13 | end process;
|
Dann habe ich mit Hterm die Verbindung hergestellt und erstmal
Loopbacktest(am Kabel 2+3 gebrückt) ging, dann mit dem Board verbunden
und mal kontinuierlich Zeichen gesendet, an den LEDs ändert sich leider
nix...
(LED 0-5 leuchten, LED 6+7 sind aus)
Habe ich irgenwas übersehen?