[工学]基于VHDL语言及FPGA的等精度频率计设计_第1页
[工学]基于VHDL语言及FPGA的等精度频率计设计_第2页
[工学]基于VHDL语言及FPGA的等精度频率计设计_第3页
[工学]基于VHDL语言及FPGA的等精度频率计设计_第4页
[工学]基于VHDL语言及FPGA的等精度频率计设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、基于eda的等精度频率计设计第一章 绪论随着基于pld的eda技术的发展和应用领域的扩大与深入,eda技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。eda技术使得设计者的工作仅限于利用软件的方式就可以完成对系统硬件功能的实现。而等精度的频率计设计正是利用了eda技术的这一优越性。1.1 eda 技术现代电子设计技术的核心是eda(electronic design automation)技术。eda技术就是依赖功能强大的计算机,在eda工具软件平台上,对以硬件描述语言hdl(hardware design language)为系统逻辑描述手段完成的设计文件,并自动地完成逻辑

2、编译、逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。eda技术使得设计者的工作仅限于软件的方式,即利用硬件描述语言和eda软件来完成对系统硬件功能的实现。 eda技术在硬件实现方面融合了大规模集成电路制造技术、ic版图设计技术、asic测试和封装技术、fpga/cpld编程下载技术、自动测试技术等;在计算机辅助工程方面融合了计算机辅助设计(cad)、计算机辅助制造(cam)、计算机辅助测试(cat)、计算机辅助工程(cae)技术译介多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、

3、数字系统建设模和优化技术及长线技术理论等。因此eda技术为现代电子理论和设计的表达与实现提供了可能性。在现代化技术的所有领域种,得以飞速发展的科学技术多为计算机辅助设计,而非自动化设计。显然,最早进入设计自动化的技术领域之一是电子技术,这就是为什么电子技术始终处于所有科学技术发展最前列的原因之一。不难理解,eda技术已不是某一学科的分支,或某种新的技能技术,它应该是一门综合性学科。它融合多学科于一体,又渗透于各学科之中,打破了软件和硬件简的壁垒,使计算机的软件技术于硬件实现、设计效率和产品性能合二为一,它代表了电子设计技术合应用技术的发展方向。1.2 频率测量方法概述对于频率测量所提出的要求,

4、取决于所测频率范围和测量任务。主要有直读法、比较法、计数法。直读法又称利用无源网络频率特性测频法,它包含有电桥法和谐振法。比较法是将被测频率信号与已知频率信号相比较,通过观、听比较结果,获得被测信号的频率。属比较法的有:拍频法、差频法、示波法。计数法又电容充电式和电子计数式两种。前者是利用电子电路控制电容器充放电的次数,再用磁电式仪表测量充、放电电流的大小,从而指示出被测信号的频率值。后者是根据频率的定义进行测量的一种方法,他是用电子计数器显示单位时间内通过被测信号的周期个数来实现频率的测量。常用的直接测频方法主要有测频法和测周期法两种。测频法就是在确定的闸门时间tw内,记录被测信号的变化周期

5、数(或脉冲个数)nx,则被测信号的频率为:fx=nx/tw。测周期法需要有标准信号的频率fs,在待测信号的一个周期tx内,记录标准频率的周期数ns,则被测信号的频率为:fx=fs/ns。这两种方法的计数值会产生1个字误差,并且测试精度与计数器中记录的数值nx或ns有关。为了保证测试精度,一般对于低频信号采用测周期法;对于高频信号采用测频法,因此测试时很不方便,所以人门提出等精度测频方法。1.3 本系统目的和任务a)、课题总体目的1、熟悉fpga器件的结构及工作原理2、掌握电路硬件描述方法(原理图描述、 vhdl语言描述)3、熟悉数字频率计的功能特点及工作原理。4、学会利用eda开发软件及装置实

