www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Counter mit Taster - Map fehlermeldung


Autor: Simone E. (kristallfee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich fange im Rahmen meines studiums an VHDL zu lernen.
Ich habe ein Xilinx Board (ml 605) mit einem Virtex-6 und benutze ISE 
12.4.

Ich habe angefangen kleine Module zu schreiben um mich ein wenig 
einzuarbeiten. Bei meinem zweiten Programm bekomme ich aber einen Fehler 
bei dem ich nicht weiss wie ich ihn beheben kann.

Das Programm soll auf einen Tastendruck hin einen Zaehler um eins 
erhoehen.
Ich moechte dieses Modul spaeter zum debuggen benutzen, indem ich es an 
signale dranhaenge und weiss wie oft (oder ueberhaupt) das signal 
ausgeloest wurde.

Hier mein Code:
 library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity led is
    Port (input : in STD_LOGIC;
          LED : out  STD_LOGIC_VECTOR (3 downto 0));
end led;

architecture Behavioral of led is

signal counter : std_logic_vector (3 downto 0):="0000";

begin
LED <= counter ;

process(input, counter)
begin

if (input'event and input = '1') then 
counter <= counter +1;

else
counter <= counter ;

end if;
end process ;

end Behavioral; 

LED ist auf vier leds gelegt, input auf einen taster auf dem board.

Die Synthese laeuft fehlerfrei, translate auch, aber bei Map bekomme ich 
folgende Fehlermeldung:

A clock IOB / BUFGCTRL clock component pair have been found
   that are not placed at an optimal clock IOB / BUFGCTRL site pair. The 
clock
   IOB component <input> is placed at site <IOB_X1Y169>. The 
corresponding
   BUFGCTRL component <input_BUFGP/BUFG> is placed at site 
<BUFGCTRL_X0Y0>. The
   clock IO can use the fast path between the IOB and the Clock Buffer 
if a) the
   IOB is placed on a Global Clock Capable IOB site that has the fastest
   dedicated path to all BUFGCTRL sites, or b) the IOB is placed on a 
Local
   Clock Capable IOB site that has dedicated fast path to BUFGCTRL sites 
in its
   half of the device (TOP or BOTTOM). You may want to analyze why this 
problem
   exists and correct it. If this sub optimal condition is acceptable 
for this
   design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf 
file to
   demote this message to a WARNING and allow your design to continue. 
However,
   the use of this override is highly discouraged as it may lead to very 
poor
   timing results. It is recommended that this error condition be 
corrected in
   the design. A list of all the COMP.PINs used in this clock placement 
rule is
   listed below. These examples can be used directly in the .ucf file to
   override this clock rule.
   < NET "input" CLOCK_DEDICATED_ROUTE = FALSE; >


Ich verstehe die Fehlermeldung nicht in Zusammenhang mit meinem Code. 
Ich benutze doch garkeine Clock.
In meiner ucf Datei stehen nur die fuenf Zuordnungen die ich schon 
mehrfach ueberprueft habe.

Kann mir jemand erlaeutern was es mit dieser Fehlermeldung auf sich hat?

Vielen Dank

Simone

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist eigentlich eine Warnung, dass den Clock Signal nicht richtig 
beschaltet wurde.

Das kommt daher, dass Input im Endeffekt auf den Clock-Eingang eines 
FlipFlops geroutet wird und somit für ISE zur Clock wird.

Schau dir den Schaltplan an, den ISE generiert hat. Wenn du dort deine 
Signale verfolgst, wird dir alles klar werden.

Autor: Simone E. (kristallfee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

das bedeutet ich habe einen taktgesteuerten Flipflop bekommen (in der 
synthese), der input als clock benutzt, nungut, so war das nicht 
gedacht.

Im Programm erscheint dies aber als richtiger Fehler und nichtnur als 
Warnung. Diesen Fehler moechte ich auch nicht einfach ueberbruecken, wie 
es in den letzten Saetzen des Fehlers vorgeschlagen wird. Ich weiss ja 
nicht ob das noch andere Auswirkungen hat.

Waere es den besser dieses Modul mit einer Clock laufen zu lassen? 
Bringt mir das Vorteile ausser das ich diesen Fehler umgehe? (oder ist 
es im Prinzip egal?)


Dankeschoen

Simone

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest auf jeden Fall die Taste entprellen und die clk-Eingänge der 
FFs mit einer echten Clock verbinden. Wenn der Takt mal schneller wird, 
bekommst du sonst sofort echte Probleme

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan R. schrieb:
> Wenn der Takt mal schneller wird,
> bekommst du sonst sofort echte Probleme
Die werden schon so kommen, wenn ein simpler Taster als Taktquelle 
verwendet wird. Ich würde sagen: dieser Zähler zählt pro Tastendruck 
deutlich mehr als nur einen Schritt...

Simone E. schrieb:
> das bedeutet ich habe einen taktgesteuerten Flipflop bekommen (in der
> synthese), der input als clock benutzt, nungut, so war das nicht
> gedacht.
Du hast es aber genauso beschrieben:
if (input'event and input = '1') then 

> Waere es den besser dieses Modul mit einer Clock laufen zu lassen?
Es wäre nicht besser, dieses Modul mit dem einen Sytemtakt laufen zu 
lassen, sondern es wäre besser, jedes Modul mit (dem gleichen) Takt 
laufen zu lassen. Das nennt man dann ein "synchrones Design".

> Bringt mir das Vorteile ausser das ich diesen Fehler umgehe?
Ja. Nur so kann ein Design von den Tools sinnvoll verwaltet werden...

Hier nochmal meine Postulate für FPGA-Anfänger:
Ein Design (insbesondere ein Anfängerdesign) hat genau 1 Takt, 
der immer auf dieselbe Flanke aktiv ist. 
Es gibt keinen (und schon gar keinen asynchronen) Reset.
Externe Signale werden über 2 Flipflops einsynchronisiert.
Jede Abweichung von diesen Regeln muß fundiert begründet werden können.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.