基于FPGA的数字电压表显示设计Word文件下载.docx

上传人:b****1 文档编号:3591157 上传时间:2023-05-02 格式:DOCX 页数:19 大小:311.11KB
下载 相关 举报
基于FPGA的数字电压表显示设计Word文件下载.docx_第1页
第1页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第2页
第2页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第3页
第3页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第4页
第4页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第5页
第5页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第6页
第6页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第7页
第7页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第8页
第8页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第9页
第9页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第10页
第10页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第11页
第11页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第12页
第12页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第13页
第13页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第14页
第14页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第15页
第15页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第16页
第16页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第17页
第17页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第18页
第18页 / 共19页
基于FPGA的数字电压表显示设计Word文件下载.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的数字电压表显示设计Word文件下载.docx

《基于FPGA的数字电压表显示设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字电压表显示设计Word文件下载.docx(19页珍藏版)》请在冰点文库上搜索。

基于FPGA的数字电压表显示设计Word文件下载.docx

1.1设计要求

本课题主要研究数字电压表的一般设计原理,并结合新型的可编程逻辑器件(FPGA)设计了一种方便、实用的数字电压

表。

我主要设计软件那部分。

采用ACEX1k30TC144-3的一款FPGA芯片实现电压表的数码显示的功能。

设计中所要求设计的数字电压表为4位,由三大部分组成,数据转换模块进行模数转换后到数据处理模块处理得到BCD码转换成能被数码管识别的字型编码,再到显示模块,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。

1.2设计思路

硬件设计所需的硬件主要有:

直流电平输出电路、ADC0809、七段显示器。

基于FPGA的数字电压表有三大部分组成,具体分为A/D转换电路、FPGA控制电路和显示电路。

电压输入A/D转换器后转化为数字量送入FPGA芯片,经过FPGA的逻辑控制(A/D控制、BCD码转换和扫描显示),最终由LED数码显示结果。

图1.1硬件结构图

1.2设计方案

我采用8位A/D转换器ADC0809对模拟电压采样,以一片高性能FPGA芯片为控制核心,以软件实现了诸多硬件功能,对电压信号的转换结果进行准确实时的运算处理并送出显示。

系统的主要功能都集成在一块芯片上,大大减少了系统的分立元件数量,降低了功耗,增加了可靠性,较好地实现了电压的精准测量

第2章硬件电路设计

2.1硬件电路框图

数字电压表,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。

通常按A/D转换方式的不同将DVM分成两大类,一类是直接转换型;

另一类是间接转换型,又称积分型,包括电压一频率变换。

而由前面分析可知本课题的核心电路路由FPGA完成,选用了Altera公司的EPF10K10LC84-4芯片,用VHDL语言对它进行设计,本设计是由三大模块组成,

(1)AD转换模块,组要负责将模拟信号转换为数字信号,以便送FPGA处理;

(2)FPGA模块,激活A/D转换器动作、接收A/D转换器传递过来的数字转换值,将接收到的转换值调整成对应的数字信号;

(3)显示模块,将数据处理模块输出的4位BCD码译成相应7段数码驱功值,使模拟电压值在4个数码管上显示。

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

此电压表的测量范围:

0~5V,四位数码管显示。

整个数字电压表的硬件结构如3-1图所示[9]。

图2.1系统原理图

2.2ADC0809模块

ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

2.2.1A/D转换器的主要技术指标

(1)分辨率

分辨率是指A/D转换器能分辨的最小模拟输入量。

通常用能转换成的数字量的位数来表示,如8位、10位、12位、16位等。

位数越高,分辨率越高。

例如,对于8位A/D转换器,当输入电压满刻度为5V时,其输出数字量的变化范围为0~255,转换电路对输入模拟电压的分辨能力为5V/255=19.5mV。

(2)转换时间

转换时间是A/D转换器完成一次转换所需的时间。

转换时间是编程时必须考虑的参数。

若CPU采用无条件传送方式输入A/D转换后的数据,则从启动A/D芯片转换开始,到A/D芯片转换结束,需要一定的时间,此时间为延时等待时间,实现延时等待的一段延时程序,要放在启动转换程序之后,此延时等待时间必须大于或等于A/D转换时间。

(3)量程

量程是指A/D转换器所能转换的输入电压范围。

(4)精度

精度是指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。

A/D转换电路中与每一个数字量对应的模拟输入量并非是单一的数值,而是一个范围。

例如:

对满刻度输入电压为5V的12位A/D转换器,==1.22mV,定义为数字量的最小有效位LSB。

若理论上输入的模拟量A,产生数字量D,而实际输入模拟量A产生还是数字量D,则称此转换器的精度为0LSB。

当模拟电压或还是产生同一数字量D,则称其精度为1/4LSB。

目前常用的A/D转换器的精度为1/4~2LSB。

实现A/D转换的方法比较多,常见的有计数法、双积分法和逐次逼近法。

由于逐次逼近式A/D转换具有速度快,分辨率高等优点,而且采用该法的ADC芯片成本较低,因此在设计中采用该种方式。

逐次逼近式A/D转换器的原理如图2所示。

它由逐次逼近寄存器、D/A转换器、比较器和缓冲寄存器等组成。

当启动信号由高电平变为低电平时,逐次逼近寄存器清0,这时,D/A转换器输出电压Vo也为0,当启动信号变为高电平时,转换开始,同时,逐次逼近寄存器进行计数。

[10]

图2.2逐次逼近式A/D转换

逐次逼近寄存器工作时与普通计数器不同,它不是从低位向高位逐一进行计数和进位,而是从最高位开始,通过设置试探值来进行计数。

在第一个时钟脉冲到来时,控制电路把最高位送到逐次逼近寄存器,使它的输出为10000000,这个输出数字一出现,D/A转换器的输出电压Vo就成为满量程值的128/255。

这时,若Vo>

Vi则作为比较器的运算放大器的输出就成为低电平,控制电路据此清除逐次逼近寄存器中的最高位;

若Vo<

Vi则比较器输出高电平,控制电路使最高位的1保留下来。

若最高位被保留下来,则逐次逼近寄存器的内容为10000000,下一个时钟脉冲使次低位D6为1。

于是,逐次逼近寄存器的值为11000000,D/A转换器的输出电压Vo到达满量程值的192/255。

此后,若Vo>

Vi则比较器输出为低电平,从而使次高位域复位;

若Vo<

Vi则比较器输出为高电平,从而保留次高位为1。

重复上述过程,经过N次比较以后,逐次逼近寄存器中得到的值就是转换后的数值。

转换结束后,控制电路送出一个低电平作为结束信号,此信号的下降沿将逐次逼近寄存器中的数字量送入缓冲寄存器,从而得到数字量输出。

2.2.2ADC0809工作原理

(1)ADC0809.芯片介绍

ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。

ADC0809的分辨率为8位,转换时间约1OOus,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。

图2.3ADC0809管脚分配图

(2).ADC0809的工作原理

START是转换启动信号,高电平有效;

ALE是3位通道选择地址(ADDC,ADDB,ADDA)信号的锁存信号。

当模拟量送至某一输入端(INI或IN2等),由3位地址信号选择,而地址信号由ALE锁存;

EOC是转换情况状态信号(类似于AD574的STATUS),当启动转换约100us后,EOC产生一个负脉冲,以表示转换结束;

在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线。

至此ADC0809的一次转换结束了。

[11]

2.2.3.ADC0809的工作状态

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

2.3FPGA模块

我们使用的FPGA是Altera公司的ACEX1K器件1K30TC144-3,采用ACEX1k30TC144-3的一款FPGA芯片实现电压表的数码显示的功能。

在其中主要用状态机作法,产生ADC0809CCN的片选信号、读/写控制信号,通过状态信号INTR判断转换是否结束;

转换结束后将转换数据锁存并输出。

主要负责对AD转换器的控制,用以初始化A/D转换器,并启动且接受A/D转换器传递过来的数字转换值然后将接受到的转换值调整成模拟电压所对应的数字信号。

图2.4FPGA模块

3.4显示模块

本模块的任务是把数据处理模块处理得到的BCD码转换成能被数码管识别的字型编码。

8位二进制数转换成BCD码后为12位,因此需4个数码管显示结果,由于采用GW48实验板,该板自带了译码电路,故只需将数据处理模块处理得到的12位BCD码DATA[11~0]分为三组即DATA[11~8]、DATA[7~4]、DATA_OUT[3~0];

