• 普通列表项目任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成数字万年历设计并观察调试结果
  • 普通列表项目要求:驱动底板上的实时时钟芯片DS1340Z获取时间信息(年、月、日、周、时、分、秒),显示在8位数码管上,分两页显示,第一页显示年月日周信息,第二页显示时分秒信息,通过旋转编码器调节数字万年历和控制显示,具体控制如下:
    • 万年历有8个状态(常态、调年、调月、调日、调周、调时、调分、调秒)
    • 按动旋转编码器在8个状态中依次循环切换
    • 常态下,转动编码器切换显示页,逆时针转显示第一页,顺时针转显示第二页
    • 调节状态下,旋转调节时间,逆时针转减,顺时针转加
    • 调节状态下,显示被调节选项所在页,同时被调节选项闪烁显示
  • 普通列表项目解析:通过FPGA编程驱动实时时钟芯片DS1340Z,实现时间写入和读出的功能,驱动旋转编码器获取操作信息,设计一个控制模块根据编码器操作信息控制数字万年历的逻辑(包括时间调节,显示控制),最后驱动数码管显示数字万年历信息。

前面的章节中我们学习了扫描式数码管模块和旋转编码器模块的工作原理及驱动方法,也对I2C总线协议及相关知识,本实验主要对I2C总线驱动方法加以练习,同时完成数字万年历时间调节和显示控制的逻辑,最终完成数字万年历总体设计。

  • 复习I2C总线工作原理及通信协议
  • 练习I2C接口驱动设计方法,完成实时时钟芯片DS1340Z驱动设计
  • 根据要求完成数字万年历调时和显示控制的逻辑
  • 完成数字万年历设计实现

根据前面的实验解析我们可以得知,该设计可以拆分成几个功能模块实现,

  • Encoder:驱动旋转编码器旋转功能实现,获取转动信息
  • Debounce:驱动旋转编码器按键功能实现,实现按键消抖
  • modectrl:根据编码器操作信息控制万年历时间调节和显示控制逻辑 * DS1340Zdriver:驱动实时时钟芯片DS1340Z完成时间写入和读出功能
  • Segment_scan:通过驱动扫描式数码管将万年历信息显示出来。

Top-Down层次设计 模块结构设计

DS1340Z模块介绍

DS1340Z模块连接

DS1340Z驱动设计

万年历控制模块实现

系统总体实现

  1. 双击打开Quartus Prime工具软件;
  2. 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择);
  3. 新建文件:File → New → Verilog HDL File,键入设计代码并保存;
  4. 设计综合:双击Tasks窗口页面下的Analysis & Synthesis对代码进行综合;
  5. 管脚约束:Assignments → Assignment Editor,根据项目需求分配管脚;
  6. 设计编译:双击Tasks窗口页面下的Compile Design对设计进行整体编译并生成配置文件;
  7. 程序烧录:点击Tools → Programmer打开配置工具,Program进行下载;
  8. 观察设计运行结果。