[资料] 【小梅哥FPGA进阶教程】第十三章 四通道数字电压表

[复制链接]
发表于 2017-2-26 15:52:04   1160 查看 8 回复 显示全部楼层 倒序浏览
分享
十三、四通道数字电压表


本文由山东大学研友袁卓贡献,特此感谢

实验目的

设计一个四通道的数字电压表

实验平台
芯航线FPGA核心板、AD/DA模块
实验现象
实现一个四通道的数字电压表,其中可以用按键切换测量通道并在4位数码管上显示对应的测量值。
实验原理及步骤
数字电压表的工作原理即为,被测信号接入ADC模块的输入引脚,FPGA控制ADC的转换进程以及原始数据的采集,并将其采集到的二进制数据转换为数码管的显示数据。其中按键可以选择ADC模块不同的通道。其系统工作原理图如图1所示。
图1 系统工作原理图
由工作原理图可以暂时将本系统划分为ADC控制模块、码制转换模块、按键数据模块以及数码管驱动模块组成。
ADC控制模块之TLV1544
本系统采用的是TLV1544芯片,其为10位的ADC。因此其理论测量精度为,且当其输出为’dx时,实际电压为V。本模块的设计在基础课程已经讲解,此处不再详述。其模块接口示意图如下所示。
图2 ADC模块接口示意图
数据预处理模块
ADC模块输出还是一个十位二进制数,因此需要先将数据转换成实际电压值。
上式中3.42为满量程电压,data为输出的二进制数,1024为ADC总的阶梯数。之所以是3.42,是本模块基准电源TL341输出电压。
这样得出的数据太小,因此先将其放大倍。这里也可以放大其他倍数。
经过上式的转换,还是一个小数,这里再放大1000倍以消除小数。即实际显示的数据为实际电压的1000倍。这样就完成了二进制数到实际电压的转换。

由于在上面TLV1544驱动设计中,数据更新速度为4000ns/次。这样已足够用做电压表显示,但是此处为了使数据稳定,加入均值滤波程序。本模块接口示意图如图3所示,其接口功能列表如表1所示。
图3 数据预处理模块接口示意图
表1 数据预处理模块接口功能描述
先将原始数据进行累加1024次。
将累加后的数据除以1024,也就是右移10位,这里数据总位数为20直接取其高10位即可。
利用上面推导的公式即可输出最后的数据。
码制转换模块
由于ADC输出的为10位二进制数而数码管需要的是BCD码的格式,因此需要将其进行码制的转换。
首先,先了解二进制与BCD码的位数对应关系。比如一个8位二进制码,可以表示的最大十进制数为255,转换成BCD码为 0010_0101_0101,共需12位,其中每4位组成一个BCD单元。n位二进制码转换成D个BCD码的n~D对应关系表见表2。
表2  n~D对应关系
此处采用加3移位法进行转换,附件中列举了另一种方式来进行转换。以8位二进制转换为3位BCD码为例,转换步骤是:将待转换的二进制码从最高位开始左移BCD的寄存器(从高位到低位排列),每移一次,检查每一位BCD码是否大于4,是则加上3,否则不变。左移8次后,即完成了转换。需要注意的是第八次移位后不需要检查是否大于5。
注意:为什么检查每一个BCD码是否大于4,因为如果大于 4(比如 5、6),下一步左移就要溢出了,所以加 3,等于左移后的加 6,起到十进制调节的作用。
表3给出了一个二进制码11101011转换成8421BCD码的时序。
表3  B/BCD时序
首先进行判断一个BCD码是否大于4,是则进行加3处理,否则输出原来数值。
由以上原理可看出,这里需要定义一个10+12位的寄存器。同时从表3克拿出有几位二进制数就需移位几次。这里为了增加适用范围,将输入定位20位的二进制数,因此输出为7*4位BCD数。这样定义一个48位的移位寄存器。低20位为二进制数,高28位为BCD码。
每移位一次就需验证高28位BCD码是否大于4因此,编写以下代码。
现在编写顶层文件,其端口示意图及功能描述如下所示/
图4 码制转换模块接口示意图
表4 码制转换模块接口功能描述
向左移位20次。


