mikrocontroller.net

Forum: FPGA, VHDL & Co. ERROR:Place:1018


Autor: Rolf Riller (ultra-low)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
das ist mein erster vhdl code und schon gibts probleme.

entity test is
    Port ( my_clock : in  STD_LOGIC;
           my_result : out  STD_LOGIC_VECTOR (3 downto 0));
end test;

architecture Behavioral of test is
  signal my_count_temp : STD_LOGIC_VECTOR(3 downto 0) := "0000";
  begin
  process(my_clock)
    begin
    if my_clock'event and my_clock = '1' then
      my_count_temp <= my_count_temp + 1;
    end if;
  end process;
  my_result <= my_count_temp;
end Behavioral;

ich möchte dass bei jedem tastendruck von Push-Button  der zähler um 
eins erhöht wird und an LEDs ED7-ED4 angezeigt wird. nun bekomme ich 
immer den folgenden fehler: ERROR:Place:1018 - A clock IOB / clock 
component pair have been found that are not placed at an optimal clock 
IOB /.
my_clock habe ich an Push-Button Switch/BTN_WEST/D18. ich verstehe nicht 
warum ich my_clock an D18 nicht legen kann. ich benutze spartan-3e kit 
von xilinx. und wo hätte ich nachschlagen müssen dass mir dieser fehler 
nicht unterlaufen würde ?
gruss

Autor: Rolf Riller (ultra-low)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt habe ich my_clock von D18 auf C9 umgelegt und es funktioniert. 
aber warum ging es mit D18 nicht ?
gruss

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist keine gute Idee/ kein guter Stil, ein Clocksignal per Hand zu 
erzeugen. Clocksignale für FPGAs liegen in der Größenordnung von 
1..60MHz (intern auch mehr). Clocksignale müssen im FGPA aufwendig 
verteilt werden, deswegen gibt es spezielle Eingangspins dafür.

Deinen Taster musst Du übrigens noch entprellen. Dafür läßt sich z.B. 
alle 5 ms ein clock-enable Signal erzeugen. Mit diesem liest Du den 
Taster in ein Schieberegister ein und guckst, ob dort das Muster "011" 
drin steht. Wenn ja, hast Du Deinen Tastendruck erkannt und kannst 
diesen weiterverarbeiten.

Rick

P.S.: Hier noch ein paar Verbesserungsvorschläge:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all; -- Standardbibliothek

entity test is
    Port ( my_clock : in  STD_LOGIC;
           my_result : out  STD_LOGIC_VECTOR (3 downto 0));
end test;

architecture Behavioral of test is
  signal my_count_temp : unsigned(3 downto 0) := "0000"; -- damit kann man "rechnen"
  begin
  process(my_clock)
    begin
    if rising_edge(my_clock) then -- leichter lesbar
      my_count_temp <= my_count_temp + 1;
    end if;
  end process;
  my_result <= std_logic_vector(my_count_temp); -- casting
end Behavioral;

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.