VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
Frequenzmessung mit VHDL

Anfang   zurück   weiter   Ende
Autor Beitrag
Daniel
Gast
New PostErstellt: 31.10.05, 11:10  Betreff: Frequenzmessung mit VHDL  drucken  Thema drucken  weiterempfehlen Antwort mit Zitat  

Hallo Leute,

da ich in VHDL noch kein wirklicher Profi bin, bräuchte ich mal eure Hilfe.
Ich arbeite mit Spartan 3 von Xilinx (50 MHz Quarz). Ich möchte einen
Frequenzeingang an meinem FPGA reservieren, der ein offsetbehaftetes
Rechtecksignal mit einer Periodendauer von 50% misst. Genauer, dessen
Frequenz misst. Der Frequenzbereich des Rechtecksignal liegt zw.
28,9kHz und ca. 45kHz. Das Ergebnis würde ich gerne als
std_logic_vector weiterverarbeiten und am Ausgang als
frequenzsynchrones Pulssignal wieder ausgeben. Dabei soll die
Pulsbreite über eine Konstante im Quellcode eingestellt werden können.


Habe leider noch wenig Erfahrung mit VHDL und freue mich deshalb über
jede Hilfe die ich kriegen kann.

Vielleicht könnt Ihr mir ja weiterhelfen oder habt ein ähnliches
Problem schon mal gehabt.

Vielen Dank im Voraus

Gruß
Daniel
nach oben
xGCFx
Stammgast


Beiträge: 33
Ort: Dresden

New PostErstellt: 31.10.05, 16:28  Betreff: Re: Frequenzmessung mit VHDL  drucken  weiterempfehlen Antwort mit Zitat  

Also, die Frequenz an einem Eingang würd grob gesagt ich so messen:

  • Eingang mit sehr viel grösserer Frequenz abtasten
  • pro Abtasten einen Zähler erhöhen, wenn high am Eingang
  • 2*Zählerstand is dann im Verhältnis zur Abtastfrequenz deine Eingangsfrequenz


nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden
silvan
Gast
New PostErstellt: 29.01.08, 21:49  Betreff: Re: Frequenzmessung mit VHDL  drucken  weiterempfehlen Antwort mit Zitat  

Hallo Leute

Ich habe das mit der Frequenzmessung mal umgesetzt... allerdings funktioniert es irgendwie nicht so ganz und weiss nicht, ob meine Umsetzung fehlerhaft ist oder ob mein Xilinx-Board den Geist aufgegeben hat...


Der Code kommt aus dem folgenden Kontext heraus. Eine Hardware (Stimmgerät mit Mikrophon) liefert ein Rechtecksignal mit der Frequenz der am Mikrofon eingespielten Tonhöhe. Diese Frequenz soll ermittelt werden und die Differenz von der Grundwelle (a, 440hz) aufm Display ausgegeben werden.


et voilà... vielleicht sieht jemand was aufn ersten Blick, wäre cool!

************************


library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;

entity FreqFind is
generic (
CLK_rate :integer := 50_000_000
);
Port(
rst: in std_logic;
clk: in std_logic;
FreqIn: in std_logic;
FreqOut: out std_logic_VECTOR(15 downto 0);
CountOut: out std_logic_VECTOR(15 downto 0)
);

end FreqFind;

architecture A1 of FreqFind is

begin

process(rst,clk)

variable abtastzaehler :integer :=0;
variable temp :integer;
variable FreqInV :std_logic;
variable FreqInV_1 :std_logic;
variable Tcount :integer;

begin
if rst = '1' then -- im Resetfall
abtastzaehler :=0;
Tcount := 11;

elsif rising_edge(clk) then -- im Normalfall

FreqInV := FreqIn; -- Zuweisung des Eingangssignals

abtastzaehler := abtastzaehler+1; -- Abtastcounter






if FreqInV_1 ='0' and FreqInV='1' then
Tcount := Tcount-1;
FreqInV_1 := FreqInV;
end if;

if (Tcount = 0) then

CountOut <=conv_std_logic_vector(abtastzaehler,16);
FreqOut <= conv_std_logic_vector(11*50_000_000,16); -

Tcount := 11;
abtastzaehler :=0;

end if;
end if;
end process;
end A1;
nach oben
Sortierung ndern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj