VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
Veränderbares PWM Signal in VHDL

Anfang   zurück   weiter   Ende
Autor Beitrag
andy
Registrierter Benutzer


Beiträge: 1

New PostErstellt: 17.05.08, 19:42  Betreff: Veränderbares PWM Signal in VHDL  drucken  weiterempfehlen Antwort mit Zitat  

Der Tag, an dem die Erde...
Hi Leute.
Bin total am verzweifeln. Versuchen seit Tagen ein Programm zu schreiben, womit ich mit einem Tastendruck die Pulsbreite eines PWM-Signals vergrößern bzw verkleinern kann bei gleich bleibender Periodendauer.
Das PWM Signal ist kein Problem, das funks. Nur soblad ich was programmieren womit ich es ändern möchte, bricht es zusammen. wenn ich es mir am Oszi anschaue. Vielleicht kann mir jemand einen Tip gehen. Wäre super.
Quelltext von meiner Realisierung PWM(Puls 1,2ms Periode 20ms) hänge ich dran. Danke

-- STANDARD LIBRARIES --
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;

-- BEGIN OF ENTITY --
ENTITY PWM_TEST IS
-- GLOBAL VARIABLE MAX-COUNT (Periodendauer 20 ms) --
GENERIC (period : INTEGER := 2000);
PORT (
-- GLOBAL CLOCK OF MAX II ALTERA --
glb_clk: IN BIT;
-- CLOCK FOR DISTANCE MEASUREMENT 100 KHz --
en: IN STD_LOGIC;
-- GLOBAL RESET USER PUSH BUTTON S1 --
nReset: IN BIT;
-- CLOCK FOR PWM-MODULATOR 50 Hz --
pwm_clk: OUT STD_LOGIC
);
END PWM_TEST;
-- END OF ENTITY --

-- BEGIN OF ARCHITECTURE --
ARCHITECTURE SCALER OF PWM_TEST IS
TYPE STATE_TYPE IS (START, MOTOR_ON, MOTOR_OFF);
SIGNAL state : STATE_TYPE;
BEGIN
PROCESS (glb_clk, en, nReset)
-- TEMPORARY VARIABLE FOR TIMING --
VARIABLE cnt : INTEGER := 0;
-- GLOBAL RESET --
BEGIN
IF (nReset = '0') THEN
cnt := 0;
state <= START;
-- GENERATING NEW CLOCK --
ELSIF (glb_clk'EVENT AND glb_clk='1') THEN
IF en = '1' THEN
IF cnt < period THEN
cnt := cnt + 1;
ELSE
cnt := 0;
END IF;
CASE state IS
WHEN START =>
IF cnt = 1 THEN
state <= MOTOR_ON;
ELSE
state <= state;
END IF;
WHEN MOTOR_ON =>
IF cnt = 122 THEN
state <= MOTOR_OFF;
ELSE
state <= state;
END IF;
WHEN MOTOR_OFF =>
state <= START;
END CASE;
END IF;
END IF;
END PROCESS;
pwm_clk <= '1' WHEN state = MOTOR_ON ELSE '0';
END SCALER;
-- END OF ARCHITECTURE --

nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden
Sortierung ändern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj