Mein "Ziel": Ich möchte ne Status LED für die RS232 Kommunikation,
welche Lustig vor sich hinblinkt. Leider kriege ich beim "verbinden" des
Ausgabe Ports einene Fehler:
1 | Par:228 - At least one timing constraint is impossible to meet because component delays alone exceed the constraint.
|
Meine Portdefinition sieht folgendes vor
1 | Port ( CLK_50M : in STD_LOGIC;
|
2 | SW : in STD_LOGIC_vector(3 downto 0);
|
3 | FPGA_AWAKE : out std_logic;
|
4 | RS232_DCE_TXD : out STD_LOGIC);
|
Mittels eines Signals (tx_out), lege ich die RS232 Daten auf den
Ausgang:
1 | RS232_DCE_TXD <= tx_out;
|
was sich auch einwandfrei übersetzen läßt.
Weise ich jezt aber in einem Prozess dieses Sigal auch der LED zu kommt
obiger Fehler
1 | txtest: process(CLK_50M)
|
2 | begin
|
3 | if rising_edge(CLK_50M) then
|
4 | FPGA_AWAKE <= tx_out;
|
5 | tx_data <= "01010101" XOR "0000"&SW;
|
6 | if (tx_full = '0') then
|
7 | tx_write <= '1';
|
8 | else
|
9 | tx_write <= '0';
|
10 | end if;
|
11 | end if;
|
12 | end process;
|
Die Konstraints sind aus dem Userguide für das Board (Sparta-3A Starter)
entnommen:
1 | NET "CLK_50M" LOC = "E12" | IOSTANDARD = LVCMOS33 | PERIOD = 20.000 ;
|
2 | OFFSET = IN 10.000 VALID 20.000 BEFORE "CLK_50M" ;
|
3 | OFFSET = OUT 20.000 AFTER "CLK_50M" ;
|
4 | NET "FPGA_AWAKE" LOC = "AB15" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4;
|
5 | NET "RS232_DCE_TXD" LOC = "F15" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
|
Das Place Tool schlägt vor das ich die Konstraints lockern soll, das
scheint mir auf den ersten Blick aber keine Gute Lösung zu sein
schließlich haben diese sicherlich ihre Bewandnis.
Gibt es hierfür eine Lösung (außer Hardverdrahtung) oder ist meine
Anforderung in irgeneiner Weise "Hardwareinkompatibel", prinzipiell seh
ich erstmal keinen Grund warum das nicht gehen sollte-