www.mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL - Teiler


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

I muss für mein Projekt einen Teiler von Xilinx (XC9536) programmieren. 
Er muss ein Eingangssignal teilen(1:1; 1:2; 1:5; 1:10; 1:16; 1:20; 1:50; 
1:100; 1:128 und 1:200). Ich habe nicht viele erfahrungen mit dem 
programieren von Bausteinen und hoffe das mir jemand helfen kann.

mfg Michael

Autor: p. g. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaue dir die Grundlagen vom Frequenzteiler an:
http://www.elektronik-kompendium.de/sites/dig/0212221.htm

und probier es in VHDL umzusetzen...
Oder hast du was anderes gemeint?

Autor: Hilel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein mögliches Verfahren besteht darin, einen rückwertszählenden Zähler 
zu realisieren, dessen Zählerstand mit der Teilerzahl geladen werden 
kann. Man zählt rückwerts bis der  Zählerstand 1 dezimal erreicht ist. 
Dieser Zustand setzt die eigentliche Zählfunktion außer betrieb. Der 
nächstfolgende Taktimpuls bewirkt, dass der Zähler mit der an den 
Eingängen anstehenden Teilerzahl geladen wird. Der Zähler zählt nun 
rückwerts und der Vorgang beginnt von neuem. Doch wie erhält man aus 
dieser Vorgehensweise das gewünschte Ausgangssignal des Frequenzteilers?
Zu diesem Zweck bildet man ein Signal, das nur bei Zählerstand 1 dezimal 
High-Pegel aufweist. Für alle anderen Zählerzustände soll es Low 
bleiben.

Versuch mal folgendes Beispiel anzupassen:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity freqteil is
    Port (   E  : in std_logic_vector(3 downto 0);
        Q  : out std_logic_vector(3 downto 0);
    RESET  : in std_logic;
    FAUS : out std_logic;
               CLK   : in std_logic);

end freqteil;

architecture Behavioral of freqteil is

signal qtemp : std_logic_vector(3 downto 0);
signal outtemp    : std_logic;
begin
  process (CLK,RESET)
  begin
    if RESET = '1' then
        qtemp <= E;
    outtemp <= '0';
    elsif CLK='1' and CLK'event then

   if qtemp = "0001" then
        outtemp <= '1';
        qtemp   <= E;
      else
        outtemp <= '0';
        qtemp   <= qtemp - 1;
      end if;
    end if;
  end process;

  Q <= qtemp;
  FAUS <= outtemp;
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.