mikrocontroller.net

Forum: FPGA, VHDL & Co. Implementierung eines Taktteilers


Autor: Ali Coban (boss)
Datum:

Bewertung
-2 lesenswert
nicht 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.

Autor: Johannes O. (jojo_2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht in deinem Uni-Skript dazu nichts?

Autor: Ali Coban (boss)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
nein der Prof der ist einfach behindert

Autor: Seppl H. (mopication)
Datum:

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

Autor: Stefan Us (stefanus)
Datum:

Bewertung
1 lesenswert
nicht 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.

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

Bewertung
1 lesenswert
nicht 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-...
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
Autor: meckerziege (Gast)
Datum:

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

Autor: Ali Coban (boss)
Datum:

Bewertung
0 lesenswert
nicht 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.

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

Bewertung
0 lesenswert
nicht 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
Autor: Ali Coban (boss)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: C. A. Rotwang (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/

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

Bewertung
0 lesenswert
nicht lesenswert
C. A. Rotwang schrieb:
> zweiter hit von oben:
  if (count = 25000) then
    tmp <= NOT tmp;
    count <= 1;
  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
Autor: bitwurschtler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.

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