Forum: FPGA, VHDL & Co. ein Signal mehreren Komponenten zuweisen (Top Entity)


von Fragender (Gast)


Lesenswert?

Hi,
ich hab mal eine Nope –Frage und zwar hab ich folgendes Problem:
Ich hab eine Top-Entity mit mehreren Komponenten und den dazugehörigen 
Port -Maps, nun hab ich eine Taktleitung sowie eine Reset-Leitung von 
außen, die ich an alle meine Komponenten anschließen möchte, bloß wie?
Wenn ich z.B. den Takt (CLK5) bei dem Port -Map an jeden Takt der 
jeweiligen Komponente ankopple, dann wird mir ein Fehler ausgespuckt 
(Port <CLK5> has illegal connection.)
Meine Frage, wie schließe ich mehrere Komponenten an eine Leitung an, 
sei es die Takt-Leitung oder die Reset-Leitung?
Für Eure Antworten bedanke ich mich schon mal recht herzlichst.

von Jan M. (mueschel)


Lesenswert?

Das geht genauso wie du schreibst - die Fehlermeldung stammt von etwas 
anderem.

von Rick Dangerus (Gast)


Lesenswert?

@Jan:
Ne ne, der Fehler kann schon davon kommen.

@Fragender:
Welche illegallen connections hat den Port <CLK5> ?
Sind das auch wirklich alles Takteingänge?
Oder Mischmasch?

Rick

von Fragender (Gast)


Lesenswert?

>Welche illegallen connections hat den Port <CLK5> ?
Steht leider nicht bei, Xilinx schneidet die Antwort ab und im Report 
steht es auch nicht drin.

>Sind das auch wirklich alles Takteingänge?
Sollten jeweils an einer Taktleitung hängen.
Komponente "DLL"
CLKIN    => CLK5,

Komponente "CAN"
CLK  => CLK5,

von Fragender (Gast)


Lesenswert?

Okay, hab jetzt nochmal den Report erstellt.
Zum Takt kommt nun folgende vollständige Meldung:
ERROR:Xst:2035 - Port <CLK5> has illegal connection. Port is connected 
to input buffer and following ports:
   Port <rclk> of node <CAN/cmod/overrun_fifo/inf.x0> 
(generic_syncram_2p) in unit <top_spartan>
   Port <wclk> of node <CAN/cmod/overrun_fifo/inf.x0> 
(generic_syncram_2p) in unit <top_spartan>
   Port <clk1> of node <CAN/cmod/noft.info_fifo/xc2v.x0> 
(virtex2_syncram_dp_2) in unit <top_spartan>
   Port <clk2> of node <CAN/cmod/noft.info_fifo/xc2v.x0> 
(virtex2_syncram_dp_2) in unit <top_spartan>
   Port <clk1> of node <CAN/cmod/noft.fifo/xc2v.x0> 
(virtex2_syncram_dp_1) in unit <top_spartan>
   Port <clk2> of node <CAN/cmod/noft.fifo/xc2v.x0> 
(virtex2_syncram_dp_1) in unit <top_spartan>
   Port <C> of node <CAN/cmod/async.can/rx_sync_tmp> (FDP) in unit 
<top_spartan>
...
usw.

Und zum Reset:
ERROR:Xst:2035 - Port <Reset_B> has illegal connection. Port is 
connected to input buffer and following ports:
   Port <I0> of node <CAN/reset1> (LUT1) in unit <top_spartan>

Ich hoffe ihr könnt mir weiterhelfen.

von Pragmaticker (Gast)


Lesenswert?

Wenn xilinx abschneidet, dann schau in die log-Datei, hat die endung 
*.syr (synthese report). Such doch mal auf der platte danach.

eventuell verwendest du ein ausgangssignal intern.

also sowat:

bsp_o: out std_logic;
bsp_i: out std_logic;

architecture
signal bsp_int: std_logic;

begin


bsp_o <= not bsp_in;  --legal

bsp_int <= bsp_o;   --illegal


end architecture;

von Jan M. (mueschel)


Lesenswert?

Das heißt, dass du in irgendeinem deiner Files einen input-Buffer 
instanziierst (das kann auch automatisch passieren). Es ist nicht 
möglich, das Signal vor dem input Buffer irgendwohin zu verbinden. Also 
entweder überall das Ausgangssignal des input Buffers in die port map 
schreiben, oder gar keinen input Buffer extra instanziieren.

von Rick Dangerus (Gast)


Lesenswert?

Die input-Buffer werden z.B. bei den DCMs eingefügt. Dürfte bei den DLLs 
auch so sein. Dann mußt Du Deinen internen Takt am CLK0 (o.ä.) der 
DCM/DLL abfassen.

Rick

von Fragender (Gast)


Lesenswert?

ok, dank euch. ich werde mir mal das ganze jetzt nochmals etwas genauer 
unter euren gesichtspunkten ansehen und wer weiß evtl. will es ja dann 
auch funktionieren.

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.