spartan 3e starter kit

Moderator (Firma: Titel) Persönliche Seite #1790062
Lesenswert?
• ▲
▼
Thomas Thomas schrieb:
> aber es funktioniert
Glück gehabt. Takte werden für FPGAs nicht so erzeugt:
1
    if rising_edge(sys_clk) then
2
       if clk_counter = 10 then
3
            clk_slow <= not clk_slow;
4
            :
Wie soll den der clk_slow auf ein Taktnetz kommen?
Ergo wird dieser Takt mit normalen Routingressourcen an die beteiligten 
Komponenten verdrahtet. Das erhöht den Skew und macht das Design eher 
unzuverlässig...
Gast #1792273
Lesenswert?
• ▲
▼
Hallo Lothar,

leider verstehe ich nicht so genau was du in deiner Antwort erklärt 
hast. Ich habe meine Teiler auch immer noch der Struktur aufgebaut. 
Kannst du etwas genauer erleutern was daran falsch ist ? Danke


so habe ich das (bis jetzt?) gemacht
wait until rising_edge(Clock);
  if (ZAEHLER = IRGENDWAS) then
   ZAEHLER <= 0;
   STATUS <= not STATUS  ;
  else
    ZAEHLER <= ZAEHLER + 1;
  end if;


Grüße
Freddy
Gast #1792525
Lesenswert?
• ▲
▼
@freddy:
Der Teiler an sich ist nicht falsch. Nur Dein Signal muss bei Xilix z.B. 
noch auf einen BUFG gefuehrt werden, damit wieder das globale (lies: 
geeignete) Taktnetzwerk verwendet wird.

Geschickter ist es, enables zu verwenden.

Rick
Moderator (Firma: Titel) Persönliche Seite #1792704
Lesenswert?
• ▲
▼
Freddy schrieb:
>   wait until rising_edge(Clock);
>   if (ZAEHLER = IRGENDWAS) then
>    ZAEHLER <= 0;
>    STATUS <= not STATUS  ;
>   else
>     ZAEHLER <= ZAEHLER + 1;
>   end if;
Das passt schon, solange da nicht irgendwo steht
rising_edge(STATUS)   oder
falling_edge(STATUS)  oder
STATUS'event
Denn dann hättest du da aus dem Status einen Takt hergezaubert.

Und es ist ganz einfach: in einem schönen einfachen Design steht vor 
einem 'event (und dieses Attribut ist ja auch in rising_edge() und 
falling_edge() verwendet) immer das selbe (Takt-)Signal. Und wenns dann 
komplett übersichtlich werden soll, steht auch immer nur rising_edge() 
oder immmer falling_edge() da, aber keine Mischungen der beiden.

Wenn dein Takt z.B. clock heißt, sieht jeder getaktete Prozess so aus:
1
   process begin
2
      wait until rising_edge(clock);
3
      :
4
   end process;
Oder meinetwegen auch so:
1
   process (clk) begin
2
      if rising_edge(clock) then
3
         :
4
      end if;
5
   end process;
Gast #1804068
Lesenswert?
• ▲
▼
hi Thomas Thomas

danke für deine hilfe erstmal..
hab alles eingestellt und das program laufen lassen... aber ich krieg 
kein signal an meinen Ausgängen.
beim kompilieren werden mir keine fehler angeziegt..
woran kann das den liegen??

lg annika

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.