然后分别接GW48实验板上的引脚PIO35~PIO32、PIO39~PIO36、PIO43~PIO40相接。

图2.5显示模块

图2.6LED显示数字电压表设计原理框图

 

第3章FPGA功能模块的设计及仿真

3.1系统软件原理

电压输入A/D转换器后转化为数字量送入FPGA芯片,经过FPGA的逻辑控

制(A/D控制、BCD码转换和扫描显示),最终由LED数码显示结果。

控制模块,A/D转换控制模块,用以初始化A/D转换器(即ADC0809)、并启动且接收ADC0809传递过来的数字转换值

数据处理模块,将接收到的转换值调整成对应的数字信号

显示模块,将数据处理模块输出的4位BCD码译成相应7段数码驱功值,使模拟电压值在3个数码管上显示。

具体工作方式如下图所示,首先,被测电压信号进入A/D转换器,FPGA中控制信号模块发出控制信号,启动A/D转换器进行转换,其采样得到的数字信号数据在相应的码制转换模块中转换为显示代码。

最后译码驱动模块发出显示控制与驱动信号,驱动外部的LCD模块显示相应的数据。

图3.1语言设计流程图

3.2采样控制模块

8位A/D转换器ADC0809为单极性输入、逐次逼近型A/D转换器逐次逼近式ADC是应用最广泛的一种A/D转换方法。

逐次逼近式进行转换时,用一个逐次比较寄存器存放转换出来的数字量,转换结束时,将数字量送到缓冲器中。

[12]由启动信号对逐次比较寄存器清零,使D/A转换器输出电压U0也为零。

比较器输出高电平,转换开始。

同时,逐次逼近寄存器在控制电路控制下进行计数[13]。

ADC0809控制逻辑是通过类似对分搜索的方法来控制逐次比较寄存器进行数,即首先使最高位D7=1,经D/A转换后得到一个满量程一半的模拟电压U0。

U0与输入电压Ui进行比较,如果Ui>

Uo,比较器得出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位地址锁存和译码器,以实现对8路输入模拟量的选择。

当地址锁存允许信号有效时,将3位地址锁入地址锁存器中,经译码器选择8路模拟量中的一路通过8位A/D转换器转换输出。

输出端具有三态输出锁存缓冲器,受输出允许信号的控制,当该信号为高电平时,打开输出缓冲器三态门,转换结果输出到数据总线上;

当该信号为低电平时,输出数据线呈高阻态。

ADC0809是CMOS工艺芯片,允许的电源范围较宽,可从5~15V。

当该芯片采用单5V电源工作时,模拟信号输入范围为0~5V,输出可与TTL兼容。

[14]

根据ADC0809工作原理设计的采样控制器模。

模块图如图4.2所示。

其中d[7:

0],eoc,oe,ale,start与ADC0809的同名引脚相对应;

reset为复位信号,高电平有效;

q[7:

0]为采样控制器的输出数据,其实际上是ADC0809转换所得数据的缓存输出。

基于VerilogHDL语言的A/D采样控制器设计

图3.2采样控制模块

图3.3采样控制模块功能仿真波形图

3.3数据处理模块

ADC0809是8位模数转换器,它的输出状态共有256种,如果输入信号Ui为0~5V电压范围,则每两个状态值为5/(256-1),约为0.0196V,故测量分辨率为0.02V。

常用测量方法是:

当读取到DB7~DB0转换值是XXH时,电压测量值为U≈XXH×

0.02V;

本设计直接采用宏模块的参数化乘法器lpm_mult和参数化常数产生器,直接计算U的值。

然后将八位二进制通过译码输出得到12位BCD码。

[17]

图3.4数据处理模块

图3.58位二进制转换BCD码

图3.68位2进制转换成BCD码的功能仿真图

3.4扫描、显示模块

DATAIN是数据处理模块输出的电压值的BCD码;

SEL是数码管的片选信号;

通过扫描分别输出四位电压值的BCD码DATA,将BCD码译成相应的7段数码驱动值,送数码管显示。

图3.7显示模块

图3.8七段显示译码器模块的符号

图3.9扫描显示原理图

图3.10扫描显示功能仿真波形图

