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

上传人:无*** 文档编号:80754026 上传时间:2022-04-26 格式:DOC 页数:44 大小:1.17MB
收藏 版权申诉 举报 下载
毕业设计(论文)基于FPGA的等精度频率计设计_第1页
第1页 / 共44页
毕业设计(论文)基于FPGA的等精度频率计设计_第2页
第2页 / 共44页
毕业设计(论文)基于FPGA的等精度频率计设计_第3页
第3页 / 共44页
资源描述:

《毕业设计(论文)基于FPGA的等精度频率计设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于FPGA的等精度频率计设计(44页珍藏版)》请在装配图网上搜索。

1、III基于FPGA的等精度频率计设计摘 要频率计是实验室和科研、生产中最常用的测量仪器之一。本文介绍了一种基于FPGA芯片设计的等精度频率计。对传统的等精度测量方法进行了改进,采用SOPC设计技术和基于NIOS II嵌入式软核处理器的系统设计方案,通过在FPGA芯片上配置NIOS II软核处理器进行数据运算处理,利用液晶显示器对测量的频率进行实时显示,可读性好。整个系统在一片FPGA芯片上实现,系统测量精度高,实时性好,具有灵活的现场可更改性。本频率测量仪是以Altera公司生产的CycloneII系列EP2C35F672C6器件为核心实现高精度计数功能。整个电路采用模块化设计,调试制作方便。

2、经过仿真并下载验证,能够实现等精度测频功能,频率测量范围为1HZ-200MHZ。关键词:等精度,频率计,FPGA, SOPC, NiosIIDesign of Equal Precision Frequency MeterBased on FPGAABSTRACTFrequency meter is one of the most commonly used measuring instruments which can be used in laboratory, scientific research and production . An equal precision frequenc

3、y 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

4、 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

5、 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. Frequenc

6、y measurement scope is 1-200MHZ.KEY WORDS:equal precision measurement, frequency meter, FPGA, SOPC, NiosII目 录摘 要IABSTRACTII1 绪论11.1 课题提出的背景11.2 课题选择意义12 EDA及其开发平台简介32.1 EDA的具体开发流程32.1.1设计输入32.1.2综合32.1.3 适配42.1.4 仿真42.1.5 编程下载和硬件测试42.2简介NIOS II IDE42.2.1工程管理器52.2.2 编辑器和编译器62.2.3调试器62.2.4闪存编程器73 课题方案

7、选择83.1 频率测量方案选择83.1.1 直接测频法83.1.2 间接测频法83.1.3 等精度测频93.2 基于单片机的测频方案103.3 基于FPGA的测频方案114 基于FPGA等精度频率计的单元模块设计134.1 放大整形模块设计134.2 标准信号产生模块设计144.3 FPGA芯片模块设计144.3.1 D型触发器的设计154.3.2 计数器的设计164.3.3 锁存器的设计194.3.4 NIOS II 软核CPU的设计204.4 LCD液晶显示模块235 系统综合及其测试245.1 放大整形模块245.2等精度计数模块245.3 整体系统255.4 软件编写与测试275.5

8、系统的扩展335.5.1 分频器设计335.5.2 选择器设计356 总结38致 谢39参 考 文 献4039基于FPGA的等精度频率计设计1 绪论1.1 课题提出的背景现代数字系统的设计离不开各种先进的仪器,比如数字示波器、逻辑分析仪、频谱分析仪、信号发生器、数字频率计等。数字频率计是一种及其常用的工具,用于检测输入周期信号的频率。随着大规模集成电路的发展,很多芯片内部也集成了数字测频单元,大大增强了芯片处理数字信号的能力。数字频率计广泛应用于航天、电子、测控等领域。例如,在传统的生产制造企业中,频率计被广泛的应用在产线的生产测试中。频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使

9、用频率计能够迅速的发现有故障的晶振产品,确保产品质量;在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准;在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。采用等精度频率测量方法具有测量精度保持恒定的特点。数字化是电子设计的必由之路。EDA技术即以计算机为工具,EDA是Electronic Design Automation(电子设计自动化)的简称。它是随着集成电路和计算机技术的飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。在 Quartus II软件平台上,根据硬件描述语言(VHDL)描述

