Forum: FPGA, VHDL & Co. Implementierung eines Taktteilers


von Ali C. (boss)


Lesenswert?

Anforderungen:
1. Die Taktteilung soll in einem getakteten Prozess laufen.
2. Der Prozess soll mit 50 MHz getaktet werden.
3. Die 50 MHz sollen auf 10 Hz runtergeteilt werden.
4. Dieser Takt soll an einen GPIO gelegt werden, zum Anschauen mittels 
Oszilloskop.

ich soll dazu einen VHDL Code schreiben, ich weiß das 50 MHz mein Input 
ist und die 10 Hz mein Output. In meine Sensivitätsliste die clock also 
die 50 MHz kommt. Jetzt muss ich interne Signale legen ich hab aber 
keine Ahnung wie ich den code schreiben soll, die intere Signale kommen 
zwischen architecture ... und process (clk) aber mehr geht da auch 
nicht. Der Rest ist auch unklar.

von Johannes O. (jojo_2)


Lesenswert?

Steht in deinem Uni-Skript dazu nichts?

von Ali C. (boss)


Lesenswert?

nein der Prof der ist einfach behindert

von Z.B. Max Z. (mopication)


Lesenswert?

Weißt du, wie ein Taktteiler funktioniert und wie er aufgebaut ist?
Das wäre nämlich mal ein Anfang.

von Stefan F. (Gast)


Lesenswert?

> nein der Prof der ist einfach behindert

Leider liest man oft, dass der Lehrer Schuld ist, wenn der Schüler nicht 
versteht. Doch oft ist das nur eine faule Ausrede.

Deine Fragestellung ist derart offen, dass sie von meinem kleinen Sohn 
hätte kommen können. Überlege Dir, welche Informationen ein potentieller 
Helfer benötigt, um Dir zu helfen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ali C. schrieb:
> Der Rest ist auch unklar.
Sieh dir dein Vorlesungsmaterial an und das da: 
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
Zusammen mit der breiigen Masse zwischen deinen Ohren bringt dich das 
wahrscheinlich weiter.

Ali C. schrieb:
> nein der Prof der ist einfach behindert
Ich habe VHDL erstmal ganz ohne Prof gelernt. Und das zu Zeiten als es 
ungleich schwerer war, ein brauchbares Buch oder Informationen im 
Internet zu finden.
Der "behinderte"  Prof ist nur ein Spiegelbild deiner Faulheit. Oder 
siehst du das grundlegend anders? Hast du noch mehr solcher 
"behinderten" Profs?

: Bearbeitet durch Moderator
von meckerziege (Gast)


Lesenswert?

Zeige doch mal was du schon hast. Also konkret code... Dann können wir 
helfen.

von Ali C. (boss)


Lesenswert?

Also soweit bin ich im Moment:

use library.ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity of teiler is

port
  (
    clk     : in std_logic;
    counter   : in unsigned (22 downto 0);
    x       : out std_logic);

    architecture verhalten of teiler is
    signal counter_int, x_int;
      process (clk)
      begin
        if (clk'event and clk = '1') then





nur bin ich mit mit den counter nicht sicher ob es in den Port gehört.
Bei dem Ansatz da schwanke ich auch.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ali C. schrieb:
> nur bin ich mit mit den counter nicht sicher ob es in den Port gehört.
In den Port gehört der Eingang und der Ausgang: clk50mhz und clk10hz. 
Mehr nicht.

Und dann brauchst du noch einen Integer-Zähler, der von 0 bis 
((50000000/10)/2)-1 zählt und dann den clk10hz toggelt. Das wäre alles.

: Bearbeitet durch Moderator
von Ali C. (boss)


Lesenswert?

Also ich habe meine Zähler schon der ist 50000000 und mir ist auch klar 
das ich den /2 teilen muss aber warum die minus 1? Nur mein Problem 
liegt darin das in VHDL umzusetzen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ali C. schrieb:
> aber warum die minus ein?
Weil z.B. ein Zähler mit den Zählerwerten 0, 1, 2 und 3 auch schon 4 
Schritte lang zählt.

> Nur mein Problem liegt darin das in VHDL umzusetzen.
Im Ernst: es gibt zigtausendundein Beispiele für Taktteiler im Netz. 
Eines davon habe ich dir direkt auf die Nase gedrückt. Du musst nur 
statt der LED deinen clk10hz da einfügen. Und den Zähler passend 
zurücksetzen.
Das schaffst du. Ich drücke dir die Daumen.

: Bearbeitet durch Moderator
von C. A. Rotwang (Gast)


Lesenswert?

Ali C. schrieb:
> nein der Prof der ist einfach behindert

Du offensichtlich auch, google nach "VHDL clock divider", zweiter hit 
von oben: http://allaboutfpga.com/vhdl-code-for-clock-divider/

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

C. A. Rotwang schrieb:
> zweiter hit von oben:
1
  if (count = 25000) then
2
    tmp <= NOT tmp;
3
    count <= 1;
4
  end if;
Tolles Beispiel... :-/
Um den obligatorischen OffByOne-Fehler zu umgehen wird der Zähler auf 1 
zurückgesetzt. Applaus für diese unsinnige Anfängeridee.

Denn das macht denn der lernwillige Schüler künftig auch bei einem 
Zähler, der z.B. 16 Schritte zählen soll (wie in der Digitaltechnik 
nicht unüblich). Der Zähler braucht dann wegen dieses tollen "Tricks" 
ein Bit mehr, weil 0..15 super in 4 Bit passen, 1..16 aber 5 Bits 
brauchen.

: Bearbeitet durch Moderator
von bitwurschtler (Gast)


Lesenswert?

Lothar M. schrieb:

> Denn das macht denn der lernwillige Schüler künftig auch bei einem
> Zähler, der z.B. 16 Schritte zählen soll (wie in der Digitaltechnik
> nicht unüblich). Der Zähler braucht dann wegen dieses tollen "Tricks"
> ein Bit mehr, weil 0..15 super in 4 Bit passen, 1..16 aber 5 Bits
> brauchen.

Bei dem Zähler mit synchronen und asynchronen Reset macht das eine bit 
mehr den Fehler auch nicht "fett", die Resourcen werden schon durch den 
bei einem Taktteiler unnötigen Reset verbrannt.

Und damit ein "lernwilliger" Schüler was lernt, muss es auch was zu 
lernen geben. Manche lernen ja am meisten von schlechten Beispielen, 
weil es sie anspornt besser zu sein als andere.
Das Auswendiglernen perfekter Beispiele dagegen ist IMHO weniger 
effizient.

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.