6、现电路设计、编程、仿真及下载。b)、等精度频率计的设计要求功能基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,即测量精度随被测信号的频率的变化而变化,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,且在整个频率区域能保持恒定的测试精度。在此完成的设计项目可达到的指标为:1频率测量a 测量范围 信号:方波、正弦波;幅度:0.5v5v;频率:0.1hz10mhzb测量误差0.001%2脉冲宽度测量 a测量范围 信号:脉冲波;幅度:0.5v5v;脉冲宽度1s 1sb测量精度0.1s3测量并显示周期脉冲信号(幅度0.5v5v、频率1hz1khz)的占空比, 占空比变化范围

7、为10%90%,测量误差1%。4显示器 十进制数字显示,显示刷新时间为5秒的轮流显示或固定显示,可转换。5. 具有自校功能,时标信号频率为1mhz。6. 自行设计满足本设计任务要求的稳压电源。7. 在以上测量范围以及测量误差条件下,进行小信号的频率测量,提出并实 现抗干扰的措施。 第二章 设计工具和器件介绍2.1 vhdl及汇编语言简介2.1.1 vhdl简介vhdl的英文全名是very-high-speed integrated circuit hardwaredescription language,诞生于1982年。1987年底,vhdl被ieee和美国国防部确认为标准硬件描述语言 。自

8、ieee公布了vhdl的标准版本,ieee-1076(简称87版)之后,各eda公司相继推出了自己的vhdl设计环境,或宣布自己的设计工具可以和vhdl接口。此后vhdl在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,ieee对vhdl进行了修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本,(简称93版)。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,vhdl于ver

9、ilog语言将承担起大部分的数字系统设计任务。 veryhighspeed integrated hardware description language (vhdl) 是ieee、工业标准硬件描述语言 用语言的方式而非图形等方式描述硬件电路,容易修改,容易保存 特别适合于设计的电路有:复杂组合逻辑电路,如: 译码器、编码器、加减法器、多路选择器、地址译码器.状态机等等.vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件

10、,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。应用vhdl进行工程设计的优点是多方面的。(1)与其他的硬件描述语言相比,vhdl具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)vhdl丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可

11、行性,随时可对设计进行仿真模拟。(3)vhdl语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用vhdl完成的一个确定的设计,可以利用eda工具进行逻辑综合和优化,并自动的把vhdl描述设计转变成门级网表。(5)vhdl对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.1.2 汇编语言简介编语言(assembly language)是面向机器的程序设计语言。 在汇编语合中,用助记符(memoni)代

12、替操作码,用地址符号(symbol)或标号(label)代替地址妈。这样用符号代替机器语盲的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。 使用汇编语言编写的程序,机器个能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为f汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。汇编语言的实质和机器语言是相同的,都是直接对硬

13、件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。目前汇编语言被大量应用于设备控制、加密破解、开发单片机产品.对计算机性能的优化等。2.2 fpga器件简介本装置采用alt

14、era公司的flex 10k10 lc844型芯片为测频部分核心器件。flex10k主要由嵌入式阵列块、逻辑阵列块、快速通道(easttrack)和i/o单元四部分组成。其中逻辑阵列块由多个逻辑单元构成。其引脚图如下图2.1所示:图 2.1 flex 10k10 lc844型芯片引脚主要配置引脚如下:msel1、msel0:输入;接地。nstatus:双向漏极开路;命令状态下器件的状态输出。加电后,flex10k立即驱动该引脚到低电位,然后在100ms内释放掉它,nstatus必须经过1.0k电阻上拉到vcc,如果配置中发生错误,flex10k将其拉低。nconfig:输入;配置控制输入。低电

15、位使flex10k器件复位,在由低到高的跳变过程中启动配置。conf_done:双向漏极开路;状态输出。在配置期间,flex10k将其驱动为低。所有配置数据无误差接收后,flex10k将其置为三态,由于有上拉电阻,所以将变为高电平,表示配置成功。状态输入。输入高电位引导器件执行初始化过程并进入用户状态。 conf_done必须经过1.0k电阻上拉到vcc,而且可以将外电路驱动为低以延时flex10k初始化过程。dclk:输入;为外部数据源提供时钟。nce:输入;flex10k器件使能输入,nce为低时使能配置过程,而且为单片配置时,nce必须始终为低。nceo:输出(专用于多片器件);flex

16、10k配置完成后,输出为低。在多片级联配置时,驱动下一片的nce端。data0:输入;数据输入,在data0引脚上的一位配置数据。2.3 max+plus ii 简介max+plus ii是altera提供的fpga/cpld开发集成环境,altera是世界最大的可编程逻辑器件供应商之一。max+plus ii界面友好,使用便捷,被誉为业界最易用易学的eda软件。在max+plus ii上可以完成整个设计流程(即:设计输入、综合、适配、时序仿真与功能仿真、以及编程下载),它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。max+plus ii编译器支持的硬件描

17、述语言有vhdl(支持vhdl87及vhdl97标准)、verilog hdl及ahdl(altere hdl)。max+plus ii允许来自第三方的edif文件输入,这可以与其他eda工具进行接口。max+plus ii支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的工程模块(元件)进行调用,从而解决了原理图与hdl混合输入设计的问题。在设计输入后,max+plus ii的 编译器将给出设计输入的错误报告。max+plus ii拥有性能良好的 设计错误定位器,用于确定文本或图形设计中的错误。在进入编译网表提取功能块后,max+plus ii将从适配文件中提取snf时

18、序仿真文件simulation netlist file(仿真网表文件)。snf文件详细记录了 当前适配的延时和逻辑功能信息,可用于对设计进行时序仿真。在作仿真前,需要利用波形编辑器编辑一个波形激励文件,用于仿真验证时的激励。编译和仿真经检测无误后,便可以将下载信息通过max+plus ii提供的编译器下载入目标器件中了。max+plus ii开发系统有许多优点:1. 开放的界面altera的工作与eda厂家紧密结合,使max+plus ii软件可与其它工业标准的设计输入、综合与校验工具相连接。设计人员可以使用altera或标准eda设计输入工具来建立逻辑设计,使用max+plus ii编译器

19、(compiler)对altera器件设计进行编译,并使用altera或其它eda校验工具进行器件或板极仿真。目前,max+plus ii支持与cadence、exemplarlogic、mentor graphics、synplicity、viewlogic和其它公司所提供的eda工具的接口。2. 与结构无关max+plus ii系统的核心compiler支持altera公司的flex 10k、flex 8000、flex6000、max9000、max7000、max5000和classic可编程逻辑器件系列,提供了业界唯一真正与结构无关的可编程逻辑设计环境。max+plus ii的编译器

20、还提供了强大的逻辑综合与优化功能,使用户比较容易地将其设计集成到器件中。3. 多平台max+plus ii软件可在基于486、奔腾pc机的windows nt3.51或4.0、windows95、windows 98下运行,也可以在sun spac stations,hp9000 series700/800和ibm risc system/6000工作站上运行。4. 完全集成化max+plus ii的设计输入、处理与校验功能全部集成在统一的开发环境下,这样可以加快动态调试,缩短开发周期。5. 丰富的设计库max+plus ii提供了丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊

21、的逻辑宏功能(macro-function)以及新型的参数化的兆功能(mage-function)。调用库单元进行设计,可以大大减轻设计人员的工作量,也可成倍地缩短设计周期。6. 模块化工具设计人员可以从各种设计输入、处理和校验选项中进行选择从而使设计环境用户花,必要时,还可根据需要添加新功能。由于max+plus ii支持各种器件系列,设计人员不必要学习新工具即可支持新结构。7. 硬件描述语言(hdl)max+plus ii 软件支持各种hdl设计输入选项,包括vhdl、veriloghdl和altera自己的硬件描述语言ahdl。8. megacore功能megacore功能是为复杂的系统

22、级功能提供的,经过校验的hdl网表文件,它能使flex 10k、flex8000、flex6000、max9000和max7000器件系列实现最优化的设计。充分利用这些megacore功能会使设计人员的设计任务大大减轻,可把更多的精力投入到改进各种设计和最终的产品上。9. opencore特性max+plus ii软件具有开放核的特点,它允许设计人员添加自己认为有价值的宏函数。2.4 protel简介在现代电子工业的发展中,多种多样的集成电路应用越来越广泛,电路的走线越来越复杂,因此,用手工的方法设计和制作电路板就很难适应电子工业的发展。随着计算机技术的发展,人人们通过计算机解决了这个问题。软