10、的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真、直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者只要利用软件完成对硬件功能的描述,在EDA工具的帮助下和应用相应的PLD器件,就可以得到最后的设计结果。尽管,目标器件是硬件,但整个设计是软件控制流程。由于FPGA是纯硬件结构,具有较强的抗干扰能力。NIOS II是Altera针对其FPGA设计的嵌入式软核处理器,它只占芯片内部很少的一部分逻辑单元和存储资源,成本很低,具有上百兆的性能,灵活的自定义指令集和自定义硬件加速单元,以及友好的图形化开发环境NIOS II IDE。随着微电子技术和计算机技术的发展,可

11、编程逻辑器件,EDA技术,SOPC等新概念和新技术层出不穷,新技术的应用迅速渗透到电子、通信、信息、汽车制造等领域,有力的推动了社会生产力的发展和社会信息化程度的提高。1.2 课题选择意义基于FPGA的等精度频率计有运算速度快、系统较稳定、测量范围广等特点。其中主要应用到EDA(电子设计自动化)技术。伴随着集成电路技术的发展,EDA逐渐成为重要的设计手段。已经广泛应用于模拟与数字电路系统等许多领域。EDA是一种实现电系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机为工作平台,促进了工程发展。本设计利用FPGA进

12、行测频计数,单片机实施控制实现频率计的设计过程。该频率计利用等精度的设计方法,克服了基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低的缺点。等精度的测量方法不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。并采用NIOS II控制液晶显示器显示测量频率。 2 EDA及其开发平台简介2.1 EDA的具体开发流程基于FPGA器件实现数字系统的流程如图2-1所示。图2-1 基于FPGA/CPLD的EDA设计流程图基于FPGA器件的开发流程主要包含设计输入、综合、FPGA适配、仿真和编程下载。2.1.1设计输入设计输入是设计者将所要设计的电路以开发软件要求的某种形式表达出来,

13、并输入到相应软件中的过程。设计输入有多种方式,最常用的是图形输入和HDL文本输入两种方法。 图形输入主要包括状态图输入,波形图输入和原理图输入等。在HDL文本输入中,最常用的硬件描述语言有Verilog HDL和VHDL等,Verilog HDL和VHDL的功能比较强大,属于行为描述语言,能描述和仿真复杂的逻辑设计。2.1.2综合综合是将设计者在EDA平台上编辑输入的HDL文本、图形描述,依据给定的硬件结构和约束可知条件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述网表文件的过程。综合器就是能够自动实现上述转换的软件工具。 综合的方式有三种分别是行为综合,逻辑综合,版图综合(

14、结构综合)。2.1.3 适配 适配是将由综合器产生的网表文件配置于指定的目标器件中,并产生最终的可下载文件的过程。 利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线等。2.1.4 仿真 仿真,也称为模拟,是对所设计的电路的功能验证。VHDL的仿真流程如图2-2所示,用户可以在设计的过程中对整个系统和各个模块进行仿真,即在计算机上用软件验证功能是否正确,各部分的时序配合是否准确。若出现问题,则可以随时修改,从而避免了逻辑错误。高级的仿真软件还可以对整个系统设计的性能进行估计。规模越大的设计,越需要进行仿真。仿真不消耗硬件资源,

15、不浪费时间,这样就可避免不必要的损失。仿真包括功能仿真和时序仿真。图2-2 VHDL仿真流程图2.1.5 编程下载和硬件测试把适配后生成的编程文件装入到PLD器件中的过程称为下载。通常将对基于EEPROM工艺的非易失结构PLD器件的下载称为编程(Program),而将基于SRAM工艺结构的PLD器件的下载称为配置(Configure)。最常用的编程方式有两种分别是在系统编程(ISP,In System Programmable)和用专用的编程器编程。2.2简介NIOS II IDENIOS II集成开发环境(IDE)是NIOS II系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以NI

16、OS II IDE下完成,包括编辑、编译和调试程序。NIOS II IDE提供了一个统一的开发平台,用于所有NIOS II处理器系统。仅仅通过一台PC机、一片Altera的FPGA以及一根JTAG下载电缆,软件开发人员就能够往NIOS II 处理器系统写入程序以及和NIOS II处理器系统进行通讯。NIOS II IDE基于开放式的、可扩展Eclipse IDE project工程以及Eclipse C/C+ 开发工具(CDT)工程。NIOS II IDE为软件开发提供四个主要的功能分别是工程管理器,编辑器和编译器,调试器和闪存编程器。2.2.1工程管理器NIOS II IDE提供多个工程管理

