Forum: FPGA, VHDL & Co. CPLDFit funktioniert nicht mehr Xilinx ISE


von david (Gast)


Lesenswert?

Hallo wenn ich versuche mit Xilinx ISE mein Projekt zu übersetzen, 
steigt CPLD Fit mit einer Fehlermeldung aus. CPLD Fit funktioniert nicht 
mehr,...(windows fehlermeldung)

Hattet ihr das Problem auch schon ?

Hier der Code:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5
use IEEE.NUMERIC_STD.ALL;
6
7
8
entity topsound is
9
    Port ( 
10
           clk     : in  STD_LOGIC;
11
           button   : in  STD_LOGIC_Vector(4 downto 1);
12
        led      : out STD_logic_Vector(8 downto 1 );
13
           audio_out : out  STD_LOGIC := '0';
14
        ramAddress: out STD_LOGIC_VECTOR (16 downto 0 );
15
        ramData  : inout STD_LOGIC_VECTOR (7 downto 0 );
16
        ramNWE    : out STD_LOGIC;   -- write enable            (beide low aktiv)
17
        ramNOE    : out STD_LOGIC;   -- ram data output enable
18
        top_rs232_rxd : in std_logic;     -- RS232 RxD
19
        top_rs232_txd : out std_logic      -- RS232 TxD
20
           );
21
end topsound;
22
23
architecture Behavioral of topsound is
24
25
component RS232_Interface is
26
27
  port(  clk                : in std_logic;                    -- Systemtakt
28
      rs232_rxd            : in std_logic;                    -- RS232 RxD
29
      rs232_tra_en          : in std_logic;                    -- Byte soll auf TxD abgesetzt werden
30
      rs232_dat_in          : in std_logic_vector(7 downto 0);        -- auf TxD abzusetzendes Byte
31
      rs232_txd            : out std_logic := '1';                -- RS232 TxD
32
      rs232_rec_en          : out std_logic := '0';                -- Byte wurde über RxD empfangen
33
      rs232_txd_busy          : out std_logic;                    -- RS232 TxD besetzt
34
      rs232_dat_out          : out std_logic_vector(7 downto 0)        -- empfangenes Byte
35
      );
36
end component;
37
38
component Sound_PWM is
39
    Port ( value_in : in  STD_LOGIC_VECTOR (7 downto 0);
40
           clk : in  STD_LOGIC;
41
           pwm_out : out  STD_LOGIC);
42
end component;
43
 
44
component dbg is
45
    Port ( 
46
          clk       : in  STD_LOGIC;
47
          vec_out     : out  STD_LOGIC_VECTOR (7 downto 0);
48
           vec_in     : in  STD_LOGIC_VECTOR (7 downto 0);
49
           ram_address   : out  STD_LOGIC_VECTOR (16 downto 0);
50
           ram_data_in   : in  STD_LOGIC_VECTOR (7 downto 0);
51
        ram_data_out : in  STD_LOGIC_VECTOR (7 downto 0);
52
        val_out    : out  STD_LOGIC_VECTOR (7 downto 0);
53
           ram_nwe     : out  STD_LOGIC;
54
           ram_noe     : out  STD_LOGIC
55
       );
56
end component;
57
58
signal s_rs232_tra_en  : std_logic;                    -- Byte soll auf TxD abgesetzt werden
59
signal s_rs232_dat_in  : std_logic_vector(7 downto 0);        -- auf TxD abzusetzendes Byte
60
signal s_rs232_dat_out  : std_logic_vector(7 downto 0);        -- empfangenes Byte
61
signal s_rs232_rec_en  : std_logic;                      -- Byte wurde über RxD empfangen
62
signal s_rs232_txd_busy  : std_logic;                    -- RS232 TxD besetzt
63
signal s_value          : std_logic_vector(7 downto 0);  
64
signal s_mem_data_out  : std_logic_vector(7 downto 0);
65
signal s_mem_data_in    : std_logic_vector(7 downto 0);
66
signal s_c_ram_nwe     : std_logic;
67
signal s_ram_address    : std_logic_vector(16 downto 0);
68
signal tmp    : std_logic_vector(16 downto 0);
69
70
begin
71
72
RS232_Interface_impl: RS232_Interface
73
port map(
74
      clk        =>    clk,      
75
      rs232_rxd    =>    top_rs232_rxd,      
76
      rs232_tra_en  =>    s_rs232_tra_en,  
77
      rs232_dat_in  =>    s_rs232_dat_in,    
78
      rs232_txd    =>    top_rs232_txd,    
79
      rs232_rec_en  =>    s_rs232_rec_en,    
80
      rs232_txd_busy  =>    s_rs232_txd_busy,    
81
      rs232_dat_out  =>    s_rs232_dat_out  
82
);
83
84
debug_interface_impl: dbg
85
port map
86
   (
87
  clk       => clk,
88
   vec_out     => s_rs232_dat_in, 
89
   vec_in     => s_rs232_dat_out, 
90
  ram_address => s_ram_address,
91
  ram_data_out=> s_mem_data_out,
92
  ram_data_in => s_mem_data_in,
93
  val_out     => s_value,
94
  ram_nwe     => s_c_ram_nwe,
95
  ram_noe     => ramNOE
96
  );
