⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_counter.vhd

📁 VHDL基础的编程源代码
💻 VHD
字号:
--/*****************************************************************************
--* 源文件:	pwm_counter.v
-- * 模块:   	PWM信号产生
-- * 版权:
-- *         	Copyright(C) 北京联华众科科技有限公司
-- *						www.lianhua-zhongke.com.cn
-- * 版本:  	Version 1.0
-- * 
-- * 功能说明:
-- *		   	根据参数指定频率和占空比产生PWM信号,并通过PWM接口将PWM信号引出供
-- *			外部使用。
-- *
-- * 参数说明:
-- *	       	输出
-- *			pwm_out - PWM信号输出
-- *
-- *			输入
-- *			clock - 工作时钟
-- *			reset - 复位信号,低电平有效
-- *
-- *			参数
-- *			T - PWM周期,在一个周期内容纳的时钟计数个数
-- *			Th - PWM正半周期宽度
-- *			T_width - 产生指定周期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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -