0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA设计:采用74HC595的LED控制电路操作

454398 来源:博客园 作者:raymon_tec 2020-10-21 15:29 次阅读

1基础理论部分

1.1分频

分频,是的,这个概念也很重要。分频是指将一单一频率信号的频率降低为原来的1/N,就叫N分频。实现分频的电路或装置称为“分频器”,如把33MHZ的信号2分频得到16.5MHZ的信号,3分频得到11MHZ的信号,10分频得到3.3MHZ的信号。

分频主要是相对于主晶振来说,用不到那么高的频率,开发板一般根据具体需要会加入晶振,一般若是功耗较高可选用50MHz,其他情况可以相对调整,如24MHz等等。那么分频的典型应用,二分频,四分频,八分频,还有任意分频。

对于分频,我们可以利用quartus ii 自带的PLL进行分频,这样会占用一定的资源,也可以利用计数器实现一定的分频,注意,FPGA中不同于其他的CPU,没有计时器的概念,只有计数器。

1.2 LED

LED(light emitting diode),发光二极管,简称LED,是一种能够将电能转化成可见光的固态的半导体器件,可以直接把电转换成光。可以用在电路及仪器中作指示灯,或者组成文字或数字显示等。有不同化合物制成的二极管如砷,镓,磷等化合物制成,不同的化合物组合会显示不同颜色的光。

在设计LED的驱动电路时,不能直接接到3.3V或者5V来点亮,LED有额定电流,超过这个额定电流,LED就会烧掉,反接也会烧掉。一般的LED的额定电流从10mA~1A不等。FPGA开发采用的LED主要是贴片0805或者0603等,额定电路一般从10mA~30mA.

1.3 74HC595

开发板上面的LED控制是用串入并出/串出的移位寄存器74HC595芯片,芯片在电路中的接入情况如图5.1所示,实物图如图5.2所示。其中MR引脚直接接高电平,不进行复位。串出引脚9不接,不进行串出引脚的使用。输出使能引脚13直接接地,手册上建议。11和12引脚分别为移位寄存器时钟输入和存储时钟输入,分别引出。

图5.1 LED部分电路图

图5.2 实物图

2 verilog代码实现部分

2.1 74HC595 控制部分

14行定义了一个全局参数WIDTH = 8,用来控制程序下面所有的有关于数量的使用。

59行和60行分别定义了时钟信号和时钟使能信号,其中时钟信号sclk时钟周期前半段为低电平,后半段为高电平,可以实现对数据的中间采样,时钟使能信号led_time可以控制数据和时钟对齐。48行的state是一个状态改变的寄存器,只要数据一更新,state就有效。

75行定义了update_input信号用来检测输入数据的变化。

状态转换部分,在case语句中先检测state的初始位,然后进入循环操作,检测update_input是否使能,使能更新state,不使能保持state,更新后开始输出位数计数器led_cnt的计数

在121到123行,对输出的三路信号进行了约束限制,这种方法值的借鉴,在用不到时不输出信号,用到时输出信号,最大量的节省时钟。Led_data_out是先从高位输出到低位。

2.2 LED数据产生部分

在模块声明处,仍旧使用全局定义变量,控制模块中常量的使用。

计数模块,产生时钟使能信号。

Reg型变量Led_out_cnt是用来控制LED变化, 每当时钟信号使能开始计数,板卡上面一共有8个LED,所以计数8个即可。

LED解码部分,通过上面的led_out_cnt信号进行解码,控制LED的流水操作。

3 modelsim验证部分

3.1 led_generate 模块仿真

43行产生时钟信号,通过PERIOD进行周期控制。49~51产生复位信号,当时钟两次下降沿后复位信号拉高。56行用来监测led_out输出的时间,生成的脚本文件如图5.3所示。

图5.3仿真波形

图5.4是利用脚本文件生成,可以观察到实现了流水功能,且时间间隔1s;

图5.4 脚本生成文件

3.2 led_74HC595 模块仿真

前半部分和上述都一样,可以作为固定部分,大家可以自行复制即可。59行到63行增加了系统输入信号初始化部分。在输入信号输入前,最好最安全就是进行一次初始化。

75行到87行是对输入进行模拟输入,并监测led_data-out信号,输出的结果如图5.5所示,由图可以看到时间间隔为120ns。

图5.6是仿真波形,可以看到时钟led_sclk每次采样在输入信号的正中间位置,最大程度保证采样可靠。

图5.5 脚本文件

图5.6 仿真波形
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21309

    浏览量

    593133
  • led
    led
    +关注

    关注

    237

    文章

    22445

    浏览量

    645848
  • 分频器
    +关注

    关注

    43

    文章

    433

    浏览量

    49312
  • 驱动电路
    +关注

    关注

    151

    文章

    1469

    浏览量

    107659
收藏 人收藏

    评论

    相关推荐

    描述74hc595芯片的引脚功能

    74HC595是一款8位移位寄存器芯片,拥有广泛的应用领域。它具有多种引脚功能,下面将详细介绍每个引脚的功能及其用途。 引脚1 (SER): 串行数据输入 SER引脚是74HC595的串行数据输入
    的头像 发表于 12-18 17:17 1371次阅读

    使用74HC595驱动LED流水灯实验

    74HC595的连接方式为PC6->DS, PC7->STCP, PC8->SHCP,采用两片74HC595极联,共用DS,STCP,SHCP引脚,实验所使用的下载器为STLINK 2V1版本,自带一个串口。
    的头像 发表于 11-29 16:20 626次阅读
    使用<b class='flag-5'>74HC595</b>驱动<b class='flag-5'>LED</b>流水灯实验

    51单片机的超声波测距,并用74HC595驱动数码管显示超声波测距的距离

    个人是小白,实在不会写,麻烦大佬们帮忙写一个程序,实现51单片机的超声波测距,并用74HC595驱动数码管显示超声波测距的距离!!!
    发表于 11-23 15:19

    74hc595和max7219驱动的点阵在驱动方式有什么不同?

    74hc595和max7219驱动的点阵在驱动方式有什么不同
    发表于 11-09 06:45

    74HC595芯片的工作原理和用法简单介绍

    74HC59574hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用74HC595可以节约单片机mcu的io口资源
    的头像 发表于 11-01 12:27 6878次阅读
    <b class='flag-5'>74HC595</b>芯片的工作原理和用法简单介绍

    74HC573和74HC595有什么区别?

    我们在控制点阵屏的时候为什么都用74HC595
    发表于 10-10 07:07

    74hc595单片机程序里DS=CY这个语句是什么意思?

    和一个8位输出寄存器, 本例利用74HC595,通过串行输入数据来控制数码管的显示。 */ #include #include #define uchar unsigned char #define
    发表于 10-08 06:34

    HD74HC595 数据表

    HD74HC595 数据表
    发表于 06-27 19:03 0次下载
    HD<b class='flag-5'>74HC595</b> 数据表

    Arduino 74hc595移位寄存器

    电子发烧友网站提供《Arduino 74hc595移位寄存器.zip》资料免费下载
    发表于 06-14 10:03 3次下载
    Arduino <b class='flag-5'>74hc595</b>移位寄存器

    74hc595的功能及作用

    74hc595是一种串行输入并行输出的移位寄存器,是TTL逻辑门的CMOS版本,具有低功耗、高速度、低噪声等优点,因此被广泛应用于数字电路设计中。下面介绍74hc595的功能及作用。
    的头像 发表于 06-07 18:13 8347次阅读
    <b class='flag-5'>74hc595</b>的功能及作用

    数据需要如何格式化才能发送到74HC595移位寄存器?

    大家好, 我有一个 16 通道继电器控制器(12v 版本),内置 wifi 和 8266 处理器,周围看到过它们该板有 2 x 74HC595控制哪些继电器打开和关闭的单元我已经设法推断出下面代码中
    发表于 06-02 08:30

    HD74HC595 数据表

    HD74HC595 数据表
    发表于 05-08 19:23 0次下载
    HD<b class='flag-5'>74HC595</b> 数据表

    基于AT89C51单片机用74HC59574LS154设计的点阵屏

    基于AT89C51单片机用74HC59574LS154设计的16×16点阵屏Proteus仿真及程序
    发表于 05-05 10:07 8次下载

    基于AT89C51单片机74HC595串入并出芯片应用

    基于AT89C51单片机74HC595串入并出芯片应用Proteus仿真及程序
    发表于 05-04 15:24 2次下载

    74HC595级联驱动多路继电器

    项目使用8片74HC595级联控制64个继电器动作,每片74HC595控制8个继电器。 74HC595的级联
    发表于 04-27 14:18 31次下载
    <b class='flag-5'>74HC595</b>级联驱动多路继电器