基于FPGA的数字电压表显示设计(共21页).doc

上传人:飞****2 文档编号:13439558 上传时间:2022-04-29 格式:DOC 页数:21 大小:780.50KB
返回 下载 相关 举报
基于FPGA的数字电压表显示设计(共21页).doc_第1页
第1页 / 共21页
基于FPGA的数字电压表显示设计(共21页).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《基于FPGA的数字电压表显示设计(共21页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的数字电压表显示设计(共21页).doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上目 录专心-专注-专业第1章 引言数字电压表(Digital Voltmeter)简称DVM,是实验中的重要仪表,其数字化是指将连续的模拟电压量转换成不连续、离散的数字量并加以显示。传统的实验用模拟电压表功能单一、精度低、体积大,内部核心多是模数转换器,其精度很大程度上限制了整个表的准确度,可靠性较差。而应用EDA(电子设汁自动化)技术及FPGA(现场可编程门阵列),其集成度高、速度快、性能十分可靠、用户可自由编程且编程语言通俗易懂、系统功能扩展非常方便。采用FPGA芯片控制通用A/D转换器可使速度、灵活性大大优于由微处理器和通用A/D转换器构成的数字电压表。1数字式

2、仪表是能把连续的被测量自动地变成断续的、用数字编码方式的、并以十进 制数字自动显示测量结果的一种测量仪表。这是一种新型仪表,它把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起。成为仪器、仪表领域中独 立而完整的一个分支。 1.1设计要求本课题主要研究数字电压表的一般设计原理,并结合新型的可编程逻辑器件(FPGA)设计了一种方便、实用的数字电压表。我主要设计软件那部分。采用ACEX1k30TC144-3的一款FPGA芯片实现电压表的数码显示的功能。设计中所要求设计的数字电压表为4位,由三大部分组成,数据转换模块进行模数转换后到数据处理模块处理得到BCD码转换成能被数码管识别

3、的字型编码,再到显示模块,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。1.2设计思路硬件设计所需的硬件主要有:直流电平输出电路、ADC0809、七段显示器。基于FPGA的数字电压表有三大部分组成,具体分为A/D转换电路、FPGA控制电路和显示电路。电压输入A/D转换器后转化为数字量送入FPGA芯片,经过FPGA的逻辑控制(A/D控制、BCD码转换和扫描显示),最终由LED数码显示结果。图1.1硬件结构图1.2 设计方案我采用8位AD转换器ADC0809对模拟电压采样,以一片高性能FPGA芯片为控制核心,以软件实现了诸多硬件功能,对电压信号的转换结果进行准确实时的运算处理并送

4、出显示。系统的主要功能都集成在一块芯片上,大大减少了系统的分立元件数量,降低了功耗,增加了可靠性,较好地实现了电压的精准测量第2章 硬件电路设计2.1硬件电路框图数字电压表,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。通常按A/D转换方式的不同将DVM分成两大类,一类是直接转换型;另一类是间接转换型,又称积分型,包括电压一频率变换。而由前面分析可知本课题的核心电路路由FPGA完成,选用了Altera公司的EPF10K10LC84-4芯片,

5、用VHDL语言对它进行设计,本设计是由三大模块组成,(1)AD转换模块,组要负责将模拟信号转换为数字信号,以便送FPGA处理;(2)FPGA模块,激活A/D转换器动作、接收A/D转换器传递过来的数字转换值,将接收到的转换值调整成对应的数字信号;(3)显示模块,将数据处理模块输出的4位BCD码译成相应7段数码驱功值,使模拟电压值在4个数码管上显示。工作时,系统按一定的速率采集输入的模拟电压,经ADC0809CCN转换为8位数字量,此8位数字量经FPGA处理得到模拟电压的数字码,再输入数码管获得被测电压的数字显示。此电压表的测量范围:05V,四位数码管显示。整个数字电压表的硬件结构如3-1图所示9

6、。电压输入A/D转换器A/D控制控制核心FPGA扫描显示显示器BCD码转换图2.1系统原理图2.2ADC0809模块ADC0809是采样分辨率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。2.2.1 A/D转换器的主要技术指标(1)分辨率分辨率是指A/D转换器能分辨的最小模拟输入量。通常用能转换成的数字量的位数来表示,如8位、10位、12位、16位等。位数越高,分辨率越高。例如,对于8位A/D转换器,当输入电压满刻度为5V时,其输出数字量的变化范围为0255,转换电路对输入模拟电压的分辨能

7、力为5V/25519.5mV。(2)转换时间转换时间是A/D转换器完成一次转换所需的时间。转换时间是编程时必须考虑的参数。若CPU采用无条件传送方式输入A/D转换后的数据,则从启动A/D芯片转换开始,到A/D芯片转换结束,需要一定的时间,此时间为延时等待时间,实现延时等待的一段延时程序,要放在启动转换程序之后,此延时等待时间必须大于或等于A/D转换时间。(3)量程量程是指A/D转换器所能转换的输入电压范围。(4)精度精度是指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。A/D转换电路中与每一个数字量对应的模拟输入量并非是单一的数值,而是一个范围 。例如:对满刻度输入电压为5V的12

8、位A/D转换器, 122mV,定义为数字量的最小有效位LSB。若理论上输入的模拟量A,产生数字量D,而实际输入模拟量A 产生还是数字量D,则称此转换器的精度为 0LSB。当模拟电压 或 还是产生同一数字量D,则称其精度为 1/4LSB。目前常用的A/D转换器的精度为1/42LSB。实现A/ D 转换的方法比较多, 常见的有计数法、双积分法和逐次逼近法。由于逐次逼近式A / D 转换具有速度快, 分辨率高等优点, 而且采用该法的ADC芯片成本较低, 因此在设计中采用该种方式。逐次逼近式A/ D 转换器的原理如图2 所示。它由逐次逼近寄存器、D/ A 转换器、比较器和缓冲寄存器等组成。当启动信号由

9、高电平变为低电平时, 逐次逼近寄存器清0, 这时, D/ A 转换器输出电压V o 也为0, 当启动信号变为高电平时, 转换开始, 同时, 逐次逼近寄存器进行计数。10图2.2逐次逼近式A/D转换逐次逼近寄存器工作时与普通计数器不同, 它不是从低位向高位逐一进行计数和进位, 而是从最高位开始, 通过设置试探值来进行计数。在第一个时钟脉冲到来时, 控制电路把最高位送到逐次逼近寄存器, 使它的输出为, 这个输出数字一出现, D/ A 转换器的输出电压V o 就成为满量程值的128/ 255。这时, 若Vo Vi 则作为比较器的运算放大器的输出就成为低电平, 控制电路据此清除逐次逼近寄存器中的最高位

10、; 若Vo V i 则比较器输出为低电平, 从而使次高位域复位; 若V oUo , 比较器得出1, 则控制电路使逐次比较寄存器的D7 位保留1; 如果Ui Uo , 比较器输出为0, 则清除位D7 的1, 然后使次高位D6 = 1, 与上次的结果相加后经DPA 转换得到新的U0 ( 满量程的3P4 或1P4) ,再与Ui 进行比较, 决定保留还是清除位上的1, ,重复上述过程, 直至D0 为止。这样, 经过8 次比较后, 8 位逐次比较寄存器的状态即为一次A/D 转换完成后所对应的数字量。ADC0809 除含有8 位逐次逼近型APD 转换器外, 还有8 通道多路转换器和3 位地址锁存和译码器,

11、 以实现对8 路输入模拟量的选择。当地址锁存允许信号有效时, 将3 位地址锁入地址锁存器中,经译码器选择8 路模拟量中的一路通过8 位A/D 转换器转换输出。输出端具有三态输出锁存缓冲器,受输出允许信号的控制, 当该信号为高电平时, 打开输出缓冲器三态门, 转换结果输出到数据总线上; 当该信号为低电平时, 输出数据线呈高阻态。ADC0809 是CMOS 工艺芯片, 允许的电源范围较宽,可从5 15V。当该芯片采用单5V 电源工作时, 模拟信号输入范围为0 5V, 输出可与TTL 兼容。14根据ADC0809工作原理设计的采样控制器模。模块图如图4.2所示。其中d7: 0 , eoc, oe,

12、ale, start 与ADC0809 的同名引脚相对应; reset 为复位信号, 高电平有效; q 7: 0 为采样控制器的输出数据, 其实际上是ADC0809 转换所得数据的缓存输出。基于Verilog HDL 语言的A/D 采样控制器设计图3.2 采样控制模块。图3.3采样控制模块功能仿真波形图3.3数据处理模块ADC0809是8位模数转换器,它的输出状态共有256种,如果输入信号Ui为05V电压范围,则每两个状态值为5/(256-1),约为0.0196V,故测量分辨率为0.02V。常用测量方法是:当读取到DB7DB0转换值是XXH时,电压测量值为UXXH0.02V;本设计直接采用宏模

13、块的参数化乘法器lpm_mult和参数化常数产生器,直接计算U的值。然后将八位二进制通过译码输出得到12位BCD码。 17图3.4数据处理模块图3.5 8位二进制转换BCD码图3.6 8位2进制转换成BCD码的功能仿真图3.4扫描、显示模块DATAIN是数据处理模块输出的电压值的BCD码;SEL是数码管的片选信号;通过扫描分别输出四位电压值的BCD码DATA,将BCD码译成相应的7段数码驱动值,送数码管显示。图3.7显示模块图3.8七段显示译码器模块的符号图3.9 扫描显示原理图图3.10扫描显示功能仿真波形图总结随着信息技术获得了突飞猛进的发展,信息技术渗透了我们生活的几乎全部领域,改变着人

14、类的生存状态和思维模式。而我们的课题所涉及的电子设计自动化(EDA)技术就是在这种时代背景下产生的,并影响巨大。FPGA是新型的可编程逻辑器件,与传统 ASIC 相比,具有设计开发周期短、设计制造成本低、开发工具先进 等优点,特别适合于产品的样品开发和小批量生产。传统的数字电压表多以单片机为控制核心,芯片集成度不高,系统连线复杂,难以小型化,尤其在产品需求发生变化时,不得不重新布版、调试,增加了投资风险和成本。而采用 FPGA 进行产品开发,可以灵活地进行模块配置,大大缩短了开发周期,也有利于数字电压表向小型化、集成化的方向发展。 随着电子技术的发展,当前数字电子系统的设计正朝着速度快、容量大

15、、体积小、重量轻的方向发展。推动该潮流发展的引擎就是日趋进步和完善的ASIC设计技术。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能的要求,自上而下的完成相应的描述、综合、优化、仿真与验证,直接生成器件。上述设计过程除了系统行为和功能描述以外,其余所有的设计几乎都可以用计算机来自动完成,也就说做到了电子设计自动化(EDA)这样做可以大大的缩短系统的设计周期,以适应当今品种多、批量小的电子市场的需求。致 谢在本文完成之际,这里面每一个页面的显示,每一行语句的调试,每一段文本的输入之中都有我辛勤的汗水。设计的时间虽然短暂,我却从中学到了很多的东西。我由衷地感谢关怀,教诲,帮助、支持和

16、鼓励我完成学业的老师和朋友,特别感谢我的指导老师XX老师。她一直对我悉心指导,严格要求,热情鼓励。为我创造了很多锻炼提高的机会。XX老师为我论文的顺利完成指出了很好的方向。XX老师渊博的知识,宽大无私的胸怀,夜以继日的工作精神,对事业的孜孜追求,骄人不倦的教师风范和对问题的敏锐观察力,都将使我毕生受益。在此我谨向我的指导老师以及在毕业设计过程中给予我很大帮助的老师、同学致以最诚挚的参考文献1 包本刚.基于FPGA的数字电压表设计J.电子工程师,2007,25(5):6365.2 潘松主编EDA技术实用教程M.北京:科学出版社,2003,P5.3 彭成.基于FPGA的测频测相及CAN通信模拟的技

17、术与实现D. 大连:大连海事大学,2006.4 王宝友.EDA技术实用教程,北京联合大学出版社(自然科学版),20025 程文华.基于条件插值算法的手持终端图像显示技术研究D. 华东师范大学,2010.6 李跃文. 基于FPGA的中频电源控制电路的研究D. 重庆:重庆大学,2009.7 赵雅兴.FPGA原理设计与应用M.天津大学出版社,1999,P89P92.8 易仲芳主编80X86微型计算机原理与应用M.电子工业出版社,1995,P84P89.源程序:module adc( d, clk, eoc, lock, ale, start, oe, adda, q, reset) ;input r

18、eset;input 7: 0 d;input clk, eoc;output lock, ale, start, oe, adda;output 7: 0 q;reg 7: 0 q;reg ale, start, oe, adda;reg 2:0 current_state; reg 2:0 next_state;reg lock;/定义状态parameter st0= 3b000;parameter st1= 3b001;parameter st2= 3b010;parameter st3= 3b011;parameter st4= 3b100;parameter st5= 3b101;p

19、arameter st6= 3b110;/组合逻辑always( current_state or eoc)begincase( current_state)st0: begin ale = 0; start = 0; oe = 0; lock= 0; next_state = st1; endst1: begin ale = 1; start = 0; oe = 0; lock= 0; next_state = st2; endst2: begin ale = 0; start = 1; oe = 0; lock= 0; next_state = st3; endst3: begin ale

20、 = 0; start = 0; oe = 0; lock= 0;if( ! eoc = = 1 ) next_state = st3;else next_state = st4; endst4: begin ale = 0; start = 0; oe = 0; lock= 0;if( eoc = 0) next_state = st4; else next_state = st5; endst5: begin ale = 0; start = 0; oe = 1; lock= 0; next_state = st6; endst6: begin ale = 0; start = 0; oe = 1; lock= 1; next_state = st0; enddefault : begin ale = 0; start = 0; oe = 0;lock = 0; next_state = st0; endendcaseendalways( posedge clk or posedge reset )beginif( reset )begincurrent_state= 0;adda = 1;endelsecurrent_state= next_state;end/数据锁存always ( posedge lock)beginq = d;endendmodule

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com