17、任务,加快嵌入式应用程序的开发进度。NIOS II IDE推出了一个新工程向导(如下图2-3所示),用于自动建立C/C+应用程序工程和系统库工程。采用新工程向导,能够轻松地在Nios II IDE中创建新工程。图2-3 Nios II IDE新工程向导除了工程创建向导,NIOS II IDE还以工程模板的形式提供了软件代码实例,帮助软件工程师尽可能快速地推出可运行的系统。每个模板包括一系列软件文件和工程设置。通过覆盖工程目录下的代码或者导入工程文件的方式,开发人员能够将他们自己的源代码添加到工程中。图2-4描述了一些可用的软件工程模板。图2-4 软件工程模板NIOS II IDE使开发人员通过

18、使用软件组件能够快速地定制系统。软件组件(或者称为“系统软件”)为开发人员提供了一个简单的方式来轻松地为特定目标硬件配置他们的系统。软件组件包括:NIOS II运行库(或者称为硬件抽象层(HAL)),轻量级IP TCP/IP 库 - NIOS II 版本,MicroC/OS-II实时操作系统(RTOS),Altera压缩文件系统。2.2.2 编辑器和编译器Altera NIOS II IDE提供了一个全功能的源代码编辑器和C/C+编译器。NIOS II IDE文本编辑器是一个成熟的全功能源文件编辑器。其功能包括:语法高亮显示,代码辅助/代码协助完成,全面的搜索工具,文件管理,广泛的在线帮助主题

19、和教程,引入辅助,快速定位,自动纠错,内置调试。NIOS II IDE为GCC编译器提供了一个图形化用户界面,NIOS II IDE编译环境使设计Altera的NIOS II处理器软件更容易,它提供了一个易用的按钮式流程,同时允许开发人员手工设置高级编译选项。NIOS II IDE编译环境自动地生成一个基于用户特定系统配置(SOPC Builder生成的PTF文件)的makefile。NIOS II IDE中编译/链接设置的任何改变都会自动映射到这个自动生成的makefile中。这些设置可包括生成存储器初始化文件(MIF)的选项、闪存内容、仿真器初始化文件(DAT/HEX)以及profile总

20、结文件的相关选项。2.2.3调试器NIOS II IDE包含一个强大的、在GNU调试器基础之上的软件调试器GDB。该调试器提供了许多基本调试功能,以及一些在低成本处理器开发套件中不会经常用到的高级调试功能。NIOS II IDE调试器包含如下的基本调试功能:运行控制,调用堆栈查看,软件断点,反汇编代码查看,调试信息查看,指令集仿真器。除了上述基本调试功能之外,NIOS II IDE调试器还支持以下高级调试功能:硬件断点调试ROM或闪存中的代码,数据触发,指令跟踪。NIOS II IDE调试器通过JTAG调试模块和目标硬件相连。另外,支持片外跟踪功能便于和第三方跟踪探测工具结合使用,如FS2公司

21、提供的用于NIOS II处理器的in-target系统分析仪(ISA-NIOS)。调试信息查看使用户可以访问本地变量、寄存器、存储器、断点以及表达式赋值函数。图2-5是调试信息查看的一个实例,显示的是一个应用实例的寄存器。图2-5 调试信息查看寄存器显示2.2.4闪存编程器许多使用NIOS II处理器的设计都在单板上采用了闪存,可以用来存储FPGA配置数据或NIOS II编程数据。NIOS II IDE提供了一个方便的闪存编程方法。任何连接到FPGA的兼容通用闪存接口(CFI)的闪存器件都可以通过NIOS II IDE闪存编程器来烧结。除CFI闪存之外,NIOS II IDE闪存编程器能够对连

22、接到FPGA的任何Altera串行配置器件进行编程。闪存编程器管理多种数据,如下表2-1所示。表2-1 编程到闪存中的通用内容类型内容类型说明系统固定软件 烧结到闪存中的软件,用于NIOS II处理器复位时从闪存中导入启动程序。FPGA配置 如果使用一个配置控制器(例如用在Nios开发板中的配置控制器),FPGA能够在上电复位时从闪存获取配置数据。任意二进制数据开发人员想存储到闪存内的任何二进制数据,例如图形、音频等。NIOS II IDE闪存编程器已做了预先配置,能够用于NIOS II开发套件中的所有单板,而且能够轻易地引入到用户硬件中。3 课题方案选择3.1 频率测量方案选择在电子技术中,

