可控脉冲发生器VHDL代码Quartus仿真

名称:可控脉冲发生器VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

可控脉冲发生器

一.目的

1.了解可控脉冲发生器的实现原理

2.学习用VHDL编写复杂功能的代码。

二.简单设计原理

脉冲发生器就是要产生一个脉冲波形,而可控脉冲发生器则是要产生一个周

期和占空比可变的脉冲波形。可控脉冲发生器的实现原理比较简单,可以理解为计数器对输入的时钟信号进行分频的过程。通过改变计数器的上限值来达到改变周期的目的,通过改变电平翻转的阈值来达到改变占空比的目的

三.课题内容

1.查找资料,理解设计原理

2.用VHDL语言设计可控脉冲发生器(周期和占空比由设计者自行设定)

3.在 Quartusll上完成设计输入、全程编译和功能仿真

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;
源代码

 扫描文章末尾的公众号二维码

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值