23、件厂商针对广大电子界人士的需求及时推出了自己的电子线路cad(计算机辅助设计)软件,这些软件有些共同的特点:它们都能够协助用户完成电子产品线路的设计工作,比较完善的电子线路cad软件至少具有自动布线的功能,更完善的还有自动布局、逻辑检测、逻辑模拟等功能。protel99就是这类软件中的杰出代表protel99主要由两大部分组成:(1) 原理图设计系统。它主要用于电路原理图设计,为印制电路板的设计打好基础。原理图编辑器提供高速、智能的原理图编辑手段,产生高质量的原理图输出结果。它的元件库提供了超过6万种元件,最大限度地覆盖了众多的电子元件生产厂家的繁复庞杂的元件类型。元件的连线使用自动化的画线工

24、具,然后通过功能强大的电器法则检测(erc)从对所绘制的原理图进行快速检查。印制电路板系统。它主要用于印制电路板的设计,设计最终的pcb文件直接联系到印制电路板的生产。印制电路板编辑器为用户提供了一条快捷的设计印制电路板的途径。pcb编辑器通过它的交互性编辑环境达到了手动设计与自动化设计的完美融合。pcb的底层数据结构最大限度地考虑了用户对速度的要求,通过对功能强大的设计法则设置,用户可以有效地控制印制电路板的过程。2.5 单片机89c51简介本设计主要采用了单片机89c51对fpga进行控制,并通过对fpga中传来的计数数值进行计算,并返回fpga器件,最后通过vhdl语言控制fpga将计数

25、数值转换为用于数码管显示的七段码并最终显示于数码管上。本设计主要利用了单片机计算能力强的特点,从而弥补了fpga器件不能计算的不足,实现了在经过计数比较,然后再计算,将二进制数据转换为十进制数据,最后显示为比较直观的测频数值。at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。at89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制

26、造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其引脚图如图2.2所示:图2.2 单片机at89c51引脚图基本结构:每一单片机包括:1. 中央处理器cpu2. 内部数据存储器ram,用以存放可以 读写的数据 。 3. 内部指令存储器rom,用以存放程序, 也可存放一些原始数据和表格。4. 四个8位输入/输出接口,每个口既可用作输入,也可用作输出。5. 两个定时/计数器,可以对外部

27、事件进行计数,也可设计成定时器。6. 内部中断控制系统7. 一个串行接口电路,使得数据可以一位一位地在计算机与外设之间传送。8. 内部时钟产生电路,但晶体和微调电容需外接。主要特性:与mcs-51 兼容 4k字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 管脚说明:at89c51是标准的40线双列直插式封装的集成电路芯片。其各引脚说明如下:vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏级

28、开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4

29、个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出

30、电流(ill)这是由于上拉的缘故。p3口也可作为at89c51的一些特殊功能口,如下表所示:口管脚 备选功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在

31、flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea

32、保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。vcc:电源端vss:接地端第三章 等精度数字频率计的硬件总体设计3.1 高精度频率计的硬件组成在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号;而单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求。采用

33、高集成度、高速的现场可编程门阵列fpga为实现高速,高精度的测频提供了保证。整个测频系统分为多个功能模块,如信号同步输入、控制部件、分频和计数部件、定时、脉冲宽度测量、数码显示、放大整形和标频信号等模块。除数码管、放大整形和标频信号外,其它模块可集成于fpga芯片中,并且各逻辑模块用硬件描述语言hdl来描述其功能,如用vhdl或ahdl来对各功能模块进行逻辑描述。然后通过eda开发平台,对设计文件自动地完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对fpga芯片进行编程,以实现系统的设计要求。高精度数字频率计主要由5个部分构成:(1) 信号整形电路。用于对待测信号进行放大和整

