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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简易数字电压表设计报告目录第一章设计指标1.1设计要求…………………………………………………………..21.2硬件环境…………………………………………………………..2第二章系统概述2.1设计思想…………………………………………………………..32.2可行性论证…………………………………………….42.3各功能的组成………………………………………………………52.4总体工作过程………………………………………………………6第三章单元电路设计与分析3.1各单元电路的选择………………………………………………83.2设计及工作原理分析………………………………………………8第四章电路的组构与调试4.1遇到的主要问题…………………………………………………..134.2现象记录及原因分析…………………………………………….144.3解决措施及效果…………………………………………………144.4功能的测试方法、步骤、设备、记录的数据……………………15第五章结束语5.1对设计题目的结论性意见及进一步改进的意向说明…………..175.2总结设计的收获与体会………………………………………….17附图(电路总图)………………………………………………………19参考文献……………………………………………………………20第一章设计指标1.1设计要求设计一个建议数字电压表,一FPGA实现模数转换电路实现电压采集,输入电压范围为0~5V,分辨率为8位二进制。一LED气短数码管显示3位有效数字,其显示精度为0.02V。1.2硬件环境设计对象的实现环境为LP-----2900开发装置LP—2900装置上用到的装置有七段数码显示器、ADC0804模数转换器,AD7528数模转换器,其中ADC0804模数转换器的数据输出端口与AD7528的数据输入端口并为数据总线。由FPGA的D0——D7I/O端口控制。ADC0804与AD7528的片选又FPGA的CS1,CS2I/O端口控制,ADC0804的输出使能端RD与AD7528的输入使能WR都由FPGA的R/W端口控制,ADC0804的数据转换使能端口由DE3——DE1组成的数码控制。使用这些端口是应注意两种转换器的分时使用,以避免数据的冲突。七段数码显示器连接为动态扫描的方式,通过3——8译码器的输出控制各位显示器的共阴极。第二章系统概述2.1设计思想由于ADC0804芯片的转换时间为100微秒,所以整个电路由经过分频器分频后的10KHZ的时钟驱动。系统一共分为6个状态,其中2、3、4三个状态控制AD7528芯片进行按键数据的输入、与转换,将按键产生的数字信号转换为模拟信号输入到ADC0804中。用5、6两个状态来控制ADC0804将转换好的数字地址信号输入的ROM中。用7状态来控制ADC0804芯片对模拟信号进行转换。ADC0804送出的地址信息送到ROM后,ROM送出所要显示的的电压的数值,12位数据通过数据选择器74153的选择后,输入到现实译码器中,经过译码器译码后对LED七段数码显示器进行控制,输出三位数据位,一位为单位。2.2可行性论证本实验的状态机的的状态分配有多种方式方案一:8状态的状态机让计数器在111时置位,置位为000,则构成为8状态的状态机,使用此状态机时需要编辑显示译码器使其有灭显位,对七段数码显示器的后两位进行灭显。方案二:6/5状态机的状态机让计数器在111时置位,置位为010/011,构成6/5状态的状态机。使用此状态机时不用设置灭显位。使用LED七段数码显示器的后4位进行显示。同时用输出状态的后两位来驱动74153的时钟来经行数据选择。实现电路图如下2.3各功能的组成整个电路分为时钟发生部分、状态机、状态译码部分、ROM、电压(数字形式)的输入与地址输出总线、显示电路部分。1、时钟发生部分时钟发生部分又一个分频器构成,其功能为使LP——2900产生的10MHZ的时钟信号分频后将其频率降低,降低到合适的频率输出,来驱动整个电路。2、状态机状态机又一个计数器构成,来产生6种状态,使各个芯片、显示电路部分、ROM、与总线电路部分能够分时工作,而不产生数据冲突。3状态译码部分状态译码部分是将状态机产生的6个状态合理的进行分配,给各个电路,次部分为整个电路的最重要的核心部分。可视为整个电路的大脑。4ROMROM是用来接收ADC0804产生的数字信号,将其作为地址,取出相应储存单元的数据,将其输送给现实电路部分。既ROM是数据的储存器。5数据总线部分此部分的主要功能是使各个部分直接进行数据的传送与接受。6显示电路部分此部分电路为显示最后的结果既测量电压的部分。2.4总体工作过程参考原理框图如下1.设计CS1、CS2、RW、OE、LD各信号的控制逻辑和单稳态电路。分析综合(Analysis&Synthesis)后仿真,观察各信号是否满足控制要求。2.输入动态扫描显示译码模块,单位符显示码用常数模块设置。3.参考节1.2.5例1建立电压数据转换表数据文件。若在Matlab环境中运算将A/D采样输出x变换成电压测量值y的函数,可在其命令窗中输入与转换函数运算式(1005255xy)相应的Matlab的函数命令行:y=round(linspace(0,255,256)*5*100/255);乘以100的目的是将函数值y整数部分扩展成3位。x取0~255共256个整数值,所以显示命令可以是reshape(y,8,32)’或reshape(y,16,16)’。执行命令后拷贝Matlab命令窗显示的256个运算结果。4.在QuartusII中建立新的数据文件(扩展名.mif或.hex)。根据设计预习准备选择合适的字数(Numberofwords)和位数(Wordsize)。文件打开后将数据显示格式调整为十六进制:“View”“MemoryRadix”“Hexadecimal”。将步骤3的运算结果粘贴入数据文件存储单元中,三位十进制数符依十六进制格式转换成3组BCD码存储。5.输入库参数存储模块lpm_rom,选择地址端口锁存方式,锁存信号为LD。ROM地址先用8个按键控制,模拟A/D转换数据;ROM的12位输出控制动态扫描显示译码模块的输入。全编译(Compilation)下载后改变按键,观察显示值是否符合要求。比如,按键数据为“10000000”时,应该显示“2.50U”。6.设计ADC0804的控制电路。A/D输入控制ROM地址。FPGA的数据输入、输出端口选择双向端口bidir。编译下载后用电位器调节模拟输入电压,记录0~5V范围内的10组电压显示值,并用万用表测量实际输入电压数据。分析测量分辨率、测量精度和A/D转换的线性度。7.如果采用DAC输出电压,设计AD7528的控制电路。D/A数据由8个按键通过三态门输出。编译下载后改变按键,用万用表测试DAC的输出电压,改变按键观察电压值是否满足关系式:2555.2BNVoV。比如,按键数据为“10000000”时,DAC的输出数据应该在1.25V左右。8.连接AD7528输出DAC-A(或DAC-B)与ADC0804的输入Ui。改变按键,从高位至低位逐位使各位为“1”。记录万用表测量的电压值和电压显示值,分析A/D、D/A转换的分辨率、精度和线性度。第三章单元电路设计与分析(1)分频器电路设计如图,我们选用7490芯片,其QD引脚可实现CLKB的5分频,QA引脚可实现CLKA的二分频。所以我们将LP——2900的时钟信号输入到CLKB,再将QD接到CLKA上,则QA输出的信号的时钟为LP——2900的十分之一,这样设计实现了频率的十分频,同时也保证了占空比为50%。我们再将多个十分频的分频器串联,便可以将10MHZ的时钟信号转换为我们所需的10KHZ的时钟信号。(2)状态机如图,因为我们需要6个状态来进行分配,我们将分频器输出的时钟输入到计数器,并将置位的数值设置为0010,并设置在输出端输出0111时进行置位,如此我们便是计数器变成模为6的计数器,则可产生6个工作状态。(3)状态译码电路如图,我们用2、3、4用与门连接,使其变为一个状态来控制片选CS2与R/W端,5、6并为一个状态来控制片选CS1与R/W端,7状态为ADC0804转换状态,所以将5、6状态与7状态相与,是5、6、7三个状态时CS1都为有效电平。因为两芯片的RD与WR引脚在LP——2900由一个引脚控制,所以R/W在2、3、4、5、6状态时为有效电平,在7状态时无效。(4)ROMROM为整个电路的数据储存部分,因为ADC0804将模拟信号转换为8位的数字信号,而我们又是将此信号当作ROM的地址,所以我们的ROM设计为有8跟地址线,又因为我们需要显示3位有效数据,而数据是以BCD码的形式存放,所以我们设计ROM有12根数据输出线。因为ROM的地址线接数据总线D0——D7,在数字数据输入时我们需要使ROM的地址线处于地址所存状态,是信号不会直接从按键输入的ROM中,所以我们用CS1与上R/W取非来控制ROM的CLK端,来实现我们需要的功能。(5)数据总线部分因为ADC0804与AD7528两个芯片的数据线全部都连在LP——2900的D0——D7端,此端口既需要输入,又需要输出,我们采用BIDIR引脚,我们需要在ADC0804输入数据到ROM是按键不能够输入数据,我们使用三态门来控制按键,并用CS1的信号来控制三态门的使能端,来达到目的。(6)显示电路部分如图,我们先要将ROM中的数据按照时序进行选择,再将其输入到显示译码器中。因为我们使用的是6状态的状态机,我们的状态码三位,而我们的74153芯片的时钟只有两个输入口,所以我们使用状态码的低两位,来驱动74153工作。然后我们将74153的输出端接到显示译码器的输入端,我们需要显示0——9的数字及单位V,所以我们需要将状态译码器编辑为10个状态,0000——1001为显示0——9,而1010显示V。最后将显示译码器的输出端连接到七段数码显示器的端口。第四章电路组构与调试4.1遇到的主要问题1将程序下载到FPGA以后,四位显示错位2在连接电位器以后转动电位器显示始终为0。3连接好ADC0804与AD7528以后,按键输入的值会不经转换直接显示在LCD七段数码显示器上。4在更改好其他错误后,电压表任然不能正常工作。4.2现象记录及原因分析1数码管显示错位,表明了数据选择器在相对应的时序没有选择设计者所需要显示的通道,由于状态是从010开始的,这是FPGA内的3—8译码器会选择第三个段来显示数据,且我们使用的是状态码的地两位来作为数据选择器的时钟,所以我们需要改变数据选择器与ROM所对应的几条线路的接线顺序。2将电位器连接好以后,数据不变且为0,有两种错误会引起这种现象。第一是ROM的CLK使能端被分配的时序有错误,在该锁存时没有锁存,二是整个电路的时序分配有错误。此错误需要对电路进行进一步的检查。3ADC0804与AD7528连接后,按键信号直接输入到ROM中,有很大可能是对三态门的使能端的时序分配有错误,三态门在该呈现高阻态是没有被拉低。4在改正其他部分电路后电压表仍然不能正常的工作,设计者认为应该是状态译码部分有一些问题。4.3解决措施及效果1我们按照设计的时序对数据选择器的数据输入端的顺序进行了修改,便使显示位数顺序正常。2、3者在对ROM与三态门的使能需要在什么时候为有效,什么时候为无效进行了仔细分析以后,设计出了现有的连接方法,保证了在ADC0804输出数字数据时ROM的CLK不锁存,其他时序CLK处于锁存电平。并使三态门的使能端在AD7528是为有效电平,使按键可以将数据送入AD7528,同时使三态门在ADC0804工作时被禁止,呈现高阻态,从而不影响ADC0804的数据输出。4在经过修改后,电路仍然不能正常工作,此时设计者对电路进行了仔细的检查,并最终发现了一个低级错误,及状态译码器的输入端中A/B都接在了状态机的输出OA上,所以导致了整个电路的时序错乱,是电压表不能正常的工作,在改正此错误后,调试数字电

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功