VHDL-Forum

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

Anfang   zurück   weiter   Ende
Autor Beitrag
witteks
Stammgast


Beiträge: 27

New PostErstellt: 14.03.05, 21:07     Betreff: Re: Impulsabstandsmessung Antwort mit Zitat  

Honigtot
Hallo Sven,

hier ein Lösungsvorschlag mit Testbench (im Anhang ZIP-Datei).

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

-- Uncomment the following lines to use the declarations that are
-- provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;

entity Messung is
Port ( reset : in std_logic;
Zu_testendes_Signal : in std_logic;
clk_ref : in std_logic;
Impulsabstand : out std_logic_vector(15 downto 0);
Messung_fertig : out std_logic;
Ueberlauf : inout std_logic
);
end Messung;

architecture Behavioral of Messung is
signal halten : std_logic; -- zum Messen einer ganzen Periode des zu messenden Signales
signal Impulsabstand_zaehler : std_logic_vector(15 downto 0);
begin
process (reset, clk_ref)
begin
if reset = '1' then
Impulsabstand_zaehler <= X"0000";
Impulsabstand <= X"0000";
Messung_fertig <= '0';
Ueberlauf <= '0';
halten <= '0';
elsif rising_edge (clk_ref) then
if Impulsabstand_zaehler = X"FFFF" then
Impulsabstand_zaehler <= X"0000";
Ueberlauf <= '1';
else -- kein Überlauf
if Ueberlauf = '0' then
if Impulsabstand_zaehler = X"0000" then
if Zu_testendes_Signal = '1' then
Impulsabstand_zaehler <= Impulsabstand_zaehler + 1;
halten <= '1';
Messung_fertig <= '0';
end if;
else -- Impulsabstand_zaehler nicht 0
if halten = '1' then
if Zu_testendes_Signal = '1' then
Impulsabstand_zaehler <= Impulsabstand_zaehler + 1;
else
Impulsabstand_zaehler <= Impulsabstand_zaehler + 1;
halten <= '0';
end if;
else -- halten = '0'
if Zu_testendes_Signal = '0' then
Impulsabstand_zaehler <= Impulsabstand_zaehler + 1;
else
Impulsabstand_zaehler <= X"0000";
Messung_fertig <= '1';
Impulsabstand <= Impulsabstand_zaehler;
end if;
end if;
end if;
else -- Überlauf = 1
if Zu_testendes_Signal = '0' then
Impulsabstand_zaehler <= X"0000";
Ueberlauf <= '0';
halten <= '0';
end if;
end if;
end if;
end if;
end process;
end Behavioral;



Impulsabstandsmessung.zip (21 kByte)
anzeigen - speichern
Datei wurde schon 240-mal heruntergeladen.
nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden Website dieses Mitglieds aufrufen
Sortierung ändern:  
Anfang   zurück   weiter   Ende
Seite 782 von 863
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj