FPGA入门:野火DEMO上的数码管控制与74HC595应用

需积分: 11 11 下载量 117 浏览量 更新于2024-07-15 收藏 11.75MB PDF 举报
本篇FPGA入门笔记主要围绕野火FPGA征途系列开发板中的数码管驱动部分展开,适合那些希望通过实践学习FPGA编程的人。核心内容涉及了八段数码管的工作原理,以及如何使用74HC595位移寄存器来控制其显示。以下是关键知识点的详细解析: 1. **数码管基础**: 八段数码管是一种常见的数字和字符显示器件,通常有共阴极和共阳极两种类型。在该笔记中,提到的是共阴极结构,其中低位(Q7)对应最低位,高位(Q0)对应最高位,且低电平有效。 2. **74HC595控制逻辑**: - 8位串行输入(DS数据输入端口)接收要显示的数值,逐位通过Q7S与DS级联。 - 位选先传输最低位(Q7),段选先传输最高位(Q0),这有助于正确驱动数码管的各个段。 - **控制信号**:`stcp`(存储寄存器时钟输入片选与段选的产生)在14个信号传输完成后产生一个上升沿,用于同步显示更新。 - `shcp`(移位寄存器时钟输入)则用于产生四分频的移位时钟,确保数码管按顺序显示。 3. **代码实现**: - `always @(posedges sys_clk or negedges sys_rst_n)`块展示了时序逻辑,当系统时钟上升沿或复位信号下降沿到来时,执行相应操作。 - 当系统处于复位状态时,数码管显示IDLE(闲置状态,不显示)。 - 使用`if-else`语句根据`num`变量的不同值(0-15分别对应0-9和A-F),将相应的数码管段配置到`seg`信号上。 - 当计数器`cnt_bit`达到13(所有位已传输完毕)且`cnt_4`为3(四分频的第三个周期),`stcp`变为高电平,触发数码管的显示更新。 4. **控制流程**: - 数据首先通过串行方式写入74HC595的DS端口,然后通过时钟(shcp)的四分频移位操作,逐位传输到数码管各段。 - 段选信号由`stcp`控制,确保所有段同时显示正确的位置和状态。 - 通过这种方式,可以灵活地用FPGA实现对数码管的动态控制,实现简单的数字和字符显示功能。 这篇笔记提供了使用FPGA设计和驱动数码管的基本步骤,适合初学者理解数字逻辑和硬件编程在实际应用中的运作。通过理解和实现这些核心代码片段,读者可以逐渐掌握FPGA在嵌入式系统中处理I/O信号的技能。