基于FPGA的数字电压表的设计

2012-10-17 21:40:47来源: 21ic
   

0 引 言

传统的数字电压表设汁通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成。ASIC完成从模拟量的输入到数字量的输出,是数字电压表的心脏。这种电压表的设计简单、精确度高,但是这种设计方法由于采用了ASIC器件使得它欠缺灵活性,其系统功能固定,难以更新扩展。后来发展起来的用微处理器(单片机)控制通用A/D转换器件的数字电压表的设计的灵活性明显提高,系统功能的扩展变得简单,但是由于微处理器的引脚数量有限,其控制转换速度和灵活性还是不能满足日益发展的电子工业的需求。而应用EDA(电子设汁自动化)技术及FPGA(现场可编程门阵列),其集成度高、速度快、性能十分可靠、用户可自由编程且编程语言通俗易懂、系统功能扩展非常方便[1]。采用FPGA芯片控制通用A/D转换器可使速度、灵活性大大优于由微处理器和通用A/D转换器构成的数字电压表。

1 系统设计原理

本设计利用ADC0809作为电压采样端口,FPGA作为系统的核心器件,用LED(发光二极管)进行数码显示。

采用Alterla公司FLEX10K系列EPF10K20TC144-4 芯片FPGA作为系统的核心器件,负责ADC0809的A/D转换的启动、地址锁存、输入通道选择、数据读取。同时,把读取的8位二进制数据转换成便于输出的3位十进制BCD码送给数码管,以显示当前测量电压值。这些工作由ADC0809转换控制模块、数据转换模块、译码模块完成。

2 FPGA软件设计及模块仿真

2.1 A/D转换控制模块的软件设计

本模块完成ADC0809的初始化、A/D转换的启动、地址锁存、通道选择、状态读取及数据读取、数据锁存等功能。此模块的软件设计主要采用VHDL的多进程状态机完成[4]。

工作时序如下:上电瞬问,FPGA初始化,ADD置成"01",状态机处于第1个状态,此时ALE、START、OE、LOCK(数据锁存信号)均置0,初始化ADC0809。第1个上升沿到来时,状态机由状态1转换到状态2,ALE、START置1,OE、LOCK为0,此时地址锁存信号有效,由ALE将ADD的"01"状态锁存到地址锁存器并译码,选择IN1即通道1作为模拟信号输入端,同时STRAT信号有效,启动采样。第2个上升沿到来时,状态机由状态2转换到状态3,ALE、START返回到低电平,OE、LOCK继续为低电平,此时如果FPGA检测到ADC0809的EOC引脚由低电平变成高电平(A/D转换完成),则当时钟上升沿到来时,转换到状态3,否则继续保持在状态2,直到转换完成。由状态2转换到状态3后,OE置高电平,允许转换数据输出,其余信号状态保持不变。时钟上升沿再次到来时,状态机由状态3转换到状态4,LOCK置高电平,其余信号与状态3一样。当LOCK由低电平转换到高电平的瞬问,稳定的数据锁存到锁存器。上升沿再次到来,则状态机返回状态0。控制器在时钟信号控制下完成状态转换,实现对ADC0809的控制[3]。

2.2 数据转换模块的软件设计

本设计采用5 V参考电压,测量范围为0~5 V,由于转换器件为8位,则电压的最小分辨率为0.02V,因此待转换数据。

编一个查表程序,对上述电压进行BCD码编码,然后根据对应的4位BCD码相加的结果决定是否进位,从而得到待处理数据的BCD码[5]。例如:从AD0809上取得的数据为"11011110",1101对应的电压值为4.16 V,其对应的BCD编码为"010000010110",1110对应的电压值为0.28 V,其对应的BCD编码为"000000101000"。低4位相加为1110,大于9,加6将其调整为BCD码,其值为0100,并且向前有一进位。4位相加的结果为0011,由于低位有进位,因此最终结果为0100。高4位的结果为0100。3位合计的值为4.44 V,与4.16+0.28的结果相符。

2.3 译码输出模块的软件设计

本模块的任务是把数据处理模块处理得到的BCD码转换成能被数码管识别的字型编码。8位二进制数转换成BCD码后为12位,因此需3个数码管显示结果。为了节省资源,采用扫描方式控制数码管的显示,扫描时钟由CK提供,其频率应大于100 Hz,否则会有闪烁现象。

3 系统仿真及验证

当FPGA从AD0809上读取的数据为0F8H(十进制248)时输出的段码为66H、6FH、7D,分别对应字符4、9、6,加上小数点就是4.96 V,而其分辨率为0.02 V,则A/D转换得到的电压值应为0F8x0.02 V=4.96 V。显示结果与理论推算完全相符。

选EPF10K10TC20TC144-4作为目标器件并进行正确的引脚锁定后,将程序下载到目标配置器件[6]。改变ADC0809的模拟通道输入电压,观察数码管的输出,其输出随着输人电压的变化而变化,当输入电压变为0时,数码管的输出为0,输人为5 V时数码管输出也为5.00 V,其余情况下输入与输出也一致,至此,基于FPGA的数字电压表设计完成。本设计的结果已通过硬件测试。

4 结束语

本设计只用了ADC0809的一个通道,在不改变硬件电路的前提下,只要稍微改变VHDL的源程序,就可实现其余通道的利用,构成复杂的数据采集系统。数据处理模块用查表方式设计,设计比较简单,易于理解,但对FPGA的芯片资源利用率不高,因此要想编写出更高效率的数据处理源程序,可以用权位相加的方法实现,其原理见文献[5]。这种方法不是很好理解,但是其资源利用率明显高于查表方式;同时可以用LCD(液晶显示器)代替LED显示,用LCD显示时译码程序要进行相应更改,以便与LCD驱动时序同步。编码用ASCII码,并且由于LCD的速度较慢,因此时钟频率不能过高,否则将不能对LCD进行读写。本设计通过添加一些前置电路就可扩展其功能,如果采用16位A/D转换器,则可以提高其分辨率。

关键字:FPGA  数字电压表

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2012/1017/article_3199.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA
数字电压表

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved