使用74HC595驱动数码管动态显示实验

本文详细介绍了如何利用74HC595串行移位寄存器通过Verilog编程实现两个8位级联,用于驱动数码管的显示,通过线性序列机技巧优化时序,展示了模块设计、读入数据操作和仿真验证过程,以及在Vivado中的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

串行移位寄存器原理详解

在这里插入图片描述
我们实现的是FPGA图片对应的部分。相当于写的是一个驱动,

电路逻辑示意图,不是详细的电路图。
74HC595,8位串行移位寄存器。

LATCH有上升沿的信号时,上面的REG0到3会将DFF0到3的信号存储起来,并输出到OUTPUT0到3对应的D0-D3的信号口上。

在这里插入图片描述
逻辑信号示意图。
表示了4位的移位寄存器。
需要4个时钟周期,移位4次。输出4位并行数据。

同理8位的移位寄存器。
需要8个时钟周期,移位8次。输出8位并行数据。
在这里插入图片描述
74HC595芯片的内容
在这里插入图片描述
QH’当成了移位的端口输出。
移位时钟SRCLK,锁定时钟RCLK。

在这里插入图片描述
两个并联的情况。
移位时钟SRCLK,锁定时钟RCLK。这样并联之后就可以实现16位的并行输出

只需要将这16位的信号分别接给8位8段数码管的ser(选择)接口和seg接口,就能任意控制某个数码管的某一段。
两个47HC595芯片可以实现,3个信号线传输16位信号的功能。

在这里插入图片描述数码管74HC595的电路。和上面的原理是一致的。
上面是一个级联,因为QH接到了SER那里。
第一个U11QA-QH接到了数码管的HEX_SEL0-7也就是位选信号端,后边U12QA-QH接到了数码管的HEX_A-DP也就是段选信号端。

输入的信号其实就是DIO 对应的SER,RCLK,SCLK对应的SRCLK。
最终的工作不是去实现74HC595本来的功能,而是去驱动数码管管。

一、需实现的模块

在这里插入图片描述
模块功能:
将两个8位的SEL[7:0],SEG[7:0],通过DIO(SER),SCLK,RCLK。输出给两片级联的74HC595芯片。
将两个8位的第一级接SEL和第二级接SEG恰好稳定,出现输出在两片47HC595芯片的QA-QH上。
在这里插入图片描述
对应的信号传输时序图。
在这里插入图片描述
对应的功能表
在这里插入图片描述
在写代码的时候对应的时序逻辑顺序十分重要。

二、模块实现

在verilog中的信号名称不能以数字作为开头。
在这里插入图片描述
DIO不能在SRCLK的高电平变化,有一段时间的延迟,如上面的时间延迟表。
RCLK的上升沿一定不会出现在SRCLK的上升沿的。

思路:用线性序列机的方式实现
最小时钟单位取SRCLK的一半。

移位的时候,先移动高位再移动低位。
上一轮的结束本身就意味着下一轮的开始,

线性序列机

就是根据时序图来写代码,根据不同的时间来进行具体的操作。其中不同的时间主要是依靠计数器来进行计时。
不同的时间对应不同的操作。

1.对应模块

代码如下(示例):

`timescale 1ns / 1ps

module HC595(
    Clk,
    Reset_n,
    SEG,
    SEL,
    DIO,
    SRCLK,
    RCLK
    );
    input Clk;
    input Reset_n;
    input [7:0]SEG;
    input [7:0]SEL;
    output reg DIO;
    output reg SRCLK;
    output reg RCLK;
    
    parameter CLOCK_FREQ = 50_000_000;
    parameter SRCLK_FREQ = 12_500_000;   //期望的SRCLK的频率
    parameter MCNT = CLOCK_FREQ/(SRCLK_FREQ * 2) - 1;
    
    reg [29:0]div_cnt;
    
        
    always@(posedge Clk or negedge Reset_n)
    if(!Reset_n)
        div_cnt <= 0;
    else if(div_cnt == MCNT)
        div_cnt <= 0;
    else
        div_cnt 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值