数字电压表的VHDL设计与实现

2011-02-22 21:16:22来源: 互联网
在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。本文用FPGA芯片和VHDL语言设计了一个数字电压表,举例说明了利用VHDL语言实现数字系统的过程。

  整个数字电压表的硬件结构如图1所示。

整个数字电压表的硬件结构

  工作时,系统按一定的速率采集输入的模拟电压,经ADC0804转换为8位数字量,此8位数字量经FPGA处理得到模拟电压的数字码,再输入数码管获得被测电压的数字显示。

  此电压表的测量范围:0~5V,三位数码管显示。

  数字电压表的三大模块都是用VHDL语言编程实现的。

  2.1控制模块

  用状态机作法,产生ADC0804的片选信号、读/写控制信号,通过状态信号INTR判断转换是否结束;转换结束后将转换数据锁存并输出。其状态转换图如图2所示。

状态转换图

  ADC0804是8位模数转换器,它的输出状态共有28=256种,如果输入信号Vin为0~5V电压范围,则每两个状态值为5/(256-1),约为0.0196V,故测量分辨率为0.02V。常用测量方法是:当读取到DB7~DB0转换值是XXH时,电压测量值为U≈XXH×0.02V;考虑到直接使用乘法计算对应的电压值将耗用大量的FPGA内部组件,本设计用查表命令来得到正确的电压值。

  在读取到ADC0804的转换数据后,先用查表指令算出高、低4位的两个电压值,并分别用12位BCD码表示;接着设计12位的BCD码加法,如果每4位相加结果超过9需进行加6调整。这样得到模拟电压的BCD码。

程序

  本模块的功能仿真结果如图3所示;当转换数据为00010101,通过查表高4位0001是0.32V,而低4位0101是0.1V,最后的电压输出结果是0.32V+0.1V=0.42V,它的BCD码表示为000001000010,仿真结果正确。

功能仿真结果

  2.3扫描、显示模块

  如图4所示,CLK是扫描时钟,其频率为1kHz,由给定的40MHz时钟分频得到;DATAIN是数据处理模块输出的电压值的BCD码;SEL是数码管的片选信号;POINT是数码管小数点驱动;通过扫描分别输出3位电压值的BCD码DATAOUT,并通过DISP将BCD码译成相应的7段数码驱动值,送数码管显示。

扫描

  本文设计的VHDL语言程序已在MAXPLUSⅡ工具软件上进行了编译、仿真和调试,并通过编程器下载到了EP1K100QC208-3芯片。经过实验验证,本设计是正确的,其电压显示值误差没有超过量化台阶上限(0.02V)。本文给出的设计思想也适用于其他基于PLD芯片的系统设计。

关键字:数字  数字电压表  电压表  设计

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

小广播

独家专题更多

富士通铁电随机存储器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