




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
0 电 子 科 技 大 学 现代电子技术综合实验 报告 姓名 学号 学院 电子工程学院 指导老师 皇晓辉 1 摘要 本次实验 是基于 FPGA 的秒表设计 秒表是 00 00 00 计数到 59 59 99 使用 VHDL 语言编写秒表的程 序 并设计有开始 暂停以及保持 恢复的功能 本试验利 用 ISE 进行设计输入和综合 在 modelsim 软件上实现了 波形的仿真 将程序下载到芯片 Spartan 3A and 3AN 上 并在七段数码管上实现了秒表的显示 在 FPGA 的按键上 实现对秒表的控制功能 关键字 关键字 FPGAFPGA VHDLVHDL 秒表 秒表 2 目录 第一章 引言 4 第二章 设计背景 5 2 1 FPGA 概念 5 2 2 FPGA 设计流程 6 2 3 VHDL 语言简介 7 2 4 VHDL 语言的优势 8 第三章 程序设计 9 3 1 各模块设计思路 9 第四章 仿真 25 4 1 仿真软件使用说明 14 4 2 状态仿真图 16 致谢 20 附录 各程序代码 21 控制模块代码 21 显示模块代码 22 所存模块代码 24 计数器模块代码 24 消抖模块代码 26 分频模块代码 27 Top 总代码 28 引脚连接 34 3 第一章 引言 本文主要任务是针对设计的要求 基于 FPGA 利用硬件描述语言 VHDL 完成 数字秒表的设计 通过仿真 分析 综合并最终下载到 FPGA 里实现 本次实验是我们第一次接触 VHDL 语言 设计秒表的过程并不难 通过本次 实验让我们对 FPGA 有了一定的概念 掌握了部分 VHDL 语言的编写和仿真的步 骤 整个过程我们不仅学会了程序的编写 同时还清楚了怎样设计一个高效的 电路 这在数字电路的学习上让我们提升了一个高度 这次实验对今后电路的设计和 VHDL 的学习是一个良好的开端 4 第二章 设计背景 2 12 1 FPGAFPGA 的概念的概念 FPGA 即现场可编程门阵列 它是在 PAL GAL CPLD 等可编程器件的基础 上进一步发展的产物 它是作为专用集成电路 ASIC 领域中的一种半定制电 路而出现的 既解决了定制电路的不足 又克服了原有可编程器件门电路数有 限的缺点 以硬件描述语言 Verilog 或 VHDL 所完成的电路设计 可以经过简单的 综合与布局 快速的烧录至 FPGA 上进行测试 是现代 IC 设计验证的技术主 流 这些可编辑元件可以被用来实现一些基本的逻辑门电路或者更复杂一些的 组合功能比如解码器或数学方程式 在大多数的 FPGA 里面 这些可编辑的元件 里也包含记忆元件例如触发器或者其他更加完整的记忆块 FPGA 采用了逻辑单元阵列 LCA 这样一个概念 内部包括可配置逻辑模块 CLB 输出输入模块 IOB 和内部连线三个部分 FPGA 是可编程器件 与传统逻 辑电路和门阵列 如 PAL GAL 及 CPLD 器件 相比 FPGA 具有不同的结构 FPGA 利用小型查找表 16 1RAM 来实现组合逻辑 每个查找表连接到一个 D 触发器的输入端 触发器再来驱动其他逻辑电路或驱动 I O 由此构成了既可 实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块 这些模块间利 用金属连线互相连接或连接到 I O 模块 FPGA 的逻辑是通过向内部静态存储单 元加载编程数据来实现的 存储在存储器单元中的值决定了逻辑单元的逻辑功 能以及各模块之间或模块与 I O 间的联接方式 并最终决定了 FPGA 所能实现的 功能 FPGA 允许无限次的编程 5 2 22 2 FPGAFPGA 设计流程设计流程 对于目标器件为 FPGA 和 CPLD 的 HDL 设计 其工程设计的基本流程如图 2 1 所示 现具体说明如下 图 2 1 EDA 设计流程 1 文本编辑 用任何文本编辑器都可以进行 通常 VHDL 文件保存为 vhd 文件 Verilog 文件保存为 v 文件 2 使用编译工具编译源文件 HDL 的编译器有很多 ACTIVE 公司 MODELSIM 公司 SYNPLICITY 公司 SYNOPSYS 公司 VERIBEST 公司等都有自己的编译器 3 逻辑综合 将源文件调入逻辑综合软件进行综合 综合的目的是在于将设计的源文件 由语言转换为实际的电路 但是此时还没有在芯片中形成真正的电路 这一步 的最终目的是生成门电路级的网表 Netlist 6 4 布局 布线 将第 3 步生成的网表文件调入 PLD 厂家提供的软件中进行布线 即把设计 好的逻辑安放到 CPLD FPGA 内 这一步的目的是生成用于下载 编程 Programming 的编程文件 在这一步 将用到第 3 步生成的网表 并根据 CPLD FPGA 厂商的器件容量 结构等进行布局 布线 这就好像在设计 PCB 时 的布局布线一样 先将各个设计中的门根据网表的内容和器件的结构放在器件 的特定部位 然后 在根据网表中提供的各门的连接 把各个门的输入输出连 接起来 最后 生成一个供编程的文件 这一步同时还会加一些时序信息 Timing 到你的设计项目中去 以便于你做后仿真 5 后仿真 利用在布局布线中获得的精确参数 用仿真软件验证电路的时序 也叫布 局布线仿真或时序仿真 这一步主要是为了确定你的设计在经过布局布线之后 是不是还满足你的设计要求 6 编程 下载 如果前几步都没有发生错误 并且符合设计要求 这一步就可以将由适配 器等产生的配置或下载文件通过编程器或下载电缆下载到目标芯片中 7 硬件测试 硬件测试的目的是为了在更真实的环境中检验 HDL 设计的运行情况 特别 是对于 HDL 程序设计上不是十分规范 语义上含有一定歧义的程序 2 32 3 VHDLVHDL 语言简介语言简介 VHDL 全名 Very High Speed Integrated Circuit HardwareDescription Language 诞生于 1982 年 VHDL 翻译成中文就是超高速集成电路硬件描述语言 VHDL 主要用于描述数字系统的结构 行为 功能和接口 除了含有许多具有硬 件特征的语句外 VHDL 的语言形式 描述风格以及语法是十分类似于一般的计 算机高级语言 VHDL 的程序结构特点是将一项工程设计 或称设计实体 可以 是一个元件 一个电路模块或一个系统 分成外部和内部 即设计实体的内部 功能和算法完成部分 在对一个设计实体定义了外部界面后 一旦其内部开发 完成后 其他的设计就可以直接调用这个实体 这种将设计实体分成内外部分 7 的概念是 VHDL 系统设计的基本点 现在 VHDL 和 VERILOG 作为 IEEE 的工业标 准硬件描述语言 又得到众多 EDA 公司的支持 在电子工程领域 已成为事实 上的通用硬件描述语言 2 42 4 VHDLVHDL 语言的优势语言的优势 严格地讲 VHDL 是一种用来描述数字逻辑系统的 编程语言 它通过对 硬件行为的直接描述来实现对硬件的物理实现 代表了当今硬件设计的发展方 向 VHDL 是为了满足逻辑设计过程中的各种需求而设计的 第一 它是可以用来描述逻辑设计的结构 比如逻辑设计中有多少个子逻 辑 而这些子逻辑又是如何连接的 除此之外 VHDL 并不十分关心一个具体逻 辑依靠何种方式实现 而是把开发者的精力集中到逻辑所实现的功能上 第二 VHDL 采用类似高级语言的语句格式完成对硬件行为的描述 具备更 强的模块化能力 并拥有良好的可读性以及程序的移植性 另外 VHDL 淡化状 态机 与或表达式等早一代硬件描述语言中的元素 用更类似于高级语言的表 达式取代 这些也是为什么把 VHDL 称为 编程语言 的原因 第三 VHDL 给出逻辑的模拟与调试为设计工作提供了最大的空间 VHDL 调 试的过程是相当灵活的 一方面可以使用传统的调试方法 比如适用传统的波 形激励或编写测试向量 另一方面 可以使用一些 VHDL 原码调试器 这类调试 器可以大大加快 VHDL 程序调试的速度 因为它可以像调试软件一样单步跟踪调 试每一条语句 并且可以设置断点 观察内部变量等 这些功能是传统的调试 仿真方法所不具备的 这种调试器比较着名的有 Aldec 的 Active HDL 拥有高 效率的生成代码 能够节省大量的资源 甚至不必编写任何测试向量便可以进 行源代码级的调试 而且 设计者可以非常方便地比较各种方案之间的可行性 及其优劣而不需做任何实际的电路实验 VHDL 语言在编程时要更加规范 程序结构要适合整个系统的硬件结构 要符合各模块的信号时序关系 以及数据流的走向 VHDL 语言的设计格式更 是面向具体的硬件对象的语言 VHDL 的语言特点主要有 1 更加类似软件上的高级语言 具备更强的模块化能力并拥有良好的 可读性以及程序的移植性 8 2 淡化状态机 与或表达式等早一代硬件描述语言中的元素 用更类 似于高级语言的表达式取代 3 拥有高效率的生成代码 能够节省大量的资源 第三章 程序设计 3 1 各模块设计思路 3 1 1 秒表设计原理图 3 1 2 3 1 2 13 1 2 1 按键消抖按键消抖 按键消抖电路应用计数器的分频功能以及与门电路 将按下瞬间激起的高 电平延迟一个周期以致抵消 从而达到消抖的作用 当按键产生抖动时 keyin 产生高电平 为了使 keyout 为低电平 将 keyin 与一个与门相连 使与门的另 9 一端在抖动产生的一个周期内输入为0 所以在这个周期内 与门的输出恒为 0 并将输出端接入 keyout 从而实现消抖的功能 if rising edge clk 1k then ifcnt 2 3 then k3 1 else k3 0 cnt 2 cnt 2 1 end if 该局是利用计数器的分频功能 key out2 not k3 and k4 该局是利用与门的功能 从而实现消抖的 通过计数器与状态寄存 使得按下 key1 start stop key2 split reset 这两个按键时 产生一个脉冲信号 实现了两个功能键的控制功能 源程序见附 录1 3 1 2 23 1 2 2 状态控制器状态控制器 状态控制器 首先通过一个2位的向量定义了4个状态 正常 暂停 清零 锁存即 normal halt reset lock 以及按下两个按键以后 每个状态的转换 状态机有三个输出 根据状态器的变化与变化 三个输出分别是计数使能 carry in 清零使能 rst 锁存使能 latch 其分别接到计数器的第一位的进位输 入 计数器的清零端 以及锁存器的使能端 以达到控制计数器与锁存器 功 能的目的 源程序见附录1 10 2 2 扫描控制及显示译码的电路框图扫描控制及显示译码的电路框图 因为实验板上的显示电路为下图因为实验板上的显示电路为下图 因为其只应用了一根总线 大大节省了因为其只应用了一根总线 大大节省了 I OI O 口的数量 从而大大减少了制作成口的数量 从而大大减少了制作成 本 所以其显示译码的电路图应该如下本 所以其显示译码的电路图应该如下 11 当有时钟作用于扫描模块时 不断对当有时钟作用于扫描模块时 不断对 8 8 个数码管进行扫描 例如 个数码管进行扫描 例如 q2q1q0q2q1q0 为为 001001 时 把时 把 c1c1 的数据赋给的数据赋给 bcd2ledbcd2led 进行显示 进行显示 3 1 2 33 1 2 3 时钟分频器时钟分频器 时钟分频器应用计数器的模数的不同对晶振源进行分频 例如将48mhz 分为1000hz 选用一个48000模的计数器对其进行分频 并应用480000模的计数 器将48mhz 分为100hz FPGA 自带的时钟为48MHZ 晶振源 但是秒表的基准时钟应该是100HZ 的 时钟 并且为了使得8位的数码管能够连续显示 我们也需要另一个1KHZ 的 时钟 对位选信号进行扫频以实现连续显示 因此分频器使非常关键的 对输入的48MHZ 进行一下操作 要实现 N 分频 则输入源时钟信号 clk 每经 过 N 2个上升沿 则对输出信号去反 分频器源文件见附录1 3 1 2 43 1 2 4 计数器计数器 秒表一共需要六个计数器 2个模6的计数器 4个模10的计数器 通过 if 语句先判断是否有进位输入 当时钟上升沿到来时计数一次 再通过 if 语句判断计数是否到1001 模六计数器为0101 计数记到1001时则自动归零 另外还有对清零位的判断 若清零位有效则计数器始终保持为0 各个计数器 之间 通过将低位的进位输出赋值给高位的进位输入 从而达到计数器之间 的级联 10毫秒位的计数器每当100HZ 时钟上升沿到来时计一次数 从而实 12 现了秒表的整体计数功能 源程序见附录1 3 1 2 53 1 2 5 锁存器锁存器 锁存器分为透明锁存器和不透明锁存器 本设计中 我们应用的是透明选择器 如下图 即当使能端 en 有效时 锁存器为 通 即直接将计数器输入的数据 传输出去 当时能端 en 无效时 锁存器进入锁存功能 此时停止计数 并将当 前状态输出 源程序见附录1 D E Q I86 I83 PLLFDIV I82 WATCHDOG I78 GCNTD I79 GCNTB I74 SCAN I80 FCNTB I56 CLKGEN I54 FCNTD I81 I22 LEDSEL I24 BCD2LED I87 I25 I26 mo 3 0 ma 3 0 mc 3 0 mb 3 0 I75 FDIV I84 I16 I18 I17 I77 I20 I88 I89 I85 I62 I63 I64 I65 I66 I67 I68 I69 I11 I13 I12 I4 I5 I6 I7 I8 I9 I10 I3 dataq en 3 1 3 63 1 3 6 显示模块显示模块 a 位选扫描 当1KHZ 的时钟上升沿到来时 位选计数器加一 从而实现循环显示 由 于扫描速度很快 人眼无法分辨 从视觉上秒表实际是连续显示 程序如下 process clk 1khz begin if rising edge clk 1khz then s s 1 end if end process choose a start stop one split reset two rst r carry in c 23 latch la u1 count PORT MAP clk b rst r carry in c carry out c12 count w u2 count PORT MAP clk b rst r carry in c12 carry out c23 count e u3 count PORT MAP clk b rst r carry in c23 carry out c34 count n u4 count6 PORT MAP clk b rst r carry in c34 carry out c45 count four u5 count PORT MAP clk b rst r carry in c45 carry out c56 count i u6 count6 PORT MAP clk b 24 rst r carry in c56 carry out open count six Inst display display PORT MAP clk1000hz a d1 result1 d2 result2 d3 result3 d4 result4 d5 result5 d6 result6 choose chooseo ncs ncso display7 displayo Inst f div f div PORT MAP clk clk top clk100hz b clk1000hz a Inst suocun suocun PORT MAP latch la d1 result1 d2 result2 d3 result3 d4 result4 d5 result5 d6 result6 count1 w count2 e count3 n count4 four count5 i count6 six Inst xiaodou xiaodou PORT MAP clk 1k a key in1 key1 key in2 key2 25 key out1 one key out2 two end Behavioral 2 控制电路 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL entity control is Port clk1000hz in STD LOGIC start stop in STD LOGIC split reset in STD LOGIC rst out STD LOGIC carry in out STD LOGIC latch out STD LOGIC end control architecture Behavioral of control is type states is reset normal halt lock signal c state n state states signal control sig std logic vector 1 downto 0 begin control sig case control sig is when 10 n staten statecase control sig is when 10 n staten staten state case control sig is when 10 n staten staten statecase control sig is when 01 n staten staten state reset end case end process process clk1000Hz begin if rising edge clk1000Hz then c staterst 1 carry in 1 latchrst 0 carry in 1 latchrst 0 carry in 0 latchrst 0 carry in 1 latchrst 1 carry in 1 latch 1 end case end process end Behavioral 3 消抖电路 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC UNSIGNED ALL use IEEE STD LOGIC ARITH ALL entity xiaodou is Port clk 1k in STD LOGIC key in1 in STD LOGIC key in2 in STD LOGIC key out1 out STD LOGIC key out2 out STD LOGIC end xiaodou architecture Behavioral of xiaodou is signal k1 k2 STD LOGIC signal cnt 1 STD LOGIC VECTOR 1 downto 0 signal k3 k4 STD LOGIC signal cnt 2 STD LOGIC VECTOR 1 downto 0 begin 27 process clk 1k key in1 begin if rising edge clk 1k then ifcnt 1 3 then k1 1 else k1 0 cnt 1 cnt 1 1 end if k2 k1 end if if key in1 0 then cnt 1 00 end if end process key out1 not k1 and k2 process clk 1k key in2 begin if rising edge clk 1k then ifcnt 2 3 then k3 1 else k3 0 cnt 2 cnt 2 1 end if k4 k2 end if if key in2 0 then cnt 2 00 end if end process key out2 not k3 and k4 end Behavioral 4 显示电路 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL entity display is Port clk1000hz in STD LOGIC 28 d1 in STD LOGIC VECTOR 3 downto 0 d2 in STD LOGIC VECTOR 3 downto 0 d3 in STD LOGIC VECTOR 3 downto 0 d4 in STD LOGIC VECTOR 3 downto 0 d5 in STD LOGIC VECTOR 3 downto 0 d6 in STD LOGIC VECTOR 3 downto 0 choose out STD LOGIC VECTOR 2 downto 0 ncs out STD LOGIC display7 out STD LOGIC VECTOR 6 downto 0 end display architecture Behavioral of display is signal s std logic vector 2 downto 0 signal data std logic vector 3 downto 0 begin process clk1000hz begin if rising edge clk1000hz then if s 7 then s s 1 else s 000 end if end if end process choosedatadatadatadatadatadatadatadisplay7display7display7display7display7display7display7display7display7display7display7 1111110 end case end process ncs 0 end Behavioral 5 模 6 计数器 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL entity count is Port clk in STD LOGIC rst in STD LOGIC carry in in STD LOGIC carry out out STD LOGIC count out STD LOGIC VECTOR 3 downto 0 end count architecture Behavioral of count is signal c state n state std logic vector 3 downto 0 begin 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 30 end if end process process clk rst begin if rst 1 then c state 0000 elsif rising edge clk then c state n state end if end process count c state carry out 1 when c state 5 and carry in 1 else 0 end Behavioral 6 模 10 计数器 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL entity count is Port clk in STD LOGIC rst in STD LOGIC carry in in STD LOGIC carry out out STD LOGIC count out STD LOGIC VECTOR 3 downto 0 end count architecture Behavioral of count is signal c state n state std logic vector 3 downto 0 begin 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 31 else n state c state end if end process process clk rst begin if rst 1 then c state 0000 elsif rising edge clk then c state n state end if end process count c state carry out 1 when c state 9 and carry in 1 else 0 end Behavioral 7 分频器电路 library IEEE use IEEE STD LOGIC 1164 ALL use IEEE STD LOGIC ARITH ALL use IEEE STD LOGIC UNSIGNED ALL entity f div is Port clk in STD LOGIC clk100hz out STD LOGIC clk1000hz out STD LOGIC end f div architecture Behavioral of f div is signal cnter0 integer range 0 to 23999 0 signal cnter1 integer range 0 to 4 0 signal clk100hz tmp clk1000hz tmp STD LOGIC 0 begin process clk is begin if clk event and clk 1 then if cnter0 23999 then cnter0 0 clk1000hz tmp not clk1000hz tmp 32 else cnter0 cnter0 1 end if end if end process clk1000hz clk1000hz tmp process clk1000hz tmp is begin if clk1000hz
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息安全管理员转正考核试卷及答案
- 薪酬管理系统创新创业项目商业计划书
- 法律音乐创作团队创新创业项目商业计划书
- 智能车辆路线服务创新创业项目商业计划书
- 利用社交媒体营销推广苹果创新创业项目商业计划书
- 制浆废液回收利用工招聘考核试卷及答案
- 量子半导体材料测量创新创业项目商业计划书
- 押题宝典执业药师资格证之《西药学专业二》通关考试题库及参考答案详解【新】
- 电焊工职业技能考核试卷及答案
- 计算机维修工协作考核试卷及答案
- 可下载打印的公司章程
- 《英语教师职业技能训练简明教程》全册配套优质教学课件
- 少先队辅导员工作记录表(共7页)
- 农业模型PPT讲稿课件
- 公开课教学评价表
- 消防验收规范标准(最新完整版)19844
- 教研工作手册
- 电工电子技术基础教学大纲
- 独树一帜的中国画(课堂PPT)
- 制钵机的设计(机械CAD图纸)
- 生产设备控制程序
评论
0/150
提交评论