总结

随着信息技术获得了突飞猛进的发展,信息技术渗透了我们生活的几乎全部领域,改变着人类的生存状态和思维模式。

而我们的课题所涉及的电子设计自动化(EDA)技术就是在这种时代背景下产生的,并影响巨大。

FPGA是新型的可编程逻辑器件,与传统ASIC相比,具有设计开发周期短、设计制造成本低、开发工具先进等优点,特别适合于产品的样品开发和小批量生产。

传统的数字电压表多以单片机为控制核心,芯片集成度不高,系统连线复杂,难以小型化,尤其在产品需求发生变化时,不得不重新布版、调试,增加了投资风险和成本。

而采用FPGA进行产品开发,可以灵活地进行模块配置,大大缩短了开发周期,也有利于数字电压表向小型化、集成化的方向发展。

随着电子技术的发展,当前数字电子系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。

推动该潮流发展的引擎就是日趋进步和完善的ASIC设计技术。

目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能的要求,自上而下的完成相应的描述、综合、优化、仿真与验证,直接生成器件。

上述设计过程除了系统行为和功能描述以外,其余所有的设计几乎都可以用计算机来自动完成,也就说做到了电子设计自动化(EDA)这样做可以大大的缩短系统的设计周期,以适应当今品种多、批量小的电子市场的需求。

致谢

在本文完成之际,这里面每一个页面的显示,每一行语句的调试,每一段文本的输入之中都有我辛勤的汗水。

设计的时间虽然短暂,我却从中学到了很多的东西。

我由衷地感谢关怀,教诲,帮助、支持和鼓励我完成学业的老师和朋友,特别感谢我的指导老师XX老师。

她一直对我悉心指导,严格要求,热情鼓励。

为我创造了很多锻炼提高的机会。

XX老师为我论文的顺利完成指出了很好的方向。

XX老师渊博的知识,宽大无私的胸怀,夜以继日的工作精神,对事业的孜孜追求,骄人不倦的教师风范和对问题的敏锐观察力,都将使我毕生受益。

在此我谨向我的指导老师以及在毕业设计过程中给予我很大帮助的老师、同学致以最诚挚的

参考文献

[1]包本刚.基于FPGA的数字电压表设计[J].电子工程师,2007,25(5):

63-65.

[2]潘松主编《EDA技术实用教程》[M].北京:

科学出版社,2003,P5.

[3]彭成.基于FPGA的测频测相及CAN通信模拟的技术与实现[D].大连:

大连海事大学,2006.

[4]王宝友.EDA技术实用教程,北京联合大学出版社(自然科学版),2002

[5]程文华.基于条件插值算法的手持终端图像显示技术研究[D].华东师范大学,2010.

[6]李跃文.基于FPGA的中频电源控制电路的研究[D].重庆:

重庆大学,2009.

[7]赵雅兴.《FPGA原理设计与应用》[M].天津大学出版社,1999,P89—P92.

[8]易仲芳主编《80X86微型计算机原理与应用》[M].电子工业出版社,1995,P84—P89.

moduleadc(d,clk,eoc,lock,ale,start,oe,adda,q,reset);

inputreset;

input[7:

0]d;

inputclk,eoc;

outputlock,ale,start,oe,adda;

output[7:

0]q;

reg[7:

regale,start,oe,adda;

reg[2:

0]current_state;

0]next_state;

reglock;

//定义状态

parameterst0=3'

b000;

parameterst1=3'

b001;

parameterst2=3'

b010;

parameterst3=3'

b011;

parameterst4=3'

b100;

parameterst5=3'

b101;

parameterst6=3'

b110;

//组合逻辑

always@(current_stateoreoc)

begin

case(current_state)

st0:

beginale<

=0;

start<

oe<

lock<

next_state<

=st1;

end

st1:

=1;

=st2;

st2:

=st3;

st3:

if(!

eoc==1)next_state<

elsenext_state<

=st4;

st4:

if(eoc==0)next_state<

else

next_state<

=st5;

st5:

=st6;

st6:

=st0;

default:

lock<

endcase

end

always@(posedgeclkorposedgereset)

if(reset)

current_state<

adda<

else

=next_state;

//数据锁存

always@(posedgelock)

q<

=d;

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2