基于CPLD数字电压表参考.docx
《基于CPLD数字电压表参考.docx》由会员分享,可在线阅读,更多相关《基于CPLD数字电压表参考.docx(29页珍藏版)》请在冰点文库上搜索。
![基于CPLD数字电压表参考.docx](https://file1.bingdoc.com/fileroot1/2023-6/3/c3eae1b9-2c60-45a4-8813-3bab28a60a3f/c3eae1b9-2c60-45a4-8813-3bab28a60a3f1.gif)
基于CPLD数字电压表参考
摘要
本论文介绍了应用硬件描述语言(VHDL)来进行数字电压表的设计过程。
主要介绍了使用它来设计数字系统硬件电路的方法。
使设计人员摆脱传统得人工设计方法的框框,使数字系统设计的水平上升到一个新阶段。
VHDL语言是一种面向设计的多层次、多领域且得到一致认同的标准硬件描述语言。
它具有两大优点:
1.支持自上而下的TTD设计。
它直接面向用户,从系统的总体要求出发,根据电路系统的行为和功能要求,自上到下逐层的完成了相应的设计描述、综合与优化、模拟与验证,直到最终生成器件,从而完成系统的整体设计。
2.大大缩短了逻辑电路的设计周期。
论文详细介绍了(A/D转换器、二—十进制的转换、十进制—BCD码的转换、多路数据选择器、数码管的显示等程序设计),为使系统设计的更加科学合理,并在编程之后,对主要参数进行了详细得计算;论文还介绍了使用MAXPLUSII软件,另外还附了异步加法器。
在论文最后还附有参考文献、外文资料,及译文。
关键词:
硬件描述语言(VHDL)、模数转换(A/D)、MAXPLUSII、复杂可编程控制器件(CPLD)
Abstract
Usingahardwaredescriptionlanguage—VHDLtodesignavoltagewatch,is
introducedinthispaper.Emphatically,themethodwhichwemakeuseofVHDLto
designingrestrictions,andwillmakeanepochinthedesignofdigitalsystems
whichwillattainahigherlevel.
VHDLisahardwaredeseriptionlanguagethatfacesdesign,andappropbatedbygeneralconsensus.TherearetwoadvantageousfactorsinusingVHDL:
1.SupportingsuperincumbentTTDdesign.VHDLfacesusersdirectly,anduserscandesignfromtheentirerequestaccordingtotheactionandfunctionofcircuitsystems.UsingVHDL,theusercangraduallyaccomplishthetaskbysteps,startingfromthedesign’sdescription,thensynthesisandoptimization、simulationandtest,tillcreatinglogicelementsfinally.Ultimately,theentiredesigniscompleted.
2.Cutingtheperiodofthedesignshortgreatly.
Thepaperintroduces(A/DZHUANHUANQI、SHI—BCD码的转换、多路数据选择器、数码管的显示)indetail.
AndalsointroducestheapplicationofsoftwareMAXPLUS2.inaddition,asynchronousadderisappendedinthepaper.Andattherearofthispaper,referenceliterature,foreignlanguagefilesandtranslationareadded.
Inordertomakethedesignmorereasonable,wecomputethemainparametersindetailaftertheprocedure.
KeyWords:
VHSICHardwareDescriptionLanguage
ModelDigitalConvertOrganon
Multipleawaymatrixandprogrammablelogicusersystem
ComplexProgrammableLogicDevice
第1章引言……………………………………………………………(4)
第2章CPLD的概述……………………………………………………(5)
2.1可编程逻辑器件的发展历程…………………………………(5)
2.2FPGA/CPLD技术………………………………………………(5)
2.3MAX+PLUSII介绍………………………………………………(7)
第3章数字电压表的设计与实现……………………………………(9)
3.1数字电压表的简单介绍………………………………………(9)
3.2各部分元件的设计……………………………………………(10)
3.2.1模/数(A/D)转换器………………………………………(10)
3.2.2二—十进制转换器…………………………………………(16)
3.2.3十进制—BCD码转化器……………………………………(18)
3.2.4BCD码多路数据选择器……………………………………(20)
3.2.5BCD译码显示器……………………………………………(21)
第4章控制器与控制电路的设计……………………………………(23)
4.1控制器的设计…………………………………………………(23)
4.2控制电路的设计………………………………………………(27)
4.2.1错误显示与复位清零显示的控制电路……………………(27)
4.2.2控制BCD多路数据选择器地址的控制电路………………(29)
4.2.33位有效数字在译码显示电路顺序显示的控制电路……(30)
第5章总结……………………………………………………………(32)
第6章结束语…………………………………………………………(33)
附录………………………………………………………………………(34)
第1章引言
随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体
积小、重量轻的方向发展,推动该潮流迅猛发展的引擎就是日趋进步和完善的ASIC设计技术。
目前数字系统的设计可以直接面向用户要求,根据系统的行为和功能要求自上而下逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。
上述设计过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机自动的完成,也就是说作到了电子设计自动化(EDA)。
电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路,即要用所谓硬件描述语言来描述硬件电路。
所以硬件描述语言及相关的仿真、综合等技术的研究是当今电子设计自动化领域的一个重要课题。
硬件描述语言得发展至今已有几十年的历史,并已成功地应用到系统的仿真、验证和设计综合等方面。
广大用户所期盼的是一种面向设计的多层次、多领域且得到一致认同的标准的硬件描述语言。
80年代后期由美国国防部开发的VHDL语言恰好满足了这样的要求,并在1987年12月由IEEE标准化(定为IEEEstd1076—1987标准,1993年进一步修订,被定为ANSI/IEEEstd1076—1993标准)。
它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。
由于,计算机技术和自身功能的不断发展括充,使其能够在行为级、系统级、寄存器和门级上描述逻辑电路。
于是人们反过来进行电路设计(描述),然后通过一定的编译算法将其转化成具有相应功能的逻辑电路,也就是说,电路设计人员可以用硬件描述语言VHDL来设计数字系统的硬件部分。
使用VHDL语言来设计数字系统是电子设计技术的大势所趋。
CPLD是一种复杂的用户可编程逻辑器件,它以其编程方便、集成度高
速度快、价格底等特点越来越受到广大电子设计人员的青睐。
此外,该公司还开发了MAXPIUSII软件,VHDL语言就是在这个软件环境应用。
正是由于VHDL已广泛应用到各个领域,应用VHDL语言来编程实现数字电压表的设计,通过课题的设计来进一步掌握及应用VHDL语言编程。
第2章CPLD概述
2.1可编程逻辑器件的发展历程
当今社会是数字的社会,是数字集成电路广泛应用的社会。
信息高速公
路、媒体电脑、移动系统、数字电视,各种自动化设备以及我们日常的一些小制作都要用到数字集成电路,它由早期的电子管、晶体管、小规模集成电路(几十—几百门)、中规模集成电路(MSIC,几百—几千门)、大规模集成电路(LSIC,几千—几万门)发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。
但是,随着微电子技术的发展,设计与制作集成电路的任务已不完全由半导体厂商来独立承担。
因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
早期的可编程逻辑器件只有可编程只读存储器(PROM),紫外线可擦除只读存储器(EPROM)和点可擦除只读存储器(EEPROM)三种。
它们的共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
2.2FPGA/CPLD技术
FPGA(FieldProgrammableGatesArray,现场可编程门阵列)与CPLD
(CmplexProgrammableLogicDevive,复杂可编程逻辑器件)都是可编程逻
辑器件。
FPGA/CPLD的规模比较大,适合于时序、组合等。
逻辑电路应用场
合,它可以代替几十甚至上百块芯片。
FPGA、CPLD概括起来它们是由三大部
分组成:
1)一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心
2)输入/输出块
3)连接逻辑的互连资源
FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,
还具有以下特点:
1)FPGA/CPLD芯片的规模越来越大,使它所能实现的功能也越来越强,同时也可以实现系统集成。
2)FPGA/CPLD的资金投入小,不用对厂商做任何订单数量上的承诺,节省了许多潜在的花费,而且FPGA/CPLD的研制开发费用相对较低。
3)FPGA/CPLD芯片和EPROM配合使用时,用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同的EPROM就可以实现不同的功能。
4)FPGA/CPLD芯片电路设计周期短。
5)FPGA/CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计。
通常可将FPGA/CPLD设计流程归纳为以下7个步骤:
第1步:
设计输入。
应用Verilog、VHDL、AHDL等硬件描述语言的输入法来设计。
第2步:
前仿真。
所设计的电路必须在布局布线验证,目的主要是
在仿真时,验证电路是否有效。
第3步:
设计输入编译。
设计输入之后就有一个从高层系统行为设计向低层门级逻辑电路的转化翻译过程。
第4步:
设计输入的优化。
根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元。
第5步:
布局步线。
第6步:
后仿真。
设计人员需要利用在布局步线中获得的更精确的RC参数再次验证电路的功能和时序。
第7步:
流片。
2.3MAX+PLUSII介绍
Altera公司的MAX+PLUSII开发系统是一个完全集成化,易学易用可编程逻辑设计环境,它可以在多种平台上运行。
它所能提供的灵活性和高效性是无可比拟的,其丰富的图形界面,辅之以完整的、可即使访问的在线文档。
MAX+PLUSII是由设计输入、设计处理、设计校验和器件编程四部分组成。
由前面叙述可知,MAX+PLUSII软件设计的流程应包括以下几个部分,如图1
所示
1)设计输入。
可以采用原理图输入,HDL语言描述、EDIF网表读入及波形输入等方式。
2)功能仿真。
此时为0延时模式,主要为检验输入是否有误。
3)编译。
主要完成器件的选择及适配,逻辑的综合及器件的装入,延时信息的提取。
4)后仿真。
将编译产生的延时信息加入到设计中,进行布局布线的仿真,是与实际器件工作时情况基本相同的仿真。
5)译验证。
用后仿真确认的配置文件经EPROM或编程电缆配置CPLD,
加入实际激励,进行测试,以检查是否完成预定功能。
图1MAX+PLUSII软件流程图
逻辑设计的输入方法有图形输入、文本输入和由第三方EDAtool生
成的EDIF网表输入等,输入方法不同,生成的文件格式也有所不同。
建立
一个图形设计文件的方法步骤包括:
1)指定设计项目名称,用MAX+PLUSII编译一个项目前,必须确定一个设
计文件作为当前项目。
对于每个新的项目应该建立一个单独的子目录,
当指定设计项目名称时,也就同时指定了保存该设计项目的子目录名。
2)建立新文件。
3)输入图元和宏功能符号。
其中prim包括基本的逻辑块电路,mf(宏功
能库)包括所有74系列逻辑,mega_lpm(参数化模块库)包括参数化模
块、兆功能高级模块和Megacoves,AMPP包括PCI、DS、ucontroller
等。
4)连线。
5)为引脚和节点命名。
6)保存文件,检查基本错误。
2.文本设计输入方法主要用来实现以AHDL语言或以VHDL语言形式书写的文
件,AHDL是AlteraHardwaraDescriptionLovnguage的缩写,它是一种
高级的硬件行为描述语言,最适合于大型的、复杂的状态机设计。
VHDL是
一种符合IEEE标准的高级硬件行为描述语言,特别适合于大型和复杂的设
计。
第3章数字电压表的设计与实现
3.1数字电压表设计的简单介绍
本课题所设计的数字电压表是能够测量0—5V的电压值,测得值为3位有效
数字,保留两位小数并在LED数码管上显示出来。
除了能够测量0—5V之间
的电压值外,当被测电压超过0—5V的围时,电压表会在数码管上显示出
‘倒F’的符号,表示测量错误。
通过开关按钮来启动电压表进行测量,每
测量完一次通过复位按钮使电压表归零。
接下来就给出数字电压表设计的原理方框图,通过方框图来详细介绍一下各部分元件的设计思想及工作过程。
方框图如图2所示,它主要包括:
A/D转换器、二—十进制转换器、十—BCD码转换器、BCD多路数据选择器、控制器、LED数码管显示电路这几部分。
图2数字电压表原理框图
在设计过程中我们需要注意的问题:
1)二—十进制转换中需要有一个围0—5V,当超出这个围时转换结果将会出错,并显示出错误的信息。
2)控制器的设计,它需要控制各部分的工作过程,及状态转换,通过控制器控制显示错误信息或清零,
3)各部分模块我们都需要利用VHDL语言编程,利用仿真器仿真生成能够完成我们需要功能的模块。
3.2各部分元件的设计
3.2.1模/数(A/D)转换器
电压表进行测量首先要从外界采集信号,而所采集的信号为模拟信
号,我们需要的应为数字信号,这就需要我们通过模/数(A/D)转换器转换为数字信号。
实现模/数转换的方法很多,常用的方法有计数法、双积分法和逐次逼近法。
考虑到逐次逼近法有速度快、转换精度高的特点,在这里我们
所使用的是ADC0809模/数转换器。
1)ADC0809芯片的主要性能
1.逐次逼近型A/D转换器,所有引脚的逻辑电平与TTL兼容;
2.存功能的8路模拟量转换开关,可对8路0—5V模拟量进行分时转换;
3.输出具有三态锁存/缓冲功能;
4.分辨率:
8位,转换时间:
100us;
5.不可调误差:
+-1LSB,功耗:
15mw;
6.工作电压:
+5V,参考电压标准值:
+5V;
7.片无时钟,一般需要外加640KHZ以下且不低于100KHZ的时钟信号。
2)模/数转换器的主要参数
转换精度
转换精度反映了A/D转换器的实际输出接近理论输出的精确程度。
由于模拟量是连续的,而数字量是离散的,所以,一般是某个围中模拟量
对应一个数字量。
例如,模拟量为5V时对应的数字量为800H,而实际转换
中发现4.997V到4.999V也对应数字量800H。
这就反映了一个转换精度的问
题。
A/D转换的精度通常用数字量的最低有效位(LSB)来表示。
转换时间和转换率
所谓转换时间是指完成一次A/D转换所需要的时间。
转换率为转换时
间的倒数。
它们都表示A/D转换的速度。
例如,完成一次A/D转换所
需要的时间是20us,则转换率为50KHZ。
分辨率
分辨率是指A/D转换器能够分辨最小量化信号的能力。
一个n位的A/D
转换器,其分辨率等于模拟量输入的满量程值除以2的n次方。
显然,A/D
转换器位数越长,分辨率越高。
所以也常用A/D转换器的位数来表示其分辨率。
3)逐次逼近式A/D转换法
逐次逼近式A/D转换法,是一种广泛应用的A/D转换方法。
用一个
D/A转换器的输出电压V0与模拟输入电压Vi进行比较,以产生A/D结果在逐次逼近式A/D转换器中,采用一个逐次逼近寄存器放计数值,并在相应的控制电路的控制下,从高位向低位逐位确定其计数值,逐次逼近式ADC0809转换原理,如图3所示
图3ADC0809转换原理图
4)ADC0809的部结构与引脚功能
部结构
模拟多路转换开关由8路模拟开关和3位地址锁存与译码器组成,地
址锁存允许信号ALE将三位地址信号ADDC、ADDB、ADDA进行锁存,然
后由译码电路选通其中一路模拟信号加到A/D转换部分进行转换。
A/D转换部分包括比较器、逐次逼近寄存器SAR、256R电阻网络、树状电子开关、控制与时序电路等,另外具有三态输出锁存缓冲器。
引脚功能
D7—D0:
8位数据输出线;
IN7—IN0:
8路模拟信号输入;
ADDC、ADDB、ADDA:
8路模拟信号输入通道的地址选择线;
ALE:
地址锁存允许,其正跳变地址选择线状态,经译码选通对应的模拟输入信号;
START:
启动信号,上升沿使片所有寄存器清零,下降沿启动A/D转换;
EOC:
转换结束,转换开始后此引脚变为高电平;
OE:
输出允许,此引脚为高电平有效,当有效时,芯片部三态数据输出锁存缓冲器被打开,转换结果送到D7—D0;
REF(+)、REF(—):
参考电压正极、负极,通常REF(+)接VCC,REF(—)接GND;
VCC:
电源,+5V,GND:
地线;
CLOCK:
时钟,最高可达1280KHZ,由外部提供;
ADC0809的引脚图如图4所示
图4ADC0809引脚图
5)真值表与时序图
CLOCK
START
EOC
OE
功能
有效
0
0
0
A/D开始转换
有效
0
1
0
转换结束
有效
0
1
1
允许数据输出
表1
5)工作原理
在ADC0809中,输入模拟量与输出数字量存在着这样的关系:
N=(VIN-VREF(-))*256/(VREF(+)-VREF(-))
一般VREF(+)=5VVREF(-)=0V
因为输出为8位二进制数,所以最高输出为11111111B即256
我们可以将0—1分成256份,即最小间隔为:
1/256
因此求归一化量为:
X=VIN/5(X在0—1之间)
求归一化X有多少个256份:
N=X*(1/256)=(VIN/5)*256=VIN*256/5
=》VIN=5*N/256=0.02*N
实际上VIN=0.02*N就是VIN模拟量真正意义上对应的数字量,而在VIN通过A/D转换器后所得到的是N,若要在数值上等值,还要在N的基础上再乘以0.02.
例如:
若输入的模拟电压为2.5V,则转换后的数字量为:
N=(VIN-VREF(-)*256/(VREF(+)-VREF(-))
=(2.5-0)*256/(5-0)=128即10000000B
3.2.2二—十进制转换器
通过A/D转换器我们已经得到了8位二进制的数字量,虽为二进制
的数字量但它是无法直接驱动LED数码管显示的,因为数码管显示的输入量只能与BCD码相匹配,因此我们需要先将8位二进制数,转换为十进制数,再将十进制数转换为BCD码,从而与LED数码管显示相匹配,下面先来介绍一下二—十进制的转换。
1)引脚功能
二—十进制转换的模块图如图5所示
图5二—十进制转换模块
I1:
8位二进制数字量输入端;
O1:
3位十进制数字量输出端;
START1:
启动信号,当为低电平时有效并启动二—十进制转换器开始工作;
EOC:
转换结束信号,当二—十进制转换工作时,此信号为低电平,当工
作结束时,此信号立即为高电平;
OE:
允许输出信号,此信号为高电平有效,有效时转换后的数据通O1端
输出;
AA:
错误信号,此信号为高电平有效果,当有效时表示转换后的数据有误不
能够输出;
2)真值表
START1
EOC
OE
AA
功能
0
0
0
0
开始转换
0
1
0
0
转换结束
0
1
0
1
数据有误
0
1
1
0
允许输出
表2
工作过程及流程图
我们需将各位的数,0或1分别乘各位对应的2的0次方、2的1次方、
2的2次方、2的3次方、2的4次方、2的5次方、2的6次方和2的7次方,然后依次求和记为A。
为了能够与输入的模拟数值上对应还需将A再乘以0.02,此时转换结束,EOC=‘1’。
接下来要判断所转换的十进制数是否超出0—5V的围,如果超出则AA=‘1’提示转换出现错误,否则AA=‘0’,OE=‘1’数据输出。
3.2.3十进制—BCD码转换器
1)引脚功能
十进制—BCD码转换器的模块图如图7所示
图7十进制—BCD码模块
START2:
启动信号,低电平胶,当有效时启动十进制—BCD码转换工作;
EOC:
转换结束信号,当转换工作时EOC为低电平,当转换结束时EOC立即变
为高电平;
OE:
允许输出信号,高电平有效,当有效时允许转换后的数据输出;
B:
3位十进制数据输入端;
Q:
12位BCD码输出端;
2)真值表
START2
EOC
OE
功能
0
0
0
开始转换
0
1
0
转换结束
0
1
1
允许输出数据
表3
3)工作过程
十进制与BCD码的对应转换如表4所示
输入的十进制数
输出的BCD码
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
表4
通过二—十进制转换器我们已经得到了3位的十进制数,当START2=‘0’
时,十进制—BCD码转换器开始工作,根据查表4我们可以很方便的将每一位十进制数转换为4位的BCD码。
从低位到高位,那么3位的十进制数也就转换为了12位的BCD码。
例如,十进制数为4.59,通过查表4可以得到,9对应的是‘1001’,5对应的是‘0