基于FPGA的多功能数字钟设计.doc_第1页
基于FPGA的多功能数字钟设计.doc_第2页
基于FPGA的多功能数字钟设计.doc_第3页
基于FPGA的多功能数字钟设计.doc_第4页
基于FPGA的多功能数字钟设计.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

兰州交通大学毕业设计 论文 III 目目 录录 第一章 绪论 1 1 1 选题背景 2 1 1 1 课题相关技术的发展 2 1 1 2 课题研究的必要性 2 1 2 课题研究的内容 3 第二章 FPGA 简介 4 2 1 FPGA 概述 4 2 2 FPGA 基本结构 4 2 3 FPGA 系统设计流程 6 2 4 FPGA 开发编程原理 8 2 5 QUARTUSII 设计平台 8 2 5 1 软件开发环境及基本流程 8 2 5 2 具体设计流程 10 第三章 数字钟总体设计方案 13 3 1 数字钟的构成 13 3 2 数字钟的工作原理 13 3 3 数字钟硬件电路设计 13 第四章 单元电路设计 16 4 1 分频模块电路设计 16 4 2 校时控制模块电路设计 17 4 2 1 按键消抖 17 4 2 2 按键控制模块 18 4 3 计数模块 21 4 4 译码显示模块 27 4 5 译码显示强制转换模块 29 4 6 整点报时模块 29 结果与展望 31 兰州交通大学毕业设计 论文 IV 结果 31 展望 31 致谢 32 主要参考文献 33 兰州交通大学毕业设计 论文 1 第一章第一章 绪论绪论 现代社会的标志之一就是信息产品的广泛使用 而且是产品的性能越来越强 复 杂程度越来越高 更新步伐越来越快 支撑信息电子产品高速发展的基础就是微电子 制造工艺水平的提高和电子产品设计开发技术的发展 前者以微细加工技术为代表 而后者的代表就是电子设计自动化 electronic design automatic EDA 技术 本设计采用的VHDL是一种全方位的硬件描述语言 具有极强的描述能力 能支持 系统行为级 寄存器传输级和逻辑门级这三个不同层次的设计 支持结构 数据流 行为三种描述形式的混合描述 覆盖面广 抽象能力强 因此在实际应用中越来越广 泛 ASIC是专用的系统集成电路 是一种带有逻辑处理的加速处理器 而FPGA是特 殊的ASIC芯片 与其它的ASIC芯片相比 它具有设计开发周期短 设计制造成本低 开发工具先进 标准产品无需测试 质量稳定以及可实时在线检测等优点 在控制系统中 键盘是常用的人机交换接口 当所设置的功能键或数字键按下的 时候 系统应该完成该键所对应的功能 因此 按键信息输入是与软件结构密切相关 的过程 根据键盘结构的不同 采用不同的编码方法 但无论有无编码以及采用什么 样的编码 最后都要转换成为相应的键值 以实现按键功能程序的转移 1 钟表的数字化给人们生产生活带来了极大的方便 而且大大地扩展了钟表原先的 报时功能 诸如定时自动报警 定时启闭电路 定时开关烘箱 通断动力设备 甚至 各种定时电气的自动启用等 所有这些都是以钟表数字化为基础的 因此研究数字钟 以及扩大其应用有着非常现实的意义 兰州交通大学毕业设计 论文 2 1 11 1 选题背景选题背景 本节将从 FPGA 嵌入式应用开发技术与数字钟技术发展的客观实际出发 通过对 该技术发展状况的了解及课题本身的需要 指出研究基于 FPGA 的芯片系统与设计 数字钟的设计与实现的必要性 1 1 11 1 1 课题相关技术的发展课题相关技术的发展 当今电子产品正向功能多元化 体积最小化 功耗最低化的方向发展 它与传统的电 子产品在设计上的显着区别是大量使用大规模可编程逻辑器件 使产品的性能提高 体积缩小 功耗降低 同时广泛运用现代计算机技术 提高产品的自动化程度和竞争 力 缩短研发周期 EDA 技术正是为了适应现代电子技术的要求 吸收众多学科最新 科技成果而形成的一门新技术 美国 ALTERA 公司的可编程逻辑器件采用全新的结构和先进的技术 加上 Quartus 开发环境 使得其更具有高性能 开发周期短等特点 十分方便进行电子产品 的开发和设计 2 EDA 技术以大规模可编程逻辑器件为设计载体 以硬件描述语言为系统逻辑描述 主要表达方式 以计算机和大规模可编程逻辑器件的开发软件及实验开发系统为设计 工具 自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译 逻辑化简 逻 辑分割 逻辑映射 编程下载等工作 最终形成集成电子系统或专用集成芯片的一门 新技术 本设计是利用 VHDL 硬件描述语言结合可编程逻辑器件进行的 并通过数码管静 态显示走时结果 数字钟可以由各种技术实现 如单片机等 利用可编程逻辑器件具 有其它方式没有的特点 它具有易学 方便 新颖 有趣 直观 设计与实验成功率 高 理论与实践结合紧密 积小 量大 O 口丰富 编程和加密等特点 并且它还具 有开放的界面 丰富的设计库 模块化的工具以及 LPM 定制等优良性能 应用非常方 便 因此 本设计采用可编程逻辑器件实现 1 1 21 1 2 课题研究的必要性课题研究的必要性 现在是一个知识爆炸的新时代 新产品 新技术层出不穷 电子技术的发展更是 日新月异 可以毫不夸张的说 电子技术的应用无处不在 电子技术正在不断地改变 着我们的生活 改变着我们的世界 在这快速发展的年代 时间对人们来说是越来越 宝贵 在快节奏的生活时 人们往往忘记了时间 一旦遇到重要的事情而忘记了时间 这将会带来很大的损失 因此我们需要一个定时系统来提醒这些忙碌的人 数字化的 钟表给人们带来了极大的方便 近些年 随着科技的发展和社会的进步 人们对数字 兰州交通大学毕业设计 论文 3 钟的要求也越来越高 传统的时钟已不能满足人们的需求 多功能数字钟不管在性能 还是在样式上都发生了质的变化 有电子闹钟 数字闹钟等等 1 21 2 课题研究的内容课题研究的内容 本设计主要研究基于 FPGA 的数字钟 要求时间以 24 小时为一个周期 显示时 分 具有校时以及整点报时功能 可以对时 分进行单独校对 使其校正到标准时间 校对时间由 1 5 矩形键盘进行控制 为了保证计时的稳定及准确须由晶体振荡器提供 时间基准信号 兰州交通大学毕业设计 论文 4 第二章第二章 FPGA 简介简介 2 12 1 FPGA 概述概述 FPGA是现场可编程门阵列 Field Programmable Gate Array 的简称 与之相应的 CPLD是复杂可编程逻辑器件 Complex Programmable Logic Device 的简称 两者的 功能基本相同 只是实现原理略有不同 有时可以忽略这两者的区别 统称为可编程 逻辑器件或CPLD PGFA CPLD PGFA几乎能完成任何数字器件的功能 上至高性能 CPU 下至简单的74电路 它如同一张白纸或是一堆积木 工程师可以通过传统的原 理图输入或硬件描述语言自由的设计一个数字系统 通过软件仿真可以事先验证设计 的正确性 在PCB完成以后 利用CPLD FPGA的在线修改功能 随时修改设计而不必 改动硬件电路 使用CPLD FPGA开发数字电路 可以大大缩短设计时间 减少PCB面 积 提高系统的可靠性 这些优点使得CPLD FPGA技术在20世纪90年代以后得到飞速 的发展 同时也大大推动了EDA软件和硬件描述语言HDL的进步 3 2 22 2 FPGA 基本结构基本结构 FPGA具有掩膜可编程门阵列的通用结构 它由逻辑功能块排成阵列 并由可编程 的互连资源连接这些逻辑功能块来实现不同的设计 FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成 这3种可编程电路是 可编程逻辑模块 CLB Configurable Logic Block 输入 输出 模块 IOB I O Block 和互连资源 IR Interconnect Resource 可编程逻辑模块 CLB是实现逻辑功能的基本单元 它们通常规则的排列成一个阵列 散布于整个芯片 可编程输入 输出模块 IOB 主要完成芯片上的逻辑与外部封装脚的接口 它通常排 列在芯片的四周 可编程互连资源包括各种长度的连接线段和一些可编程连接开关 它们将各个CLB之间或CLB IOB之间以及IOB之间连接起来 构成特定功能的电路 4 1 CLB是FPGA的主要组成部分 图2 1是CLB基本结构框图 它主要由逻辑函数发 生器 触发器 数据选择器等电路组成 CLB中3个逻辑函数发生器分别是G F和H 相应的输出是G F 和H G有4个输入变量G1 G2 G3和G4 F也有4个输入变量 F1 F2 F3和F4 这两个函数发生器是完全独立的 均可以实现4输入变量的任意组合 逻辑函数 逻辑函数发生器H有3个输入信号 前两个是函数发生器的输出G 和F 而 另一个输入信号是来自信号变换电路的输出H1 这个函数发生器能实现3输入变量的各 种组合函数 这3个函数发生器结合起来 可实现多达9变量的逻辑函数 兰州交通大学毕业设计 论文 5 CLB中有许多不同规格的数据选择器 四选一 二选一等 通过对CLB内部数 据选择器的编程 逻辑函数发生器G F和H的输出可以连接到CLB输出端X或Y 并用 来选择触发器的激励输入信号 时钟有效边沿 时钟使能信号以及输出信号 这些数 据选择器的地址控制信号均由编程信息提供 从而实现所需的电路结构 CLB中的逻辑函数发生器F和G均为查找表结构 其工作原理类似于ROM F和G的 输入等效于ROM的地址码 通过查找ROM中的地址表可以得到相应的组合逻辑函数输 出 另外 逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用 它由信号变换电路控制 2 输入 输出模块IOB IOB提供了器件引脚和内部逻辑阵列之间的连接 它主要由 输入触发器 输入缓冲器和输出触发 锁存器 输出缓冲器组成 每个IOB控制一个引脚 它们可被配置为输入 输出或双向I O功能 当IOB控制的 引脚被定义为输入时 通过该引脚的输入信号先送入输入缓冲器 缓冲器的输出分成 两路 一路可以直接送到MUX 另一路延时几个纳秒 或者没有延时 后送到输入通 路D触发器 再送到数据选择器 通过编程给数据选择器不同的控制信息 确定送至 CLB阵列的I1和I2是来自输入缓冲器 还是来自触发器 当IOB控制的引脚被定义为输出时 CLB阵列的输出信号OUT也可以有两条传输途 径 一条是直接经MUX送至输出缓冲器 另一条是先存入输出通路D触发器 再送至 输出缓冲器 IOB输出端配有两只MOS管 它们的栅极均可编程 使MOS管导通或截止 分别 经上拉电阻接通VCC 地线或者不接通 用以改善输出波形和负载能力 3 可编程互连资源IR 可编程互连资源IR可以将FPGA内部的CLB和CLB之间 CLB和IOB之间连接起来 构成各种具有复杂功能的系统 IR主要由许多金属线段构成 这些金属线段带有可编程开关 通过自动布线实现各种电路的连接 兰州交通大学毕业设计 论文 6 图2 1 CLB基本结构 2 32 3 FPGA 系统设计流程系统设计流程 一般说来 一个比较大的完整的项目应该采用层次化的描述方法 分为几个较大 的模块 定义好各功能模块之间的接口 然后各个模块再细分去具体实现 这就是自 顶向下的设计方法 目前这种高层次的设计方法已被广泛采用 高层次设计只是定义 系统的行为特征 可以不涉及实现工艺 因此还可以在厂家综合库的支持下 利用综 合优化工具将高层次描述转换为针对某种工艺优化的网络表 使工艺转化变得轻而易 举 CPLD FPGA系统设计的工作流程如图2 2所示 流程说明 1 工程师按照 自顶向下 的设计方法进行系统划分 2 输入VHDL代码 这是设计中最为普遍的输入方式 此外 还可以采用图形输入 方式 这种输入方式具有直观 容易理解的优点 3 将以上的设计输入编译成标准的VHDL文件 4 进行代码级的功能仿真 主要是检验系统功能设计的正确性 这一步骤适用于大 型设计 因为对于大型设计来说 在综合前对源代码仿真 就可以大大减少设计重复 的次数和时间 一般情况下 这一仿真步骤可略去 5 利用综合器对VHDL源代码进行综合优化处理 生成门级描述的网络表文件 这 是将高层次描述转化为硬件电路的关键步骤 综合优化是针对ASIC芯片供应商的某一 可编程开关矩输入输出模块互连资源 CLBCLBCLBCLB CLB CLB B CLBCLBCLB CLB 矩 CLB CLB CLB 块 CLB CLB CLB B CLBCLB CLBCLBCLBCLB 兰州交通大学毕业设计 论文 7 产品系列进行的 所以综合的过程要在相应的厂家综合库的支持下才能完成 6 利用产生的网络表文件进行适配前的时序仿真 仿真过程不涉及具体器件的硬件 特性 是较为粗略的 一般的设计 也可略去这一步骤 7 利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作 包括底层器件配置 逻辑分割 逻辑优化和布局布线 8 在适配完成后 产生多项设计结果 a 适配报告 包括芯片内部资源利用情况 设计的布尔方程描述情况等 b 适配后的仿真模型 c 器件编程文件 根据适配后的仿 真模型 可以进行适配后时序仿真 因为已经得到器件的实际硬件特性 如时延特性 所以仿真结果能比较精确的预期未来芯片的实际性能 如果仿真结果达不到设计要 求 就修改VHDL源代码或选择不同速度和品质的器件 直至满足设计要求 最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片 CPLD FPGA中 5 系统划分 编译器 代码级功能仿真 综合器 适配前时序仿真 适配器 CPLD FPGA实现 适配后仿真模型 适配后时序仿真 适配报告 ASIC 实现 VHDL 代码或图形方式输入 仿真综合库 器件编程文件 图2 2 CPLD FPGA系统设计流程 兰州交通大学毕业设计 论文 8 2 42 4 FPGA 开发编程原理开发编程原理 硬件设计需要根据各种性能指标 成本 开发周期等因素 确定最佳的实现方案 画出系统框图 选择芯片 设计PCB并最终形成样机 CPLD FPGA软件设计可分为两大块 编程语言和编程工具 编程语言主要有 VHDL和Verilog两种硬件描述语言 编程工具主要是两大厂家Altera和Xilinx的集成综 合EDA软件QuartusII以及第三方工具 具体的设计输入方式有以下几种 1 HDL语言方式 HDL既可以描述底层设计 也可以描述顶层的设计 但它不容 易做到较高的工作速度和芯片利用率 用这种方式描述的项目最后所能达到的性能与 设计人员的水平 经验以及综合软件有很大的关系 2 图形方式 可以分为电路原理图描述 状态机描述和波形描述3种形式 电路原 理图方式描述比较直观和高效 对综合软件的要求不高 一般大都使用成熟的IP核和 中小规模集成电路所搭成的现成电路 整体放到一片可编程逻辑器件的内部去 其硬 件工作速度和芯片利用率很高 但是当项目很大时 该方法就显得有些繁琐 状态机 描述主要用来设计基于状态机思想的时序电路 在图形的方式下定义好各个工作状态 然后在各个状态上输入转换条件以及相应的输入输出 最后生成HDL语言描述 送去 综合软件综合到可编程逻辑器件的内部 由于状态机到HDL语言有一种标准的对应描 述方式 所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软 件 波形描述方式是基于真值表的一种图形输入方式 直接描述输入与输出的波形关 系 2 52 5 QuartusII 设计平台设计平台 2 5 12 5 1 软件开发环境及基本流程软件开发环境及基本流程 本设计所用软件主要是 QuartusII 在此对它做一些介绍 QuartusII 是 Altera 提供的 FPGA CPLD 开发集成环境 Altera 是世界上最大的可编 程逻辑器件供应商之一 QuartusII 提供了一种与结构无关的设计环境 使设计者能方 便地进行设计输入 快速处理和器件编程 Altera 公司的 QuartusII 开发工具人机界面友好 易于使用 性能优良 并自带编 译 仿真功能 QuartusII 软件完全支持 VHDL 设计流程 其内部嵌有 VHDL 逻辑综合 器 QuartusII 也可以利用第三方的综合工具 如 FPGA Compiler II 并能直接调用这 些工具 同样 QuartusII 具备仿真功能 同时也支持第三方的仿真工具 此外 QuartusII 与 MATLAB 和 DSP Builder 结合 可以进行基于 FPGA 的 DSP 系统开发 是 DSP 硬件系统实现的关键 EDA 技术 兰州交通大学毕业设计 论文 9 QuartusII 包括模块化的编译器 编译器包括的功能模块有分析 综合器 适配器 装配器 时序分析器 设计辅助模块 EDA 网表文件生成器 编辑数据接口等 可以 通过选择 Start Compilation 来运行所有的编译器模块 也可以通过选择 Start 单独运行 各个模块 在 Compiler Tool 窗口中 可以打开该模块的设置文件或报告文件 或者打 开其它相关窗口 图 2 3 上排所示的是 QuartusII 编译设计主控界面 它显示了 QuartusII 自动设计的 各主要处理环节和设计流程 包括设计输入编辑 设计分析与综合 适配 编程文件 汇编 时序参数提取以及编程下载几个步骤 图 2 3 下排的流程框图是与上面的 QuartusII 设计流程相对照的标准的 EDA 开发流程 图形或 HDL编辑 Analysis oaddr OUT STD LOGIC VECTOR 3 downto 0 END addram ARCHITECTURE addram architecture OF addram IS signal count std logic vector 3 downto 0 兰州交通大学毕业设计 论文 19 BEGIN oaddr count k1 process inkey begin if rising edge inkey then count count 1 if count 9 then count 0000 end if end if end process k1 END addram architecture 说明 每按键一次 即每当 inkey 的上升沿到来时 count 加一 当 count 等于 9 的时候 作为分的低位 将 0 赋值于 count 在此过程中 随时将十进制数的 count 的值的 8421 码作为 oaddr 的信号 对于分的高位 仅将程序中的 count 9 改成 count 5 即可 对于小时的高位 仅将程序中的 count 9 改成 count 2 即可 该模块的仿真波形如图 4 7 所示 图 4 7 分低位按键控制模块波形仿真 2 小时低位按键控制核心程序如下 ENTITY addram3 IS PORT inkey IN STD LOGIC 兰州交通大学毕业设计 论文 20 flag IN STD LOGIC oaddr OUT STD LOGIC VECTOR 3 downto 0 END addram3 ARCHITECTURE addram3 architecture OF addram3 IS signal count std logic vector 3 downto 0 BEGIN oaddr count k1 process inkey flag begin if rising edge inkey then if flag 1 then if count 3 then count 0000 else count count 1 end if else count count 1 if count 9 then count 0000 end if end if end if end process k1 END addram3 architecture 说明 当 flag 为高电平时 即小时高位为 2 小时低位只能在 0 到 3 之间变动 当 flag 为低电平时 即小时高位为 1 小时低位可以在 0 到 9 之间变动 该模块的仿真波形如图 4 8 所示 兰州交通大学毕业设计 论文 21 图 4 8 小时低位按键控制模块波形仿真 4 34 3 计数模块计数模块 1 秒计数模块 该模块框图如图 4 9 所示 模块主要完成秒向分的进位 产生脉冲信号 图 4 9 秒模块逻辑框图 核心程序如下 ENTITY second IS PORT clk 1s IN STD LOGIC os OUT STD LOGIC END second 兰州交通大学毕业设计 论文 22 ARCHITECTURE sec architecture OF second IS BEGIN k1 process clk 1s variable count integer range 0 to 100 0 begin if rising edge clk 1s then if count 59 then os 1 count 0 else os 0 count count 1 end if end if end process k1 该模块的仿真波形如图 4 10 所示 图 4 10 秒计数模块波形仿真 2 分低位计数器 该模块框图如图 4 11 所示 主要完成分低位向高位的进位 产生脉冲信号 图 4 11 分低位逻辑框图 兰州交通大学毕业设计 论文 23 核心程序如下 ENTITY ml IS PORT clk 1s IN STD LOGIC iset IN STD LOGIC iset addr IN STD LOGIC VECTOR 3 DOWNTO 0 addr 1s OUT STD LOGIC vector 3 downto 0 os OUT STD LOGIC END ml ARCHITECTURE ml architecture OF ml IS BEGIN k1 process clk 1s iset variable count integer range 0 to 10 0 begin if iset 0 then count CONV INTEGER iset addr addr 1s iset addr elsif rising edge clk 1s then if count 9 then os 1 count 0 addr 1s CONV STD LOGIC VECTOR count 4 else os 0 count count 1 addr 1s CONV STD LOGIC VECTOR count 4 end if end if end process k1 END ml architecture 说明 对于分高位计数模块的程序 只需将上面程序中的 count 9 改成 count 6 即 兰州交通大学毕业设计 论文 24 可 3 小时低位计数模块 该模块框图如图 4 12 所示 主要完成小时低位向高位的进位 产生脉冲信号 同 时根据 flag 信号的不同判断出小时高位时 1 还是 2 clk 1s iset flag iset addr 3 0 addr 1s 3 0 os hl inst14 图 4 12 小时低位计数模块组件图 核心程序如下 ENTITY hl IS PORT clk 1s IN STD LOGIC iset IN STD LOGIC flag IN STD LOGIC iset addr IN STD LOGIC VECTOR 3 DOWNTO 0 addr 1s OUT STD LOGIC vector 3 downto 0 os OUT STD LOGIC END hl ARCHITECTURE hl architecture OF hl IS BEGIN k1 process clk 1s iset variable count integer range 0 to 10 0 begin if iset 0 then count CONV INTEGER iset addr addr 1s iset addr elsif rising edge clk 1s then if flag 1 then if count 3 then 兰州交通大学毕业设计 论文 25 os 1 count 0 addr 1s CONV STD LOGIC VECTOR count 4 else os 0 count count 1 addr 1s CONV STD LOGIC VECTOR count 4 end if else if count 9 then os 1 count 0 addr 1s CONV STD LOGIC VECTOR count 4 else os 0 count count 1 addr 1s CONV STD LOGIC VECTOR count 4 end if end if end if end process k1 END hl architecture 4 小时高位计数模块 该模块框图如图 4 13 所示 主要完成小时高位 1 和 2 之间的变换 同时当小时高 位为 2 时 flag 为高电平 当为 1 时 flag 为低电平 clk 1s iset iset addr 3 0 addr 1s 3 0 flag hh inst13 图 4 13 小时高位计数模块组件 兰州交通大学毕业设计 论文 26 核心程序如下 ENTITY hh IS PORT clk 1s IN STD LOGIC iset IN STD LOGIC iset addr IN STD LOGIC VECTOR 3 DOWNTO 0 addr 1s OUT STD LOGIC vector 3 downto 0 flag OUT STD LOGIC END hh ARCHITECTURE hh architecture OF hh IS BEGIN k1 process clk 1s iset variable count integer range 0 to 2 0 begin if iset 0 then count CONV INTEGER iset addr addr 1s iset addr if count 2 then flag 1 else flag 0 end if elsif rising edge clk 1s then if count 2 then flag 0 count 0 addr 1s CONV STD LOGIC VECTOR count 4 elsif count 1 then flag 1 count count 1 addr 1s CONV STD LOGIC VECTOR count 4 兰州交通大学毕业设计 论文 27 else flag 0 count count 1 addr 1s CONV STD LOGIC VECTOR count 4 end if end if end process k1 END hh architecture 4 44 4 译码显示模块译码显示模块 该模块完成对计数器编码信息的译码工作 驱动数码管则显示相应的数字 模块 组件如 4 14 所示 clk addr 3 0 led 7 0 drive inst9 图 4 14 译码显示模块组件 核心程序如下 ENTITY drive IS PORT clk in std logic addr IN STD LOGIC vector 3 downto 0 led OUT STD LOGIC vector 7 downto 0 END drive ARCHITECTURE behave OF drive IS SIGNAL sel STD LOGIC vector 3 downto 0 BEGIN process clk begin selledledledledledledledledledledled 10111111 end case end process end behave 该模块的仿真波形如图 4 15 所示 图 4 15 译码显示波形仿真 兰州交通大学毕业设计 论文 29 4 54 5 译码显示强制转换模块译码显示强制转换模块 由于系统只能显示时 分 故在此将时低位的数码管的 小数点 作为秒显示 以 1HZ 的频率闪烁 模块组件如图 4 16 所示 idata 7 0 odata 6 0 conv inst18 图 4 16 译码显示强制转换模块组件 4 64 6 整点报时模块整点报时模块 该模块能够完成整点时的报时功能 即将至整点时 前四秒低音 最后一秒高音 该模块在十二点三十分的时候 蜂鸣器响起音乐 持续一分钟 模块组件如图 4 17 所 示 mh 3 0 ml 3 0 hh 3 0 hl 3 0 iclk clk sig500 sig1k speaker baoshi inst24 图 4 17 整点报时模块组件 1 整点报时核心程序如下 if rising edge clk05s then if cnt 119 then cnt 0 else cnt cnt 1 end if if mh 0101 and ml 1001 and cnt 117 or cnt 115 or cnt 113 or cnt 111 then c 0 兰州交通大学毕业设计 论文 30 else c 1 end if if mh 0000 and ml 0000 and cnt 119 or cnt 0 or cnt 1 then d 0 else d 1 end if end if end process a clk1k and not d b clk05s and not c speaker a or b 说明 改程序中的时钟信号 clk05s 的频率为 2HZ 且其有效电平 高电平 占空 比为 2 3 该模块仿真波形如图 4 18 所示 图 4 18 整点报时模块波形仿真 2 特定时间响铃程序见附录中的整点报时模块程序 兰州交通大学毕业设计 论文 31 结果与展望结果与展望 结果结果 将设计程序下载到硬件电路上运行调试后 最终结果与预期效果基本一致 整点 报时功能正常 时 分都能够正常计数并能由按键控制校时 在此次的数字钟设计过程中 更进一步地熟悉有关数字电路的知识和具体应用 学会了利用 QuarterII 软件进行原理图的绘制 硬件描述语言 VHDL 的编写 程序的仿 真等工作 并能根据仿真结果分析设计的存在的问题和缺陷 从而进行程序的调试和 完善 在设计电路中 往往是先仿真后连接实物图 但有时候仿真和电路连接并不是完 全一致的 例如在对具体模块的仿真的过程中 往往没有考虑到整体设计的层面以及 与上下模块接口的设计 再加上器件对信号的延时等问题 实际下载硬件电路上后会 出现一系列的问题 因此仿真图和电路连接图还是有一定区别的 此次的数字钟设计重在于按键的控制和各个模块代码的编写 虽然能把键盘接口 和各个模块的代码编写出来 并能正常显示 但对于各个模块的优化设计还有一定的 缺陷和不足 总的来说 通过这次的设计更进一步地增强了动手能力 对数字钟的工 作原理也有了更加透彻的理解 在本设计调试过程中遇到了一些问题如下 1 由于硬件电路的数码管是以静态扫描方式显示的 故显示电路所用芯片的 I O 端 口高达 32 个 使得资源利用不合理 2 由于数码管的静态显示方式和 1 5 的矩阵键盘所限制 使得闹钟功能实现不易 3 调整时间时 若先调整时低位 后调整时高位 会出现 24 到 29 这样的不正常点 数 4 当程序下载到实验箱上后 数码管显示全部为零且计数器不工作 经分析得知程 序中的总的清零信号保持有效状态 改动程序后计数器开始计数 展望展望 本设计中虽然有控制键对时钟进行控制 但是用到的按键略多 在实际应用上存 在不足 故提出改进方案为用一个按键控制数码管的位选 再用两个按键控制计数的 加减 这样可以节省按键资源 以供更多的功能的使用 本设计利用硬件描述语言和 FPGA 芯片相结合进行数字钟的研究 从中可以看到 EDA 技术的发展在一定程度上实现了硬件设计软件化 设计的过程变的相对简单 容 兰州交通大学毕业设计 论文 32 易修改 相信随着电子技术的发展 数字钟的功能会更加多样化 满足人们的各种需 要 兰州交通大学毕业设计 论文 33 致谢致谢 在论文完成之际 我首先要向指导老师吴小所表示最真挚的谢意 吴小所老师认 真负责的工作态度 严谨的治学精神和深厚的理论水平都使我受益匪浅 无论在理论 上还是在实践中 都给与我很大的帮助 在理论上 老师耐心讲解电路原理图的绘制 以及电路的性能 在实际操作中 从系统的设计到最终系统的调试 老师都给予了诸 多帮助 使我得到不少的提高 这是在这次设计中我所得到的最宝贵的财富 对于我 以后的工作和学习都是一种巨大的帮助 感谢他耐心的辅导 在这次毕业设计中 我的专业知识水平也取得一定的进步 而这些进步都离不开 老师和同学的帮助 在此我向曾经帮助和关心我的老师和同学致以诚挚的感谢 由于本人学识有限 加之时间仓促 文中不免有错误和待改进之处 真诚欢迎各 位师长 同学提出宝贵意见 兰州交通大学毕业设计 论文 34 主要参考文献主要参考文献 1 王紫婷 吴蓉 张彩珍 EDA 技术与应用 兰州大学出版社 2003 2 潘松 黄继业 EDA 技术实用教程 北京科学出版社 2006 3 崔葛 基于 FPGA 的数字电路系统设计 西安电子科技大学出版社 2008 4 王开军 姜宇柏 面向 CPLD FPGA 的 VHDL 设计 机械工业出版社 2007 5 毕满清 电子技术实验与课程设计 机械工业出版社 2005 6 吕思忠 数子电路实验与课程设计 哈尔滨工业大学出版社 2001 7 谢自美 电子线路设计 实验 测试 华中理工大学出版社 2003袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿 蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂 蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆 螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论