名称:可控脉冲发生器(PWM)VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
可控脉冲发生器(PWM)
选用语言:VHDL
输入时钟50MHZ,将50MHZ的时钟分频为1HZ和2HZ,将分频后的时钟信号(1HZ和2HZ)当做可控脉冲的信号输入。
其中要求:
1.由拨动开关控制所选的输入信号(低电平时1HZ,高电平时2HZ)。
2.由四个拨动开关控制pwm信号的脉宽调制(实现0~15种模式共16种波形的输出),预留标准输出口。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --可控脉冲发生器 ENTITY pwm IS PORT ( clk : IN STD_LOGIC;--时钟50M sel_sw : IN STD_LOGIC;--选择1Hz还是2Hz mode_key : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--输出模式控制 pwm_out : OUT STD_LOGIC--输出PWM波形 ); END pwm; ARCHITECTURE behave OF pwm IS SIGNAL clk_2Hz : STD_LOGIC; SIGNAL clk_1Hz : STD_LOGIC; SIGNAL div_cnt : integer := 0; SIGNAL sel_clk : STD_LOGIC; SIGNAL pwm_cnt : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; BEGIN --50MHz分频产生2Hz PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (div_cnt = 12) THEN--需要计数12500000再控制clk_2Hz翻转(仿真将12500000改为12节约仿真时间) div_cnt <= 0; clk_2Hz <= NOT(clk_2Hz);--翻转 ELSE div_cnt <= div_cnt + 1;--计数 END IF; END IF; END PROCESS; --将2Hz分频为1Hz PROCESS (clk_2Hz) BEGIN IF (clk_2Hz'EVENT AND clk_2Hz = '1') THEN clk_1Hz <= NOT(clk_1Hz);--翻转 END IF; END PROCESS;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=647
534