逐次渐近式AD转换器设计报告 2.docx
- 文档编号:3540925
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:336.66KB
逐次渐近式AD转换器设计报告 2.docx
《逐次渐近式AD转换器设计报告 2.docx》由会员分享,可在线阅读,更多相关《逐次渐近式AD转换器设计报告 2.docx(15页珍藏版)》请在冰豆网上搜索。
逐次渐近式AD转换器设计报告2
电子技术课程设计说明书
题目:
逐次渐近式A/D转换器
学生姓名:
高小宇,项小浩
学号:
2010060*****
院(系):
电气与信息工程学院
专业:
电气工程及其自动化
指导教师:
张俊老师
2012年11月30日
参考文献
1设计任务与要求
1.1设计任务与要求
根据逐次渐近式反馈比较原理设计一个8位的A/D转换器,能够将0-5V的直流信号转换为8位二进制数。
要求转换误差小于0.1V。
1.2指导思想
根据逐次渐近A/D转换器的工作原理,利用FPGA采用VerilogHDL语言描述A/D转换的状态机,在每个状态机中给DAC0832按位赋值、判断、置位、复位,8位处理后即可得到被测模拟电压的8位二进制数字量
2方案论证与选择
2.1主控EDA芯片的选取
本次设计选取的是一款FPGA芯片:
CycllonIIEp2c5t144c8N,其优点是应用灵活,运行速度快,内部拥有强大的逻辑资源,可以实现各种数字电路,并行执行程序,可以处理复杂的功能,效率极高,应用广泛。
2.2系统时钟选取
方案一:
利用555芯片产生合适频率的方波,此方案增加了电路的复杂程度,而且调整频率时要调整电阻电容,不方便操作
方案二:
利用PFGA的系统时钟(由50M晶振提供),编写分频模块程序得到合适的频率。
此方案由软件处理时钟,且时钟脉冲幅度完全适合PFGA,使用起来十分灵活、简易、方便。
因此设计中采用这个方案
2.3D/A转换部分方案
选取DAC0832和OPA4227组合完成将EDA芯片状态机给出的数据转换为电压的任务,这种方法是常用方法,电路简单实用,精度和转换速度足够达到题目要求。
如图
(一)所示
2.4电压比较部分方案
方案一:
利用4路运放OPA4227的未使用通道的开环工作实现比较器,这种方法经济节约器件,但性能不是很好
方案二:
采用专用比较器LM393,这种方案精度高、速度快、误差小,所以采用此方法。
这里要注意的一点是比较器的输出电压供电电压接近但PFGA的输入输出电压是3V,因此设计时采用了比较器输出降压方案。
如图
(一)所示。
2.5转换后显示部分
设计中采用8位发光二级管显示AD转换后的数字量。
为了去除闪动又使电路简洁,采用软件描述锁存器进行状态锁存,这种方式十分灵活,不仅可以去闪动而且可以对模拟电压进行多次实时测量。
如程序附页所示。
2.6系统电压选取
因为题目要求测量范围是0-5V,为了使测量范围足够广采取+8V和—8V供电,ADC0832的参考电压选取为-8V,利用稳压芯片7805产生5V电压给FPGA供电,这种供电方式电压转换范围可以达到0—6.5V,电路简单,既可以保证所有芯片正常工作,同时供电方便,而且不影响整个系统精度
2.7程序设计方案
本次设计以描述逐次渐近式AD转换器工作方式为目的,结合硬件方案,在quartus软件中采用多结构程序设计方式,将主程序分成三个部分:
分频模块,状态机模块,锁存模块。
分模块编写程序(程序见程序附页)分别生成模块图,加入工程,利用原理图编辑方式将程序模块相连。
软件结构如图
(二),系统框图如图(三)。
此系统结构的优点是:
电压测量模块与显示模块分离工作,状态机时刻在转换工作测量,但是模拟量不变显示稳定,模拟量改变,显示模块实时改变。
图
(二)
3总体电路设计及系统工作原理
3.1总体方框图
图(三)总体方框图
3.2总电路图
图(四)
3.3工作原理
本设计主要模拟8位逐次渐近式AD转换器的工作过程,以程序用硬件描述语言VerilogHDL语言描述用软件,取代硬件(循环计数器,触发器,门控电路,锁存器,):
首先将各位数字位清零进入准备测量状态,当下一个脉冲到来时,进入测量状态S1,在此状态中将最高位置1,其他位依然保持原来的状态,将这一数字状态送到DAC0832的数据输入端,转换成的模拟电压与被测的模拟电压在比较器中比较,若电压高于被测电压,比较器输出3V的高电平,若电压低于被测电压,比较器输出低电平0V,将此高低电平作为反馈信号给FPGA,当下一个时钟到来时,FPGA的状态机进入状态S2,在这一状态中根据比较器的反馈信号对最高位进行操作,若反馈信号为高电平(S1状态中给出的电压高于被测电压)则要将最高位清零,若反馈信号为高电平(S1状态中给出的电压低于被测电压)则要将最高位保留,在对最高位进行清零或保留的同时都会将次高位置1,其他位不变,这时将这一8位数字状态送到DAC0832装换成模拟电压。
和状态S1的一样,将DAC输出电压送到比较器比较,此时比较器同样会输出两种状态,若此状态的电压高于被测电压,比较器输出3V的高电平,若此状态电压低于被测电压,比较器输出低电平0V,将此高低电平作为反馈信号给FPGA,当下一个时钟到来时,FPGA的状态机进入状态S3,在这一状态中根据比较器的反馈信号对次高位进行操作,若反馈信号为高电平(S2状态中给出的电压高于被测电压)则要将次高位清零,若反馈信号为电平(S2状态中给出的电压低于被测电压)则要将次高位保留,在对次高位进行清零或保留的同时都会将第三高位置1,其他位不变,再将S3状态数字送到DAC0382转换成模拟电压与待测电压进行比较,这样直到在S9状态中对最低位操作,如此S1-S9循环形成状态机对AD转换器的8位数字从高位至地位,一位一位的判断。
以500Hz的频率按位操作,不断对模拟电压进行采样。
在状态机的运行过程中还要进行两种判断:
一种是复位判断,利用图(四)中的VL引脚状态判断复位按键是否按下,如果按下,状态机清零,重新测量。
另一种是对状态S9的判断,在程序处理中,处理完S9状态是会有一个输出电平的变化产生一个脉冲,将此脉冲作为锁存模块(VerilogHDL语言描述的触发器)的触发脉冲输入端,即每次对8位数字量正确取值后都会告诉锁存模块本次AD装换完毕,可以显示状态,锁存器就会根据此次转换结果更改显示状态,8位LED显示实测值,这样就完成了每次的AD转换及显示的过程。
3.4计算公式
根据系统电压的选取和工作原理推出AD转换结果为:
U=Dn*8/256
(Dn为8位LED显示的二进制数所对应的十进制数)
4单元电路设计
图
(一)DA转换及比较器部分电路图
5调试
5.1调试主要步骤
1.电源部分:
不装FPGA开发板上电后用万用表测试系统电压,并且检测稳压芯片输出电压保证电压准确无误后,装上FPGA开发板确保其正常工作。
2.DA转换部分:
用FPGA给DAC0832不同的数据状态,用万用表测运放不同状态下对应的输出电压,根据公式计算,检验DA转换部分的准确性。
3.比较器部分:
给比较器负向输入一个参考电压,利用FPGA给DAC0832不同的数据状态,让运放间隔输出比参考电压高和低的电压,用万用表测比较器的输出端,看比较器是否正常工作,同时调节比较器输出高电平的电压值使之为3V。
正常后将其输出接到FPGA的Vb引脚。
4.状态机部分:
利用软件分频使系统时钟为1秒,让状态机程序运行,测运放的输出电压检查状态机每个状态时是否运行正确,同时观察显示部分的运行情况。
5.一切准确无误后,让系统软硬件恢复到原设计状态,开始进行整体功能测试。
6数据测试,结果验证,与误差分析
6.1测试方法
系统软硬件完成结合和后,利用电位器调节分压给测量端输入不同的模拟值,读取LED显示值按公式转换成电压值,填下表中,对比分析
6.2数据表格
输入的被测模
拟电压值/V
转换结果的8
位二进制显示
转换后的电压值/V
(按公式计算)
转换误差/V
0
00000000
0*8/256=0
0
0.04
00000001
1*8/256=0.03
0.009
0.41
00001101
13*8/256=0.406
0.004
0.92
00011101
29*8/256=0.906
0.014
1.65
00110101
53*8/256=1.657
0.007
1.99
01000000
64*8/256=2
0.010
2.11
01000011
67*8/256=2.093
0.017
2.28
01001001
73*8/256=2.281
0.001
2.77
01011001
89*8/256=2.781
0.011
3.21
01100111
103*8/256=3.218
0.008
3.58
01110011
115*8/256=3.594
0.014
3.96
01111111
127*8/256=3.969
0.009
4.02
10000001
129*8/256=4.031
0.011
4.77
10011001
153*8/256=4.781
0.011
5.10
10100011
163*8/256=5.094
0.006
5.51
10110000
176*8/256=5.500
0.010
5.96
10111111
191*8/256=5.969
0.009
6.36
11001100
204*8/256=6.375
0.015
由于使用普通万用表电压档小数点后第三位的电压无法测出,因此误差都取近似值,但是误差基本在0.01V左右远小于题目要求的0.1V,因此影响不大,通过上表的数据可以验证设计完全符合要求。
6.3误差分析
比较器的输出建立时间,运放建立时间,系统接线都会造成误差
7元器件清单
元器件
数量
CycllonIIEp2c5t144c8N
1
300欧姆电阻
8
10K欧姆电阻
1
50k电位器
1
0.1μF电容
3
1μF电容
1
4.7μF电容
2
运放OPA4227
1
比较器LM393
1
DAC0832
1
稳压芯片7805
1
LED
8
开关
1
接线端子
3
8总结
这次通过逐次渐近式A/D转换器的设计与制作,我了解了FPGA和EDA技术,初步学习了一款新芯片,quartus开发软件和一种硬件描述语言。
对逐次渐近式A/D转换器的工作方式有了深入的掌握。
在这次设计中我遇到了各种问题,尤其是软件上的问题,但是在老师的帮助下,我和我的同学一直没有放弃,一直专研,将难题一一攻破,最后硬件电路和软件程序完全由自己设计完成。
最后的设计结果不仅完全符合题目要求,而且在精度和转换范围上都做到了充分的发挥。
由陕西科技大学同学原创,自主设计,望多交流
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
SUST电信电气加油
程序附页:
分频模块
modulefp(CLK,fp_out);
inputCLK;
reg[32:
0]count;
outputfp_out;
regfp_out;
always@(posedgeCLK)
begin
if(count<50000)
count<=count+1;
else
begin
count<=0;
fp_out=~fp_out;
end
end
endmodule
状态机模块
moduleztj(fp_out,VL,vb,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,sc_out);
inputfp_out;
inputVL;
inputvb;
outputQ7,Q6,Q5,Q4,Q3,Q2,Q1,Q0;
outputsc_out;
//reg[32:
0]count;
regsc_out;
parameters0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8,s9=9;
reg[3:
0]ns;
reg[7:
0]Q;
assignQ7=Q[7];assignQ6=Q[6];
assignQ5=Q[5];assignQ4=Q[4];
assignQ3=Q[3];assignQ2=Q[2];
assignQ1=Q[1];assignQ0=Q[0];
//always@(posedgeCLK)
//begin
//if(count<1)
//count<=count+1;
//else
//begin
//count<=0;
//fp_out=~fp_out;
//end
//end
always@(posedgefp_out)
begin
if(!
VL)
begin
ns=s0;
sc_out=0;
end
else
begin
case(ns)
s0:
begin
sc_out=0;
Q=8'b00000000;
ns<=s1;
end
s1:
begin
Q=Q|8'b10000000;
ns<=s2;
end
s2:
begin
if(!
vb)
begin
Q=Q|8'b01000000;
end
else
begin
Q=Q&8'b01111111;
Q=Q|8'b01000000;
end
ns<=s3;
end
s3:
begin
if(!
vb)
begin
Q=Q|8'b00100000;
end
else
begin
Q=Q&8'b10111111;
Q=Q|8'b00100000;
end
ns<=s4;
end
s4:
begin
if(!
vb)
Q=Q|8'b00010000;
else
begin
Q=Q&8'b11011111;
Q=Q|8'b00010000;
end
ns<=s5;
end
s5:
begin
if(!
vb)
Q=Q|8'b00001000;
else
begin
Q=Q&8'b11101111;
Q=Q|8'b00001000;
end
ns<=s6;
end
s6:
begin
if(!
vb)
Q=Q|8'b00000100;
else
begin
Q=Q&8'b11110111;
Q=Q|8'b00000100;
end
ns=s7;
end
s7:
begin
if(!
vb)
Q=Q|8'b00000010;
else
begin
Q=Q&8'b11111011;
Q=Q|8'b00000010;
end
ns<=s8;
end
s8:
begin
if(!
vb)
Q=Q|8'b00000001;
else
begin
Q=Q&8'b11111101;
Q=Q|8'b00000001;
end
ns<=s9;
end
s9:
begin
if(!
vb)
begin
Q=Q&8'b11111111;
sc_out=1;
ns<=s0;
end
else
begin
Q=Q&8'b11111110;
sc_out=1;
ns<=s0;
end
end
default:
begin
ns<=s0;
end
endcase
end
end
endmodule
锁存显示模块
modulesc(Q_i7,Q_i6,Q_i5,Q_i4,Q_i3,Q_i2,Q_i1,Q_i0,sc_in,Q_o7,Q_o6,Q_o5,Q_o4,Q_o3,Q_o2,Q_o1,Q_o0,);
inputQ_i7,Q_i6,Q_i5,Q_i4,Q_i3,Q_i2,Q_i1,Q_i0;
inputsc_in;
outputQ_o7,Q_o6,Q_o5,Q_o4,Q_o3,Q_o2,Q_o1,Q_o0;
regQ_o0;regQ_o1;regQ_o2;regQ_o3;
regQ_o4;regQ_o5;regQ_o6;regQ_o7;
always@(posedgesc_in)
begin
Q_o0=Q_i0;Q_o1=Q_i1;Q_o2=Q_i2;Q_o3=Q_i3;
Q_o4=Q_i4;Q_o5=Q_i5;Q_o6=Q_i6;Q_o7=Q_i7;
end
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逐次渐近式AD转换器设计报告 逐次 渐近 AD 转换器 设计 报告