FPGA的数字电压表设计分析方案Word格式文档下载.docx
- 文档编号:18143718
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:12
- 大小:1.69MB
FPGA的数字电压表设计分析方案Word格式文档下载.docx
《FPGA的数字电压表设计分析方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《FPGA的数字电压表设计分析方案Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
由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个状态合理的进行分配,给各个电路,次部分为整个电路的最重要的核心部分。
可视为整个电路的大脑。
4ROM
ROM是用来接收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的函数,可在其命令窗中输入与转换函数运算式(
)相应的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的输出电压,改变按键观察电压值是否满足关系式:
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)ROM
ROM为整个电路的数据储存部分,因为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上,所以导致了整个电路的时序错乱,是电压表不能正常的工作,在改正此错误后,调试数字电压表,则成功的显示了测量电压,所有问题自此都被解决。
4.4功能的测试方法、步骤、设备、记录的数据
记录数据:
测试方法及步骤:
1.连接ADC0804的Ui和AD7528的Uo,改变按键,从高位值低位逐位使各位为“1”。
用万用表测量Ui的电压值和电压显示值。
记录数据。
2.实际电压的测试:
在ADC0804的Uo处输入并联在一个电位器上,通过改变电位器的阻值,改变5v电压源所加在电位器上的电压。
并用万能表测其实际的电压。
通过对比七段显示器上的电压值和万用表上的电压值,来测试所设计的简易电压表是否正确。
表一:
万用表测量值
0.231V
0.976V
1.414V
1.761V
2.15V
显示器
0.24V
0.98V
1.43V
1.76V
2.18V
误差
0.39%
0.04%
1.13%
0.01%
2.00%
2.79V
3.22V
4.14V
4.47V
4.91V
2.82V
3.25V
4.10V
4.51V
4.94V
1.10%
0.93%
0.97%
0.89%
0.61%
表二:
按键输入
10000000
00101111
00101001
万用表测量
1.22V
0.43V
0.37
D/A转换误差
2.4%
6.5%
7.5%
电压显示值
1.25V
0.45V
0.39V
A/D转换误差
2.46%
4.65%
5.41%
11101001
11101111
00001101
2.23V
2.29V
0.10V
2.2%
2.1%
2.3%
2.27V
2.33V
0.12V
1.79%
1.74%
20%
1对设计题目的结论性意见及进一步改进的意向说明
此电压表能进行5V以下的电压的测量,但精度不够高,当所测量的数值越大时,所出现的误差会增大,但对于所需精度不高的电压测量中,可以应用此电压表去测量。
因为电压表的误差会逐渐加大,所以我们可以想办法在不改变使用的AD,DA芯片的前提下,猜测对ROM的设置进行改变,可能可以提高测量的精度。
同时我们还可以将显示设备进行改进,采用更高端的LED进行显示。
5.2总结设计的收获与体会
这次课程设计综合了数电学习的大部分内容,是对我数电知识的一次综合的考量。
此次设计不仅考量了我们对数电知识的掌握,同时还考验了我们个人的独自分析问题,解决问题的能力,同时还让我们了解了在接到一个工程后应该如何去分析,解决问题,如何完成工程开发出产品。
在这设计中,我很快便完成了电路的模块设计与连接,并且在一段时间以后解决了部分的设计错误。
但在检查最后一个连接错误时,我却花费了和先前进行所有步骤所用时间的总和一样多的时间来检查这种连接的低级错误,由此可以看出,我们不管在做什么事情是,都不要盲目的自信自己不会出现低级错误,低级错误永远都最致命的错误,往往会让你付出大量的时间与代价去改正这个错误。
附图(电路总图)………………………………………………………
参考文献……………………………………………………………
《基于FPGA的数字电路系统设计》崔葛瑾主编西安电子科技大学出版社
《数字电子技术基础》杨松华冯毛官孙万蓉等主编西安电子科技大学出版社
WZQ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 数字 电压表 设计 分析 方案