Hallo,
ich habe ein Design für einen CPLD XC9500 welches alle Makrozellen
braucht. Nun will ich noch etwas rein kombinatorische Logik hinzubasteln
und nun meint ISE, dass die Makrozellen nicht mehr reichen.
Dabei habe ich die Logik nicht mal als Prozess sondern in dieser Form
geschrieben:
1 | constant Backup_TX: boolean := (CS_INHIB = '0' and LNA_EN='1' and PA_EN='0'); --Backup TRX - TX
|
2 | constant Backup_STBY: boolean := (CS_INHIB = '0' and LNA_EN='1' and PA_EN='1'); --Backup TRX - standby/RX without LNA
|
3 | constant Backup_LNA: boolean :=(CS_INHIB = '0' and LNA_EN='0' and PA_EN='1'); --Backup TRX - RX with LNA
|
4 | constant Main_RX: boolean := (CS_INHIB = '1' and EN_MAINTX_CPU='0'); --MainTX - standby/with LNA-select
|
5 | constant Main_TX: boolean := (CS_INHIB = '1' and EN_MAINTX_CPU='1'); --MainTX - TX
|
6 |
|
7 | constant EN_BTX_ENABLED: STD_LOGIC := '0';
|
8 | constant EN_BTX_DISABLED: STD_LOGIC := '1';
|
9 | constant EN_LNA1A_ENABLED: STD_LOGIC := '0';
|
10 | constant EN_LNA1A_DISABLED: STD_LOGIC := '1';
|
11 | constant EN_LNA1B_ENABLED: STD_LOGIC := '0';
|
12 | constant EN_LNA1B_DISABLED: STD_LOGIC := '1';
|
13 | constant EN_TXSWITCH_ENABLED: STD_LOGIC := '0';
|
14 | constant EN_TXSWITCH_DISABLED: STD_LOGIC := '1';
|
15 |
|
16 |
|
17 | EN_LNA1B <= EN_LNA1B_ENABLED when Backup_TX or Backup_LNA or Main_TX else
|
18 | EN_LNA1B_ENABLED when Main_RX and EN_LNA1_CPU='1' else
|
19 | EN_LNA1B_DISABLED;
|
Das sollte sich doch prinzipiell ohne Makrozelle rein in den PTerms
synthetisieren lassen. Oder sind es zu viele "Eingänge", dass mehrere
PTerms durch ein als Puffer misbrauchtes FlipFlop zusammengeschaltet
werden müssen?
Danke Euch,
Martin