34、形,以便作为pld器件的输入信号。(2) 测频电路。是测频的核心电路模块,可以由fpga等pld器件担任。20mhz的标准频率信号直接进入fpga。(3) 单片机电路模块。用于控制fpga的测频操作和读取测频数据,并作出相应的处理。单片机的p0口直接读取测试数据,p2口向fpga发控制指令。(4) 键盘模块。用5个键执行测试控制,一个是复位键,其余是命令键。(5) 数码显示模块。其硬件框图如下图3.1所示,由图可看出,待测信号经过放大整形电路的处理后,进入tclk端口,作为标准频率信号的50mhz信号进入bclk端口,他们分别被fpga中的两个计数器分别计数,并根据特定的比例关系将数值再返回单

35、片机由单片机进行计算,最后将所得数值返回fpga,并通过fpga将之在数码管中显示出来。(详细介绍见测品原理一节)图3.1 整体系统框图3.2 整体电路设计总体电路图见电路图3.2如下页所示,由图可知,主体控制电路是用单片机控制fpga的工作。被测信号经过整形电路的整形后,进入fpga,由fpga对被测信号进行计数并将数值返回到单片机中,由单片机进行计算,最后,单片机将计算后的数据整理再送回fpga,由fpga控制的显示电路进行显示,从而将测试结果直观地显示出来。图3.2 整体电路图(1) 单片机的8位p2作为数据采集口,接fpga的8位数据口data0.7,负责读取数据。(2) 单片机的p1

36、.5与start控制信号相连,单片机可通过信号start了解计数是否结束,以确定何时可以读取数据。(3) p1.6与eend信号线相连,当其由低电平变为高电平时指示脉宽计数结束。(4) a3、a4和a5与sel0.2相连,用于控制多路通道的数据选择,当sel分别为000、001、010011时,由低8位到高8位读出标准频率计数值;当sel分别为100、101、110、111时,由低8位到高8位读出待测频率计数值。(5) p1.7接清零信号clr,高电平有效,每一测频周期开始都应首先清零。地址线a5、a6分别接控制信号cl和spul。cl和spul协同控制测试操作。3.3 具体模块的设计3.3.

37、1 整形电路设计其中,前两级是实现发大功能,后一级是将正弦波整形成方波。这样被测信号经过整形电路的整形,最终进入fpga作为tclk信号,用于计数器的计数。电路图如下图3.3所示:信号经d1、d2限幅,由q1、q2放大,再经74hc14史密特触发器整形送至后面的tclk输入端待测量。 图3.3 整形电路图3.3.2 稳压电源设计电源是各种电子线路的动力源,所以的电子设备对供电电压都有一定的要求,本项设计要求的电源为+5v稳压电源。稳定的电压是由市电经变压、整流、滤波、稳压后得到的。此处我们采用最普通而成熟的变压器+整流滤波+稳压的方案,其电路图如下图3.4所示: 图3.4 电源电路图图中,经变

38、压器变压后的交流低压通过4个1n4007组成的全桥整流,得到的脉动的直流电由c16、c18滤波,再由稳压芯片7805稳成5v,供后级使用。c17、c19能完成后级电路的退耦。值得注意的是c17、c19的电容和应小于c16、c18的电容和,否则当电源断电后,电流会倒灌,可能损坏稳压芯片。设变压器输出电压为9v,变压器效率为80%,则除去稳压模块、变压器的损耗,变压器大致功率应为:p1 465 ma*9v*1.4/60% = 9.765w 10w取功率为10w的变压器足够使用。3.3.3 键盘电路设计本系统需要键盘控制的键有四个,分别为测周期键、测频率键、测占空比键、测脉宽键。键盘结构有独立式矩阵

