首页 毕业设计(论文)-基于FPGA的等精度频率计设计【毕业论文】

毕业设计(论文)-基于FPGA的等精度频率计设计【毕业论文】

举报
开通vip

毕业设计(论文)-基于FPGA的等精度频率计设计【毕业论文】毕业设计(论文)-基于FPGA的等精度频率计设计【毕业论文】 毕业设计(论文)-基于FPGA的等精度频率计设计【毕 业论文】 基于FPGA的等精度频率计设计 摘 要 频率计是实验室和科研生产中最常用的测量仪器之一本文介绍了一种基于 FPGA芯片设计的等精度频率计对传统的等精度测量方法进行了改进采用SOPC设 计技术和基于NIOS II嵌入式软核处理器的系统设计方案通过在FPGA芯片上配 置NIOS II软核处理器进行数据运算处理利用液晶显示器对测量的频率进行实时 显示可读性好整个系统在一片FPGA芯片上实现...

毕业设计(论文)-基于FPGA的等精度频率计设计【毕业论文】
毕业设计( 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 )-基于FPGA的等精度频率计设计【 毕业论文 毕业论文答辩ppt模板下载毕业论文ppt模板下载毕业论文ppt下载关于药学专业毕业论文临床本科毕业论文下载 】 毕业设计(论文)-基于FPGA的等精度频率计设计【毕 业论文】 基于FPGA的等精度频率计设计 摘 要 频率计是实验室和科研生产中最常用的测量仪器之一本文介绍了一种基于 FPGA芯片设计的等精度频率计对传统的等精度测量方法进行了改进采用SOPC设 计技术和基于NIOS II嵌入式软核处理器的系统设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 通过在FPGA芯片上配 置NIOS II软核处理器进行数据运算处理利用液晶显示器对测量的频率进行实时 显示可读性好整个系统在一片FPGA芯片上实现系统测量精度高实时性好具有灵 活的现场可更改性 本频率测量仪是以Altera公司生产的CycloneII系列EP2C35F672C6器件为 核心实现高精度计数功能整个电路采用模块化设计调试制作方便经过仿真并下 载验证能够实现等精度测频功能频率测量范围为1HZ--200MHZ 关键词等精度频率计FPGA SOPC NiosII Design of Equal Precision Frequency Meter Based on FPGA ABSTRACT Frequency meter is one of the most commonly used measuring instruments which can be used in laboratory scientific research and production An equal precision frequency meter designed with FPGA is introduced in this article It adopts Very-High-Speed Integrated Circuit HardwareDescription Language to implement function module in frequency meter base on traditional frequency measurement SOPC designing technique and system designing plan based on Nios II soft core CPU are used in the design It also adopts Niosll soft core CPU as data processing unit uses LCD 1602 equipment to display frequency in real- time The whole system is in the realization of a FPGA chip So it has a high- precision measurement real- time and flexible change of scene The frequency meter is based on CycloneII EP2C35F672C6 Altera device as the core to achieve high-precision counting Because of the modular design of this circuit it is facilitate to debug After the simulation and downloads the confirmation can realize equal-precision frequency measurement function Frequency measurement scope is 1--200MHZ KEY WORDSequal precision measurement frequency meter FPGA SOPC NiosII 目 录 摘 要 I ABSTRACT II 1 绪论 1 11 课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 提出的背景 1 12 课题选择意义 1 2 EDA及其开发平台简介 3 21 EDA的具体开发流程 3 com入 3 com 3 com 适配 4 com 仿真 4 com 编程下载和硬件测试 4 22简介NIOS II IDE 4 com理器 5 com 编辑器和编译器 6 com 6 com程器 7 3 课题方案选择 8 31 频率测量方案选择 8 com 直接测频法 8 com 间接测频法 8 com 等精度测频 9 32 基于单片机的测频方案 10 33 基于FPGA的测频方案 11 4 基于FPGA等精度频率计的单元模块设计 13 41 放大整形模块设计 13 42 标准信号产生模块设计 14 43 FPGA芯片模块设计 14 com D型触发器的设计 15 com 计数器的设计 16 com 锁存器的设计 19 com NIOS II 软核CPU的设计 20 44 LCD液晶显示模块 23 5 系统综合及其测试 24 51 放大整形模块 24 52等精度计数模块 24 53 整体系统 25 54 软件编写与测试 27 55 系统的扩展 33 com 分频器设计 33 com 选择器设计 35 6 总结 38 致 谢 39 参 考 文 献 40 1 绪论 11 课题提出的背景 现代数字系统的设计离不开各种先进的仪器比如数字示波器逻辑分析仪频谱分析仪信号发生器数字频率计等数字频率计是一种及其常用的工具用于检测输入周期信号的频率随着大规模集成电路的发展很多芯片内部也集成了数字测频单元大大增强了芯片处理数字信号的能力数字频率计广泛应用于航天电子测控等领域例如在传统的生产制造企业中频率计被广泛的应用在产线的生产测试中频率计能够快速的捕捉到晶体振荡器输出频率的变化用户通过使用频率计能够迅速的发现有故障的晶振产品确保产品质量在计量实验室中频率计被用来对各种电子测量设备的本地振荡器进行校准在无线通讯测试中频率计既可以被用来对无线通讯基站的主时钟进行校准还可以被用来对无线电台的跳频信号和频率调制信号进行分析采用等精度频率测量方法具有测量精度保持恒定的特点 数字化是电子设计的必由之路EDA技术即以计算机为工具EDA是Electronic Design Automation电子设计自动化的简称它是随着集成电路和计算机技术的飞速发展应运而生的一种高级快速有效的电子设计自动化工具在 Quartus II软件平台上根据硬件描述语言VHDL描述的设计文件自动地完成逻辑编译化简分割综合及优化布局布线仿真直至对于特定目标芯片的适配编译逻辑映射和编程下载等工作设计者只要利用软件完成对硬件功能的描述在EDA工具的帮助下和应用相应的PLD器件就可以得到最后的设计结果尽管目标器件是硬件但整个设计是软件控制流程由于FPGA是纯硬件结构具有较强的抗干扰能力 NIOS II是Altera针对其FPGA设计的嵌入式软核处理器它只占芯片内部很少的一部分逻辑单元和存储资源成本很低具有上百兆的性能灵活的自定义指令 集和自定义硬件加速单元以及友好的图形化开发环境NIOS II IDE 随着微电子技术和计算机技术的发展可编程逻辑器件EDA技术SOPC等新概念和新技术层出不穷新技术的应用迅速渗透到电子通信信息汽车制造等领域有力的推动了社会生产力的发展和社会信息化程度的提高 12 课题选择意义 基于FPGA的等精度频率计有运算速度快系统较稳定测量范围广等特点其中主要应用到EDA 电子设计自动化 技术伴随着集成电路技术的发展EDA逐渐成为重要的设计手段已经广泛应用于模拟与数字电路系统等许多领域EDA是一种实现电系统或电子产品自动化设计的技术它与电子技术微电子技术的发展密切相关它吸收了计算机科学领域的大多数最新研究成果以高性能的计算机为工作平台促进了工程发展 本设计利用FPGA进行测频计数单片机实施控制实现频率计的设计过程该频率计利用等精度的设计方法克服了基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低的缺点等精度的测量方法不但具有较高的测量精度而且在整个测频区域内保持恒定的测试精度并采用NIOS II控制液晶显示器显示测量频率 2 EDA及其开发平台简介 21 EDA的具体开发流程 基于FPGA器件实现数字系统的流程如图2-1所示 图2-1 基于FPGACPLD的EDA 图2-2 VHDL仿真流程图 com 编程下载和硬件测试 把适配后生成的编程文件装入到PLD器件中的过程称为下载通常将对基于EEPROM工艺的非易失结构PLD器件的下载称为编程Program而将基于SRAM工艺结构的PLD器件的下载称为配置Configure最常用的编程方式有两种分别是在系统编程ISPIn System Programmable和用专用的编程器编程 22简介NIOS II IDE NIOS II集成开发环境 IDE 是NIOS II系列嵌入式处理器的基本软件开发工具所有软件开发任务都可以NIOS II IDE下完成包括编辑编译和调试程序NIOS II IDE提供了一个统一的开发平台用于所有NIOS II处理器系统仅仅通过一台PC机一片Altera的FPGA以及一根JTAG下载电缆软件开发人员就能够往NIOS II 处理器系统写入程序以及和NIOS II处理器系统进行通讯 NIOS II IDE基于开放式的可扩展Eclipse IDE project工程以及Eclipse CC 开发工具CDTNIOS II IDE为软件开发提供四个主要的功能分别是工程管理器编辑器和编译器调试器和闪存编程器 com理器 NIOS II IDE提供多个工程管理任务加快嵌入式应用程序的开发进度 NIOS II IDE推出了一个新工程向导如下图2-3所示用于自动建立CC应用程序工程和系统库工程采用新工程向导能够轻松地在Nios II IDE中创建新工程 图2-3 Nios II IDE新工程向导 除了工程创建向导N II IDE还以工程模板的形式提供了软件代码实例帮助软件工程师尽可能快速地推出可运行的系统 每个模板包括一系列软件文件和工程设置通过覆盖工程目录下的代码或者导入工程文件的方式开发人员能够将他们自己的源代码添加到工程中图描述了 一些可用的软件工程模板 图2软件工程模板NIOS II IDE使开发人员通过使用软件组件能够快速地定制系统软件组件或者称为系统软件为开发人员提供了一个简单的方式来轻松地为特定目标硬件配置他们的系统组件包括NIOS II运行库或者称为硬件抽象层HAL IP TCPIP 库 - NIOS II 版本MicroCOS-II实时操作系统 RTOS Altera压缩文件系统Altera NIOS II IDE提供了一个全功能的源代码编辑器和CC编译器 NIOS II IDE文本编辑器是一个成熟的全功能源文件编辑器其功能包括语法高亮显示代码辅助代码协助完成全面的搜索工具文件管理广泛的在线帮助主题和教程引入辅助快速定位自动纠错内置调试 NIOS II IDE为GCC编译器提供了一个图形化用户界面NIOS II IDE编译环境使设计Altera的NIOS II处理器软件更容易它提供了一个易用的按钮式流程同时允许开发人员手工设置高级编译选项 NIOS II IDE编译环境自动地生成一个基于用户特定系统配置SOPC Builder生成的PTF文件的makefileNIOS II IDE中编译链接设置的任何改变都会自动映射到这个自动生成的makefile中这些设置可包括生成存储器初始化文件MIFDATHEXprofile总结文件的相关选项 com NIOS II IDE包含一个强大的在GNU调试器基础之上的软件调试器,GDB该调试器提供了许多基本调试功能以及一些在低成本处理器开发套件中不会经常用到的高级调试功能 NIOS II IDE调试器包含如下的基本调试功能运行控制调用堆栈查看软件断点反汇编代码查看调试信息查看指令集仿真器 除了上述基本调试功能之外NIOS II IDE调试器还支持以下高级调试功能硬件断点调试ROM或闪存中的代码数据触发指令跟踪 NIOS II IDE调试器通过JTAG调试模块和目标硬件相连另外支持片外跟踪功能便于和第三方跟踪探测工具结合使用如FS2公司提供的用于NIOS II处理器的in-target系统分析仪ISA-NIOS 图5 调试信息查看寄存器显示 许多使用N II处理器的设计都在单板上采用了闪存可以用来存储FPGA配置数据或N II编程数据N II IDE提供了一个方便的闪存编程方法任何连接到FPGA的兼容通用闪存接口CFI的闪存器件都可以通过N II IDE闪存编程器来烧结除CFI闪存之外N II IDE闪存编程器能够对连接到FPGA的任何Altera串行配置器件进行编程 闪存编程器管理多种数据表编程到闪存中的通用内容类型内容类型 说明 系统固定软件 烧结到闪存中的软件用于N II处理器复位时从闪存中导入启动程序 FPGA配置 如果使用一个配置控制器例如用在Nios开发板中的配置控制器FPGA能够在上电复位时从闪存获取配置数据 任意二进制数据 开发人员想存储到闪存内的任何二进制数据例如图形音频等 N II IDE闪存编程器已做了预先配置能够用于N II开发套件中的所有单板而且能够轻易地引入到用户硬件中 图3-1 频率测量原理图 按照频率的定义即单位时间内周期信号的发生次数图3-1中晶振提供了测量的时间基准分频后通过控制电路去开启与关闭时间闸门闸门开启时计数器开始计数闸门关闭停止计数若闸门开放时间为T计数值为N则被测频率为 f NT 3-1 用这种频率测量原理对于频率较低的被测信号来说存在着测量实时性和测量精度之间的矛盾例如若被测信号为10Hz精度要求为001则最短闸门时间为 T Nf 1000s 3-2 这样的测量周期根本是不可能接受的可见频率测量法不适用于低频信号的测量 com 间接测频法 间接测频法即为周期测频法周期测量原理和频率测量基本结构是一样的只是把晶振和被测信号位置互换了一下如图3-2所示T NTrM计数值N和被测信号的周期成正比N反映了M个信号周期的平均值利用周期测量法在一定信号频率范围内通过调节分频系数M可以较好地解决测量数度与实时性的矛盾但是对于高频信号周期法就需要很大的分频系数M增加了硬件及软件的复杂性不宜采用由此可见对于传统频率测量方法若是要达到高精度的要求必须对被测频率分段测量对于较低频率用周期测量对较高频率用频率法测量 图3-2 周期测量原理图 com 等精度测频 等精度测频的方法具体是采用频率准确的高频信号作为标准频率信号保证测量的闸门时间为被测信号的整数倍并在闸门时间内同时对标准信号脉冲和被测信号脉冲进行计数实现整个频率测量范围内的测量精度相等当标准信号频率很高闸门时间足够长时可实现高精度频率测量 测量精度与闸门时间的关系分析如下 如图3-3所示闸门控制信号CL fx fs×NxNs 3-3 图3-3 等精度测频原理示意图 对标准信号所产生的计时误差为 ?t Td-Ns×Ts 3-4 由于?t最大为一个标准信号的周期即?t?Ts因此 fx Nx Ns×Ts Nx Td-?t 3-5 而被测信号频率准确值fx0 NxTd则频率测量的相对误差为 δ fx-fx0fx0 ?t Td-?t δm Ts Td-Ts ?TsTd 3-7 由最后的表达式可知当频率测量的最大误差由标准时钟信号的周期Ts和频率计数的闸门时间Td决定Ts越小Td越大测量误差越小即测量精度越高在整个频率测量范围内精度恒定实现了等精度测量当标准信号选取准确的50MHz信号源时Ts 10ns只要选取Td?10ms就可使测量的最大相对误差?10-6即达到百万分之一的测量精度测量闸门时间Td的选取除满足δm式的最大测量误差外还应保证大于一个被测信号周期Tx 测量频率的相对误差与被测信号频率的大小无关仅与闸门时间和标准信号频率有关即实现了整个测试频段的等精度测量闸门时间越长标准频率越高测频的相对误差就越小标准频率可由稳定度好精度高的高频晶体振荡器产生在保证测量精度不变的前提下提高标准信号频率可使闸门时间缩短即提高测试速度表 3-1所列为在10MHz时闸门时间与最大允许误差的对应关系 表3-1 闸门与精度的关系 闸门时间s 精度 001 10-5 01 10-6 1 10-7 10 10-8 32 基于单片机的测频方案 采用单片机AT89C51作为系统控制核心单元辅以适当的软硬件资源完成以单片机为核心的等精度频率计的软硬件设计及系统实现系统如图3-4所示 图3-4 基于单片机的频率测量计组成框图 前置放大器完成信号放大电平平移的任务被测的交流信号D被放大平移成脉冲直流信号E再经74HC14施密特反相器整形成矩形脉冲与门74LS08作为计数闸门方波信号被送到与门的一个输入端与门的另一个输入端连接1s门控信号实际制作中连接AT89C51的P31当P31脚为高电平时闸门打开低电平时闸门关闭P31脚电平的高低可通过指令加以控制闸门开时矩形脉冲送到74LS393进行74LS393是双4位计数器在这里接成级联方式组成一个8位二进制计数器同时分频比为256的分频器采用74LS393的理由是AT89C51内有2个16位的二进制加法计数器一个用作定时器另一个用作脉冲计数16位二进制的最大计数为216-1 65535不能满足精确测量的需要虽然可以通过软件计数的方法来提高分辨率但是AT89C51内置计数器的计数速率受500KHz12MHz时钟的限制所以意义并不大74LS393的最大计数速率可达35MHz与AT89C51内的一个定时器组成24位的计数器其最大计数值为224-1 16777215分辨率大大提高本电路中没有采用十进制计数因为AT89C51内置计数器只能进行二进制加法计数计数结束后再进行二进制转十进制运算然后将结果送到显示缓冲区进行显示 33 基于FPGA的测频方案 在较高精度和高速测量的要求下必须采用较高的标准频率信号而单片机受本身时钟频率和若干指令运算的限制测频速度较慢无法满足高速高精度的测频要求 采用高集成度高速的FPGA芯片为实现高速高精度的测频提供了保证 随着EDA电子设计自动化技术和微电子技术的进步FPGA的时钟延迟可达到ns级结合其并行工作方式在超高速实时测控方面有非常广阔的应用前景并且FPGA具有高集成度高可靠性几乎可将整个设计系统下载于同一芯片中实现所谓片上系统从而大大缩小其体积具有可编程型和实现方案容易改动的特点有利于产品的研制和后期升级 整个测频系统分为多个功能模块如信号同步输入放大整形标准信号FPGA芯片液晶显示等模块除标准信号放大整形液晶显示模块外其他模块可集成于FPGA芯片中并且各逻辑模块用硬件描述语言VHDL来描述其功能然后通过EDA开发平台如Quartus?对设计文件自动地完成逻辑编译逻辑化简综合及优化逻辑布局布线逻辑仿真最后对FPAG芯片进行编程以实现系统的设计要求其系统组成框图如图3-5所示 图3-5 基于FPGA的频率测量计的组成框图 基于单片机的频率测量计设计方案主要是以单片机为基础原理简单但由于单片机自身速度问题测量的范围较小 基于FPGA的频率测量计设计方案主要是以FPGA为主使用其中的Nios II核对采集的数据进行处理并由LCD输出测得的频率以及实现对FPGA内部各个模块的控制 综上所述并根据设计要求测频范围为1Hz至200MHz单片机不能达到此要求 故采用FPGA来完成并综合其他因素决定采用基于FPGA的等精度频率测量方案 4 基于FPGA等精度频率计的单元模块设计 基于FPGA等精度频率计设计的单元模块包括放大整形模块标准信号产生模块FPGA芯片模块液晶显示模块 41 放大整形模块设计 放大整形电路由2N2222 实际中可用常见的9018 与74F14等组成其中2N2222组成放大电路将输入频率为Fx的周期信号如正弦波三角波等进行放大74F14施密特触发器对放大器的输出信号进行整形使之成为矩形脉冲 施密特触发器是一种特殊的门电路与普通的门电路不同施密特触发器有两个阈值电压分别称为正向阈值电压和负向阈值电压在输入信号从低电平上升到高电平的过程中使电路状态发生变化的输入电压称为正向阈值电压在输入信号从高电平下降到低电平的过程中使电路状态发生变化的输入电压称为负向阈值电压 利用施密特触发器状态转换过程中的正反馈作用可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号输入的信号只要幅度大于vt即可在施密特触发器的输出端得到同等频率的矩形脉冲信号 当输入电压由低向高增加到达V时输出电压发生突变而输入电压Vi由高变低到达V-输出电压发生突变因而出现输出电压变化滞后的现象可以看出对于要求一定延迟启动的电路它是特别适用的 图4-1即为信号通过施密特触发器后的波形变换情况 图4-1 施密特触发器的波形变换 待测信号经过时由D1D2两个二极管进行限幅以免电压过大而烧毁信号经过 2N2222进行放大由74F14对其进行整形产生出的波形为标准方波方便FPGA进行计数其连线如图4-2所示 图4-2 放大整形电路图 42 标准信号产生模块设计 本设计采用的是Altera公司生产的DE2开发板在开发板上有50MHZ的晶振我们只需将晶振的引脚与我们设计的FPGA芯片对应配置就可以了 43 FPGA芯片模块设计 本设计采用的是Altera公司生产的CycloneII系列EP2C35F672C6芯片为核心器件实现高精度计数功能Cyclone II器件Cyclone而言包含了许多新的特性如嵌入存储器嵌入乘法器PLL和低成本的封装EP2C35系列芯片有33216个逻辑单元4个锁相环475个IO管脚和205个差分通道因此功能十分强大 在FPGA芯片中主要有以下几个模块构成D型触发器2个32位计数器2个锁存器NIOS II软核处理器等精度测频原理的预置门限信号可由CPU发出连接到D型触发器的输入端计数器1和计数器2是两个32位计数器标准频率信号FS从计数器1的计数输入端输入经整形后的被测信号FX从计数器2的计数输入端输入计数器中的EN输入端与D型触发器的输出端相连当预置门限信号为高电平 门限时间开始 时同时被测信号的上升沿到来时D型触发器工作将输出端置1同时启动两个计数器开始计数当预置门限信号为低电平 门限时间结束 时同时被测信号的上升沿到来时D触发器工作将输出端置0同时关闭计数器的计数计数器1及计数器2所计之数通过锁存器进入CPU经过运算处理后送给显示模块进行数字显示即可FPGA芯片内部设计框图如下图4-3所示 图4-3 FPGA内部设计框图 com D型触发器的设计 本设计采用的是边沿触发的D 触发器电平触发的主从触发器工作时必须在正跳沿前加入输入信号如果在CP 高电平期间输入端出现干扰信号那么就有可能使触发器的状态出错而边沿触发器允许在CP 触发沿来到前一瞬间加入输入信号这样输入端受干扰的时间大大缩短受干扰的可能性就降低了边沿D触发器也称为维持-阻塞边沿D触发器 D型触发器在设计中的作用十分重大它是等精度计数的核心当输入D置1时输出Q不是马上置1而是时钟脉冲上升沿到来时才跳变这时计数器才开始计数当然在输入D置0时输出Q不是马上置0而是时钟脉冲上升沿到来时才置0这里的时钟脉冲就是采用被测信号如此一来就可以保证计数器对被测信号周期的测量是周期的整数倍了大大减小了误差 在使用EDA技术对FPGA内部数字电路的设计中最大的优点就是可以根据设计的需要定制相应的器件对于某些不用的引脚可以不用设计例如对于D型触发器而言一般都有清零和置数端但在本设计中清零与置数端是没有用的所以我们便可不用将它设计进来故D型触发器的VHDL程序如下 --dvhd LIBRARY IEEE USE IEEESTD_LOGIC_1164ALL ENTITY d IS PORT d in std_logic clk in std_logic n out std_logic END d ARCHITECTURE rt3 of d IS BEGIN PROCESS clk BEGIN IF clkevent and clk 1 THEN q d qn NOT d END IF END PROCESS 本设计最终采用的是原理图输入的方法将功能写入FPGA芯片的故需要对每一个设计好的模块生成模块文件D型触发器的模块文件如下图4-4 0 图4-4 D型触发器的模块文件 com 计数器的设计 计数是一种最简单基本的运算计数器就是实现这种运算的逻辑电路计数器在数字系统中主要是对脉冲的个数进行计数以实现测量计数和控制的功能同时兼有分频功能计数器是由基本的计数单元和一些控制门所组成计数单元则由一系列具有存储信息功能的各类触发器构成这些触发器有RS触发器T触发器D触发器及JK触发器等计数器在数字系统中应用广泛如在电子计算机的控制器中对 指令地址进行计数以便顺序取出下一条指令在运算器中作乘法除法运算时记下加法减法次数又如在数字仪器中对脉冲的计数等等计数器可以用来显示产品的工作状态一般来说主要是用来表示产品已经完成了多少份的折页配页工作它主要的指标在于计数器的位数常见的有3位和4位的很显然3位数的计数器最大可以显示到9994位数的最大可以显示到9999本设计对计数器的要求比较高因为要对200MHZ的信号进行计数故采用32位的计数器其计数最大值为4294967296足以达到设计要求 在Quartus II中使用文本输入方法定制一个满足要求的32位计数器新建一个工程然后新建一个VHDL文件输入程序进行调试仿真本设计需要两个32位计数器分别对标准信号和被测信号进行计数 标准信号计数器的VHDL程序如下 --c_countervhd LIBRARY IEEE USE IEEESTD_LOGIC_1164ALL USE IEEESTD_LOGIC_UNSIGNEDALL USE IEEESTD_LOGIC_ARITHALL ENTITY c_counter IS PORT clk in std_logic clr in std_logic c_en in std_logic c_cnt buffer std_logic_vector 31 downto 0 END c_counter ARCHITECTURE rt1 OF c_counter IS BEGIN PROCESS clrclk BEGIN IF clr 1 THEN c_cnt OTHERS 0 ELSIF rising_edge clk THEN IF c_en 1 THEN c_cnt c_cnt1 END IF END IF END PROCESS END ARCHITECTURE 在计数器完成计数后需要将计数结果送入锁存器进行锁存故在设计被测信 号计数器的时候将锁存器的使能控制信号over添加了进来被测信号计数器的输 出端over与锁存器的使能端相连这样就能很好的完成计数锁存功能了被测信号 计数器的VHDL程序如下 --s_countervhd LIBRARY IEEE USE IEEESTD_LOGIC_1164ALL USE IEEESTD_LOGIC_UNSIGNEDALL USE IEEESTD_LOGIC_ARITHALL ENTITY s_counter IS PORT s_en in std_logic clr in std_logic sign in std_logic over out std_logic s_cnt buffer std_logic_vector 31 downto 0 END s_counter ARCHITECTURE rt2 OF s_counter IS signal TEMP std_logic 0 BEGIN PROCESS clrsign BEGIN IF clr 1 THEN s_cnt OTHERS 0 ELSIF rising_edge sign THEN IF s_en 1 THEN s_cnt s_cnt1 END IF END IF END PROCESS PROCESS s_en BEGIN IF falling_edge s_en THEN IF s_en 0 then TEMP 1 END IF END IF END PROCESS over TEMP END ARCHITECTURE 经过编译后生成模块文件标准信号计数器的模块文件如下图4-5被测信号计数器的模块文件如下图4-6 图4-5 标准信号计数器的模块文件 图4-6 被测信号计数器的模块文件 com 锁存器的设计 锁存器是一种对脉冲电平敏感的存储单元电路它们可以在特定输入脉冲电平作用下改变状态锁存就是把信号暂存以维持某种电平状态锁存器的最主要作用是缓存其次完成高速的控制其与慢速的外设的不同步问题再其次是解决驱动的问题最后是解决一个 IO 口既能输出也能输入的问题 本设计主要是使用其缓存的作用当计数器完成计数后将计数结果先进行锁 存然后再启动CPU进行读数这样就可以保证CPU在读数时不受影响这里使用的是 1个2路32位的锁存器锁存器的VHDL程序如下 LIBRARY IEEE USE IEEESTD_LOGIC_1164ALL ENTITY ffd IS PORT CLR in std_logic LOAD in std_logic DATA_ENout std_logic DATA1_IN in std_logic_vector 31 downto 0 DATA2_IN in std_logic_vector 31 downto 0 DATA1_OUT out std_logic_vector 31 downto 0 DATA2_OUT out std_logic_vector 31 downto 0 END ENTITY ARCHITECTURE ffd_arch OF ffd IS BEGIN PROCESS CLRLOAD BEGIN IF CLR 1 THEN DATA1_OUT others 0 DATA2_OUT others 0 DATA_EN 0 ELSIF LOAD 1 THEN DATA1_OUT DATA1_IN DATA2_OUT DATA2_IN DATA_EN 1 END IF END PROCESS END ARCHITECTURE 经过编译后生成模块文件锁存器的模块文件如下图4-7 图4-7 锁存器的模块文件 com NIOS II 软核CPU的设计 在本设计中还用到了NIOS II软核处理器NIOS II是Altera公司在NIOS的基础上于2004年发布的嵌入式软核处理器所谓软核是指用HDL文本形式提交给用户他经过RTL级设计优化和功能验证但其中不含任何具体的物理信息NIOS II是采用流水线技术和哈佛结构的通用RISC Refined Instruction Set Computer精简指令集计算机 一个NIOS II处理器系统由NIOS II CPU和一系列的外设组成NIOS II系统包括NIOS II CPU片内外设片内存储器和片外外设他们的接口都在Altera公司的芯片上实现相当于在单片机实现1台计算机或1个微控制器所有的NIOS II处理器系统使用统一的指令集和编程方式NIOS?的处理器实例如图4-8所示 图4-8 NIOS II的处理器实例 ARM是常用的嵌入式处理器之一在设计SOC时常把ARM作为硬核植入到FPGA 中硬核具有成本低速度快等优点但是将IP硬核直接植入FPGA的解决力案存在以下不足由于硬核是预先植入的设计者无法相据实际需要改变处理器的结构无法根据实际设计需要在同一FPGA中集成多个处理器无法根据需要裁减处理器硬件资源以降低FPGA成本等 利用软核处理器能有效地弥补上述不足在NIOS?中还可以添加用户自定义的指令在开发工具的完备性方面NIOS?也具有很大的优势Altera不仅提供强大的HAL系统库支持还提供嵌入式操作系统核TCP,IP协议栈的支持 NIOS II嵌入式微处理器模块是整个系统控制器的核心它相当于单片机系统控制器中的CPU是所有信号的采集处理及输出的控制中心NIOS II嵌入式微处理器模块的设计需要借助于Altera公司提供的系统级开发工具Quartus II中的SOPC Builder完成 NIOS II软核接收了来自硬件部分的数据后还需要进行相应的数据处理才能够满足测频系统控制器对测量频率的要求进而才能送LCD显示 打开Quartus II新建一个工程在Tools的下拉菜单中打开SOPC Builder在里面定制自己所需的软核CPUFPGA里的NIOS II软核定制主要包括NIOS II处理器LCD控制器模块存储器控制器模块控制总线接口模块及数据总线接口模块等等SOPC可以根据用户的需要来配置CPU及各个功能模块的参数这里把数据总线接口配置为输入口控制接口模块配置为输出口CPU时钟是由外部50 MHz晶振通过FPGA内的锁相环2倍频后得到的 用SOPC Builder可以进行系统模块硬件设计和底层软件生成进行硬件模块设计时SOPC Builder提供图形化配置界面备有一些常用外设的IP模块如SRAM FlashRAMLCD InterfaceParallel I O等用户还可以加入自己的外设设 计文件对于本设计来说就是将在前面提到的控制接口模块和用户自定义的接口添加进来SOPC Builder可以进行系统配置以及生成系统配置除了对外设设置外还包括启动程序中断向量表系统启动地址等的设置具体如下图4-9 图4-9 构建完成的NIOS II系统模块 完成自定义设计后就可以生成NIOS II软核CPU了生成的NIOS II软核CPU的模块文件如下图4-10 图4-10 定制完成的NIOS II软核CPU 44 LCD液晶显示模块 本设计采用的是Altera公司生产的DE2开发板在开发板上有液晶显示屏我们只需将液晶显示屏的引脚与我们设计的FPGA芯片对应配置就可以了在NIOS II软核CPU对数据进行处理后送入相应的LCD输出端口即可显示 5 系统综合及其测试 51 放大整形模块 输入的正弦波经过放大整形模块后整形成方波便于计数其测试结果如下图5-1所示 图5-1 放大整形模块测试结果 52等精度计数模块 此部分由2个计数器1个D型触发器和1个32位锁存器组成在Quartus II中画出其原理图如下图5-2 图5-2 等精度计数模块原理图 标准信号与被测信号通过等精度计数模块后其测试结果如下图5-3 图5-3 等精度计数模块测试结果 经过测试证实等精度计数模块可以达到预期目标为便于在总体系统原理图中表示此模块可将图5-2的框图在Quartus II中将其整合成一个模块文件如下图5-4 图5-4 等精度计数模块文件 53 整体系统 在Quartus II中新建一个原理图文件将前面设计的各个模块添加进去并将相应的接口连接起来在DE2开发板上FPGA芯片的每个引脚都与外围电路相连所以要在原理图文件中配置每个没有连接的引脚例如要将NIOS II软核CPU中配置的FLASHSRAMSDRAMFPGA芯片的每个引脚都有对应的名字在对各个模块生成引脚并编译后在Pin Planner中配置各个引脚的位置在配置完成后进行编译编译成功后整体硬件系统就设计完成了整体原理图如下图5-5所示 图5-5 系统整体原理图 完成系统的硬件编译后就可生成一个SOF文件这个文件是用于向FPGA下载的在Quartus II环境下选择TOOLS下拉式菜单中的Programmer就可将此文件写入FPGA芯片烧写程序环境如下图5-6 图5-6 烧写程序环境 54 软件编写与测试 在硬件系统设计完毕后要向NIOS II软核CPU中写入程序用于控制各个模块的运作硬件的设计是在Quartus II环境中完成的而软件设计是在NIOS II IDE开发平台中完成的NIOS II软核是系统的核心NIOS II IDE是NIOS II系列嵌入式处理器的基本软件开发工具相应的函数丰富语法简便采用文件操作的方式访问系统外设设计人员可以根据系统的硬件结构十分方便地设计系统的软件NIOS II的开发是在NIOS II IDE环境下进行利用C语言编写NIOS II完成的主要任务有控制门限信号的长短门限信号是由定时器控制的读取FPGA中两个计数器计数的值并按照公式计算然后送入LCD显示频率值还有控制发出计数器的清零信号程序流程图如下图5-7所示 图5-7程序流程图 以下程序frequencyc便是根据上面流程图写出的 include include include include include"alt_typesh" include"sysalt_irqh" include"altera_avalon_pio_regsh" include"systemh" include"LCDh" include "sysalt_devh" include "privalt_busy_sleeph" include "mathh" void LCD_Init lcd_write_cmd LCD_BASE0x38 usleep 2000 lcd_write_cmd LCD_BASE0x0C 关显示光标闪烁方式 usleep 2000 lcd_write_cmd LCD_BASE0x01 清显示 usleep 2000 lcd_write_cmd LCD_BASE0x06 光标前移方式不允许整屏移动 usleep 2000 lcd_write_cmd LCD_BASE0x80 显存指针指向初始位置 usleep 2000 void LCD_Show_Text charText int i for i 0i strlen Text i lcd_write_data LCD_BASEText[i] usleep 2000 void LCD_Line1 lcd_write_cmd LCD_BASE0x80 usleep 2000 void LCD_Line2 lcd_write_cmd LCD_BASE0xC0 usleep 2000 int main void while 1 unsigned long cnsnn double n1n2 int abcdefghk char text[16] " frequency is " char num[16] LCD_Init IOWR_ALTERA_AVALON_PIO_DATA C_CLR_BASE1 usleep 10000 cn IORD_ALTERA_AVALON_PIO_DATA NC_BASE sn IORD_ALTERA_AVALON_PIO_DATA NX_BASE IOWR_ALTERA_AVALON_PIO_DATA C_CLR_BASE0 usleep 10000 IOWR_ALTERA_AVALON_PIO_DATA C_D_BASE1 usleep 1000000 IOWR_ALTERA_AVALON_PIO_DATA C_D_BASE0 usleep 1000000 if IORD_ALTERA_AVALON_PIO_DATA EN_BASE 1 usleep 1000000 cn IORD_ALTERA_AVALON_PIO_DATA NC_BASE sn IORD_ALTERA_AVALON_PIO_DATA NX_BASE n2 double sn n1 n2cn n n150000000 if n 1000 a n100 b n-a100 10 c n10 num[0] num[1] num[2] num[3] num[4] num[5] num[6] a0x30 num[7] b0x30 num[8] c0x30 num[9] H num[10] Z num[11] num[12] num[13] num[14] num[15] else if n 1000000 a n100000 b n-a100000 10000 c n-a100000-b10000 1000 d n-a100000-b10000-c1000 100 e n-a100000-b10000-c1000-d100 10 f n10 num[0] num[1] num[2] num[3] a0x30 num[4] b0x30 num[5] c0x30 num[6] num[7] d0x30 num[8] e0x30 num[9] f0x30 num[10] K num[11] H num[12] Znum[13] num[14] num[15] else a n100000000 b n-a100000000 10000000 c n-a100000000-b10000000 1000000 d n-a100000000-b10000000-c1000000 100000 e n-a100000000-b10000000-c1000000-d100000 10000 f n-a100000000-b10000000-c1000000-d100000-e10000 1000 g n-a100000000-b10000000-c1000000-d100000-e10000-f1000 100 h n-a100000000-b10000000-c1000000-d100000-e10000-f1000-g100 10 k n10 num[0] num[1] a0x30 num[2] b0x30 num[3] c0x30 num[4] num[5] d0x30 num[6] e0x30 num[7] f0x30 num[8] g0x30 num[9] h0x30 num[10] k0x30 num[11] M num[12] H num[13] Z num[14] num[15] IOWR LCD_ON_BASE01 IOWR LCD_BLON_BASE01 LCD_Line1 LCD_Show_Text text LCD_Line2 LCD_Show_Text num usleep 10000 在上面程序中包含的头文件LCDH是用户自定义的其程序如下 ifndef _LCD_H_ define _LCD_H_ define lcd_write_cmd basedata IOWR base0data define lcd_read_cmd base IOWR base1 define lcd_write_data basedata IOWR base2data define lcd_read_data base IOWR base3 endif 在NIOS II IDE开发平台中将frequcom去并建立工程进行调试界面如 下图5-8 图5-8 NIOS II CC开发环境 在NIOS II CC开发环境中调试完毕后即保证程序没有语法错误则可转换到 Debug环境中来验证程序的功能是否正确Debug开发环境如下图5-9在这里可以 连续运行程序也可单步运行还可以看到各个变量的实时值这样便于找出程序中 的错误 图5-9 Debug环境 55 系统的扩展 通过上面步骤设计的系统就可达到设计要求但是在没有信号发生器的时候 难以验证系统的正确性故可以再FPGA设计一个信号源用于产生不同频率的信号 让等精度频率计测量这里只需设计一个分频器和一个选择器就可以了 com 分频器设计 在本设计中因为测量要求是1HZ200MHZ故先将标准信号通过锁相环倍频成 200MHZ的信号然后由4个switch开关控制得到16种不同频率的信号此分频器 的VHDL程序如下 LIBRARY IEEE USE IEEESTD_LOGIC_1164ALL USE IEEESTD_LOGIC_ARITHALL USE IEEESTD_LOGIC_UNSIGNEDALL ENTITY XZ IS PORT CLK IN STD_LOGIC A IN STD_LOGIC_VECTOR 3 DOWNTO 0 OUTCLK OUT STD_LOGIC END XZ ARCHITECTURE RT OF XZ IS SIGNAL COUNTINTEGER 0 SIGNAL NINTEGER BEGIN PROCESS CLKA BEGIN CASE A IS WHEN"0000" N 4 WHEN"0001" N 8 WHEN"0010" N 16 WHEN"0011" N 32 WHEN"0100" N 64 WHEN"0101" N 128 WHEN"0110" N 256 WHEN"0111" N 512 WHEN"1000" N 1024 WHEN"1001" N 2048 WHEN"1010" N 4096 WHEN"1011" N 8192 WHEN"1100" N 16384 WHEN"1101" N 32768 WHEN"1110" N 262144 WHEN"1111" N 200000000 END CASE IF CLKEVENT AND CLK 1 THEN IF COUNT N-1 THEN COUNT 0 ELSE COUNT COUNT1 IF COUNT N2 THEN OUTCLK 0 ELSE OUTCLK 1 END IF END IF END IF END PROCESS END ARCHITECTURE 编译生成的模块文件如下图5-10 图5-10 分频器的模块文件 com 选择器设计 选择器的作用是将输入的信号选择一路输出本设计使用的选择器有三个输入口分别是200MHZ信号分频器输出的信号和通过IO口输入的未知信号通过2个switch开关选择输出当switch为00时选择通过IO口输入的未知信号当switch为01时选择锁相环倍频得到的200MHZ信号当switch为10或11时选择分频器输出地信号此选择器的VHDL程序如下 LIBRARY IEEE USE IEEESTD_LOGIC_1164ALL ENTITY XZ2 IS PORT CLK IN STD_LOGIC SX IN STD_LOGIC FPCLK IN STD_LOGIC A IN STD_LOGIC_VECTOR 1 DOWNTO 0 OUTCLK OUT STD_LOGIC END XZ2 ARCHITECTURE RT1 OF XZ2 IS SIGNAL COUNTINTEGER 0 SIGNAL NINTEGER BEGIN PROCESS A BEGIN IF A "00" THEN OUTCLK SX ELSIF A "01" THEN OUTCLK CLK ELSE OUTCLK FPCLK END IF END PROCESS END ARCHITECTURE 通过编译后生成的选择器模块文件如下图5-11 图5-11 选择器模块 将以上模块与之前设计的系统对应端口相连系统连接图如下图5-12所 示 图5-12 扩展后的系统总图 FPGA的嵌入式系统设计方法进行了研究与实践 基于NIOS II的嵌入式系统设计方法以C语言和高层次设计工具为依托以可自定义配置系统硬件为特色为设计者提供了一个全新的设计方法与设计思路 2整体系统设计 基于NIOS II的等精度频率计的设计充分利用FPGA内部硬件资源在FPGA内部构建NIOS II采用VHDL编写底层模块C语言编写上层应用程序大大降低外围测量硬件电路的复杂性使电路结构更加简洁提高了频率计工作的可靠性本设计使用的是Altera公司生产的DE2开发板芯片为EP2C35F672C6在开发板上进行了软硬件调试功能全部正常测试量程为1HZ200MHZ 3本系统的特色 实验结果表明此设计不仅具有设计功耗低体积小性能优越等特点而目具有设计方式灵活可裁剪可扩充可升级等优势因此具有很好的应有前景和科研价值 致 谢 四年的大学生活将随着毕业论文答辩的结束而谢幕了这四年里充满了太多太多的回忆不管是快乐的还是伤心的现在一切看来都那是那么的美好因为那是我们青春留下的痕迹可它正代表着大学生活的终结完成它既有一种收获感又有一种失落感可无论如何它代表着我四年的努力代表了我四年的历程 作为一名本科学生我的水平确实有限要独立完成毕业设计是有一定难度的但我之所以能完成我的指导老师是功不可没的从毕设的选题设计过程到论文的写作等阶段都是在张俊涛老师的悉心指导下完成的张老师在学术和生活等方面的给予我无微不至的关怀和指导张老师严谨的治学态度渊博的学术知识诲人不 倦的敬业精神以及宽容的待人风范使我获益颇多刚开始时我对这个课题并不了解但张老师很耐心地给我讲解不管是什么困难张老师都认真的给我讲解分析我真的十分感谢张老师对我的指导和支持在此谨向张老师致以诚挚的谢意和崇高的敬意 感谢我认识的同学们有幸与你们同学是我读本科的最大收获感谢给我带来的不一样的生活体验在信工071这个大集体中我深深的被大家的刻苦钻研精神所打动这给了我动力让我不断提高对自己的要求不断进步同时还要感谢宿友们因为有你们我的大学生活变得多姿多彩因为有你们我学会了分享包容感恩我要特别感谢我的家人没有你们的支持就没有今天的我愿把我的幸福和快乐都送给关心和支持过我的人也愿他们一切如意 当然最后还要感谢我的学校陕西科技大学感谢我的所有任课老师感谢他们在大学四年里对我的教导他们教给我知识教给我很多发现问题解决问题的方法还教给我许多做人的道理这些会是我人生中最宝贵的财富还要感谢我的辅导员在这四年中他们在生活上和学习上给了我很多帮助让我能平稳的度过大学4年在以后的学习中我会再接再厉不断向前尽自己最大能力为社会做出一份贡献 参 考 文 献 马鸣远(程序设计与C语言 [M](西安西安电子科技大学出版社20058592 [2]康华光(电子技术基础 [M](北京高等教育出版社2004 [3]潘松黄继业(EDA技术与VHDL [M](北京清华大学出版社2005372396 [4]仁爱锋([M](西安电子科技大学出版社2007296 [5]郭 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 军土玉花葛纫秋([M](清华大学出版社200(S[M](出版社2007296 [7]王振红(( [8]李金平沈明山姜余祥(( [9]毛智德([J](20072946 [10]刘勉王革思弈宗琪(( [11]刘德亮王竹林尉广军(( IV III 18 陕西科技大学毕业论文设计说明书 19
本文档为【毕业设计(论文)-基于FPGA的等精度频率计设计【毕业论文】】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_353097
暂无简介~
格式:doc
大小:69KB
软件:Word
页数:34
分类:工学
上传时间:2017-09-30
浏览量:41