Hallo zusammen! Ich bin relativ neu in der FPGA Welt und stehe momentan vor einem konkreten Problem...oder gar mehreren Problemen :-) Zur Verfügung steht mir das Xilinx Spartan 3A Starter Kit und ISE 14.6. Ich möchte eine Art "Dummy-Logik" in Form von miteinander verschalteten (N)OR, (N)AND, XOR-Gattern usw. Gattern auf dem FPGA realisieren. Dabei habe ich das Ziel mindestens 50% des FPGA "voll zu kriegen". Meine erste Frage hierbei: Wie realisiere ich so eine Dummy-Logik am einfachsten in VHDL? Klar, ich schreibe mir für jedes Gatter ein entsprechendes Modell und instanziiere das anschließend in einer weiteren VHDL Datei inkl. port mapping...aber das könnte doch etwas arf aufwändig werden, den FPGA damit zu "füllen" :-) (Übrigens: ich kann mich doch auf diese grundlegenden, nicht getakteten Gatter beschränken, oder? Ich meine, ich muss dafür nicht zwingend getaktete FlipFlops einsetzen, nicht wahr?) Ich gehe mal davon aus, dass mir ISE 14.6 die Möglichkeit gibt, die Anzahl der verwendeten Gatter anzeigen zu lassen? Also mit anderen Worten: den "Füllgrad" des Spartan 3A Chips. Kann mir hierzu jemand was sagen? Wie ihr seht, stehe ich noch ziemlich am Anfang, von daher nehmt es mir nicht übel, wenn ich hier irgendwelchen Schmarrn aufgeschrieben habe. Ich gelobe Besserung! Besten Dank für eure Hilfe im Voraus! Grüße Kai
Gast
#3400911
Arbeite dich in VHDL ein. In VHDL gibt es z.B. Methoden wie GENERATE, damit lassen sich dann baumartige/listenartige Konstrukte aus Komponenten aufbauen. Sowas habe ich mal selbst mal gemacht um probehalber das FPGA vollzuschreiben. Eine Listenstruktur wird gut in ein FPGA gemappt, eine 2-dim Struktur (z.B. zwei Eingänge von 2 Komponenten, 2 Ausgänge an 2 Komponenten) wird ebenfalls gut gemappt. Damit kriegt man jedes FPGA voll.
Hallo Sigi, der Hinweis auf GENERATE ist schon mal sehr gut! Danke! Könntest du mir noch ein wenig genauer beschreiben, was du mit der 2-dim Struktur meinst? Ich bin mir nicht sicher, ob ich dein erwähntes Beispiel richtig verstanden habe.
Gast
#3400926
Peter Falk schrieb: > Zur Verfügung steht mir das Xilinx Spartan 3A Starter Kit und ISE 14.6. > Ich möchte eine Art "Dummy-Logik" in Form von miteinander verschalteten > (N)OR, (N)AND, XOR-Gattern usw. Gattern auf dem FPGA realisieren. > > Dabei habe ich das Ziel mindestens 50% des FPGA "voll zu kriegen". > Meine erste Frage hierbei: > Wie realisiere ich so eine Dummy-Logik am einfachsten in VHDL? Klar, ich > schreibe mir für jedes Gatter ein entsprechendes Modell und instanziiere > das anschließend in einer weiteren VHDL Datei inkl. port mapping...aber > das könnte doch etwas arf aufwändig werden, den FPGA damit zu "füllen" > :-) > Ich gehe mal davon aus, dass mir ISE 14.6 die Möglichkeit gibt, die > Anzahl der verwendeten Gatter anzeigen zu lassen? Also mit anderen > Worten: den "Füllgrad" des Spartan 3A Chips. Kann mir hierzu jemand was > sagen? Die Auslastung des FPGA's steht im Map report und im Place und route report. Der wird nicht in gattern sondern in Slices gemessen. Zum füllen schue dir mal die generate anweisung an. Beispiel Großes shiftregister:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
Einzelne Gatter wird schwierig, da im FPGA das meiste aus LUT's gebastelt wird. MfG,
Hallo Fpga Kuechle, wooow, Danke für das wirklich sehr ausführliche Beispiel...ich äh...muss das erstmal verstehen :-) Könnte ich anstatt der Basis-Gatter auch einfach Volladdierer nehmen? Der VHDL Code eines Volladdierers ist für mich zu diesem Zeitpunkt etwas einfacher zu verstehen als der des oben genannten shiftregisters (so froh ich auch darüber bin, dass du das freundlicherweise hier gepostet hast).
Gast
#3400969
Peter Falk schrieb: > Hallo Fpga Kuechle, > > wooow, Danke für das wirklich sehr ausführliche Beispiel...ich äh...muss > das erstmal verstehen :-) Danke, danke hat ich noch in der Schublade, wurde mal gebraucht um die Entwärmung eines Virtex zu testen. > Könnte ich anstatt der Basis-Gatter auch einfach Volladdierer nehmen? Im Prinzip ja, counter wäre auch eine Möglichkeit, einfach einen langen std_logic_vector definiieren (zb. 9999 downto 0) und immer eins addieren. MfG,
Wenn ich irgendwann soweit bin, sowas in der Schublade zu haben, dann klope ich mir auf die Schulter und mache mir ein Bier auf :-) Die Implementierung eines Counters mit dem von dir vorgeschlagenen std_logic_vector würde schon reichen (um den FPGA zu füllen)? Verstehe an dieser Stelle aber noch nicht ganz, warum es nötig wäre immer 1 zu addieren? Diese Addition würde ich in meiner naiven Vorstellung eher in einen process einer Testbench packen und nicht in den Code des Counters an sich...? (denn der soll ja nur rein "statisch" in den FPGA geladen werden und es sich dort gemütlich machen :-) )
Hallo Falk,
habe mir den Code angeschaut und den Artikel dazu gelesen. Nehme mal an,
dass du den Link hier gepostet hast, um die dort beschriebene
Implementierung als gutes Beispiel fürs "FPGA-füllen" nutzen zu können?
:-)
Schaue ich mir diesen Codeschnipsel an
-- BUFG (Global Clock buffer), a Virtex primitive
component BUFG
port ( I : in std_logic;
O : out std_logic);
so macht mir der Hinweis im Kommentar "a Virtex primitive" ein wenig
Sorgen, denn ich habe nur einen Spartan 3A. Ist das an dieser Stelle
unerheblich?
Hi Falk, habe noch einen kleinen Nachtrag zum VHDL Code im besagten Link: Nachdem ich im ISE ein neues Projekt erzeugt und beide VHDL Codes in je eine separate Datei kopiert habe, erzeugt der Check Syntax Befehl leider ein paar Fehlermeldungen: Undefined symbol 'drive_ar'. Undefined symbol 'dout_ar'. Formal data of row with no default value must be associated with an actual value. No sensitivity list and no wait in the process Undefined symbol 'cnt'. Eigentlich bin ich davon ausgegangen, dass der Sourcecode fehlerfrei vorliegt (und tue es nach wie vor), von daher vermute ich den Fehler jetzt einfach mal bei mir. Das row Modul habe ich zu dem Projekt mit dem power Modul korrekt hinzugefügt. Hast du eine Idee woran das liegen könnte? Darüber hinaus werden die Komponenten CLKDLL, BUFG, IBUFG und SRL16 anscheinend angemeckert, da es sich laut Kommentar um Virtex primitives handelt...also kann ich den Code für eine Implementierung auf einem Spartan 3A wohl vergessen? :-(
@Fpga Kuechle: Ich habe den Code des shiftregisters mal in die ISE gepackt und versucht das Alles in den FPGA zu laden. Leider schlägt der Syntaxcheck fehl. Offenbar hat er mit dem SRLC32E ein Problem, da genau das rot markiert wird. Starte ich den Syntaxcheck, wirft er zwei Fehlermeldungen raus: -- synthesis translate_on port map ( clk => clk, d => srl_chain_q(i), Fehler: parse error, unexpected PORT, expecting OPENPAR or TICK or LSQBRACK und noch -- synthesis translate_on port map ( c => clk, d => ff_chain_q(i), Fehler: parse error, unexpected PORT, expecting OPENPAR or TICK or LSQBRACK Weißt du vielleicht Rat?
@ Peter Falk (widlarizer) alias Columbo >Implementierung als gutes Beispiel fürs "FPGA-füllen" nutzen zu können? >:-) sicher. >so macht mir der Hinweis im Kommentar "a Virtex primitive" ein wenig >Sorgen, denn ich habe nur einen Spartan 3A. Ist das an dieser Stelle >unerheblich? Den gibt es auch als Spartan3A Version. >ein paar Fehlermeldungen: >Undefined symbol 'drive_ar'. >Undefined symbol 'dout_ar'. >Formal data of row with no default value must be associated with an >actual value. >No sensitivity list and no wait in the process >Undefined symbol 'cnt'. Mann muss ZWEI Dateien anlegen, in die 2. Kommt die entity row. >Eigentlich bin ich davon ausgegangen, dass der Sourcecode fehlerfrei >vorliegt Ist er auch. >Das row Modul habe ich zu dem Projekt mit dem power Modul korrekt >hinzugefügt. Hast du eine Idee woran das liegen könnte? Hmm? >Darüber hinaus werden die Komponenten CLKDLL, BUFG, IBUFG und SRL16 >anscheinend angemeckert, da es sich laut Kommentar um Virtex primitives >handelt...also kann ich den Code für eine Implementierung auf einem >Spartan 3A wohl vergessen? :-( Man muss in der Doku vom Spartan3 nachschauen, wie die Dinger dort heißen. Ähnlich, aber anders.
Peter Falk schrieb: > Dabei habe ich das Ziel mindestens 50% des FPGA "voll zu kriegen". Hatte mir sowas auch schon gebastelt, mit dem Ziel möglichst viele Flip-Flops zu toggeln (Test der Speisung). Das war am Schluss eine Pipeline aus sehr breiten Registern. Eine Lektion die ich damals gelernt habe: Der Synthesizer ist recht schlau, der merkt sofort wenn deine Logik nur rumsitzt und nichts nützliches (= Das Ergebnis wird verwendet) tut. Dann ist dein Füllgrad immer 0% :-) Also darauf achten, dass deine Dummy-Logik am Schluss ein Ergebnis auf FPGA Pins ausgibt, sonst wird sie wegoptimiert.
Hmpf, das "Problem" sind eni paar zerschossene Zeilen im Quelltext, da ist die Wiki(de)formatierung schuld. Siehe Anhang, kompiliert problemos durch. Auch mit S3A.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 | |
179 | |
180 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
Gast
#3401366
>Ich habe den Code des shiftregisters mal in die ISE gepackt und versucht >das Alles in den FPGA zu laden. Leider schlägt der Syntaxcheck fehl. >Offenbar hat er mit dem SRLC32E ein Problem, da genau das rot markiert >wird. Da fehlt das semicolon nach der schliessenden Klammer der generic map. Das synthese tool sollt die generic map eigentlich garnicht sehen, deshalb ist da ein synthesis off/on drum. Dein synthesetool ignoriert aber diese als kommentare getarnten Compile-schalter. Am besten du löschts den block zwischen -- synthesis translate_off und -- synthesis translate_on samt den beiden Zeilen -- synthesis translate_off und -- synthesis translate_on. MfG,
Hallo zusammen, bitte entschuldigt, dass ich bislang auf eure Vorschläge nicht reagiert habe. Bin noch im Büro und kann das leider erst am späten Nachmittag ausprobieren :-( Sorry! Werde dann auf eure Postings einzeln antworten.
Hallo Leute, bin leider erst heute dazu gekommen einen erneuten Versuch zu starten. Zunächst einmal zum shiftregister. Nach den Anmerkungen von Leonard Lebewohl sieht der Code wie folgt aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
Der Syntaxcheck funktioniert leider noch nicht einwandfrei. Anscheinend bereiten die port map Anweisungen noch Probleme, in beiden Fällen kommt als Fehlermeldung: parse error, unexpected PORT, expecting OPENPAR or TICK or LSQBRACK :-( EDIT: Was mir noch auffällt, ist dass das SRLC32E in der Anweisung
1 | |
vom Syntaxhighlighting rot markiert wird. Ist das "normal"? Habe ich so bisher noch nicht gesehen...genau das gleiche passiert in der ff_delay:
1 | |
Anweisung mit FDCPE.
Hallo Falk, Danke für das Korrigieren des Codes. Dieses Mal fluppte der Syntaxcheck anstandslos. Habe das FPGA Board im Moment nicht an dem Rechner, brenne aber darauf den Code in den FPGA zu laden :-) @Christoph: Oh, das ist ein nützlicher Hinweis, vielen Dank! Würde es dir was ausmachen, mir den Quellcode hier aufzulisten, den du damals für dieses Vorhaben benutzt hast? Ich würde das gerne bei mir testen.
Sooo, grad eben wollte ich über "Implement Design" meinem Ziel ein Stückchen näher kommen, doch offenbar gibt es momentan noch ein kleines Lizenzproblem. In der Konsole kam folgende Fehlermeldung auf (Auszug): ********************************************************************** ERROR:Security:9c - No 'ISE' nor 'WebPack' feature version 2013.06 was available for part 'xc3s700a'. ---------------------------------------------------------------------- Cannot connect to license server system. The license server manager (lmgrd) has not been started yet, the wrong port@host or license file is being used, or the port or hostname in the license file has been changed. Feature: WebPack Server name: localhost License path: C:/license.dat;C:/.Xilinx\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/ core_lic enses\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/core_licenses\Xilinx Free.lic ;C:\Xilinx\14.6\ISE_DS\EDK/data/core_licenses\Xilinx.lic;@localhost; FLEXnet Licensing error:-15,570 For further information, refer to the FLEXnet Licensing documentation, available at "www.flexerasoftware.com".Invalid host. The hostid of this system does not match the hostid specified in the license file. Feature: ISE Hostid: 000c29c2b75f License path: C:/license.dat;C:/.Xilinx\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/ core_lic enses\Xilinx.lic;C:\Xilinx\14.6\ISE_DS\ISE\/coregen/core_licenses\Xilinx Free.lic ;C:\Xilinx\14.6\ISE_DS\EDK/data/core_licenses\Xilinx.lic;@localhost; FLEXnet Licensing error:-9,57 For further information, refer to the FLEXnet Licensing documentation, available at "www.flexerasoftware.com". ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ERROR:Map:258 - A problem was encountered attempting to get the license for this architecture. Design Summary -------------- Number of errors : 1 Number of warnings : 0 Process "Map" failed ********************************************************************** Anscheinend gibt es ein Problem mit dem Lizenzserver bzw. mit der Verbindung von meinem Rechner dorthin. Weiß jemand wie man das hinkriegen kann? Ich nutze ISE 14.6 unter Win XP per VMWare unter Mac OS X. Danke!
Hast du denn ein Lizenzfile generiert und mit dem Lizenzmanager in die Installation eingebunden?
Hallo Christian, ja das habe ich, genau das ist ja auch das, was mich so stutzig macht :-( Kann man das im Nachhinein noch überprüfen, um sich zu vergewissern, ob alles mit dem Einbinden des Lizenzfiles geklappt hat?
Ja, einfach den Lizenzmanager starten und dann zeigt der in der Liste ja an, für welche Software die Lizenz wie lange gilt.
Alles klar. Dann probiere ich das nachher mal aus. Also einfach die ISE starten und dort den Lizenzmanager suchen, richtig? Ich habe das Lizenzfile nämlich während der Installation einmal eingebunden und das wars dann auch schon. Habe mich danach nicht mehr weiter darum gekümmert.
In ISE: Help -> Manage Licences Oder über das Startmenü: Xilinx Design Tools -> ISE Design Suite -> Accessories -> Manage Xilinx Licences
So, habe jetzt mal einen Blick in den License Configuration Manager geworfen. Beim Feature "Implementation" ist nur das Feld unter "Host Id Matches" auf rot und beinhaltet ein "No". Liegt das eventuell daran?
Jo, dann passt die Lizenz nicht zum Rechner. Du musst beim Generieren der Lizenz die Host ID oder MAC Adresse der Maschine angeben, auf der das installiert ist.
Christoph Z. schrieb: > Eine Lektion die ich damals gelernt habe: > Der Synthesizer ist recht schlau, der merkt sofort wenn deine Logik nur > rumsitzt und nichts nützliches (= Das Ergebnis wird verwendet) tut. > > Also darauf achten, dass deine Dummy-Logik am Schluss ein Ergebnis auf > FPGA Pins ausgibt, sonst wird sie wegoptimiert. Und dann kommt noch dazu, dass die Synthese auch merken (kann), dass du eigentlich nichts Snnvolles tust, und dann zwar das "richtige" Ergebnis ausgibt, aber dazu das Meiste wegoptimiert. Das ist z.B. bei dem Ringoszillator iom http://embdev.net/topic/ring-oscillator-timing-simulation#3391429 der Fall.
Hallo zusammen, nach einer etwas längeren Zeit melde ich mich mal wieder. In der Zwischenzeit konnte ich das Problem mit der falschen MAC Adresse beheben und kann mich nun den angenehmen Dingen des Lebens widmen ;-) @Christoph: Hmmm, das ist für mich natürlich nicht so schön, da meine Dummy-Logik von der Synthese dann wahrscheinlich ins digitale Nirvana befördert wird :-( Kann man diese Problematik denn tatsächlich umgehen, indem die Outputs der Schaltung an einige PINs des FPGA angeschlossen werden?
Peter Falk schrieb: > Kann man diese Problematik denn tatsächlich umgehen, indem die Outputs > der Schaltung an einige PINs des FPGA angeschlossen werden? Ja. Der Synthesizer meint dann, du brauchst diese Outputs. Er weiss ja nicht, dass du an den Pins nichts anhängst :-)
Okay :-) Dann werde ich das mal ausprobieren. Ist es vollkommen egal, an welche Pins des FPGA die Ausgänge der Schaltung angeschlossen werden? Eigentlich müsste dann der geschickte Einsatz des GENERATE Befehls in Kombination mit dem Anschluss der Schaltung an entsprechende Pins des FPGAs zum gewünschten Ziel führen, den Chip gut zu füllen, richtig? :-)
Gast
#3429448
Peter Falk schrieb: > Okay :-) Dann werde ich das mal ausprobieren. Ist es vollkommen egal, an > welche Pins des FPGA die Ausgänge der Schaltung angeschlossen werden? Nein, nicht vollkommen egal. Dazu schaut man in den Schaltplan und sucht sich Pins raus, an denen was dranhängt, was nicht kaputt gehen kann. Es bieten sich an: LEDs, Adressbusse zu Speicherchips oder Pinheader an denen nichts angeschlossen ist. Was zu Zerstörung führen kann: Wenn Leitungen zu Tastern, Schaltern, Taktquellen oder bidirektionellen Datenleitungen verwendet werden. Duke
LEDs und Pinheader klingen schon mal sehr gut, Danke! Ich hoffe, dass das alles so hinhauen wird. Soweit ich das bislang mitbekommen habe, ist der Spartan 3A partiell & dynamisch rekonfigurierbar, richtig? Hat jemand von euch dieses Feature für ein konkretes Projekt getestet?
Gast
#3464753
Hallo zusammen, bevor ich einen neuen Thread eröffne, hänge ich mein aktuelles Problem mal hier rein. Ich habe 4x4 (4 Eingänge & 4 Ausgänge) Substitution-Box (Element aus der Kryptographie) aus relativ simplen Gattern gebaut. Für die einzelnen Gatter habe ich Behavioral-Modelle geschrieben und jeweils in einem eigenen Projekt abgespeichert. Für die S-Box selbst habe ich die Komponenten in einer Strukturbeschreibung instanziiert und anschließend den Syntaxcheck gestartet. Leider kommen dann etliche Fehlermeldungen und zwar folgender Art: ERROR:HDLParsers:3281 - "C:/Xilinx/Workspace/Sbox_struct/sBox.vhd" Line 50. Behavioral is not an architecture body for Inverter in library work. Das dazugehörige Codeschnipsel dazu:
1 | |
2 | |
3 | |
4 | |
Und hier nochmal der Inverter:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Aus der Fehlermeldung entnehme ich, dass es ein Problem mit der Bezeichnung der architecture des Inverters gibt...aber warum? Bitte um Hilfe!
Gast
#3465280
Peter Falk schrieb: > bevor ich einen neuen Thread eröffne, hänge ich mein aktuelles Problem > mal hier rein. Warum machst Du nicht einen neuen Thread auf? Was hat Dein Problem mit dem Spartan 3A zu tun? Du hast ein VHDL-Problem. > Für die einzelnen > Gatter habe ich Behavioral-Modelle geschrieben und jeweils in einem > eigenen Projekt abgespeichert. Warum? Man muß nicht jedes Gatter in ein eigenes Projekt stecken. Da wird man ja nie fertig und hinterher wird wieder behauptet VHDL sei geschwätzig... > Das dazugehörige Codeschnipsel dazu Mein Schnipsel würde so aussehen:
1 | |
2 | |
3 | |
Peter Falk schrieb: > ERROR:HDLParsers:3281 - "C:/Xilinx/Workspace/Sbox_struct/sBox.vhd" Line > 50. Behavioral is not an architecture body for Inverter in library work. > Aus der Fehlermeldung entnehme ich, dass es ein Problem mit der > Bezeichnung der architecture des Inverters gibt...aber warum? Ist den die Datei mit dem Inverter schon kompiliert worden? Ist die Datei mit dem Inverter in diesem Projekt enthalten? Duke
Hi, im Grunde genommen hätte ich tatsächlich einen neuen Thread aufmachen können. Wollte im Grunde genommen nur nicht das Forum "vollspammen", aber nun ja...nächstes Mal mache ich es anders :-) Ich dachte mir, dass ich einige Gatter in eigene Projekte stecke, damit ich diese in anderen Projekten einfach und schnell per Komponenteninstanziierung wiederverwenden kann. Das war eigentlich der Hintergedanke bei der ganzen Sache. Die Datei mit dem Inverter wurde einwandfrei kompiliert...sie ist aber nicht in diesem Projekt enthalten, sondern befindet sich in einem eigenständigen Projekt. Ich ging bisher davon aus, dass das Tool die im Quellcode referenzierte entity selbstständig findet, da sich alle Projekte in der "library" befinden? Zumindest hat das bei kleineren Projekte (multiples Logikgatter bestehend aus mehreren Invertern, NAND2, OR2, usw. -Gattern) anstandslos funktioniert.
Gast
#3469936
Peter Falk schrieb: > Ich dachte mir, dass ich einige Gatter in eigene Projekte stecke, damit > ich diese in anderen Projekten einfach und schnell per > Komponenteninstanziierung wiederverwenden kann. Das war eigentlich der > Hintergedanke bei der ganzen Sache. Prinzipiell ist Deine Idee gut. Aber wegen ein paar Gattern, Registern, einem Addierer oder Multiplizierer lohnt sich dieser Aufwand nicht. Die sind schnell hingeschrieben. Auch für Zähler, Multiplexer oder Schieberegister würde ich keine eigene Datei mehr anfangen. Sinnvoll ist das m.E. nur bei Blöcken, die man tatsächlich irgendwann mal wieder braucht und die ein gewisse Komplexheit besitzen: FIFO, Filter, Logarithmierer, Dividierer u.ä. Allerdings muß man meist auch beträchtlichen Aufwand betreiben um so einen Block allgemein verwendbar zu machen. > Ich ging bisher davon aus, dass das Tool die im > Quellcode referenzierte entity selbstständig findet, da sich alle > Projekte in der "library" befinden? In jedem Projekt gibt es die Library work. Aber zwischen den Projekten kennen sich die Librarys nicht. Es ist allerdings möglich, eine Datei in mehreren Projekten zu verwenden. Sie muß dann jeweils hinzugefügt werden. Duke
Gut, dann werde ich es in Zukunft so machen, bin ja auch für jeden Hinweis dankbar! Mittlerweile habe ich das Problem dadurch gelöst, indem ich die entsprechenden VHDL Dateien im ISE über "Add Source" hinzugefügt habe. Was DANN aber ärgerlich ist, dass man auch zu der hinzugefügten Datei wiederrum weitere Dateien hinzufügen muss :-( Hätte das von Anfang an anders aufziehen sollen, Mist! Ich bin jetzt allerdings auf ein anderes Problem gestoßen, dafür mache ich jetzt aber wirklich ein neues Thema auf :-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.