97
  
98
sound_interface_impl: Sound_PWM
99
port map(
100
    value_in => s_value,
101
      clk     => clk,
102
      pwm_out   => audio_out
103
    );
104
  
105
process (s_mem_data_out, s_c_ram_nwe)
106
begin
107
 if s_c_ram_nwe = '0' then
108
    ramData <= s_mem_data_out;  -- Debug treibt Datenbus
109
 else 
110
    ramData <= "ZZZZZZZZ";   -- Debug verhält sich passiv
111
 end if;
112
end process;
113
  
114
115
-- Glue Logic
116
117
ramNWE         <= s_c_ram_nwe;
118
s_mem_data_in     <= ramData;
119
ramAddress        <= s_ram_address;
120
led(8 downto 1)   <= s_value;
121
122
123
end Behavioral;


Komischerweise tritt das Problem nicht auf, wenn ich ramAdress von 16 
bit auf 8 bit reduziere. Dann läuft auch fit problemlos durch.
Das Board ist das CPLD von Pollin.

Xilinx ISE version 11.3

von david (Gast)


Lesenswert?

ich meinte von 17 bit auf 8 reduziere, 9 bit geht auch noch , aber ab 10 
steigt er aus ,.....

von Iulius (Gast)


Lesenswert?

Ist normal.

Der aktuelle Fitter stürzt gerne mal ab wenn man eine hohe Auslastung 
hat.

Was hilft :

- auf speed optimieren, das crasht seltener
- ISE 6 verwenden, crasht noch viel seltener (erzeugt dafür aber auch 
gelegentlich eine schlechtere Synthese)

Eine Version bei es gar keinen Fitter-crash gibt kenne ich nicht. Häufig 
reicht es aber schon irgentetwas zu ändern, z.b. eine led mit einem 
anderen Signal zu belegen.

von david (Gast)


Lesenswert?

wo bekommt man ise 6 her ?

von david (Gast)


Lesenswert?

also wenn ich nach speed fitte  dann stürzt er auch ab.
wenn ich aber optimal density einstelle dann funktionierts,... nur kann 
ich mir darunter jetzt nichts vorstellen ??!?

von Iulius (Gast)


Lesenswert?

Das ist merkwürdig, bei mir war es genau andersrum.
Letztendlich ist das wohl mehr Zufall...


Was meinst du mit "nichts darunter vorstellen" ?

Bei speed wird halt versucht maximale Taktfrequenz zu erreichen, bei 
density minimale Fläche.

Beide Eigenschaften stehen sich ggü, beispielsweise lässt sich durch 
Mehrfachnutzen von bestimmten Funktionen der Platzverbrauch verringern, 
dafür erhöht sich der Aufwand unterschiedliche Rechenzweige zu der einen 
Recheneinheit zu leiten und der Takt sinkt.

Andersrum lässt sich durch Zusatzlogik der Takt erhöhen.
Ein gutes Beispiel dafür sind etwa die verschiedenen Arten von 
Addierern. Die englische Wikipedia liefert da einen guten Überblick 
falls jemanden sowas interessiert.


Ise 6.1 gibts hier : 
http://www.xilinx.com/webpack/classics/wpclassic/index.htm

von david (Gast)


Lesenswert?

danke für die info

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
Noch kein Account? Hier anmelden.