Frequenzteiler mit CPLD

OP #1714920
Lesenswert?

Hallo Zusammen,

noch eine Anfängerfrage:

Ich möchte einen CPLD-Baustein dazu bringen, ein 32Mhz-Signal (Vss 5V) 
welches durch einen Quarz-Oszi "eingespeisst" wird, soweit runter zu 
teilen, das sich z.B. ein 4MHz-Signal (Vss 5V) als Ausgang eines von mir 
bestimmten Pins ergibt. Könnte mir hier jemand einen Ansatz nennen. Ich 
erwarte nicht die Lösung in Form eines VHDL-Codes, sondern nur 
gedankliche Ansatzpunkte ;) Ich bin bereits soweit, das ich dies 
theoretisch mit den vom CPLD zur Verfügung gestellten T-FlipFlops 
realisieren könnte...dafür benötige ich 3 T-FF, ist das richtig (da ein 
T-FF meine Frequenz jeweils durch 2 teilt)?

THX
J
Moderator (Firma: Titel) Persönliche Seite #1716354
Lesenswert?

>> Nicht nötig, da ein std_logic_vector den Überlauf von selbst macht.
Diese Erklärung ist zu simpel und stimmt so unbesehen nicht. Die 
korrekte Aussage wäre:
Der in den Bibliotheken
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
überladene Operator + macht den Überlauf.

Aber allgemein gilt: mit std_logic_vector sollte man nicht rechnen, denn 
abhängig von der eingebunden Library (signed/unsigned) kommen u.U. 
andere Ergebnisse heraus...

Besser ist die Verwendung der
use ieee.numeric_std.all;
und der darin enthaltenen (Vektor-)Datentypen signed und unsigend:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
:
5
count unsigned(2 downto 0) := "000";
6
:
7
  if count ="111" then
8
    count <= "000";
9
  else
10
    count <= count + 1;
11
  end if;
12
:

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