电子科技大学综合课程设计FPGA秒表.doc_第1页
电子科技大学综合课程设计FPGA秒表.doc_第2页
电子科技大学综合课程设计FPGA秒表.doc_第3页
电子科技大学综合课程设计FPGA秒表.doc_第4页
电子科技大学综合课程设计FPGA秒表.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1 39 现代电子技术综合实验现代电子技术综合实验 数字秒表 数字秒表 实验报告实验报告 姓名姓名 学号学号 时间时间 20132013 年年 4 4 月月 2525 日日 2 39 中文摘要 摘摘 要要 随着电子信息产业的不断发展 基于 FPGA 的应用技术发展迅速 在某些 领域 FPGA 正逐步代替 dsp arm 单片机等微处理器 本文设计一个基于 FPGA 技术的数字秒表 首先 我们把晶振产生的 50MHZ 时钟信号送入 FPGA 芯片内 经 FPGA 内分频模块处理产生 1KHZ 时钟信号 秒表的功能模块由 VHDL 语言编写 在 Xilinx 的 ISE 环境下调试 并在 Modelsim 上完成仿真 在最后把产生的信 号送入 LED 显示电路里进行显示 本文从电子秒表的具体设计触发 详细阐述 了基于 FPGA 的数字秒表的设计方案 设计了各模块的代码 并对硬件电路进行 了仿真 关键词 关键词 FPGA VHDL 电子秒表 3 39 目 录 第一章 引言 4 第二章 基于 FPGA 的 VHDL 设计流程 4 2 1 概述 4 2 2 VHDL 语言介绍 2 2 2 1 VHDL 的特点 3 2 2 2 基于 VHDL 的自顶向下设计方法 4 2 3 FPGA 开发介绍 7 2 3 1 FPGA 简介 7 2 3 2 FPGA 设计流程 8 2 3 3 Spartan II 芯片简介 9 第三章 数字秒表的设计与实现 15 3 1 项目任务与设计思路 15 3 2 基于 VHDL 方法的设计方案 15 3 3 系统电路设计 16 3 4 系统单元模块设计 3 4 1 分频器 17 3 4 2 计数器 18 3 4 3 扫描控制显示电路 24 3 4 4 按键消陡模块 30 3 4 5 控制电路模块 31 3 4 6 锁存器模块 33 3 4 7 电子秒表顶层连接模块 34 3 5 系统硬件实现与调试 37 3 6 结束语 38 致 谢 38 4 39 第一章 引言 随着电子信息产业的发展 数字系统的规模越来越大 更多采用自顶而下 的模块化设计方法 这就要求技术人员对于基本的模块有着深入的理解 随着 FPGA 技术的发展和成熟 用 FPGA 来做为一个电路系统的控制电路逐渐显示出 其无与伦比的优越性 因此本文采用 FPGA 来做为电路的控制系统 采用模块化 的设计方法设计一个能显示从 00 00 00 到 59 59 99 并且具备秒表所有功能 的小型数字系统 第二章 基于 FPGA 的 VHDL 设计流程 2 1 概述概述 数字频率计是数字电路中的一个典型应用 实际的硬件设计用到的器件较 多 连线比较复杂 而且会产生比较大的延时 造成测量误差 可靠性差 频 率计的设计有传统方法和现代方法 传统的设计方法耗时耗功 设计强度大 且容易出错 设计的质量不一定是最好的 自然我们考虑到现代方法 即二十 世纪八十年代兴起的电子设计自动化技术 英文为 Electronic Design Auto 缩 写为 EDA 在 EDA 设计工具中 用的最广泛的是 VHDL 和 VERILOG 当然 还有其它的 比较 VHDL 和 VERILOG 在顶层设计方面 VHDL 优于 VERILOG 在门级电路设计方面 VERILOG 优于 VHDL 随着复杂可编程逻辑 器件 CPLD 的广泛应用 以 EDA 工具作为开发手段 运用 VHDL 语言 将 使整个系统大大简化 提高整体的性能和可靠性 本次的频率计设计主要是顶 层设计 目的是设计 6 位十进制频率计 学习常用的数字系统设计方法 采用 VDHL 编程设计实现的数字频率计 除被测信号的整形部分 键输入部分以外 其余全部在一片 FPGA 芯片上实现 整个系统非常精简 而且具有灵活的现场 可更改性 在不更改硬件电路的基础上 对系统进行各种改进还可以进一步提 5 39 高系统的性能 该数字频率计具有高速 精确 可靠 抗干扰性强和现场可编 程等优点 2 2 VHDL 语言介绍语言介绍 VHDL Very high speed Integrated Circuit Hardware Description Language 诞 生于 1982 年 1987 年底 VHDL 被 IEEE The Institute of Electrical and Electronics Engineers 和美国国防部确认为标准硬件描述语言 自 IEEE 公布了 VHDL 的标准版本 IEEE 1076 之后 各 EDA 公司相继推出了自己的 VHDL 设计环境 并宣布自己的设计工具可以和 VHDL 接口 此后 VHDL 在电子设计 领域得到了广泛的接受 并逐步取代了原有的非标准硬件描述语言 1993 年 IEEE 对 VHDL 进行了修订 从更高的抽象层次和系统描述能力上扩展 VHDL 的内容 公布了新版本的 VHDL 即 IEEE 标准的 1076 1993 版本 现在 VHDL 和 VERILOG 作为 IEEE 的工业标准硬件描述语言 又得到众多 EDA 公 司的支持 在电子工程领域 已成为事实上的通用硬件描述语言 有专家认为 在新的世纪中 VHDL 和 VERILOG 语言将承担起几乎全部的数字系统设计任 务 2 2 1 VHDL 的特点的特点 VHDL 主要用于描述数字系统的结构 行为 功能和接口 除了含有许多 具有硬件特征的语句外 VHDL 的语言形式 描述风格以及句法十分类似于一 般的计算机高级语言 VHDL 的程序结构特点是将一项工程设计 或称为设计 实体 可以是一个元件 一个电路模块或一个系统 分成外部 又称为可视部 分 即端口 和内部 又称为不可视部分 即设计实体的内部功能和算法完成 部分 在对一个设计实体定义了外部界面后 一旦其内部开发完成后 其它的 设计就可以直接调用这个实体 这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点 应用 VHDL 进行工程设计的优点是多方面的 具体如下 1 与其它的硬件描述语言相比 VHDL 具有更强的行为描述能力 从而决 定了它成为系统设计领域最佳的硬件描述语言 强大的行为描述能力是避开具 体的器件结构 从逻辑行为上描述和设计大规模电子系统的重要保证 就目前 流行的 EDA 工具和 VHDL 综合器而言 将基于抽象的行为描述风格的 VHDL 程序综合成为具体的 FPGA 和 CPLD 等目标器件的网表文件已不成问题 只是 在综合与优化效率上略有差异 2 VHDL 最初是作为一种仿真标准格式出现的 因此 VHDL 既是一种硬 件电路描述和设计语言 也是一种标准的网表格式 还是一种仿真语言 其丰 6 39 富的仿真语句和库函数 使得在任何大系统的设计早期 即尚未完成 就能用 于查验设计系统的功能可行性 随时可对设计进行仿真模拟 即在远离门级的 高层次上进行模拟 使设计者对整个工程设计的结构和功能的可行性做出决策 3 VHDL 语句的行为描述能力和程序结构决定了它具有支持大规模设计的 分解和已有设计的再利用功能 符合市场所需求的 大规模系统高效 高速的 完成必须由多人甚至多个开发组共同并行工作才能实现的特点 VHDL 中设计 实体的概念 程序包的概念 设计库的概念为设计的分解和并行工作提供了有 力的支持 4 对于用 VHDL 完成的一个确定的设计 可以利用 EDA 工具进行逻辑综 合和优化 并自动地把 VHDL 描述设计转变成为门级网表 这种方式突破了门 级电路设计的瓶颈 极大地减少了电路设计的时间和可能发生的错误 降低了 开发成本 应用 EDA 工具的逻辑优化功能 可以自动地把一个综合后的设计变 成一个更高效 更高速的电路系统 反过来 设计者还可以容易地从综合和优 化后的电路获得设计信息 返回去更新修改 VHDL 设计描述 使之更为完善 5 VHDL 对设计的描述具有相对独立性 设计者可以不懂硬件的结构 也 不必管最终设计实现的目标器件是什么 而进行独立的设计 正因为 VHDL 硬 件描述与具体的工艺技术和硬件结构无关 VHDL 设计程序的硬件实现目标器 件有广阔的选择范围 其中包括各系列的 CPLD FPGA 及各种门阵列实现目 标 6 由于 VHDL 具有类属描述语句和子程序调用等功能 对于已完成的设 计 在不改变源程序的条件下 只需要改变端口类属参量或函数 就能轻易地 改变设计的规模和结构 2 2 2 基于基于 VHDL 的自顶向下设计方的自顶向下设计方法法 2 2 2 1 自顶向下设计的步骤 1 设计说明 用自然语言表达系统项目的功能特点和技术参数等 2 建立 VHDL 行为模型 即将设计说明已转化为 VHDL 行为模型 建立 模型是为了通过 VHDL 仿真器对整个系统进行系统行为仿真和性能评估 3 VHDL 行为仿真 这一阶段可以利用 VHDL 仿真器对顶层系统的行为 模型进行仿真测试 检查模拟结果 继而进行修改和完善 4 VHDL RTL 级建模 即将 VHDL 的行为模型表达为 VHDL 行为代码 5 前端功能仿真 即对 VHDL RTL 级模型进行仿真 简称功能仿真 6 逻辑综合 使用逻辑综合工具将 VHDL 行为代码描述转化为结构化的 门级电路 7 39 7 测试向量生成 8 功能仿真 9 结构综合 10 门级时序仿真 11 硬件测试 2 2 2 2 Top down 设计方法的优点 1 完全符合设计人员的设计思路 从功能描述开始 到最后的物理实现 2 功能设计可完全独立于物理实现 采用 Top Down 设计方法 功能输入 采用国际标准的 HDL 输入方法 HDL 可不含有任何器件的物理信息 因此工 程师可以有更多的空间去集中精力进行功能描述 设计师可以在设计过程的最 后阶段任意选择或更改物理器件 不会在设计一开始就受到最终所采用器件的 约束 3 设计可再利用 设计结果完全可以以一种知识产权 IP Intellectual Property 的方式作为设计师或设计单位的设计成果 应用于不同的产品设计中 做到成果的再利用 4 易于设计的更改 设计工程师可在极短的时间内修改设计 对各种 FPGA CPLD 结构进行设计结果规模 门消耗 和速度 时序 的比较 选择 最优方案 5 设计和处理大规模复杂电路 目前的 FPGA CPLD 器件正向高集成度 深亚微米工艺发展 为设计系统的小型化 低功耗 高可靠性等提供了集成的 手段 6 设计周期缩短 生产率大大提高 产品上市时间提前 性能明显提高 产品竞争力加强 据统计 采用 Top Down 设计方法的生产率可达到传统设计 方法 2 到 4 倍 2 3 FPGA 开发介绍开发介绍 2 3 1 FPGA 简介简介 现场可编程门阵列 FPGA 器件是八十年代中期出现的新产品 它的应用 大大地方便了 IC 的设计 因而随着数字技术日益广泛的应用 以 FPGA 为代表 的 ASIC 器件得到了迅速的普及和发展 器件集成度和速度都在高速增长 传统的电路设计过程是 先画原理图 把原理图绘制成印制电路板图 再 制版 安装 调试 有了 FPGA 我们只需要在计算机上绘出原理图 再运行 相应的软件 就可把所设计的逻辑电路在 FPGA 中实现 所有步骤均可自动完 8 39 成 电子设计工程师自己设计专用集成电路成为了一件很容易的事情 FPGA 作为专用集成电路 ASIC 概念上的一个新型范畴和门类 以其高 度灵活的用户现场编程方式 现场定义高容量数字单片系统的能力 能够重复 定义 反复改写的新颖功能 为复杂数字系统设计 研制以及产品开发提供了 有效的技术手段 电子应用设计工程师应用 FPGA 技术不仅可避免通常 ASIC 单片系统设计周期长 前期投资风险大的弱点 而且克服了过去板级通用数字 电路应用设计的落后 繁琐和不可靠性 目前 FPGA 的两个重要发展与突破是 大多数厂商在其高端器件上都提供 了片上的处理器 如 CPU DSP 等硬核 Hard Core 或固化核 Fixed Core 比如 Xilinx 的 Virtex II Pro 芯片可以提供 Power PC 而 Altera 的 Stratix Excalibur 等系列芯片可以提供 Nios DSP 和 Arm 等模块 在 FPGA 上 集成微处理器 使 SOPC 设计更加便利与强大 另一个发展是在不同器件商推 出的高端芯片上大都集成了高速串行收发器 一般能够达到 3Gb s 以上的数据 处理能力 在 Xilinx Altera Lattice 都有相应的器件型号提供该功能 这些新 功能使 FPGA 的数据吞吐能力大幅度增强 2 3 2 FPGA 设计流程设计流程 对于目标器件为 FPGA 和 CPLD 的 HDL 设计 其工程设计的基本流程如 图 2 1 所示 现具体说明如下 9 39 图 2 1 EDA 设计流程 1 文本编辑 用任何文本编辑器都可以进行 通常 VHDL 文件保存为 vhd 文件 Verilog 文件保存为 v 文件 2 使用编译工具编译源文件 HDL 的编译器有很多 ACTIVE 公司 MODELSIM 公司 SYNPLICITY 公司 SYNOPSYS 公司 VERIBEST 公司等都有自己的编译器 3 逻辑综合 将源文件调入逻辑综合软件进行综合 综合的目的是在于将设计的源文件 由语言转换为实际的电路 但是此时还没有在芯片中形成真正的电路 这一步 的最终目的是生成门电路级的网表 Netlist 4 布局 布线 将第 3 步生成的网表文件调入 PLD 厂家提供的软件中进行布线 即把设计 好的逻辑安放到 CPLD FPGA 内 这一步的目的是生成用于下载 编程 Programming 的编程文件 在这一步 将用到第 3 步生成的网表 并根据 CPLD FPGA 厂商的器件容量 结构等进行布局 布线 这就好像在设计 PCB 时的布局布线一样 先将各个设计中的门根据网表的内容和器件的结构放在器 件的特定部位 然后 在根据网表中提供的各门的连接 把各个门的输入输出 10 39 连接起来 最后 生成一个供编程的文件 这一步同时还会加一些时序信息 Timing 到你的设计项目中去 以便于你做后仿真 5 后仿真 利用在布局布线中获得的精确参数 用仿真软件验证电路的时序 也叫布 局布线仿真或时序仿真 这一步主要是为了确定你的设计在经过布局布线之后 是不是还满足你的设计要求 6 编程 下载 如果前几步都没有发生错误 并且符合设计要求 这一步就可以将由适配 器等产生的配置或下载文件通过编程器或下载电缆下载到目标芯片中 7 硬件测试 硬件测试的目的是为了在更真实的环境中检验 HDL 设计的运行情况 特别 是对于 HDL 程序设计上不是十分规范 语义上含有一定歧义的程序 2 3 3 SPARTAN II 芯片简介芯片简介 本设计用到的 FPGA 芯片是 XILINX 公司生产的 SPARNTAN II 系列中的 xc2s100 6 下面将对该系列做简单的介绍 2 3 3 1 Spartan II 系列的特点 进入 ASSP 的领域 FPGA 正在极力将 ASSP 从电路板上挤出去 并使其失去 设计人员的宠爱 但是任何旧式的 FPGA 器件都无法恰当地替代专用器件 只 有 Spartan II FPGA 可以做到这一点 Spartan II 系列为设计人员提供了完整的 封装 在密度 功能和性能以及运行速度方面都差不多 但是 Spartan II 为解 决方案所提供的可编程能力有着巨大的价值 从而使其与 ASSP ASIC 器件相比 具有了很大的优势 1 现场升级的灵活性 Spartan II FPGA 的可编程能力为设计人员带来很大优势 采用的 FPGA 是 标准器件后 您可更快地将产品标准化 因为 Spartan 器件可进行现场升级 升 级就像下载软件一样简单 2 拥有丰富的逻辑门资源 Spartan II 系列有六款器件 密度高达 20 万门 丰富的逻辑门资源能让设 计者更大限度的发挥 3 告别 ASIC 和 FPGA 间的性能和功能差距 在性能和功能方面 大多数设计人员都会想到 ASIC 和 FPGA 间的巨大差 距 但是 SPARTAN II 消除了这一差距 4 拥有最多的存储器 11 39 片上带存储器是必须的 如果还具有很好的灵活性的话 那么就更为有用 了 分布式存储器和块 RAM 可高效地实现最适合您要求的配置 现时还可采 用与片上存储器一样快的外部存储器 5 方便的时钟管理 如果您面临时钟管理问题 Spartan II 系列的四个高度灵活的 DLL 可解决 您的问题 设计人员可在片上对输入时钟进行倍频或分频 还可驱动板上的多 个时钟 6 提供高性能 今天的数字世界里有许多新的 I O 标准要求很苛刻 通过 Select I O 技术 Spartan II 器件支持所有这些新 I O 标准 I O 速度超过 200 MHz Spartan II 系 列丰富的功能 以及高性能和低成本 使其成为多种数据网络应用 HDLC 控制 器解决方案中的首选 Spartan II 也非常适于实现控制和接口逻辑 比如用于将 CPU 同 QDR SRAM 连接在一起 7 器件密度扩展至 20 万门 随着大量产品的设计变得越来越复杂 对更高密度 更大存储器资源以及 更多 I O 数量的需求也在增长 对于此类设计 Spartan II 系列的 XC2S200 非常 适合 该器件能提供 20 多万个门 14 个 RAM 块以及 284 个 I O 并有三种不 同的低成本适合大批量生产的封装 PQ208 FG256 和 FG456 可供选择 利用 XC2S200 可获得比 XC2S150 多 36 的逻辑单元 而且其密度是 Spartan 或 Spartan XL 最大器件密度的五倍 XC2S200 包括了支持 Spartan II 解决方案获 得成功的所有特性 2 3 3 2 Spartan II 的结构特点 1 结构框图 Spartan II 系列 FPGA 采用了常规的灵活可编程构架 包括可配置逻辑块 CLB 和环绕在 CLB 四周的可编程输入 输出模块 IOB 并通过多用途布 线资源形成强大的互连体系 12 39 图 2 2 Spartan ii 的结构框图 2 输入 输出模块 Spartan II 的 IOB 的输入和输出支持 16 种 I O 信号标准 包括 LVCMOS HSTL SSTL 和 GTL 这些高速输入和输出可支持各种先进的存储 器和总线接口 三个 IOB 寄存器可作为边沿触发 D 型触发器或作为电平敏感的 锁存器 13 39 图 2 3 Spartan ii 的输入输出模块 3 逻辑单元 Spartan II CLB 的基本构造单元是逻辑单元 LC 一个 LC 包括一个四输 入的函数发生器 一个进位逻辑和一个存储单元 每个 LC 中函数发生器的输出 同时驱动 CLB 输出端和触发器的 D 输入端 每个 Spartan II CLB 包含四个 LC 两两组合成两个同样的 Slice 除了四个基本 LC 外 Spartan II CLB 还包 含一些逻辑电路 结合函数发生器可提供五个或六个输入的函数功能 因此当 预计给定器件所能提供的系统门数量时 每个 CLB 可当作 4 5 个逻辑单元来计 算 Spartan II 函数发生器采用 4 输入查找表 LUT 的方式来实现 除了作 为函数发生器以外 每个 LUT 还可作为一个 16 1 位的同步 RAM 来使用 Spartan II LUT 还可作为一个 16 位移位寄存器使用 而且对于捕捉高速或猝 发数据非常理想 这一模式还可在诸如数字信号处理等应用中用于数据的存储 Spartan II 逻辑片中的存储单元可通过配置成为边沿触发型 D 型触发器或电平 敏感锁存器 14 39 图 2 4 Spartan ii 的逻辑单元 4 块 RAM Spartan II FPGA 集成了几块大型的 4K 位容量 Select RAM 存储器块 这 与在 CLB 中能够实现浅 RAM 结构的分布式 Select RAM 资源互为补充 每个存 储器块可配置为 4K x 1 和 256 x 16 之间的多种不同配置 图 2 5 Spartan ii 的块 RAM 5 延迟锁相环 15 39 与每个全局时钟输入缓冲器相连的是一个完全数字的延迟锁相环 DLL 它可消除时钟输入焊盘和器件内部时钟输入引脚间的畸变 每个 DLL 可驱动两 个全局时钟网络 首先监视输入的时钟信号 然后是分布式时钟信号 并自动 地调整时钟延迟单元 通过引入额外的延迟来保证时钟边沿严格地在到达时钟 输入端一个时钟周期后到达内部触发器 通过保证到达内部触发器的时钟边沿 与到达时钟输入端的时钟边沿严格同步 这一闭环系统有效地消除了时钟传输 延迟 第三章 数字秒表的设计与实现 3 1 项目任务与设计思路 1 实验项目 数字秒表的设计 2 实验指标 晶振输入信号 50MHZ 时钟信号 计时范围范围为 00 00 00 到 59 59 99 按钮开关 start stop split reset 在秒表已经被复位的情况下 按下 start stop 键 秒表开始计时 在秒表正常运行的情况下 如果按下 start stop 键 则秒表暂停计时 再次按下该键 秒表继续计时 在秒表正常运行情况下 如果按下 split reset 键 显示停止在按键时间 但秒表仍然计时 再次按下该 键 秒表恢复正常显示 在秒表暂停计时情况下 按下 split reset 键 秒表复位归零 显示工作方式 用六位 BCD 七段数码管显示读数 3 实验思路 根据实验指标 将电路设计分成 6 个模块 分频器 计数器 锁存器 扫描显示控制 按键消陡 控制电路 3 2 基于 VHDL 方法的设计方案 4 设计方框图 5 16 39 具体说明 晶振 50MHz 的晶振信号 分频器 将 50MHz 的信号分频成 1KHz 的基准频率 计数器 采用六进制与十进制计数器级联的形式 锁存器 锁存使能信号控制锁存 扫描显示控制 一个八进制的计数器产生的扫描信号同时完成从锁存器送 来的信号的选择以及 LED 数码管的选择 按键消陡 采用软件延时的消抖方法 控制电路 为一个 moore 机 可以让状态编码为相应的输出以方便程序 编写 3 3 系统电路设计 17 39 3 4 系统单元模块设计 3 4 1 分频器 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL entity fenpinqi is Port clk in in STD LOGIC clk out STD LOGIC end fenpinqi architecture Behavioral of fenpinqi is signal current state STD LOGIC VECTOR 15 downto 0 others 0 signal new state STD LOGIC VECTOR 15 downto 0 others 0 begin process current state begin if current state 49999 then new state 0 else new state current state 1 18 39 end if end process process clk in begin if falling edge clk in then current state new state end if end process clk current state 15 end Behavioral 3 4 2 计数器 模十计数器 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL entity m 10 is port clk rst in std logic carry in in std logic carry out out std logic count out std logic vector 3 downto 0 end m 10 architecture Behavioral of m 10 is signal c state n state std logic vector 3 downto 0 begin P1 process carry in c state begin if carry in 1 then if c state 9 then n state 0000 else n state c state 1 end if 19 39 else n state c state end if end process P2 process clk rst begin if rst 1 then c state 0000 elsif falling edge clk then c state n state end if end process count c state carry out 1 when carry in 1 and c state 9 else 0 end Behavioral 模六计数器 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL entity m 6 is port clk rst in std logic carry in in std logic carry out out std logic count out std logic vector 3 downto 0 end m 6 architecture Behavioral of m 6 is signal c state n state std logic vector 3 downto 0 begin P1 process carry in c state begin if carry in 1 then if c state 5 then n state 0000 else n state c state 1 end if else n state c state 20 39 end if end process P2 process clk rst begin if rst 1 then c state 0000 elsif falling edge clk then c state n state end if end process count c state carry out clk rst rst carry in ena carry out cry0 count open u1 m 10 PORT MAP clk clk rst rst carry in cry0 carry out cry1 count count1 u2 m 10 PORT MAP clk clk rst rst carry in cry1 carry out cry2 count count2 u3 m 10 PORT MAP clk clk rst rst carry in cry2 carry out cry3 count count3 u4 m 6 PORT MAP clk clk 22 39 rst rst carry in cry3 carry out cry4 count count4 u5 m 10 PORT MAP clk clk rst rst carry in cry4 carry out cry5 count count5 u6 m 6 PORT MAP clk clk rst rst carry in cry5 carry out open count count6 end Behavioral 测试程序关键部分 stim proc process begin rst 1 ena 1 wait for 3 33 ms rst 0 wait for clk period 1234 ena 0 wait for clk period 87 ena BCD BCD BCD BCD BCD BCD BCD BCD BCD 1111 end case end process end Behavioral 三八译码器模块 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL entity m 3 is port clk in STD LOGIC s xuan out STD LOGIC VECTOR 2 downto 0 end m 3 architecture Behavioral of m 3 is signal c state n state std logic vector 2 downto 0 000 begin P1 process c state begin if c state 7 then n state 000 else n state c state 1 end if end process P2 process clk begin if falling edge clk then c state n state end if end process s xuan c state end Behavioral 27 39 七段译码器模块 library IEEE use IEEE STD LOGIC 1164 ALL entity seven led decounter is Port BCD in STD LOGIC VECTOR 3 downto 0 SEG out STD LOGIC VECTOR 6 downto 0 end seven led decounter architecture Behavioral of seven led decounter is begin with BCD select SEG 0000001 when 0000 0 1111001 when 0001 1 0100100 when 0010 2 0110000 when 0011 3 0011001 when 0100 4 0010010 when 0101 5 0000010 when 0110 6 1111000 when 0111 7 0000000 when 1000 8 0010000 when 1001 9 1111110 when others end Behavioral 模八计数器模块 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL entity m 3 is port clk in STD LOGIC s xuan out STD LOGIC VECTOR 2 downto 0 end m 3 architecture Behavioral of m 3 is signal c state n state std logic vector 2 downto 0 000 begin P1 process c state begin if c state 7 then n state 000 28 39 else n state c state 1 end if end process P2 process clk begin if falling edge clk then c state n state end if end process s xuanclk s xuan s xuan out Inst threeTOeight threeTOeight PORT MAP s xuan s xuan out DIG DIG out Inst fu yong fu yong PORT MAP scan in6 scan in6 scan in5 scan in5 scan in4 scan in4 30 39 scan in3 scan in3 scan in2 scan in2 scan in1 scan in1 s xuan s xuan out BCD BCD out Inst seven led decounter seven led decounter PORT MAP BCD BCD out SEG SEG out end Behavioral 3 4 4 按键消陡模块 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL entity keypro is Port clk in STD LOGIC key in in STD LOGIC key out out STD LOGIC end keypro architecture Behavioral of keypro is signal k1 k2 STD LOGIC signal cnt STD LOGIC VECTOR 1 downto 0 begin process clk key in begin if clk event and clk 0 then if cnt 3 then k1 1 else k1 0 cnt cnt 1 end if k2 k1 end if if key in 0 then 31 39 cnt 00 end if end process key out not k1 and k2 end Behavioral 3 4 5 控制电路模块 library IEEE use IEEE STD LOGIC 1164 ALL entity control is Port clk in STD LOGIC start stop in STD LOGIC split reset in STD LOGIC counter clr out STD LOGIC counter ena out STD LOGIC latcher ena out STD LOGIC end control architecture Behavioral of control is signal key in STD LOGIC VECTOR 1downto 0 00 signal current state new state STD LOGIC VECTOR 2downto 0 000 begin key in if key in 10 then new state 011 else new state case key in is when 10 new state new statenew state if key in 01 then new state 011 else new state case key in is when 10 new state new statenew statenew state 111 end case end process process clk begin if falling edge clk then current state new state end if end process counter clr current state 2 counter ena current state 1 latcher ena current state 0 end Behavioral 仿真结果 33 39 3 4 6 锁存器模块 library IEEE use IEEE STD LOGIC 1164 ALL entity la tch is Port GIN6 in STD LOGIC VECTOR 3 downto 0 GIN5 in STD LOGIC VECTOR 3 downto 0 GIN4 in STD LOGIC VECTOR 3 downto 0 GIN3 in STD LOGIC VECTOR 3 downto 0 GIN2 in STD LOGIC VECTOR 3 downto 0 GIN1 in STD LOGIC VECTOR 3 downto 0 shi neng inSTD LOGIC GOUT1 out STD LOGIC VECTOR 3 downto 0 GOUT2 out STD LOGIC VECTOR 3 downto 0 GOUT3 out STD LOGIC VECTOR 3 downto 0 GOUT4 out STD LOGIC VECTOR 3 downto 0 GOUT5 out STD LOGIC VECTOR 3 downto 0 GOUT6 out STD LOGIC VECTOR 3 downto 0 end la tch architecture Behavioral of la tch is 34 39 begin process shi neng GIN1 GIN2 GIN3 GIN4 GIN5 GIN6 begin if shi neng 1 then GOUT6 GIN6 GOUT5 GIN5 GOUT4 GIN4 GOUT3 GIN3 GOUT2 GIN2 GOUT1 clock in clk signal clk u2 counter 59 59 99 PORT

温馨提示

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

评论

0/150

提交评论