校验以及输出最终输出数据。
按键输入模块
本部分在基础课程中也有介绍,此处只给出其端口示意图。
图5 按键输入模块接口示意图
通道选择模块
通过按键进行ADC四通道的选择,本模块接口示意图以及功能描述如下所示。
图6 通道选择模块接口示意图
表5 通道选择模块接口功能描述
内部除了例化还需产生通道选择信号,这里用的模块有四个通道但是为何按键一来就加’d2,是因为通道选择实际信号需为0000、0010、0100、1000,这样我们就需要加’d2。
数码管驱动模块
本部分在基础课程中也有介绍,此处只给出其端口示意图。
图7 数码管模块接口示意图
顶层设计
此处只需例化各个模块即可,顶层模块接口示意图如下所示。
图8 顶层模块接口示意图
综合后的RTL视图如图9所示。
图9 RTL Viewer视图
分配好引脚下载后可以看到改变输入电压,数码管上均有正常的显示,且切换通道时数据可以随之更新。
至此一个四通道数字电压表设计完毕。
附:基于查找表的数据电压换算
前面指出了一种数据处理及码制的方式,这里再列举利用查找表的实现方式。
这里因为是输入的10位二进制数,也就是说每一位变化对应的变化量为即为精度,这样就可以得出以下待转换数据与实际电压的对照表。这样当3.296v




这样就可以建立一个查找表,来分别计算其对应位的电压值的BCD码,然后相加。


如果0~3位相加大于9,则加6调整为BCD码,并产生进位信号。再进行4~7位相加加上进位信号判断,再判断8-9位。


这样再将以上两个部分放置到一个always块中即可。同样可以看到实际效果。将输入数据显示格式修改为十进制后,输入512时输出0001_0110_0101_0000。此时实际电压为512*3.296/1024=1.648,显示为1.650。输入256时实际电压0.824,显示为0.825。
如有更多问题,欢迎加入芯航线 FPGA 技术支持群交流学习:472607506
小梅哥
芯航线电子工作室
关于学习资料,小梅哥系列所有能够开放的资料和更新(包括视频教程,程序代码,教程文档,工具软件,开发板资料)都会发布在我的云分享。(记得订阅)链接:http://yun.baidu.com/share/home? ... are#category/type=0
赠送芯航线AC6102型开发板配套资料预览版下载链接:链接:http://pan.baidu.com/s/1slW2Ojj 密码:9fn3
赠送SOPC公开课链接和FPGA进阶视频教程。链接:http://pan.baidu.com/s/1bEzaFW 密码:rsyh




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
标签:电压表 二进制

实习生

发表于 2017-3-3 09:58:30  
回复

举报

工程师

发表于 2017-3-20 14:00:01  
谢谢分享,学习学习。。。
回复

点赞 举报

实习生

发表于 2017-4-8 15:29:08  
学习/学习/学习
回复

点赞 举报

等待验证会员

发表于 2017-5-8 11:26:06  
有例程么呀,发一下例程呗
回复

点赞 举报

实习生

发表于 2017-5-25 17:08:49  
有这个实验的工程文件么,pdf里只有部分代码
回复

点赞 举报

等待验证会员

发表于 2017-6-19 22:58:05  
有没有完整的代码
回复

点赞 举报

发表于 2018-3-31 15:10:39   来自手机
敢问使用fpga做数字电压表,相比单片机有什么优势么?不会显得大材小用么?
回复

点赞 举报

实习生

发表于 2018-4-4 22:29:51  
人跟人过若若若若若过若过若过若若
回复

点赞 举报

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

方案交易

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

电子展览展会专区

芯片求购|供应发布区