差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
数字万年历设计 [2019/04/12 02:13] gongyu |
数字万年历设计 [2021/08/18 09:10] (当前版本) gongyusu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ###数字万年历设计 | + | ##数字万年历设计 |
- | + | ||
- | ----- | + | |
###实验任务 | ###实验任务 | ||
行 14: | 行 12: | ||
* 普通列表项目解析:通过FPGA编程驱动实时时钟芯片DS1340Z,实现时间写入和读出的功能,驱动旋转编码器获取操作信息,设计一个控制模块根据编码器操作信息控制数字万年历的逻辑(包括时间调节,显示控制),最后驱动数码管显示数字万年历信息。 | * 普通列表项目解析:通过FPGA编程驱动实时时钟芯片DS1340Z,实现时间写入和读出的功能,驱动旋转编码器获取操作信息,设计一个控制模块根据编码器操作信息控制数字万年历的逻辑(包括时间调节,显示控制),最后驱动数码管显示数字万年历信息。 | ||
- | ====实验目的==== | + | ### 实验目的 |
前面的章节中我们学习了扫描式数码管模块和旋转编码器模块的工作原理及驱动方法,也对I2C总线协议及相关知识,本实验主要对I2C总线驱动方法加以练习,同时完成数字万年历时间调节和显示控制的逻辑,最终完成数字万年历总体设计。 | 前面的章节中我们学习了扫描式数码管模块和旋转编码器模块的工作原理及驱动方法,也对I2C总线协议及相关知识,本实验主要对I2C总线驱动方法加以练习,同时完成数字万年历时间调节和显示控制的逻辑,最终完成数字万年历总体设计。 | ||
行 22: | 行 20: | ||
* 完成数字万年历设计实现 | * 完成数字万年历设计实现 | ||
- | ====设计框图==== | + | ### 设计框图 |
根据前面的实验解析我们可以得知,该设计可以拆分成几个功能模块实现, | 根据前面的实验解析我们可以得知,该设计可以拆分成几个功能模块实现, | ||
行 32: | 行 30: | ||
{{:11-Top-Down层次设计.png?500|Top-Down层次设计}} {{:11-模块结构设计.png?500|模块结构设计}} | {{:11-Top-Down层次设计.png?500|Top-Down层次设计}} {{:11-模块结构设计.png?500|模块结构设计}} | ||
- | ====实验原理==== | ||
- | ===DS1340Z模块介绍=== | + | #### 实验原理 |
+ | |||
+ | ##### DS1340Z模块介绍 | ||
从DS1340Z芯片手册可以得到如下信息,DS1340Z芯片典型电路连接如下: | 从DS1340Z芯片手册可以得到如下信息,DS1340Z芯片典型电路连接如下: | ||
行 48: | 行 47: | ||
{{:11-芯片内部结构图.png?600|芯片内部结构图}} | {{:11-芯片内部结构图.png?600|芯片内部结构图}} | ||
- | ===DS1340Z模块连接=== | + | #### DS1340Z模块连接 |
STEP BaseBoard V3.0底板上的实时时钟芯片DS1340Z模块电路图如下(上拉电阻未显示): | STEP BaseBoard V3.0底板上的实时时钟芯片DS1340Z模块电路图如下(上拉电阻未显示): | ||
行 62: | 行 61: | ||
{{:11-DS1340Z晶振.png?500|DS1340Z晶振连接}} | {{:11-DS1340Z晶振.png?500|DS1340Z晶振连接}} | ||
- | ===DS1340Z驱动设计=== | + | #### DS1340Z驱动设计 |
前面实验中我们已经讲述学习过I2C总线驱动的设计,本实验可以上原来的基础上调整,首先来了解DS1340Z时序中的参数要点。 | 前面实验中我们已经讲述学习过I2C总线驱动的设计,本实验可以上原来的基础上调整,首先来了解DS1340Z时序中的参数要点。 | ||
行 197: | 行 196: | ||
* 每次写操作调节时间的时间数据由其他模块提供 | * 每次写操作调节时间的时间数据由其他模块提供 | ||
- | ===万年历控制模块实现=== | + | #### 万年历控制模块实现 |
控制模块包含多个功能的设计:模式控制、调时控制、显示控制,可以细化成多个模块实现,本实验例程中就写在了一个模块下,我们会针对这三个功能分别讲解其实现方法及原理。 | 控制模块包含多个功能的设计:模式控制、调时控制、显示控制,可以细化成多个模块实现,本实验例程中就写在了一个模块下,我们会针对这三个功能分别讲解其实现方法及原理。 | ||
行 282: | 行 281: | ||
</code> | </code> | ||
- | ===系统总体实现=== | + | #### 系统总体实现 |
前面分析了显示控制,主要对时间选项的点亮还是熄灭做控制,对应到数码管上就转化成数码管位的点亮和熄灭控制。另外还包含显示数据的控制,而这部分设计我们放到顶层模块中实现了,我们来分析一下。 | 前面分析了显示控制,主要对时间选项的点亮还是熄灭做控制,对应到数码管上就转化成数码管位的点亮和熄灭控制。另外还包含显示数据的控制,而这部分设计我们放到顶层模块中实现了,我们来分析一下。 | ||
行 331: | 行 330: | ||
{{:11-RTL设计框图.png?800|RTL设计框图}} | {{:11-RTL设计框图.png?800|RTL设计框图}} | ||
- | ====实验步骤==== | + | #### 实验步骤 |
- 双击打开Quartus Prime工具软件; | - 双击打开Quartus Prime工具软件; | ||
- 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | ||
行 342: | 行 341: | ||
- | ====实验现象==== | + | ### 实验现象 |
将程序下载到FPGA中,按照设计要求的功能操作调节万年历的时间,观察数码管万年历显示,如图时间为18年6月27日,周三,19点15分14秒。 | 将程序下载到FPGA中,按照设计要求的功能操作调节万年历的时间,观察数码管万年历显示,如图时间为18年6月27日,周三,19点15分14秒。 | ||
{{:11-实验现象1.png?500|实验现象}} {{:11-实验现象2.png?500|实验现象}} | {{:11-实验现象1.png?500|实验现象}} {{:11-实验现象2.png?500|实验现象}} |