23、频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中等精度测量频率具有精度高、使用方便、测量迅速,以及便于现测量、过程自动化等优点,是频率测量的重要手段之一。普通测频有两种方式:一是直接测频法,二是间接测频法。3.1.1 直接测频法即在一定闸门时间内测量被测信号的脉冲个数,下图3-1为直接测频法的原理图。图3-1 频率测量原理图按照频率的定义,即单位时间内周期信号的发生次数,图3-1中晶振提供了测量的时间基准,分频后通过控制电路去开启与关闭时间闸门。闸门开启时,计数器开始计数,闸门关闭停止计数。若闸门开放时间

24、为T,计数值为N,则被测频率为: f=N/T (3-1)用这种频率测量原理,对于频率较低的被测信号来说,存在着测量实时性和测量精度之间的矛盾。例如若被测信号为10Hz,精度要求为0.01%,则最短闸门时间为 T=N/f=1000s (3-2)这样的测量周期根本是不可能接受的,可见频率测量法不适用于低频信号的测量。3.1.2 间接测频法间接测频法即为周期测频法,周期测量原理和频率测量基本结构是一样的,只是把晶振和被测信号位置互换了一下,如图3-2所示。T=NTr/M.计数值N和被测信号的周期成正比,N反映了M个信号周期的平均值利用周期测量法在一定信号频率范围内,通过调节分频系数M,可以较好地解决

25、测量数度与实时性的矛盾。但是对于高频信号,周期法就需要很大的分频系数M,增加了硬件及软件的复杂性,不宜采用。由此可见,对于传统频率测量方法若是要达到高精度的要求,必须对被测频率分段测量,对于较低频率用周期测量,对较高频率用频率法测量。图3-2 周期测量原理图3.1.3 等精度测频等精度测频的方法具体是:采用频率准确的高频信号作为标准频率信号,保证测量的闸门时间为被测信号的整数倍,并在闸门时间内同时对标准信号脉冲和被测信号脉冲进行计数,实现整个频率测量范围内的测量精度相等,当标准信号频率很高,闸门时间足够长时,可实现高精度频率测量。测量精度与闸门时间的关系分析如下。如图3-3所示,闸门控制信号(

26、CL)给出高电平,此时并未开始进行测频计数,而要等到被测信号的上升沿到来时才开始对标准时钟信号和被测信号同时进行测频计数。当闸门控制信号经过Tc时间结束时,也要等到被测信号的上升沿到来时才同时停止对标准信号和被测信号的计数,并读取此时的计数值。测频计数的闸门时间为Td,标准时钟信号频率为fs,被测信号频率为fx,在Td时间内对标准时钟信号和被测信号的脉冲计数值分别为Ns和Nx,则被测信号的频率可由下式求得:fx=fsNx/Ns (3-3)图3-3 等精度测频原理示意图对标准信号所产生的计时误差为:t=Td-NsTs (3-4)由于t最大为一个标准信号的周期,即tTs,因此: fx=Nx/(Ns

27、Ts)=Nx/(Td-t) (3-5)而被测信号频率准确值fx0=Nx/Td,则频率测量的相对误差为: =(fx-fx0)/fx0=t/(Td-t) (3-6)当Td远远大于t时,频率测量的最大误差为: m=Ts/(Td-Ts)Ts/Td (3-7)由最后的表达式可知,当频率测量的最大误差由标准时钟信号的周期Ts和频率计数的闸门时间Td决定,Ts越小,Td越大,测量误差越小,即测量精度越高。在整个频率测量范围内,精度恒定,实现了等精度测量。当标准信号选取准确的50MHz信号源时,Ts=10ns,只要选取Td10ms,就可使测量的最大相对误差10-6,即达到百万分之一的测量精度。测量闸门时间Td

28、的选取,除满足m式的最大测量误差外,还应保证大于一个被测信号周期Tx。测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。表3-1所列为在10MHz时闸门时间与最大允许误差的对应关系。表3-1 闸门与精度的关系闸门时间(s)精度0.0110-50.110-6110-71010-83.2 基于单片机的测频方案采用单片机AT89C51作为系统控制核心单元,辅以适当

