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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren