?? pwm_counter.vhd
字號:
--/*****************************************************************************
--* 源文件: pwm_counter.v
-- * 模塊: PWM信號產(chǎn)生
-- * 版權(quán):
-- * Copyright(C) 北京聯(lián)華眾科科技有限公司
-- * www.lianhua-zhongke.com.cn
-- * 版本: Version 1.0
-- *
-- * 功能說明:
-- * 根據(jù)參數(shù)指定頻率和占空比產(chǎn)生PWM信號,并通過PWM接口將PWM信號引出供
-- * 外部使用。
-- *
-- * 參數(shù)說明:
-- * 輸出
-- * pwm_out - PWM信號輸出
-- *
-- * 輸入
-- * clock - 工作時鐘
-- * reset - 復(fù)位信號,低電平有效
-- *
-- * 參數(shù)
-- * T - PWM周期,在一個周期內(nèi)容納的時鐘計(jì)數(shù)個數(shù)
-- * Th - PWM正半周期寬度
-- * T_width - 產(chǎn)生指定周期PWM信號時,T的位寬
-- *
-- * 變更記錄:
-- * 2006.01.28, 新建
-- *
-- *****************************************************************************/
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY pwm_counter IS
GENERIC
(
T : INTEGER:= 240;
Th : INTEGER:= 24;
T_width : INTEGER:= 32
);
PORT
(
pwm_out : OUT STD_LOGIC;
clock : IN STD_LOGIC;
reset : IN STD_LOGIC
);
END pwm_counter;
ARCHITECTURE pwm_architecture OF pwm_counter IS
BEGIN
PROCESS(clock, reset)
VARIABLE delay_counter : INTEGER;--count for pwm
BEGIN
IF (reset = '0') THEN
pwm_out <= '1';
delay_counter := 0;
ELSIF(clock = '1' AND clock'EVENT) THEN
IF (delay_counter = Th-1) THEN
pwm_out <= '0';
delay_counter := delay_counter+1;
ELSIF(delay_counter = T-1) THEN
pwm_out <= '1';
delay_counter := 0;
ELSE
delay_counter := delay_counter+1;
END IF;
END IF;
END PROCESS;
END pwm_architecture;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -