在FPGA上对数字频率计的设计.doc_第1页
在FPGA上对数字频率计的设计.doc_第2页
在FPGA上对数字频率计的设计.doc_第3页
在FPGA上对数字频率计的设计.doc_第4页
在FPGA上对数字频率计的设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

电子信息科学与技术 2006 级 洪晓宁 本 科 毕 业 论 文 题目 基 于 FPGA 的 对 数 字 频 率 计的 设 计 学 院 计 算 机 信 息 与 工 程 学 院 专 业 电 子 信 息 科 学 与 技 术 班 级 2 0 0 6 级 电 子 班 姓 名 洪 晓 宁 学 号 2 0 0 6 1 2 0 3 0 0 2 7 指导老师 杨 国 权 计算机信息工程学院 基于基于 FPGA 的数字频率计的设计的数字频率计的设计 洪晓宁 摘要 摘要 现场可编程门阵列的出现给现代电子设计带来了极大的方便和灵活性 使复杂的数字电子系统 设计变为芯片级设计 同时还可以很方便地对设计进行在线修改 本文以设计个四位显示的十进制数 字频率计为例 在片 FPGA 芯片上实现多位数字频率计的设计 来完成对 FPGA 和 Quartus2 的学习 在 设计中 所有频段均采用直接测频法对信号频率进行测量 克服了逼近式换挡速度慢的缺点 关键词 关键词 数字频率计 Verilog HDL 现玚可编程门阵列 FPGA 直接测量法 ConstructionConstruction ofof thethe DigitalDigital CymometerCymometer BasedBased onon FPGAFPGA HONGHONG XiaoningXiaoning Abstract Abstract The appearance of FPGA Field Programmable Gate Array leads to the convenience and flexibility of the modern electronic construction which changes the complicated system construction into the on chip construction On the other hand it Can also make some online modification expediently W ith a casewhich describes an quadbit shownon thedecinaldigitalfrequency the author introduces the construction method and the realization steps on a single FPGA chip During the construction process the signal measurement which overcomes the shortcoming of frequency of all approxmate the Frequency Channel is measured by the way of direct shift speed KeywKeyw ords ords design of the digital cymom eter Verilog HDL FPGA Field Programmable GateA rray direct frequency m easurem ent 电子信息科学与技术 2006 级 洪晓宁 目录目录 前言前言 4 4 1 1 系统总体设计 系统总体设计 4 4 2 2 各个模块的实现 各个模块的实现 6 6 2 12 1 10001000 进制计数器进制计数器 6 2 22 2 50KH50KHZ Z分频器分频器 7 2 32 3 1414 位锁存器 位锁存器 DFF14DFF14BITEBITE 7 2 42 4 1414 位计数器 位计数器 CNT14CNT14BITEBITE 8 2 52 5 数码管动态显示 数码管动态显示 DISPLAYDISPLAY 9 3 3 各个模块的的仿真 各个模块的的仿真 1010 3 13 1 10001000 进制计数器进制计数器 10 3 23 2 50KH50KHZ Z分频器分频器 10 3 33 3 1414 位锁存器 位锁存器 DFF14DFF14BITEBITE 11 3 43 4 1414 位计数器 位计数器 CNT14CNT14BITEBITE 12 3 53 5 系统顶层仿真 系统顶层仿真 13 总结总结 1414 致谢致谢 1515 参考文献参考文献 1515 符录符录 1616 计算机信息工程学院 前言前言 随着电子技术和计算机应用技术的深入发展以及 EDA 设计技术的不断进步与完善 不仅给电子系 统的设计和应用带来了新的设计思路和发展机遇 也对传统的电子设计手段提出了严峻的挑战 传统的电子系统设计 是以各种不同的集成电路芯片为基础 按照功能要求在印制电路板上将不 同的芯片拼接 组合 构成实现某种功能的电子系统 这样的设计方法不仅繁琐 而且设计过程中的 错误和不足之处不能及早的发现 进入调试阶段后 一旦发妯错误或缺陷 也不能现场更正 这将使 研发的时间变长 研发的成本加大 能够克服上述缺点的是片上可编程系统 简称 SOPC 微电子技术 计算机应用技术的飞速发展 不仅使得电子系统的小型化 微型化进程加快 而且 给电子系统设计带来了前所未有的变革 大规模 FPGA 芯片问世 为电子系统设计提供了硬件基础础 几乎大多数电子系统都可以在一块芯片上实现 ALTERA 公司的 Quartus2 软件就是 EDA 设计的最优秀 的软件之一 使用它不仅可以灵活地设计电子系统 而且还可以对设计方案进行模拟仿真 及早发现 错误和缺陷 使用 FPGA 的好处不仅表现在设计的初级阶段 即使在电子系统设计完成之后 甚至投入 实际使用的过程中 还可以根据实际需要添加功能 本次写作是以设计频率计为实例来学习 Verilog HDL 语言和 Qartus2 软件 电子信息科学与技术 2006 级 洪晓宁 1 1 系统总体设计系统总体设计 在 Quartus2 软件中 可使用多种编程语言 本文以 Verilog HDL 为编程语言 采用 Verilog HDL 语言设计一个复杂的电路系统 运用自顶向下的设计思想 将系统按功能逐 层分割的层次化设计方法进行设计 在顶层对内部各功能块的连接关系和对外的接口关 系进行了描述 而功能块的逻辑功能和具体实现形式则由下 一层模块来描述 根据本数 字频率计实现原理 运用自顶向下的设计思想 系统总框图如下 50K 分频器 1000 进制计 数器 14 位计数器14 位锁存器 动态数码管显示 1KHz 1Hz测试 信号数据 显示数据 1KHz 50MHZ 显示 信号 1 1 50MHz 的时钟信号经过分频 产生 1KHz 的信号 分别送到 1000 进制计数模块和动态显示 模块 经过 1000 进模块的信号生成 1Hz 的信号 作为 14 位计数器的控制信号 进入动 态显示的 1KHz 信号作为动态输出的时序信号 测试信号通过 14 位的计数器后 由控制信号将其转换为输出显示的数据 再经过 14 位的锁存器缓冲再送到动态显示模块中 通过动态显示模块最终生成显示信号 在这次论文中 将整个所要设计的频率计做为顶层 下面有五个模块 CNT1000 1000 进制计数器 CNT50000 50KHz 分频器 DFF14bite 14 位锁存器 CNT14bite 14 位计数器 动态数码管显示 DISPLAY 每个模块都是独立的 都能单独 使用 每个模块都是最小的子模块 就直接用 Verilog HDL 语言来描述 设计的系统顶层电路如图所示 计算机信息工程学院 1 2 2 2 各个模块的实现 各个模块的实现 各个模的实现是独立的 都运用 Verilog HDL 作为编程语言 2 12 1 10001000 进制计数器进制计数器 作用 在此次设计中 这一模块用来将输入信号的频率降低为原来的 1 1000 用作 分频器 由总框图可知 当 50MHz 的时钟信号经过分频后 得到了 1KHz 的时钟信号 再 经过此模块 就得到一个 1Hz 的时钟信号 2 1 生成方式 Verilog HDL 设计中定义三个端口 一个输入端 一个输出端 q c 没有 电子信息科学与技术 2006 级 洪晓宁 用到 一个计数变量 当输入端的时钟发生上升沿跳变时 计数变量自加 1 当计数达 到 1000 16 进制为 3e7 的时候 输出端就产生一脉冲信号 作为下一模块的输入变量 图 2 1 为代码的生成图 2 22 2 50KHz50KHz 分频器分频器 作用 由总框图可以知 这一模块的作用是将输入的 50MHz 的时钟信号转换为 1KHz 的时钟信号输出 1KHz 的信号用于动态显示模块的位选和段选 作为计数信号的时钟信 号 2 2 生成方式 用 Verilog HDL 编程语言写其代码 则设计中定义两个端口 一个输入 端 一个输出端 一个计数变量 当输入端的时钟发生上升沿跳变时 计数变量自加 1 当计数达到 50000 16 进制为 C34F 的时候 输出端就产生一脉冲信号 作为下一模 块的输入变量 2 32 3 1414 位锁存器 位锁存器 DFF14biteDFF14bite 作用 在总框图中 14 位锁存器用作显示数据的输出缓冲 当计数模块送出所计数 得到的数值时 就会锁存在锁存器中 当时钟信号到来时 就会将锁存的数据送到动态 显示模块中显示出来 所以 14 位的锁存器是作为一个数据输出的缓冲器 生成方式 使用 Quartus2 软件中的锁存模块 如下图所示 计算机信息工程学院 2 3 当时钟信号到来时 输入端就将数据 D 13 0 锁存并输出为 Q 13 0 直到下一个时钟信 号的到来 再重复上一过程 以 Verilog HDL 来编写代码 应有一个 14 位的输入端 一 个时钟信号输入端和一个 14 位的输出端 当时钟信号发生变化时 输出端就将输入端此 时输入的值 2 42 4 1414 位计数器 位计数器 CNT14biteCNT14bite 作用 这一模块用来接收被测信号 并转换成被测信号的频率 如图 6 所示 测 试信号由模块的 CLK 接收 当 ENABL 信号为 0 时 计数完成 并将所得的数据保持 并 送到下一个模块 CLR 信号为 0 将所有计数清零 进入下一次计数 生成方式 使用 Quartus2 软件来设计 其模块图如下 2 4 用 Verilog HDL 编写代码时 应有三个输入端 一个 13 位的输出端和一个计数的变量 当输入端 CLK 发生上升沿跳变时 计数变量自加 1 并将其转换为相应的二进制数 将十 进制的每一位用四位二进制数表示 当 ENABL 的输入信号为 0 时 就将计数变量的值输 电子信息科学与技术 2006 级 洪晓宁 出 并将原有的计数清零 2 52 5 数码管动态显示 数码管动态显示 DISPLAYDISPLAY 作用与生成方式 将缓冲器里的值转换为动态输出的数据值 模块电路如图所示 2 5 使用 Verilog HDL 语言时 CLK 信号则作为时钟信号 内设一变量用来记数 CLK 的脉冲 数 作为时间延迟 24 位的输入端口 用作输入要显示的数据 此次论文用了输入端口 中的低 13 位 7 段数码管的 7 位输出端口 用作输出显示的数据 6 位的位选输出端 计算机信息工程学院 输出的数据为位选信息 在程序的内部设有十个变量 其中六个变量 LED1Q LED2Q LED3Q LED4Q LED5Q LED6Q 每个变量四位 用来接收 24 位的输入 变量 四位变量 led xx 用作段选 七位变 seg out 用作数据输出即 7 段数码管的 7 位输出 端口的输出数据 六位变量 led out 用作位选信号是 初始值为 1 二进制的 000001 每左移一次 选中高一位的数据显示 当发生溢出时 对 led out 再次赋值 1 二进制的 000001 8 位变量 delay 用作延时信号 3 3 各个模块的的仿真 各个模块的的仿真 各个模块是独立的 所以每个模块可以单独设计并验证 3 13 1 10001000 进制计数器进制计数器 仿真结果如图所示 3 1 仿真时钟的周期为 40ns 得到的输出端 CQ1000 的周期为 40us 因为 1000 进制计数器的 功能就是将输入信号的频率频率降低为原来的 1 1000 即周期为原来的 1000 倍 所以这 一模块符合要求 3 23 2 50KHz50KHz 分频器分频器 仿真结果如图所示 电子信息科学与技术 2006 级 洪晓宁 3 2 仿真时钟周期为 40ns 输出端 OUT 1KHz 输出为 2ms 因为这一模块的功能 是将输入信号的频率降低为原来的 1 50000 即周期为原来的 50000 倍 所以这一模 块符合要求 3 33 3 1414 位锁存器 位锁存器 DFF14biteDFF14bite 仿真结果如图所示 计算机信息工程学院 3 3 由输入和输出对比可知 输出的数据都是以输入的数据在时钟跳变的时候的值 这一模 块的功能就是在发生时钟跳变时将输入端的数据送到输出端 当时钟没发生变化时保持 原来的值不变 用做锁存器 所以这一模块符合要求 3 43 4 1414 位计数器 位计数器 CNT14biteCNT14bite 如图 3 5 所示 当时钟信号每得到一个高电平时 Q 13 0 就会自加 1 但是 在得 到的数据里 有的时候会出现毛刺 所以在输出的时候就加上了一个 14 位的缓冲级 14 位的锁存器 因为在设计时就已经用 Q 13 0 的四位二进制数表示一位十进制数 所以 仿真的结果表明这一模块符合要求 电子信息科学与技术 2006 级 洪晓宁 3 4 3 53 5 系统顶层仿真 系统顶层仿真 仿真结果如图所示 3 5 L1 L6 为位选信号 由波形可知 L1 L6 是逐一显示的 由于测试的时间不是很长 所以 所测的值为零 开始输出的信号为 0000000 即显示为零 计算机信息工程学院 总结总结 经过这段时间的学习和写作 论文基本完成 从最初的茫然 到慢慢的进入状态 再到对思路逐渐的清晰 整个写作过程难以用语言来表达 几个月的忙碌 却也没做成 什么 虽然能将电路用 Verilog HDL 写出 编译成功并在 Quartus2 上仿真完成 但用 伟福 EDA6000 SOPC DSP EDA 通用实验开发系统试过 由于对其的使用不是很了解 最终 无法验证所画电路是否正确 电子信息科学与技术 2006 级 洪晓宁 致谢致谢 四年的读书生活在这个夏天即将划上一个句号 对于我的人生这只是一个逗号 我 将面对人生的另一次征程 四年的学习生活在老师和同学的陪伴 父母亲人和朋友的支 持下走了下来 在论文即将付梓之际 思绪万千 心情久久不能平静 感谢培养教育我的贵州民族学院 诚挚的感谢我的论文指导老师杨老师 他在忙碌 的教学工作中挤出时间来审查 修改我的论文 还有教过我的所有老师们 你们严谨细 致 一丝不苟的作风一直是我工作 学习中的榜样 他们循循善诱的教导和不拘一格的 思路给予我无尽的启迪 感谢四年中陪伴在我身边的同学 朋友 感谢他们为我提出的 有益的建议和意见 有了他们的支持 鼓励和帮助 我才能充实的度过了四年的学习生 活 同窗之间的友谊永远长存 最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学 以及在设计中 被我引用或参考的论著的作者 计算机信息工程学院 参考文献 参考文献 1 夏宇闻 Verilog HDL 数字系统设计 北京航空航天大学出版社 2 王诚 吴继华 范丽珍 薛宁 薛小刚 Altera FPGA CPLD 设计 人民邮电出版社 3 王建校 危建国 SOPC 设计基础与实践 西安电子科技大学出版社 4 杨守良 基于 FPGA 的数字频率计的设计和实现 5 张兆莉 蔡永泉 王珏 基于 FPGA 的数字频率计的设计和实现 6 赵雅兴 FPGA 原理及应用 天津大学出版社 7 美 Steve Kilts 孟宪元 译 高级 FPFGA 设计结构 实现和优化 机械工 业出版社 8 孟宪元 钱伟康 FPGA 嵌入式系统设计 电子工业出版社 9 宋万杰等 CPLD 技术及应用 西安电子科技大学出版社 10 徐志军等 大规模可编程逻辑器件及其应用 电子科技大学出版社 电子信息科学与技术 2006 级 洪晓宁 符录符录 Verilog HDL 语言 编程代码如下 CNT1000 1000 进制计数器 module CNT1000 v CLK q c CQ1000 input CLK 时钟输入 output q c output CQ1000 输出 reg CQ1000 reg q c reg 15 0 j always posedge CLK begin if j 16 h3e7 一千的 16 进制 begin j 16 h0 CQ1000 1 b0 q c 1 b0 end else begin j j 16 h1 CQ1000 1 b1 q c 1 b1 if j 125 0 q c 1 b0 CQ1000 输出的 8 倍频率 此次设计中没有用到 end end endmodule 计算机信息工程学院 CNT50000 50KHz 分频器 module CNT50000 CLK OUT 1kHz input CLK output reg OUT 1kHz reg 16 0 j always posedge CLK begin if j 17 hC34F 50KHz 分频的 16 进制数为 C34F begin j 17 h0 OUT 1kHz 1 b0 end else begin j j 1 b1 OUT 1kHz 1 b1 end end endmodule DFF14bite 14 位锁存器 module DFF14BITE D Q CLK input 13 0 D input CLK output reg 13 0 Q always posedge CLK begin 电子信息科学与技术 2006 级 洪晓宁 Q 0 D 0 Q 1 D 1 Q 2 D 2 Q 3 D 3 Q 4 D 4 Q 5 D 5 Q 6 D 6 Q 7 D 7 Q 8 D 8 Q 9 D 9 Q 10 D 10 Q 11 D 11 Q 12 D 12 Q 13 D 13 end endmodule CNT14bite 14 位计数器 module CNT14BITE ENABL CLR CLK Q input ENABL CLR CLK output reg 13 0 Q reg 15 0 cnt reg 1 0 Q H2 reg 3 0 Q H1 reg 3 0 Q L2 reg 3 0 Q L1 计算机信息工程学院 always posedge CLK if ENABL 1 if cnt 3999 begin cnt 16 h0 end end else begin cnt 16 h0 end always cnt begin Q H2 cnt 8 d1000 对计数的值的处理 Q H1 cnt Q H2 1000 8 d100 Q L2 cnt Q H2 1000 Q H1 100 8 d10 Q L1 cnt 8 d10 Q 0 Q L1 0 Q 1 Q L1 1 Q 2 Q L1 2 Q 3 Q L1 3 Q 4 Q L2 0 Q 5 Q L2 1 Q 6 Q L2 2 Q 7 Q L2 3 Q 8 Q H1 0 Q 9 Q H1 1 Q 10 Q H1 2 电子信息科学与技术 2006 级 洪晓宁 Q 11 Q H1 3 Q 12 Q H2 0 Q 13 Q H2 1 end endmodule DISPLY 数码管动态显示 module DIS CLK LED1Q 0 LED1Q 1 LED1Q 2 LED1Q 3 LED2Q 0 LED2Q 1 LED2Q 2 LED2Q 3 LED3Q 0 LED3Q 1 LED3Q 2 LED3Q 3 LED4Q 0 LED4Q 1 LED4Q 2 LED4Q 3 LED5Q 0 LED5Q 1 LED5Q 2 LED5Q 3 LED6Q 0 LED6Q 1 LED6Q 2 LED6Q 3 LED1 LED2 LED3 LED4 LED5 LED6 SEG A SEG B SEG C SEG D SEG E SEG F SEG G SEG DP input CLK input wire LED1Q 0 LED1Q 1 LED1Q 2 LED1Q 3 LED2Q 0 LED2Q 1 LED2Q 2 LED2Q 3 LED3Q 0 LED3Q 1 LED3Q 2 LED3Q 3 LED4Q 0 LED4Q 1 LED4Q 2 LED4Q 3 LED5Q 0 LED5Q 1 LED5Q 2 LED5Q 3 LED6Q 0 LED6Q 1 LED6Q 2 LED6Q 3 output reg LED1 LED2 LED3 LED4 LED5 LED6 SEG A SEG B SEG C SEG D SEG E SEG F SEG G SEG DP 计算机信息工程学院 wire 3 0 LED1Q LED2Q LED3Q LED4Q LED5Q LED6Q reg 3 0 led xx 段选 reg 6 0 seg out 数据输出 reg 1 6 led out 位选 reg 7 0 delay 延时 assign LED1Q 0 LED1Q 0 LED1Q 1 LED1Q 1 assign LED1Q 2 LED1Q 2 LED1Q 3 LED1Q 3 assign LED2Q 0 LED2Q 0 LED2Q 1 LED2Q 1 assign LED2Q 2 LED2Q 2 LED2Q 3 LED2Q 3 assign LED3Q 0 LED3Q 0 LED3Q 1 LED3Q 1 assign LED3Q 2 LED3Q 2 LED3Q 3 LED3Q 3 assign LED4Q 0 LED4Q 0 LED4Q 1 LED4Q 1 assign LED4Q 2 LED4Q 2 LED4Q 3 LED4Q 3 assign LED5Q 0 LED5Q 0 LED5Q 1 LED5Q 1 assign LED5Q 2 LED5Q 2 LED5Q 3 LED5Q 3 assign LED6Q 0 LED6Q 0 LED6Q 1 LED6Q 1 as

温馨提示

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

评论

0/150

提交评论