39、式两种。独立式按键的各键相互独立,每个键都有一根输入线,各键的状态互不影响,cpu需对各键状态分别检测。只适用于按键量较少的场合,本系统按键较少,可采用独立式按键接口电路形式。矩阵式键盘适用于按键较多的场合,矩阵式键盘的按键位于行、列交叉点上。键盘电路如下图3.5所示: 图3.5 键盘电路图由图可知,若无键按下,p10p13口保持高电平,有键按下后,变为低电平。定义键s11、s12、s13、s14分别为测频率键、测周期键、测脉冲键、测占空比键。即为口p10、p11、p12、p13分别控制测频率、测周期、测脉冲和测占空比。采用查询方式工作,先读p1口,若某位为低电平,先延时10ms,然后再读该位

40、,如果读得的值仍为低电平,可确认此键已按下。然后调用该键的处理子程序,各键优先级别由软件安排。3.3.4 显示电路设计由于该系统中能操作led数码管显示的有两个器件,单片机和fpga。用单片机来控制显示部分的优点是方案成熟,但却占用了许多单片机的cpu时间,加重了它的负荷,减慢了它处理其他重要数据的速度,而且还占用了单片机并不富裕的i/o资源。可如果使用fpga来实现,能大大减轻mcu的负担,并且fpga有足够多的i/o口和硬件单元,正好用来控制显示。由于fpga是并行工作的,显示模块可以独立工作,不会被打断和打断其他进程。显示器有静态显示和动态显示两种方式。静态显示就是每一位都用各自的位输出

41、口控制,在显示某个字符时,相应的段恒定发光或不发光。显然,静态显示需占用较多的i/o口线。动态显示即将多个7段led的段选端复接在一起,只用一个8位输出口控制段选,段选码同时加到各个7段led显示器上,通过控制各个显示器公共阴极轮流接地的方法,逐一轮流地启动各个led。在这种方法中,只要恰当地选择点亮时间和间隔时间,就会给人一种假象,似乎各位led是“同时”显示的,动态显示其优点是硬件简单,且占用i/o口较少。本系统可采用动态显示方式,显示电路如下图3.6所示: 图3.6 显示电路图第四章 等精度数字频率计软件设计及仿真本系统中由单片机作为总控制模块,对整个系统进行控制,并对相关数据进行数值处

42、理。当系统上电的时候,单片机要完成对整个系统的初始化,然后检测按键输入,又输入事件就完成相应的功能。fpga测量模块的工作模式、工作状态都是由单片机控制的,这时单片机要实现了与fpga的接口和测量时序,以操作fpga相应的模块并且进行数据的传输。软件的总体流程图如下所示:nnnyyy开始单片机及10k10初始化按键检测及设置状态标志标志测频率?标志测脉宽?标志测占空?设置测频率方式设置测脉宽方式设置测占空比方式读取数据读取数据读取数据数据计算及转换数据计算及转换数据计算及转换转换的bcd数送回10k10的寄存单元主程序流程具体模块流程图参见附录3,此处不再一一介绍。4.1 测频原理等精度测频的

43、实现方法可以简单地用下图4.1和波形图4.2来说明。图4. 2中“预之置门控信号”cl可由单片机发出,可以证明,在1秒制至0.1秒间选择的范围内,cl的时间宽度对测频精度几乎没有影响,在此设其宽度为。bzh和tf模块是两个可控的32位高速计数器,bena和ena分别是他们的计数允许信号端,高电平有效。 图4.1 测频主控结构图标准频率信号从bzh的时钟输入端bclk输入,设其频率位;经整形后的被测信号从与bzh相似的32位计数器tf的时钟输入端tclk输入,设其真实频率至值为,被测频率为。测频原理说明如下:测频开始前,首先发出一个清零信号clr,使两个计数器和d触发器置0,同时通过信号ena,

44、禁止两个计数器计数。这是一个初始化操作。然后由单片机发出允许测频命令,即令预置门控信号cl为高电平,这时d触发器要一直等到被测信号的上升沿通过时q端才被置1,与此同时,将同时启动计数器bhz和tf,进入图4. 3所示的“计数允许周期”。在此期间,bht和tf分别对被测信号和标准频率信号同时计数。当秒后,预置门控信号被单片机置为低电平,但此时两个计数器仍没有停止计数,一直等到随后而至的被测信号的上升沿到来时,才通过d触发器将这两个计数器同时关闭。由图4. 3可见,cl的宽度和发生的时间都不会影响计数使能信号(start)允许计数的周期总是恰好等于待测信号tclk的完整周期数这样一个事实,这正是确

