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

引 言
传统的数字电压表设汁通常以大规模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转换器,则可以提高其分辨率。

AMD的7nm锐龙APU核显性能飞跃,最多拥有15组CU单元
苹果和三星王者争雄 国产手机赚钱难 华为也不例外
我国人工智能领域专利申请呈快速增长 其中百度遥遥领先
Topic 模型的使用
AI预测是否能百分百信任?
基于FPGA的数字电压表的设计
SAR/MTI雷达在无人机(UAV)中的作用
LG Innotek的LED部门重组,专注于光学解决方案和基板材料业务
中美贸易战开启新战场 瞄准中国云计算命门
一款型号为M2011K2C的小米新机获得认证
蓝宝石在化学机械抛光过程中的材料去除机理
光荣登榜 — 莫之比入围《2023年长沙市技术创新中心(产业引导类)拟备案名单》
基于一种可控的LED照明驱动系统设计
半导体封装:键合铜丝的性能优势与主要应用问题
全屏幕手机与生物识别技术正成为手机的创新技术点之一
情人节送什么礼物给女生比较好?好看耐用的蓝牙耳机推荐
爱思强MOCVD系统获艾迈斯欧司朗认证,助力加快Micro LED量产
力度十足的低音炮LM3886
引领工业4.0发展的技术
光距感 接近传感芯片的工作原理