29、的软、硬件资源完成以单片机为核心的等精度频率计的软硬件设计及系统实现。系统如图3-4所示。图3-4 基于单片机的频率测量计组成框图前置放大器完成信号放大、电平平移的任务,被测的交流信号D被放大、平移成脉冲直流信号E,再经74HC14施密特反相器整形成矩形脉冲。与门74LS08作为计数闸门,方波信号被送到与门的一个输入端,与门的另一个输入端连接1s门控信号,实际制作中连接AT89C51的P3.1。当P3.1脚为高电平时闸门打开,低电平时闸门关闭。P3.1脚电平的高低可通过指令加以控制。闸门开时矩形脉冲送到74LS393进行。74LS393是双4位计数器,在这里接成级联方式,组成一个8位二进制计数

30、器,同时分频比为256的分频器。采用74LS393的理由是:AT89C51内有2个16位的二进制加法计数器,一个用作定时器,另一个用作脉冲计数。16位二进制的最大计数为216-1=65535,不能满足精确测量的需要,虽然可以通过软件计数的方法来提高分辨率,但是AT89C51内置计数器的计数速率受500KHz(12MHz时钟)的限制,所以意义并不大。74LS393的最大计数速率可达35MHz,与AT89C51内的一个定时器组成24位的计数器,其最大计数值为224-1=16777215,分辨率大大提高。本电路中没有采用十进制计数,因为AT89C51内置计数器只能进行二进制加法计数,计数结束后再进行

31、二进制转十进制运算,然后将结果送到显示缓冲区进行显示。3.3 基于FPGA的测频方案在较高精度和高速测量的要求下,必须采用较高的标准频率信号;而单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求。采用高集成度、高速的FPGA芯片为实现高速、高精度的测频提供了保证。随着EDA(电子设计自动化)技术和微电子技术的进步,FPGA的时钟延迟可达到ns级,结合其并行工作方式,在超高速、实时测控方面有非常广阔的应用前景;并且FPGA具有高集成度、高可靠性,几乎可将整个设计系统下载于同一芯片中,实现所谓片上系统,从而大大缩小其体积,具有可编程型和实现方案容易改动的特点,有

32、利于产品的研制和后期升级。整个测频系统分为多个功能模块,如信号同步输入、放大整形、标准信号、FPGA芯片、液晶显示等模块。除标准信号、放大整形、液晶显示模块外,其他模块可集成于FPGA芯片中,并且各逻辑模块用硬件描述语言VHDL来描述其功能,然后通过EDA开发平台,如Quartus对设计文件自动地完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对FPAG芯片进行编程,以实现系统的设计要求。其系统组成框图如图3-5所示。图3-5 基于FPGA的频率测量计的组成框图基于单片机的频率测量计设计方案主要是以单片机为基础,原理简单,但由于单片机自身速度问题,测量的范围较小。基于FPGA的

33、频率测量计设计方案主要是以FPGA为主,使用其中的Nios II核对采集的数据进行处理并由LCD输出测得的频率,以及实现对FPGA内部各个模块的控制。综上所述并根据设计要求,测频范围为1Hz至200MHz,单片机不能达到此要求,故采用FPGA来完成,并综合其他因素,决定采用基于FPGA的等精度频率测量方案。4 基于FPGA等精度频率计的单元模块设计基于FPGA等精度频率计设计的单元模块包括,放大整形模块、标准信号产生模块、FPGA芯片模块、液晶显示模块。4.1 放大整形模块设计放大整形电路由2N2222(实际中可用常见的9018)与74F14等组成,其中2N2222组成放大电路将输入频率为Fx

34、的周期信号如正弦波、三角波等进行放大。74F14施密特触发器对放大器的输出信号进行整形,使之成为矩形脉冲。施密特触发器是一种特殊的门电路,与普通的门电路不同,施密特触发器有两个阈值电压,分别称为正向阈值电压和负向阈值电压。在输入信号从低电平上升到高电平的过程中使电路状态发生变化的输入电压称为正向阈值电压,在输入信号从高电平下降到低电平的过程中使电路状态发生变化的输入电压称为负向阈值电压。利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。 当输入电压由低向高增

35、加,到达V+时,输出电压发生突变,而输入电压Vi由高变低,到达V-,输出电压发生突变,因而出现输出电压变化滞后的现象,可以看出对于要求一定延迟启动的电路,它是特别适用的. 图4-1即为信号通过施密特触发器后的波形变换情况。图4-1 施密特触发器的波形变换待测信号经过时,由D1、D2两个二极管进行限幅,以免电压过大而烧毁,信号经过2N2222进行放大,由74F14对其进行整形,产生出的波形为标准方波,方便FPGA进行计数。其连线如图4-2所示:图4-2 放大整形电路图4.2 标准信号产生模块设计本设计采用的是Altera公司生产的DE2开发板,在开发板上有50MHZ的晶振,我们只需将晶振的引脚与

36、我们设计的FPGA芯片对应配置就可以了。4.3 FPGA芯片模块设计本设计采用的是Altera公司生产的CycloneII系列EP2C35F672C6芯片为核心器件实现高精度计数功能。Cyclone II器件相较于Cyclone而言包含了许多新的特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装等。EP2C35系列芯片有33216个逻辑单元,4个锁相环,475个I/O管脚和205个差分通道,因此功能十分强大。在FPGA芯片中主要有以下几个模块构成,D型触发器,2个32位计数器,2个锁存器,NIOS II软核处理器。等精度测频原理的预置门限信号可由CPU发出,连接到D型触发器的输入端。计数器1

37、和计数器2是两个32位计数器,标准频率信号FS,从计数器1的计数输入端输入,经整形后的被测信号FX,从计数器2的计数输入端输入。计数器中的EN输入端与D型触发器的输出端相连,当预置门限信号为高电平(门限时间开始)时,同时被测信号的上升沿到来时,D型触发器工作将输出端置1,同时启动两个计数器开始计数。当预置门限信号为低电平(门限时间结束)时,同时被测信号的上升沿到来时,D触发器工作将输出端置0,同时关闭计数器的计数。计数器1及计数器2所计之数通过锁存器进入CPU,经过运算处理后送给显示模块进行数字显示即可。FPGA芯片内部设计框图如下图4-3所示。图4-3 FPGA内部设计框图4.3.1 D型触

38、发器的设计本设计采用的是边沿触发的D 触发器,电平触发的主从触发器工作时,必须在正跳沿前加入输入信号。如果在CP 高电平期间输入端出现干扰信号,那么就有可能使触发器的状态出错。而边沿触发器允许在CP 触发沿来到前一瞬间加入输入信号。这样,输入端受干扰的时间大大缩短,受干扰的可能性就降低了。边沿D触发器也称为维持-阻塞边沿D触发器。D型触发器在设计中的作用十分重大,它是等精度计数的核心。当输入D置1时,输出Q不是马上置1,而是时钟脉冲上升沿到来时才跳变,这时计数器才开始计数。当然,在输入D置0时,输出Q不是马上置0,而是时钟脉冲上升沿到来时才置0。这里的时钟脉冲就是采用被测信号,如此一来,就可以

39、保证计数器对被测信号周期的测量是周期的整数倍了,大大减小了误差。在使用EDA技术对FPGA内部数字电路的设计中,最大的优点就是可以根据设计的需要,定制相应的器件,对于某些不用的引脚可以不用设计。例如,对于D型触发器而言,一般都有清零和置数端,但在本设计中,清零与置数端是没有用的,所以我们便可不用将它设计进来。故D型触发器的VHDL程序如下:-d.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY d IS PORT( d :in std_logic; clk :in std_logic; q,qn :out std_logic );END d;

40、ARCHITECTURE rt3 of d ISBEGIN 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型触发器的模块文件4.3.2 计数器的设计计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些

41、控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器可以用来显示产品的工作状态,一般来说主要是用来表示产品已经完成了多少份的折页配页工作。它主要的指标在于计数器的位数,常见的有3位和4位的。很显然,3位数的计数器最大可以显示到999,4位数的最大可以显示到9999。本设计对计数器的要求比较高,因为要对200MHZ的信号进行计数,故采用32位的

42、计数器,其计数最大值为4294967296,足以达到设计要求。在Quartus II中使用文本输入方法定制一个满足要求的32位计数器,新建一个工程,然后新建一个VHDL文件,输入程序进行调试仿真。本设计需要两个32位计数器,分别对标准信号和被测信号进行计数。标准信号计数器的VHDL程序如下:-c_counter.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY c_counter IS PORT( clk :in std_

43、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 ISBEGINPROCESS(clr,clk) BEGIN IF clr = 1 THEN c_cnt0); ELSIF rising_edge(clk) THEN IF c_en=1 THEN c_cnt=c_cnt+1; END IF; END IF;END PROCESS;END ARCHITECTURE;在计数器完成计

