Menu Close

复杂数字钟设计及开发板硬件实验

复杂数字钟设计及开发板硬件实验是Verilog与FPGA设计与应用的第一个综合训练,把已经学过的Verilog语法与FPGA的基本知识加以综合应用。本训练的内容主要包含如下几个部分:

1. 设计需求分析:

    • 本设计需求如下:

      • 数字钟显示内容如下:月、日、时、分、秒。用数码管显示各项内容。
      • 具有简单按键校准功能。并能指示校准位置。
      • 为了清晰易读,月、日、时、分、秒之间应做好显示分割。

2. 接口需求分析与设计:

在设计需求分析中首先要确定端口设计,也就是确定FPGA对外界的接口,接口设计原则一般遵循三个方面的内容,一是设计需求,而是已有的硬件系统,三是本着经济易用的原则。

           本设计采用已有的开发板PRA006/010或PRX100-d的基础上进行,开发板上已有6个数码管,和4个按键(PRA006)或7个按键(PRX100-D),50MHz的时钟,因此输入、输出接口基本确定,为了兼容两个开发板的Verilog程序设计,确定接口如下:

    • 50MHz的输入时钟:
    • 6个数码管,其中7段用于显示数字,小数点用于显示分割和校准指示(采用闪动效果)。
    • 4个按键:分别用于加、减、左移、右移。加、减用于校准(较时),左、右移由于移动闪烁的小数点,以便准确指示校准的位置
    • 接口设计完成后,就进入程序设计阶段。

3. 程序设计阶段:

程序设计阶段一般分为功能划分,子模块接口对接,子模块程序实现,编译、硬件调试。在程序阶段一般会有反复修正的过程。

  • 功能划分:

  由于内部功能比较复杂,因此在程序设计之前要求对整体设计在结构上要有清晰的划分,将一个大的工程拆分成可以控制易于设计的子模块,功能划分一般遵循如下步骤:

  • 对需求进行全面分析,确定要实现的要素
  • 初步功能划分,实现各模块之间接口
  • 逐步深入划分,在深入划分中,检查上级划分是否合理,如不合理对上级做出修正。
  • 直到最后一级,完成Verilog程序设计。

%title插图%num

图1

  • 程序分割的原则
    • 尽量使用已学过,调试过的程序,做到程序复用
    • 抽象,模块的功能需要仔细研究与抽象,把多个层次或模块需要的功能抽象出来生成单独的模块,便于系统范围内程序共用。
    • 抽象出来的模块有一定的适应性,如有必要引入参数化设计。
    • 模块之间接口清晰,耦合要弱,能单向耦合就不做双向耦合(见计数模块与调度模块分析)
    • 模块功能内聚,相似功能,强关联功能尽量在一个模块内实现(见计数模块中的计数与按键移动)
    • 层数,模块数量应折中;过少层次之间不够清晰,模块不独立;过多程序庞大臃肿,一样不好维护。
    • 如有通信,层间划分应实现收发之间对等(后续课程会有详解)。

初步设计的功能划分如图2

%title插图%num

图2

修正后的功能划分,如图3:

%title插图%num

图3

  • 程序编译、仿真、硬件验证与调试。根据调试和验证结果可能会有如下调整:
    • 可能调整模块间的功能微调
    • 模块内程序修正
    • 传递参数调整
    • 往复上述过程,直到满足设计要求

4. 文档

  • 修正设计文档、写出调试报告,及工程设计调试经验。
  • 写出使用说明(书)。
  • 整理程序,添加合理注释,以及修改部分变量名称,增加程序易读性。

5. 发布

  • 发布程序(移交给委托方)
  • 发布文档(移交给委托方)

6. 培训

  • 内部培训
  • 外部培训(委托方)

7. 改进与优化

按照设计要求,从最初的项目设计到代码编写,板载实验及调试(包括代码更新)都已经完成。经过使用体验,我们发现还有许多可以改进的地方。

  • 改进的原则:
    • 增强用户体验
      • 易于使用,尽量做到所见即所得,缩短使用的学习时间
      • 减少用户的设置错误
      • 与现有市面上的成熟产品对比,尽量沿袭用户的使用习惯
      • 修改代码使得二次开发用户易于理解和集成复用
    • 降低成本,功耗
  • 优化内容:
    • 时,分,秒,日,月的快速定位(界面切换更灵活)、
    • 更改小数点闪动频率
    • 将小数点每次移动两位、
    • 计数器高低位联系起来校准
    • 月份和天之间自动校准
    • 通过蜂鸣器,增加整点报时
  • 优化结果分析:
    • 按键不能迅速调整秒,分钟。可以继续优化按键去抖模块,达到长按迅速增加或是减少
    • 将校准的闪动小数点换成闪动数码管
    • 增加闹钟功能
    • 减少按键,降低成本
    • 观察代码优化,是否可以进一步精简

 

PRA006工程代码(登录用户可见):

本文隐藏内容 登陆 后才可以浏览

移植到PRX100-D的工程代码(登录用户可见):

本文隐藏内容 登陆 后才可以浏览

优化后PRX100-D的工程代码(登录用户可见):

本文隐藏内容 登陆 后才可以浏览

Posted in FPGA, FPGA, Verilog, Verilog, 教材与教案, 文章

发表评论

相关链接