软件:Quartus
语言:VHDL
代码功能:
可控脉冲发生器
一.目的
1.了解可控脉冲发生器的实现原理。
2.学习用VHDL编写复杂功能的代码。
二.简单设计原理
脉冲发生器就是要产生一个脉冲波形,而可控脉冲发生器则是要产生一个周期和占空比可变的脉冲波形。可控脉冲发生器的实现原理比较简单,可以理解为计数器对输入的时钟信号进行分频的过程。通过改变计数器的上限值来达到改变周期的目的,通过改变电平翻转的阈值来达到改变占空比的目的。
三.课题内容
1.查找资料,理解设计原理
2.用VHDL语言设计可控脉冲发生器(周期和占空比由设计者自行设定)
3.在 Quartusll上完成设计输入、全程编译和功能仿真
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 设计思路
采用1KHz的工作时钟,脉冲周期为0.5s~6s,占空比10%~90%。复位后初始周期为2.5s,占空比50%。
2. 工程文件
3. 程序文件
4. 程序编译
5. 仿真图
仿真设置
仿真图
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; ???USE?ieee.std_logic_arith.all; --周期,占空比均可调的脉冲发生器 ENTITY?pulse_ctrl?IS ???PORT?( ??????clk????????????:?IN?STD_LOGIC;--工作时钟1KHz,一周期1ms ??????reset??????????:?IN?STD_LOGIC;--复位,用于初始化 ??????period_in??????:?IN?STD_LOGIC_VECTOR(12?DOWNTO?0);--周期控制,0.5~6s--period对应500~6000 ??????Duty_cycle_in??:?IN?STD_LOGIC_VECTOR(6?DOWNTO?0);--占空比控制,10%~90% ??????pulse_wave?????:?OUT?STD_LOGIC--脉冲波输出 ???); END?pulse_ctrl; ARCHITECTURE?behave?OF?pulse_ctrl?IS ??? ???SIGNAL?period?????:?INTEGER;--周期控制,0.5~6s--period对应500~6000 ???SIGNAL?Duty_cycle?:?INTEGER;--占空比控制,10%~90% ???SIGNAL?count??????:?INTEGER:=?0; ???SIGNAL?high_cnt???:?INTEGER; BEGIN ???PROCESS?(clk,?reset) ???BEGIN ??????IF?(reset?=?'1')?THEN--复位 ?????????period?<=?2500;--初始化周期为2.5s?,单位ms ?????????Duty_cycle?<=?50;--初始化占空比50% ??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????period?<=?Conv_Integer(period_in);--转换为int类型 ?????????Duty_cycle?<=?Conv_Integer(Duty_cycle_in);--转换为int类型 ??????END?IF; ???END?PROCESS;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=639