45、保tclk在任何频率条件下都能保持恒定精度的关键。而且cl宽度的改变以及随即的出现时间造成的误差最多只有bclk信号的一个时钟周期,如果bclk由精确稳定的晶体振荡器发出,则任何时刻的绝对测量误差只有亿分之一秒。图4.2 频率计测控时序图设在一次预置门时间中对被测信号的计数值为,对标准频率信号的计数值为,则下式成立: / 41不难得到测得的频率为: (/) 42最后通过控制sel选择信号和64位至8位的多路选择器mux648,将计数器bhz和tf中的两个32位数据分8次读入单片机并按式(42)进行计算和结果显示。 4.2 fpga/cpld开发的vhdl设计根据逻辑原理图4.1、功能波形图4.

46、2,以及以上给出的测频原理说明,可以比较容易地写出相应的vhdl功能描述。程序etester就是此等精度频率计的vhdl完整描述,其综合rtl电路图如图4.3所示:此图中,我们已经将fpga器件与前面的选择器连通在一起,构成了一个整体逻辑模块logic1,这样使得rtl综合图显得更为直观、易懂。同时将图4.1中的两个计数器综合为一块模块counter,被测信号频率和标准频率信号经过计数器的计数,并按照公式 / 得到测得的频率为: (/) 然后将记得数值送入单片机,由单片机完成计算。 图4.3 综合rtl电路图 根据图4.1的连接方式,其与单片机可以按照如下方式接口:1) 单片机的p0口接8位数

47、据data7.0,负责读取测频数据。2) 单片机可以通过信号start,了解计数是否结束,以确定何时可以读取数据。3) eend的功能与start基本相同,当其由低电平变到高电平时指示脉宽计数结束。4) p2.2、p2.1和p2.0与sel2.0相接,用于控制多路通道的数据选择。当sel分别位“000”、“001”、“010”、“011”时,由低8位到高8位读出待测频率计数值;当sel分别为“100”、“101”、“110”、“111”时,由低8位到高8位读出待测频率计数值。5) p2.4接清零信号clr,高电平有效。每一测频周期开始时,都应该首先清零。6) p2.5和p2.6分别接控制信号c

48、l和spul协同控制测试操作。即当spil为1时,cl作为预置门控信号,用于测频计数的时间控制;当spul为0时,cl作为测脉宽控制信号。这时,cl若为1,测tclk的高电平脉宽,而当cl为0时,则测tclk的低电平脉宽。然后分别从data数据口读出bzh对标准频率的计数,即值只需令tclk的低电平脉宽。然后分别从data数据口读出bzh对标准频率的计数,即只需令sel的取值分别为“000”、“001”、“010”、“011”即可。4.3 各模块的设计及仿真分析4.3.1 触发器模块d触发器是最简单并最具代表性的时序电路,它是现代数字系统设计中最基本的时序单元和底层元件.d触发器的描述包含了v

49、hdl对时序电路的最基本和最典型的表达方式,同时也包含了 vhdl中许多最具特色的语言现象。例chufa(见附录2.1)是对d触发器元件的描述。由程序知,它多出以下四部分: (1)由library引导的库的说明部分。 (2)使用了另一种数据类型std_logic。 (3)定义了一个内部节点信号signal. (4)使用了一种新的条件判断表达式。图4.4是触发器的rtl图:图4.4 触发器的rtl图触发器仿真触发器的原理很简单,见程序chufa(见附录2.2)当清零信号clr1为零时,在时钟信号tclk1的上升沿上,输出端口ena将显示cl1的波形,如图4.5(a)可见,仿真后,ena的波形是于

