已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 VHDL 的数字时钟设计和时序仿真 第 1 页 共 45 页 毕业设计 基于 VHDL 的数字时钟设计 和时序仿真 学生姓名 学 院 专 业 指导教师 年 月 基于 VHDL 的数字时钟设计和时序仿真 第 2 页 共 45 页 目 录 1 引言 1 2 设计概述 2 3 开发工具简介 4 3 1 VHDL 语言简介 4 3 1 1 VHDL 发展史 4 3 1 2 VHDL 设计特点 4 3 1 3 VHDL 设计结构 5 3 1 4 VHDL 设计步骤 6 3 2 Quartus II 软件简介 6 3 2 1 Quartus II 软件介绍 6 3 2 2 Quartus II 软件设计流程 6 4 数字时钟的设计要求和原理 8 4 1 设计要求 8 4 2 设计原理 8 5 数字时钟模块化设计 10 5 1 分频模块 11 5 2 计时模块 13 5 2 1 秒计时模块 13 5 2 2 分计时模块 15 5 2 3 时计时模块 17 5 3 报警模块 18 5 4 数据选择模块 20 5 5 译码显示模块 22 6 数字时钟模块化仿真 24 6 1 计时模块仿真图 24 6 1 1 秒模块仿真图 24 基于 VHDL 的数字时钟设计和时序仿真 第 3 页 共 45 页 6 1 2 分模块仿真图 24 6 1 3 时模块仿真图 25 6 2 报警模块仿真图 25 6 3 数据选择模块仿真图 26 6 4 译码模块仿真图 26 6 5 数字时钟整体仿真图 27 7 FPGA 开发板实验 28 7 1 芯片和器件选择 28 7 2 外部电路接线 28 7 2 硬件实物图 28 8 结论 30 附录 31 参考文献 42 致谢 43 基于 VHDL 的数字时钟设计和时序仿真 第 4 页 共 45 页 1 引言引言 随着科学技术的迅猛发展 在计算机技术的推动下电子技术获得了飞速的发 展 电子产品几乎渗透到了工业 生活的各个领域 其中集成电路的设计正朝着 速度快 性能高 容量大 体积小和微功耗的方向发展 基于这种情况 可编程 逻辑器件的出现和发展大大改变了传统的系统设计方法 可编程逻辑器件和相应 的设计技术主要体现在三个方面 一是可编程逻辑器件的芯片技术 二是适用于 可逻辑编程器件的硬件编程技术 三是可编程逻辑器件设计的 EDA 开发工具 它 主要用来进行可编程逻辑器件应用的具体实现 1 在本设计中采用了集成度较高 的 FPGA 可编程逻辑器件 选用了 VHDL 硬件描述语言和 Quartus II 开发软件进 行设计 VHDL 硬件描述语言在电子设计自动化 EDA 中扮演着重要的角色 由 于采用了具有多层次描述系统硬件功能的 自顶向下 Top Down 的全新设计方 法 使设计师们摆脱了大量的辅助设计工作 而把精力集中于创造性的方案与概 念构思上 用新的思路来发掘硬件设备的潜力 从而极大地提高了设计效率 缩短 了产品的研制周期 2 Quartus II 软件是集成了编辑器 仿真工具 检查 分析工具 和优化 综合工具的这些所有开发工具的一种集成的开发环境 通过该开发环境能 够很方便的检验设计的仿真结果以及建立起与可编程逻辑器件的管脚之间对应的 关系 3 EDA 技术是以计算机为工具 根据硬件描述语言HDL 完成的设计文件 自动地完成逻辑编译 化简 分割 综合及优化 布局布线 仿真以及对于 特定目标芯片的适配编译和编程下载等工作 典型的EDA 工具中必须包含两 个特殊的软件包 即综合器和适配器 综合器的功能就是将设计者在EDA 平台上完成的针对某个系统项目的HDL 原理图或状态图形描述 针对给定 的硬件系统组件 进行编译 优化 转换和综合 最终获得我们欲实现功能的 描述文件 综合器在工作前 必须给定所要实现的硬件结构参数 它的功能就 是将软件描述与给定的硬件结构用一定的方式联系起来 综合过程就是将电路 的高级语言描述转换低级的 可与目标器件FPGA CPLD 相映射的网表文件 适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中 产生最 基于 VHDL 的数字时钟设计和时序仿真 第 5 页 共 45 页 终的下载文件 如 JED 文件 适配所选定的目标器件 FPGA CPLD 芯片 必须 属于在综合器中已指定的目标器件系列 2 设计概述设计概述 数字时钟是一种用数字电路技术实现时 分 秒计时的装置 与机械式时钟 相比具有更高的准确性和直观性 且无机械装置 具有更长的使用寿命 数字时 钟可植入自动控制 测试等系统内部 作为系统的时钟源 可为系统提供定时信 号或中断控制的时间基准 具有广泛的用途 由于数字集成电路的发展使得数字 时钟的精度远远超过老式钟表 钟表的数字化给人们生产生活带来了极大的方便 而且大大地扩展了钟表原先的单一报时功能 4 加入了一些诸如自动报时 定时 闹钟等功能 这些都是以钟表数字化为基础的 因此 研究数字时钟及扩大其应 用 有着非常现实的意义 数字时钟的设计方法有很多种 包括基于单片机的硬件设计 基于各种描述 语言的软件设计 本设计采用 VHDL 语言来设计数字时钟有着多方面的优越性 通过把整个设计分为多个模块依次来实现 减少了众多重复性步骤 合理化了设 计过程 使得设计更加省时 快捷 提高了设计效率 目前 电子系统的 EDA 技术正从着眼与数字逻辑向模拟电路和数模混合电路 的方向发展 21 世纪是 EDA 技术飞速发展的时期 可以预见 EDA 技术将会对今 后电子设计的发展产生重大的影响 随着电子技术的发展 集成电路经历了从小 规模 中规模到大规模和超大规模集成的过程 应用系统向小型化 快速化 大容量 重量轻的方向发展 5 数字系统的设计也已从芯片组合化设计走向单 片系的设计 随着微电子和计算机领域的原理创新 技术创新 应用创新层出 不穷 许多特定功能的专用集成电路应用日益广泛 用户迫切希望根据自身设 计要求自行构造逻辑功能的数字电路 复杂可编程逻辑器件FPGA 顺应了这 一新的需要 它能将大量逻辑功能集成于一个芯片中 其规模可达几十万或上 百门以上 从而电子设计自动化 EDA 技术应运而生 它是电子产品及系统开 发领域中一场革命性变革 EDA 技术极大地推动了科学技术的发展 6 EDA 技术的发展使硬件电路设计软件化 降低了硬件电路设计的难度 使设计周期 和产品的开发时间缩短 设计更新变成了程序的修改 适应了千变万化的市场 基于 VHDL 的数字时钟设计和时序仿真 第 6 页 共 45 页 潮流 它的设计输入可以使用硬件描述语言 HDL 采用 自顶向下 的设 计方法 7 为设计者提供了一个高效 便捷的设计环境 同时也为充分发挥设 计人员的创造性提供了条件 EDA 技术主要应用于数字电路的设计 目前它 在中国的应用多数是用在 FPGA 的设计中 EDA 技术是现代电子信息工程领域的一门新技术 它是在先进的计算机 工作平台上开发出来的一套电子系统设计的软硬件工具 并提供了先进的电子 系统设计方法 8 20 世纪 90 年代 国际上电子和计算机技术较先进的国家 一直在积极探索新的电子电路设计方法 并在设计方法 工具等方面进行了彻 底的变革 取得了巨大成功 在电子技术设计领域 可编程逻辑器件的应用 已得到广泛的普及 这些器件为数字系统的设计带来了极大的灵活性 这些器 件可以通过软件编程而对其硬件结构和工作方式进行重构 从而使得硬件的设 计可以如同软件设计那样方便快捷 这一切极大地改变了传统的数字系统设计 方法 设计过程和设计观念 促进了EDA 技术的迅速发展 9 目前 电子系 统的 EDA 技术正从着眼与数字逻辑向模拟电路和数模混合电路的方向发展 21 世纪是 EDA 技术飞速发展的时期 EDA 技术将会对今后电子设计的发展 产生重大的影响 10 基于 VHDL 的数字时钟设计和时序仿真 第 7 页 共 45 页 3 开发工具简介开发工具简介 3 1 VHDL 语言简介语言简介 3 1 1 VHDL 发展史 VHDL 语言诞生于 1982 年 翻译成中文就是超高速集成电路硬件描述语 言 最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周 期的一种使用范围较小的设计语言 1987 年底 VHDL 被 IEEE 和美国国防 部确认为标准硬件描述语言 自 IEEE 公布了 VHDL 的标准版本 IEEE 1076 之后 各 EDA 公司相继推出了自己的 VHDL 设计环境 或宣布自己的设计工 具可以和 VHDL 接口 此后 VHDL 在电子设计领域得到了广泛的接受 并逐 步取代了原有的非标准的硬件描述语言 11 1993 年 IEEE 对 VHDL 进行了 修订 从更高的抽象层次和系统描述能力上扩展VHDL 的内容 公布了新版 本的 VHDL 主要是应用在数字电路的设计中 现在 VHDL 和 Verilog HDL 作为 IEEE 的工业标准硬件描述语言 又得到众多EDA 公司的支持 在 电子工程领域 已成为事实上的通用硬件描述语言 有专家认为在新的世纪中 VHDL 与 Verilog 语言将承担起大部分的数字系统设计任务 12 目前 它在 中国的应用多数是用 FPGA CPLD 的设计中 VHDL 主要用于描述数字系统的结构 行为 功能和接口 除了含有许多 具有硬件特征的语句外 VHDL 的语言形式和描述风格与句法是十分类似于一 般的计算机高级语言 VHDL 的程序结构特点是将一项工程设计 或称设计实 体 可以是一个元件 一个电路模块或一个系统 分成外部 或称可是部分 及端口 和内部 或称不可视部分 既涉及实体的内部功能和算法完成部分 在对一个设计实体定义了外部界面后 一旦其内部开发完成后 其他的设计就 可以直接调用这个实体 13 这种将设计实体分成内外部分的概念是 VHDL 系 统设计的基本点 3 1 2 VHDL 设计特点 应用 VHDL 语言进行系统设计 有以下几方面的特点 基于 VHDL 的数字时钟设计和时序仿真 第 8 页 共 45 页 1 功能强大 VHDL 具有功能强大的语言结构 它可以用明确的代码描 述复杂的控制逻辑设计 并且具有多层次的设计描述功能 支持设计库和可重 复使用的元件生成 VHDL 是一种设计 仿真和综合的标准硬件描述语言 2 可移植性 VHDL 语言是一个标准语言 其设计描述可以为不同的 EDA 工具支持 它可以从一个仿真工具移植到另一个仿真工具 从一个综合工 具移植到另一个综合工具 从一个工作平台移植到另一个工作平台 14 此外 通过更换库再重新综合很容易移植为ASIC 设计 3 独立性 VHDL 的硬件描述与具体的工艺技术和硬件结构无关 设计 者可以不懂硬件的结构 也不必管最终设计实现的目标器件是什么 而进行独 立的设计 程序设计的硬件目标器件有广阔的选择范围 可以是各系列的 CPLD FPGA 及各种门阵列器件 4 可操作性 由于 VHDL 具有类属描述语句和子程序调用等功能 对于 已完成的设计 在不改变源程序的条件下 只需改变端口类属参量或函数 就 能轻易地改变设计的规模和结构 5 灵活性 VHDL 最初是作为一种仿真标准格式出现的 有着丰富的仿 真语句和库函数 使其在任何大系统的设计中 随时可对设计进行仿真模拟 所以 即使在远离门级的高层次 设计者就能够对整个工程设计的结构和功能 的可行性进行查验 并做出决策 3 1 3 VHDL 设计结构 VHDL 描述数字电路系统设计的行为 功能 输入和输出 它在语法上与 现代编程语言相似 但包含了许多与硬件有特殊关系的结构 VHDL 将一个 设计称为一个实体 Entity 元件电路或者系统 并且将它分成外部的可见部 分 实体名连接 和内部的隐藏部分 实体算法实现 当定义了一个设计的 实体之后 其他实体可以利用该实体 也可以开发一个实体库 所以 内部和 外部的概念对系统设计的 VHDL 是十分重要的 外部的实体名或连接由实体 声明来描述 而内部的实体算法或实现则由结构 体来描述 15 结构体可以包 含相连的多个进程或者组建等其他并行结构 需要说明的是它们在硬件中都 是并行运行的 基于 VHDL 的数字时钟设计和时序仿真 第 9 页 共 45 页 3 1 4 VHDL 设计步骤 采用 VHDL 的系统设计 一般有以下 6 个步骤 1 按照要求的功能模块划分 2 VHDL 的设计描述 设计输入 3 代码仿真模拟 前仿真 4 计综合 优化和布局布线 5 布局布线后的仿真模拟 后仿真 6 设计的实现 下载到目标器件 3 2 Quartus II 软件简介软件简介 3 2 1 Quartus II 软件介绍 Quartus II 是 Alera 公司推出的一款功能强大 兼容性最好的EDA 工具 软件 该软件界面友好 使用便捷 功能强大 是一个完全集成化的可编程逻 辑设计环境 具有开放性 与结构无关 多平台完全集成化丰富的设计库 模 块化工具 支持多种硬件描述语言及有多种高级编程语言接口等特点 16 Quartus II 支持原理图输入与 Verilog HDL 和 VHDL 输入混合设计 它除了 承接原来的 Max Plus II 软件的全部设计功能和器件对象外 还增加了许多新 功能和新的 FPGA 器件系列 它可对设计进行功能仿真 对数字电路的设计实 现同步模拟分析和时序仿真 这种同步模拟分析 时序仿真在数字电路的教学 中可以起到很好的辅助作用 Quartus II 是 Altera 公司推出的 CPLD FPGA 开发工具 Quartus II 提供 了完全集成且与电路结构无关的开发包环境 具有数字逻辑设计的全部特性 包括 可利用原理图 结构框图 VerilogHDL AHDL 和 VHDL 完成电路描 述 并将其保存为设计实体文件 芯片 电路 平面布局连线编辑 功能强大 的逻辑综合工具 完备的电路功能仿真与时序逻辑仿真工具 定时 时序分析 与关键路径延时分析 可使用 SignalTap II 逻辑分析工具进行嵌入式的逻辑分 析 支持软件源文件的添加和创建 并将它们链接起来生成编程文件 使用组 合编译方式可一次完成整体设计流程 自动定位编译错误 高效的期间编程与 验证工具 可读入标准的 EDIF 网表文件 VHDL 网表文件和 Verilog 网表文 件 能生成第三方 EDA 软件使用的 VHDL 网表文件和 Verilog 网表文件 基于 VHDL 的数字时钟设计和时序仿真 第 10 页 共 45 页 3 2 2 Quartus II 软件设计流程 1 设计输入 设计文件的输入方法有原理图输入 文本输入 内存编辑以 及由第三方 EDA 工具产生的网表输入 格式输入 生成方法不同 生成的文 件格式也有所不同 在图形设计文件中 Quartus II 软件为了实现不同的逻辑 功能提供了大量的基本单元符号和宏功能模块 在图形编辑器中可以直接调用 为了适应自顶向下的设计 设计者可以使用和Verilog HDL 以及 Tcl 脚本输 入文本型设计 17 2 项目编译 项目编译主要完成设计项目的检查和逻辑综合 将项目最终 设计结果生成器件的下载文件 并为模拟和编程产生输出文件 3 仿真验证和时序分析 在把经过编译的输入设计编程或配置到器件之前 可以通过 Quartus II 软件的仿真器对文件进行全面测试 保证设计在各种可能 的条件下都有正确的响应 根据所需的信息类型 可以进行功能仿真和时序仿 真 Quartus II 时序分析器允许分析设计中所有逻辑的性能 得出时序分析结 果 如建立时间 保持时间 引脚到引脚延迟 最大时钟频率 延迟时间及其 它时序特征 并协助引导适配器满足设计中的时序要求 4 器件编程 成功编译了设计工程之后 编译器的Assembler 模块自动 将适配过程的器件 逻辑单元和引脚分配信息转换为器件的编程图像 并以 sof 形式保存 Quartus II 软件的编程器 programmer 使用该文件就可对器件进 行编程配置 基于 VHDL 的数字时钟设计和时序仿真 第 11 页 共 45 页 4 数字时钟设计要求和原理数字时钟设计要求和原理 4 1 设计要求设计要求 在 Quartus II 软件开发环境下 使用 VHDL 描述语言 结合 FPGA 开发板编 译和仿真数字时钟 要求时钟能进行基本的计时功能 按照 时 分 秒 来显 示时间 并且能进行时间设置 具有整点报时功能 可对所有显示的内容进行调 节设定 4 2 设计原理设计原理 根据设计要求 采用自顶向下的方法 层次化设计概念 将此任务分成若干 模块 设计时首先用 VHDL 语言编写各个功能模块 在 Quartus II 开发环境下分 别进行编译 仿真 然后再用顶层文件将各功能模块连接起来 规定某一模块的 功能和各模块之间的接口 然后将各模块组合起来构成系统框图 根据设计要求 可以把整体设计分为 分频模块 计时模块 数据扫描模块 报警模块和数据选 择模块 然后再根据总体方案对各模块进行分别设计和仿真下载 18 根据总体方 案对各模块分别进行设计 仿真和下载 数字时钟的总体框图如图 5 1 所示 声音输出 setmin reset sethour 50MHz 图 4 1 数字时钟基本框图 系统的基本功能模块可划分为 分频模块 计数模块 包括秒 分 时 译 码模块 数据扫描模块和报警模块 计数模块由两个 60 进制计数器和一个 24 进 制计数器组成 分别对秒 分 小时进行计数 整个计数模块从 00 点 00 分 00 秒 控 制 信 号 24 进制计数器 60 进制计数器 60 进制计数器 分频模块 报警模块 时间 数据 动态 扫描 模块 译 码 电 路 6 位 数 码 显 示 管 基于 VHDL 的数字时钟设计和时序仿真 第 12 页 共 45 页 开始计时 当计数到 23 点 59 分 59 秒的时候 一天结束 计数器清零 新的一天重新 开始计数 秒计数器的计数时钟信号为 1Hz 的标准信号 可以由系统板上提供的 50MHz 信号通过分频得到 秒计数器的进位输出信号作为分钟计数器的计数信号 分钟计数器的进位输出信号又作为小时计数器的计数信号 要设计一个同时显示时 分 秒 6 个数字的数字时钟 则需要 6 个七段数码 显示管 若同时点亮这 6 个七段数码显示显示管 则电路中会产生一个比较大的 电流 很容易造成电路烧坏 我们通过扫描电路来解决这一问题 通过产生一个 扫描信号来控制 6 个七段显示器 依次点亮 6 个七段数码显示管 也就是每次只点 亮一个七段显示器 只要扫描信号的频率超过人的眼睛视觉暂留频率 24Hz 以上 就可以达到尽管每次点亮单个七段数码显示管 却能具有 6 个同时显示的视觉效 果 而且显示也不致闪烁抖动 其中 6 位扫描信号一方面控制七段显示器依次点 亮 一方面控制 6 选 1 选择器输出相应显示数字 时间数据选择模块的作用是将 时钟产生的秒 分钟 小时信号集合起来 然后驱动六位七段数码管的片选驱动 信号输出 基于 VHDL 的数字时钟设计和时序仿真 第 13 页 共 45 页 5 数字时钟模块化设计数字时钟模块化设计 需要设计的数字时钟由上述 7 个模块组成 设计时 首先用 VHDL 语言编写各 个底层功能模块 然后在 Quartus II 开发环境下分别进行编译 仿真 然后再用顶层 文件将各功能模块连接起来 再进行进一步编译 仿真 下载 以下介绍系统中 各模块的具体功能和设计方法 5 1 分频模块分频模块 本设计使用的FPGA开发板中使用的芯片是Cyclone EP1C6Q240C8 使用的是 50MHz的时钟脉冲输入 根据电路的具体设计需要 对其进行分频设计 如图5 2所示 其为系统的分频模块 其中模块clk1管脚输出为1hz的时钟脉冲 得出用于计数模块和报警模块正常工作的时钟信号 在clk1k管脚输出为一个1khz 的时钟脉冲 作用与动态扫描模块的正常工作 输入管脚 clk为50Mhz脉冲输入 输出管脚 clk1为1hz脉冲输出 clk1k为1khz脉冲输出 图 5 2 源代码如下 library ieee use ieee std logic 1164 all entity fp is port clk in std logic q1 out std logic q1k out std logic 基于 VHDL 的数字时钟设计和时序仿真 第 14 页 共 45 页 end fp architecture fp arc of fp is signal x std logic signal y std logic begin process clk variable cnt integer range 0 to begin if clk event and clk 1 then if cnt then cnt cnt 1 else cnt 0 x not x end if end if q1 x end process process clk variable cnt integer range 0 to 24999 begin if clk event and clk 1 then if cnt 24999 then cnt cnt 1 else cnt 0 y not y end if end if 基于 VHDL 的数字时钟设计和时序仿真 第 15 页 共 45 页 q1k y end process end fp arc 5 2 计时模块计时模块 5 2 1 秒计时模块 如图 5 3 所示 计数电路的第一个模块为秒计数模块 其实质是一个六十进 制计数器 其中 输入管脚 clk 为 1hz 的时钟脉冲 reset 为秒模块清零复位键 setmin 为调分钟按键 输出管脚 enmin 为分模块的进位信号 dout 6 0 为秒模块输出的计数信号 图 5 3 源代码如下 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity second is port clk in std logic reset in std logic setmin in std logic enmin out std logic daout out std logic vector 6 downto 0 end entity second 基于 VHDL 的数字时钟设计和时序仿真 第 16 页 共 45 页 architecture fun of second is signal count std logic vector 6 downto 0 signal enmin 1 enmin 2 std logic begin daout count enmin 2 setmin and clk enmin enmin 1 or enmin 2 process clk reset setmin begin if reset 0 then count elsif clk event and clk 1 then if count 3 downto 0 1001 then if count 16 60 then if count then enmin 1 1 count else count count 7 end if else count end if elsif count 16 60 then count count 1 enmin 1 0 after 100ns else count end if end if 基于 VHDL 的数字时钟设计和时序仿真 第 17 页 共 45 页 end process end fun 5 2 2 分计时模块 如图 5 4 所示 计数模块的第二个模块为分计时模块 其实质是一个六十进 制计数器 其中 输入管脚 clk 为秒模块输出的进位信号 clk1 为 1hz 的时钟控制脉冲 reset 管脚的作用为分模块的清零 复位 sethour 为调小时按键 输出管脚 enhour 输出为时模块的进位信号 dout 6 0 为分钟模块输出的计数信号 图 5 4 源代码如下 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity minute is port clk in std logic clk1 in std logic reset in std logic sethour in std logic enhour out std logic daout out std logic vector 6 downto 0 基于 VHDL 的数字时钟设计和时序仿真 第 18 页 共 45 页 end entity minute architecture fun of minute is signal count std logic vector 6 downto 0 signal enhour 1 enhour 2 std logic begin daout count enhour 2 sethour and clk1 enhour enhour 1 or enhour 2 process clk reset sethour begin if reset 0 then count elsif clk event and clk 1 then if count 3 downto 0 1001 then if count 16 60 then if count then enhour 1 1 count else count count 7 end if else count end if elsif count 16 60 then count count 1 enhour 1 0 after 100 ns else count 基于 VHDL 的数字时钟设计和时序仿真 第 19 页 共 45 页 end if end if end process end fun 5 2 3 时计时模块 如图 5 5 所示 此模块的第三个模块为小时计数模块 其实质是一个二十四 进制计数器 其中 输入管脚 clk 为分模块输出的进位信号 Reset 为小时模块的清零 复位管脚 输出模块 dout 5 0 为小时模块输出的计数信号 图 5 5 源代码如下 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity hour is port clk reset in std logic daout out std logic vector 5 downto 0 end entity hour architecture fun of hour is signal count std logic vector 5 downto 0 begin daout count process clk reset begin if reset 0 then 基于 VHDL 的数字时钟设计和时序仿真 第 20 页 共 45 页 count elsif clk event and clk 1 then if count 3 downto 0 1001 then if count 16 23 then count count 7 else count end if elsif count 16 23 then count count 1 else count end if end if end process end fun 5 3 报警模块报警模块 如图 5 6 所示 报警模块的作用是在时钟整点的时候输出一个报时信号 信 号作用用开发板上 产生外部响声 起到报时的作用 同时可以选择在开发板的 LED 上显示出整点报时的 LED 花样显示 其中 输出管脚 clk 为 1hz 的脉冲信号 dain 6 0 是分钟的输入信号 输出管脚 speak 为整点报时的声音输出 lamp 2 0 为整点报时的 LED 输出 图 5 6 源代码如下 基于 VHDL 的数字时钟设计和时序仿真 第 21 页 共 45 页 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity alert is port clk in std logic dain in std logic vector 6 downto 0 speak out std logic lamp out std logic vector 2 downto 0 end alert architecture fun of alert is signal count1 std logic vector 1 downto 0 signal count std logic vector 1 downto 0 begin speaker process clk begin speak 10 then count1 00 else count1 count1 1 end if end if end if end process speaker lamper process clk begin if rising edge clk then 基于 VHDL 的数字时钟设计和时序仿真 第 22 页 共 45 页 if count 10 then if count 00 then lamp 001 elsif count 01 then lamp 010 elsif count 10 then lamp 100 end if count count 1 else count 00 end if end if end process lamper end fun 5 4 时间数据选择模块时间数据选择模块 如图 5 7 所示 该模块的作用是将时钟产生的秒 分钟 小时信号集合起来 然后驱动六位八段共阴数码管的片选驱动信号输出 输入管脚 clk1 为 1khz 的时钟脉冲 Reset 为数据选择模块的清零 复位信号 Sec 6 0 为秒模块计数的输入信号 Min 6 0 为分钟模块计数的输入信号 Hour 5 0 为小时模块计数的输入信号 输出管脚 dout 3 0 为选择信号的输出 Dp 为八段数码管小数点的输出管脚 Sel 2 0 为位选后的输出信号 基于 VHDL 的数字时钟设计和时序仿真 第 23 页 共 45 页 源代码如下 library ieee use ieee std logic 1164 all use ieee std logic unsigned all use ieee std logic arith all entity seltime is port clk1 reset in std logic sec min in std logic vector 6 downto 0 hour in std logic vector 5 downto 0 daout out std logic vector 3 downto 0 dp out std logic sel out std logic vector 2 downto 0 end seltime architecture fun of seltime is signal count std logic vector 2 downto 0 begin sel count process clk1 reset begin if reset 0 then count 101 then count 000 基于 VHDL 的数字时钟设计和时序仿真 第 24 页 共 45 页 else countdaout sec 3 downto 0 dpdaout 3 0 daout 2 downto 0 sec 6 downto 4 dpdaout min 3 downto 0 dpdaout 3 0 daout 2 downto 0 min 6 downto 4 dpdaout hour 3 downto 0 dpdaout 3 downto 2 00 daout 1 downto 0 hour 5 downto 4 dp 0 end case end process end fun 5 5 译码显示模块译码显示模块 如图 5 8 所示 此模块为数字时钟的译码显示输出模块 其中 输入管脚 num 3 0 为数据选择模块的输出信号 输出管脚 led 6 0 为 7 段数码管的显示输出 图 5 8 源代码如下 基于 VHDL 的数字时钟设计和时序仿真 第 25 页 共 45 页 library ieee use ieee std logic 1164 all use ieee std logic unsigned all entity deled is port num in std logic vector 3 downto 0 led out std logic vector 6 downto 0 end deled architecture fun of deled is begin led when num 0000 else when num 0001 else when num 0010 else when num 0011 else when num 0100 else when num 0101 else when num 0110 else when num 0111 else when num 1000 else when num 1001 else when num 1010 else when num 1011 else when num 1100 else when num 1101 else when num 1110 else when num 1111 end fun 基于 VHDL 的数字时钟设计和时序仿真 第 26 页 共 45 页 6 数字时钟模块化仿真数字时钟模块化仿真 仿真是使用 VHDL 语言进行设计的重要组成部分 也是对设计的电路进行功能 和性能测试的有效手段 EDA 工具提供了强大且与电路实时行为相吻合的精确硬 件系统测试工具 由于本设计采用了分模块化设计的方法 所以仿真的时候需要先进行各底层 模块的独立仿真 最后进行整个电子时钟的时序仿真 将所有仿真图综合起来验 证系统功能的完整性 6 1 计时模块仿真图计时模块仿真图 由于计时模块分为三个部分 时 分 秒 所以三个模块需要进行独立仿真 其中 6 1 1 秒模块仿真 如图 7 1 所示 从图中可以看出 输入为 1hz 的时钟信号 reset 为低电平有 效的复位信号 计数从 00 到 59 计数到 59 时向分计时模块进位 然后重新开始 计数 实现 60 秒计数制 setmin 为高电平有效的调分信号 图 6 1 基于 VHDL 的数字时钟设计和时序仿真 第 27 页 共 45 页 6 1 2 分模块仿真 如图 6 2 所示 在图中可以看出和秒模块一致的是计数从 00 到 59 当计数到 59 时向时模块进位 然后重新开始计时 实现 60 分钟计数制 并且给报警模块 一个报时信号 提示整点报时 reset 为低电平有效的清零信号 sethour 为高电平 有效的调时信号 图 6 2 6 1 3 小时模块仿真 如图 6 3 所示 在图中可以看出 reset 为低电平有效的清零信号 clk 为分模块 的进位信号 计数值从 00 到 23 当计数到 23 的时候 计数器归零 重新开始计 数 实现 24 小时计数制 图 6 3 6 2 报警模块仿真图报警模块仿真图 如图 6 4 所示 该模块的功能是 对分计时模块输入的整点信号输出一个声 音信号 提供整点报时功能 lamp 为三位 LED 灯输出 speak 为扬声器输出 基于 VHDL 的数字时钟设计和时序仿真 第 28 页 共 45 页 图 6 4 6 3 数据选择模块仿真图数据选择模块仿真图 如图 6 5 所示 在图中可以看出 该模块中当输入时间为 23 59 38 的 时候 dout 端口中输出的内容为 两者输入时间一致 所以该模块符合设计要 求 其中 Reset 为低电平有效置位信号 clk1 为 1khz 的时钟脉冲 dp 为八段数码 管的 输出 图 6 5 6 4 译码模块仿真图译码模块仿真图 如图 6 6 所示 译码模块的作用就是将输入的时间信号转化成显示信号经过 数码管输出 基于 VHDL 的数字时钟设计和时序仿真 第 29 页 共 45 页 图 6 6 6 5 数字时钟整体仿真图数字时钟整体仿真图 数字时钟的整体仿真如图 6 7 所示 图中 clk 为 50hz 的时钟输出信号 reset 为低电平有效的清零信号 setmin 为高电平有效的调分信号 sethour 为高电平有 效的调时信号 dp 为 信号 led 6 0 为 7 段译码器的输出信号 lamp 为三盏 LED 灯输出 speak 为报时信号输出 图 6 7 基于 VHDL 的数字时钟设计和时序仿真 第 30 页 共 45 页 7 FPGA 开发板实验开发板实验 7 1 FPGA 芯片和器件选择芯片和器件选择 主芯片 Cyclone EP1C6Q240C8 器件 4 个八段扫描数码显示管 三个按键开关 系统清零按键 调时按键 调分按键 一个蜂鸣器 3 个 LED 灯 7 2 外部电路接线外部电路接线 7 2 1 输入接口 1 代表清零 调时 调分信号 RESET SETHOUR SETMIN 的管脚分别连 接按键开关 2 代表输入脉冲信号 CLK50M 同 50MHz 时钟源相连 7 2 2 输出接口 1 代表扫描显示的驱动信号管脚 SEL2 SEL1 SEL0 的管脚同四位扫描驱 动地址的低 3 位相连 最高位地址接 0 也可以悬空 2 代表 7 段字码驱动信号 dout 6 0 的管脚分别同扫描数码管的段输入 a b c d e f g 相连 dp 与 7 段数码显示管的段码插口相连 3 代表扬声器驱动信号的管脚 SPEAK 同扬声器驱动接口 SPEAKER 相连 4 代表花样 LED 灯显示的信号管脚 LAMP 0 2 同 3 个 LED 灯相连 7 2 3 硬件实物图 根据外部接线 需要结合 FPGA 开发板验证数字时钟的功能 如图 7 1 所示 FreeDev2 2 开发板上只有四位数码管 所以每次只能显示时钟信号中的 时 分 秒 4 位时间信号 因为时钟主要以显示时 分为主 所以接时 分两位信号到四 位数码管 秒信号暂且省略 经外部实物验证 本课题所设计的数字时钟满足当初的设计要求 基于 VHDL 的数字时钟设计和时序仿真 第 31 页 共 45 页 图 7 1 如图 7 2 所示 显示时间为 05 58 另经多次显示时间 调节时间 时间计时 功能等均一切正常 符合设计要求 图 7 2 基于 VHDL 的数字时钟设计和时序仿真 第 32 页 共 45 页 8 结论结论 本设计对 EDA 技术进行了简明的阐述 叙述了 VHDL 语言的设计特点 主 要论述了怎样在 Quartus II 软件平台的基础上 设计一个以 VHDL 语言为输入的 数字时钟系统 该系统可以在数码管上显示小时 分钟和秒 可以使用复位开关 使系统时间清零 并可以在认为时间不准确的时候调节时间 不足之处是 由于 时间 设备以及其他方面的因素 没能够把数字时钟的扩展功能 年 月 日显 示出来 本设计已经可以满足对电子时钟的日常需求 本设计采取的是分模块化 的设计过程 其中底层模块全部采用 VHDL 语言输入 而顶层实体模块采用了原 理图输入的方式进行 根据由 VHDL 生成的各模块加上必要的器件 最后进行连 线组成系统原理图 另外 顶层模块也可用 VHDL 语言来描述 采用这种方法进 行设计需要的源代码将在附录里做详细说明 通过本次毕业设计 体会到 EDA 技 术的先进性 用 VHDL 语言进行设计的优点 和 Quartus II 软件的强大功能 掌 握了数字时钟设计的开发原理和基本思想 由此进一步扩展了我的思维 加深了 对电子设计自动化的认识 基于 VHDL 的数字时钟设计和时序仿真 第 33 页 共 45 页 附录附录 数字时钟顶层文件源代码 数字时钟顶层文件源代码 library ieee use ieee std logic 1164 all entity clock top is Port clk reset setmin sethour clkdsp in std logic speaker out std logic lamp out std logic vector 2 downto 0 sel out std logic vector 2 downto 0 a b c d e f g dpout out std logic end clock top architecture a of clock top is component second port clk reset setmin in std logic daout out std logic vector 6 downto 0 enmin out std logic end component component minute port clk clk1 reset sethour in std logic enhour out std logic daout out std logic vector 6 downto 0 end component component hour port clk reset in std logic daout out std logic vector 5 downto 0 end component 基于 VHDL 的数字时钟设计和时序仿真 第 34 页 共 45 页 component alert port clk in std logic dain in std logic vector 6 downto 0 lamp out std logic vector 2 downto 0 speak out std logic end component component seltime port clk1 reset in std logic sec min in std logic vector 6 downto 0 hour in std logic vector 5 downto 0 dp out std logic daout out std logic vector 3 downto 0 sel out std logic vector 2 downto 0 end component component deled port num in std
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024物业公司承担住宅小区垃圾清运的合同
- 2025年度留置车辆处置借款合同4篇
- 2025年grc构件生产线投资建设与运营合同3篇
- 年度PAPTFE竞争策略分析报告
- 年度童书产业分析报告
- 2024-2025学年新教材高中语文基础过关训练15谏逐客书含解析部编版必修下册
- 二零二五版白糖仓储物流服务合同范本2篇
- 2025年理疗项目合作协议范本:特色理疗项目合作框架协议3篇
- 2025年度中小企业间资金周转互助合同范本
- 二零二五年度商业地产租赁合同中情势变更处理办法及责任划分4篇
- 骨科手术后患者营养情况及营养不良的原因分析,骨伤科论文
- GB/T 24474.1-2020乘运质量测量第1部分:电梯
- GB/T 12684-2006工业硼化物分析方法
- 定岗定编定员实施方案(一)
- 高血压患者用药的注意事项讲义课件
- 特种作业安全监护人员培训课件
- (完整)第15章-合成生物学ppt
- 太平洋战争课件
- 封条模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖浆
- 货代操作流程及规范
评论
0/150
提交评论