44、数后,需要将计数结果送入锁存器进行锁存,故在设计被测信号计数器的时候,将锁存器的使能控制信号over添加了进来,被测信号计数器的输出端over与锁存器的使能端相连,这样就能很好的完成计数,锁存功能了。被测信号计数器的VHDL程序如下:-s_counter.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY s_counter IS PORT( s_en :in std_logic; clr :in std_logic; si

45、gn :in std_logic; over :out std_logic; s_cnt :buffer std_logic_vector(31 downto 0) );END s_counter;ARCHITECTURE rt2 OF s_counter ISsignal TEMP: std_logic:=0;BEGINPROCESS(clr,sign) BEGIN IF clr = 1 THEN s_cnt0); ELSIF rising_edge(sign) THEN IF s_en=1 THEN s_cnt=s_cnt+1; END IF; END IF;END PROCESS;PRO

46、CESS(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 被测信号计数器的模块文件4.3.3 锁存器的设计锁存器是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存,其次完成高速

47、的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。本设计主要是使用其缓存的作用,当计数器完成计数后,将计数结果先进行锁存,然后再启动CPU进行读数,这样就可以保证,CPU在读数时不受影响。这里使用的是1个2路32位的锁存器。锁存器的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ffd IS PORT(CLR : in std_logic;LOAD : in std_logic;DATA_EN:out std_logic;DATA1_IN : in std_logic_v

48、ector (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 ISBEGINPROCESS(CLR,LOAD)BEGINIF CLR = 1 THENDATA1_OUT 0);DATA2_OUT 0);DATA_EN=0;ELSIF LOAD = 1 THEND

49、ATA1_OUT = DATA1_IN;DATA2_OUT = DATA2_IN;DATA_EN=1;END IF;END PROCESS; END ARCHITECTURE;经过编译后生成模块文件,锁存器的模块文件如下图4-7。图4-7 锁存器的模块文件4.3.4 NIOS II 软核CPU的设计在本设计中还用到了NIOS II软核处理器,NIOS II是Altera公司在NIOS的基础上,于2004年发布的嵌入式软核处理器。所谓软核,是指用HDL文本形式提交给用户,他经过RTL级设计优化和功能验证,但其中不含任何具体的物理信息。NIOS II是采用流水线技术和哈佛结构的通用RISC(Ref

50、ined 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的解决力

51、案存在以下不足:由于硬核是预先植入的,设计者无法相据实际需要改变处理器的结构;无法根据实际设计需要在同一FPGA中集成多个处理器;无法根据需要裁减处理器硬件资源以降低FPGA成本等。利用软核处理器,能有效地弥补上述不足。在NIOS中还可以添加用户自定义的指令。在开发工具的完备性方面NIOS也具有很大的优势。Altera不仅提供强大的HAL系统库支持,还提供嵌入式操作系统核TCPIP协议栈的支持。 NIOS II嵌入式微处理器模块是整个系统控制器的核心,它相当于单片机系统控制器中的CPU,是所有信号的采集、处理及输出的控制中心。NIOS II嵌入式微处理器模块的设计需要借助于Altera公司提供

52、的系统级开发工具Quartus II中的SOPC Builder完成。 NIOS II软核接收了来自硬件部分的数据后,还需要进行相应的数据处理,才能够满足测频系统控制器对测量频率的要求,进而才能送LCD显示。打开Quartus II新建一个工程,在Tools的下拉菜单中打开SOPC Builder。在里面定制自己所需的软核CPU。FPGA里的NIOS II软核定制主要包括NIOS II处理器、LCD控制器模块、存储器控制器模块、控制总线接口模块及数据总线接口模块等等。SOPC可以根据用户的需要来配置CPU及各个功能模块的参数,这里把数据总线接口配置为输入口,控制接口模块配置为输出口。CPU时钟

53、是由外部50 MHz晶振通过FPGA内的锁相环2倍频后得到的。 用SOPC Builder可以进行系统模块硬件设计和底层软件生成。进行硬件模块设计时,SOPC Builder提供图形化配置界面,备有一些常用外设的IP模块,如SRAM , Flash,RAM,LCD Interface,Parallel I/ O等。用户还可以加入自己的外设设计文件。对于本设计来说,就是将在前面提到的控制接口模块和用户自定义的接口添加进来,SOPC Builder可以进行系统配置以及生成,系统配置除了对外设设置外还包括启动程序、中断向量表、系统启动地址等的设置。具体如下图4-9。图4-9 构建完成的NIOS II

54、系统模块完成自定义设计后就可以生成NIOS II软核CPU了。生成的NIOS II软核CPU的模块文件如下图4-10。图4-10 定制完成的NIOS II软核CPU4.4 LCD液晶显示模块本设计采用的是Altera公司生产的DE2开发板,在开发板上有液晶显示屏,我们只需将液晶显示屏的引脚与我们设计的FPGA芯片对应配置就可以了。在NIOS II软核CPU对数据进行处理后,送入相应的LCD输出端口,即可显示。5 系统综合及其测试5.1 放大整形模块输入的正弦波经过放大整形模块后,整形成方波,便于计数,其测试结果如下图5-1所示。图5-1 放大整形模块测试结果5.2等精度计数模块此部分由2个计数

55、器,1个D型触发器和1个32位锁存器组成,在Quartus II中画出其原理图如下图5-2。图5-2 等精度计数模块原理图标准信号与被测信号通过等精度计数模块后,其测试结果如下图5-3。图5-3 等精度计数模块测试结果经过测试证实等精度计数模块可以达到预期目标。为便于在总体系统原理图中表示此模块,可将图5-2的框图在Quartus II中将其整合成一个模块文件,如下图5-4。图5-4 等精度计数模块文件5.3 整体系统在Quartus II中新建一个原理图文件,将前面设计的各个模块添加进去,并将相应的接口连接起来。在DE2开发板上,FPGA芯片的每个引脚都与外围电路相连,所以要在原理图文件中,

56、配置每个没有连接的引脚,例如要将NIOS II软核CPU中配置的FLASH,SRAM,SDRAM等存储器与外部芯片对应相连。FPGA芯片的每个引脚都有对应的名字,在对各个模块生成引脚并编译后,在Pin Planner中配置各个引脚的位置,在配置完成后,进行编译,编译成功后,整体硬件系统就设计完成了。整体原理图如下图5-5所示。图5-5 系统整体原理图完成系统的硬件编译后,就可生成一个SOF文件,这个文件是用于向FPGA下载的。在Quartus II环境下,选择TOOLS下拉式菜单中的Programmer,就可将此文件写入FPGA芯片。烧写程序环境如下图5-6。图5-6 烧写程序环境5.4 软件

57、编写与测试在硬件系统设计完毕后,要向NIOS II软核CPU中写入程序,用于控制各个模块的运作。硬件的设计是在Quartus II环境中完成的,而软件设计是在NIOS II IDE开发平台中完成的。NIOS II软核是系统的核心,NIOS II IDE是NIOS II系列嵌入式处理器的基本软件开发工具,相应的函数丰富,语法简便,采用文件操作的方式访问系统外设,设计人员可以根据系统的硬件结构十分方便地设计系统的软件。NIOS II的开发是在NIOS II IDE环境下进行,利用C语言编写NIOS II完成的主要任务有:控制门限信号的长短,门限信号是由定时器控制的;读取FPGA中两个计数器计数的值

58、,并按照公式计算,然后送入LCD显示频率值;还有控制发出计数器的清零信号。程序流程图如下图5-7所示。图5-7程序流程图以下程序frequency.c便是根据上面流程图写出的。#include#include#include#include#includealt_types.h#includesys/alt_irq.h#includealtera_avalon_pio_regs.h#includesystem.h#includeLCD.h#include sys/alt_dev.h#include priv/alt_busy_sleep.h#include math.hvoid LCD_Ini

59、t() lcd_write_cmd(LCD_BASE,0x38); usleep(2000); lcd_write_cmd(LCD_BASE,0x0C); /*关显示,光标闪烁方式*/ usleep(2000); lcd_write_cmd(LCD_BASE,0x01); /*清显示*/ usleep(2000); lcd_write_cmd(LCD_BASE,0x06); /*光标前移方式,不允许整屏移动*/ usleep(2000); lcd_write_cmd(LCD_BASE,0x80); /*显存指针指向初始位置*/ usleep(2000); void LCD_Show_Text(char*Text) int i; for(i=0;istrlen(Text);i+) lcd_write_data(LCD_BASE,Texti); usleep(2000); void LCD_Line1() lcd_write_cmd(LCD_BASE,0x80); usleep(2000);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!