50、cl1的波形相同的,之所以不在同一时间段内,是因为时序延时的影响,如果将时钟信号周期加大,延时现象将有明显改善。图4.5(a) 触发器仿真图而当清零信号为高电平“1”时,则输出端将不再显示波形。其仿真图如图4.5(b)图4.5(b) 触发器仿真图(当clr1为高电平时)4.3.2 计数器模块参照整体rtl图可知,此电路的输入端口只有一个:计数时钟信号clk;数据类型是二进制逻辑位bit;输出端口q的端口模式定义为buffer,其数据类型定义为整数数据类型integer。vhdl规定加、减等算术操作符、对应的操作数(如式a+b中的a和b)的数据类型只能是interger(除非对算术操作符有一些特

51、殊的说明,如重载函数的利用)。因此,如果定义q为integer,表达式q=q+1的运算和数据传输都能满足vhdl对加、减等算术操作的基本要求,即式中的q和1都是整数,满足符号=两边都是整数,加号两边也都是整数的条件。计数器rtl图如图4.5所示:图4.5 计数器rtl图根据计数器程序counter(见附录2.3)可知,清零信号clr3清零后,对于计数信号bzq来说,它的输出取决于计数使能信号bena1和时钟信号bclk3,在使能信号为低电平“0”时,bzq是没有输出的,只有在使能信号为高电平“1”时,bzq才会根据时钟信号bclk3的变化而计数,在bclk3的上升沿上,bzq会计数,而当下一个

52、上升沿到来时,bzq将会相应地计数加1,从而达到计数的目的。同样道理,计数信号tsq的计数也是取决于使能信号bena2和时钟信号tclk3,计数过程的原理跟bzq是完全一样的,此处不再多讲。计数器模块的仿真图如图4.6所示。由图可以看出,计数信号确实是在bena为高电平的时候才有输出的,其他的的状态下,其输出保持为上次计数数值不变。图4.6 计数器模块仿真图4.3.3 选择器模块选择器模块程序见程序select1(附录2.4)。根据程序可知,对于不同的数据读出选择控制信号,将有不同的输出,即:当sel1=“0”(即“000”)时,输出值data为bzq1的07 位;当sel1=“1” (即“0

53、01”)时, 输出值data为bzq1的815 位;当sel1=“2”(即“010”)时,输出值data为bzq1的1623位;当sel1=“3”(即“011”)时,输出值data 为bzq1的2431位;当sel1= “4”(即“100”)时, 输出值data为tsq1的07 位;当sel1=“5”(即“101”)时,输出值data为tsq1的815 位;当sel1=“6”(即“110”)时,输出值data为 tsq1的1623位;当sel1=“7”(即“111”)时,输出值data为 tsq1的2431位;实际仿真波形图如图4.7所示,由图可以看出,输出信号data1确实时按照以上分析分别

54、输出数值的,这里我们只是便于分析验证,设定的bzq1和tsq1的数据比较典型,事实上,bzq1和tsq1的数据时可以设定为任意的8位数据的。图4.7 选择模块仿真图4.3.4 显示模块图4.8 8位数码扫描显示电路图4.8 所示的是8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都连在一起,8个数码管分别由8个选通信号k1k8来选择。被选通的数码管显示数据。例如,在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其他7个数码管呈关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选

55、通信号k1k8分别被单独选通,与此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。为了防止电流过大而损坏数码管,r20r27的电阻必须加入,起到限流的作用。其rtl图如图4.9所示。图4.9 显示模块rtl图4.4 整体顶视模块整体顶视图如图4.10所示。此图主要实现功能为测试频率,具体原理已在前面4.2中有所介绍,此处不再具体说明。此外,该图还包含了脉宽和占空比的测试功能。其中测试脉宽的方式为,对被测信号tclk一个周期内的高电平内的计数个数bzq乘以标准信号的周期,所得结果即为被测信号脉宽。对于占空比的测量,可以通过测量正反两个脉宽的计数值来获得。设bzh对正脉宽的计数值为,对负脉宽的计数值为,则周期计数值为,于是占空比为: 占空比图4.10 整体顶视图图4.11 整

温馨提示

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

评论

0/150

提交评论