eda设计CPLD的信号发生器设计.docx
《eda设计CPLD的信号发生器设计.docx》由会员分享,可在线阅读,更多相关《eda设计CPLD的信号发生器设计.docx(9页珍藏版)》请在冰豆网上搜索。
eda设计CPLD的信号发生器设计
封面
作者:
PanHongliang
仅供个人学习
基于CPLD的信号发生器设计
摘要:
本文给出了一种采用CPLD作为主控器的信号发生器设计方案。
由于采用EDA技术进行设计,该方案具有工作速度快,硬件体积小,可靠性高等优点。
关键词:
信号发生器;VHDL;EDA;CPLD
1引言
随着社会的发展,人们对生活的要求也逐步提高,也越来越希望在各个方面都有很大的提高,尤其是在信号方面,信号发生器作为提供测试用电信号的仪器必不可少。
传统信号发生器要用模拟器件来实现,后来出现了用数字电路来设计的方案,例如采用单片机等。
EDA技术的出现与可编程器件的应用改变了数字电路的设计方法。
采用可编程器件进行工程开发具有费用低、开发时间短的特点,有利于新产品占领市场。
本文给出了一种采用CPLD作为主控部件的信号发生器设计方案,在设计输入时采用VHDL进行描述,再连入外围电路与CPLD构建起整个系统。
2系统设计
2.1设计要求
信号发生器能够产生正弦波、方波、三角波,并可通过开关选择输出波形。
2.2设计思路
根据设计要求,智能信号发生器由4部分组成,既电源模块、时钟信号发生器、主控器、D/A转换模块,系统结构如图1所示。
晶体振荡器产生稳定度很高的时钟信号,在时钟信号的作用下,主控器产生频率可变的波形数据信号,经数/摸转换电路最终输出所需要的波形。
图1系统结构框图
2.3模块设计
2.3.1主控器设计
在主控器内部也共有四个模块,既三角波模块,正弦波模块,方波模块和一个控制模块,通过编程可以分别设计这四个模块。
了【】
图3CPLD内部控制原理图
2.3.1.1三角波模块
三角波模块是在设计时置一变量作为工作状态标志,在此变量全为0时,当检测到时钟的上升沿时进行加同一个数操作,全为0时,进行减同一个数操作。
由于A/D转换采用12位的ADC7545芯片,且设64个时钟为一个三角波周期,输出每次加/减8。
设计程序如下:
LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
USEIEEE.STD_LOGIC_UNSIGNED.ALL。
ENTITYdeltaIS
PORT(clk,reset:
INSTD_LOGIC。
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0))。
ENDdelta。
ARCHITECTUREbehaveOFdeltaIS
BEGIN
PROCESS(clk,reset)
VARIABLEtmp:
STD_LOGIC_VECTOR(7DOWNTO0)。
VARIABLEa:
STD_LOGIC。
BEGIN
IFreset=’0’THEN
tmp:
=”00000000”。
ELSIFclk’EVENTANDclk=’1’THEN
IFa=’0’THEN
IFtmp=”11111110”THEN
tmp:
=”11111111”。
a:
=’1’。
ELSE
tmp:
=tmp+1。
--------递增运算
ENDIF。
ELSE
IFtmp=”00000001”THEN
tmp:
=”00000000”。
a:
=’0’。
ELSE
tmp:
=tmp-1。
---------递减运算
ENDIF。
ENDIF。
ENDIF。
q<=tmp。
ENDPROCESS。
ENDbehave。
2.3.1.2正弦波模块
正弦波模块是对一个正弦波周期分为64个采样点,然后量化为8位2进制数据,最大值为255,最小值为0,由此得到正弦波表,经D/A转换得到波形。
设计程序为:
LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
USEIEEE.STD_LOGIC_UNSIGNED.ALL。
ENTITYsinIS
PORT(clk,clr:
INSTD_LOGIC。
d:
OUTINTEGERRANGE0TO255)。
ENDsin。
ARCHITECTUREbehaveOFsinIS
BEGIN
PROCESS(clk,clr)
VARIABLEtmp:
INTEGERRANGE0TO63。
BEGIN
IFclr=’0’THEN
D<=0。
ELSIFclk’EVENTANDclk=’1’THEN
IFtmp=63THEN---------一个周期取64点
tmp:
=0。
ELSE
tmp:
=tmp+1。
ENDIF。
CASEtmpIS----查表输出
WHEN00=>d<=255。
WHEN01=>d<=254。
WHEN02=>d<=252。
WHEN03=>d<=249。
WHEN04=>d<=245。
WHEN05=>d<=239。
WHEN06=>d<=233。
WHEN07=>d<=225。
WHEN08=>d<=217。
WHEN09=>d<=207。
WHEN10=>d<=197。
WHEN11=>d<=186。
WHEN12=>d<=174。
WHEN13=>d<=162。
WHEN14=>d<=150。
WHEN15=>d<=137。
WHEN16=>d<=124。
WHEN17=>d<=112。
WHEN18=>d<=99。
WHEN19=>d<=87。
WHEN20=>d<=75。
WHEN21=>d<=64。
WHEN22=>d<=53。
WHEN23=>d<=43。
WHEN24=>d<=34。
WHEN25=>d<=26。
WHEN26=>d<=19。
WHEN27=>d<=13。
WHEN28=>d<=8。
WHEN29=>d<=4。
WHEN30=>d<=1。
WHEN31=>d<=0。
WHEN32=>d<=0。
WHEN33=>d<=1。
WHEN34=>d<=4。
WHEN35=>d<=8。
WHEN36=>d<=13。
WHEN37=>d<=19。
WHEN38=>d<=26。
WHEN39=>d<=34。
WHEN40=>d<=43。
WHEN41=>d<=53。
WHEN42=>d<=64。
WHEN43=>d<=75。
WHEN44=>d<=87。
WHEN45=>d<=99。
WHEN46=>d<=112。
WHEN47=>d<=124。
WHEN48=>d<=137。
WHEN49=>d<=150。
WHEN50=>d<=162。
WHEN51=>d<=174。
WHEN52=>d<=186。
WHEN53=>d<=197。
WHEN54=>d<=207。
WHEN55=>d<=217。
WHEN56=>d<=225。
WHEN57=>d<=233。
WHEN58=>d<=239。
WHEN59=>d<=245。
WHEN60=>d<=249。
WHEN61=>d<=252。
WHEN62=>d<=254。
WHEN63=>d<=255。
ENDCASE。
ENDIF。
ENDPROCESS。
ENDbehave。
2.3.1.3方波模块
方波模块设计是交替送出全0和全1,并以32个延时实现,64个时钟为一个周期。
设计程序为:
LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
ENTITYsquareIS
PORT(clk,clr:
INSTD_LOGIC。
q:
OUTINTEGERRANGE0TO255)。
ENDsquare。
ARCHITECTUREbehaveOFsquareIS
SIGNALa:
BIT。
BEGIN
PROCESS(clk,clr)
VARIABLEcnt:
INTEGER。
BEGIN
IFclr=’0’THEN
a<=’0’。
ELSIFclk’EVENTANDclk=’1’THEN
IFcnt<63THEN
cnt:
=cnt+1。
ELSE
Cnt:
=0。
a<=NOTa。
ENDIF。
ENDIF。
ENDPROCESS。
PROCESS(clk,a)
BEGIN
IFclk’EVENTANDclk=’1’THEN
IFa=’1’THEN
q<=255。
ELSE
q<=0。
ENDIF。
ENDIF。
ENDPROCESS。
ENDbehave。
2.3.1.4控制模块
控制模块是通过SEL0和SEL1来选择波形,并且用reset作为清零开关结束上一次的波形选择。
通过q0—q7输出。
设计程序为:
LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
ENTITYch61aIS
PORT(sel:
INSTD_LOGIC_VECTOR(1DOWNTO0)。
d0,d1,d2:
INSTD_LOGIC_VECTOR(3DOWNTO0)。
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0))。
ENDch61a。
ARCHITECTUREbehaveOFch61aIS
PROCESS(sel)
BEGIN
CASEselIS
WHEN“00”=>q<=d0。
-----------三角波形出
WHEN“01”=>q<=d1。
------------正弦波输出
WHEN“10”=>q<=d2。
-----------方波形输出
WHENOTHERS=>NULL。
ENDCASE。
ENDPROCESS。
ENDbehave。
2.3.2D/A转换模块
图4D/A转换电路
电路中,AD7545将波形数据转换为模拟信号;LF353进行信号滤波和整形。
2.3.3晶振电路模块
图5晶振电路
在此电路中,通过12M的石英晶体和电容及74LS04来产生12MHz的频率电路。
2.3.4电源模块
图6电源原理图
在此电路中,220V电压经变压器到整流桥能产生直流电压,再通过电容滤波,通过7805和7905来产生稳定的+5V和-5V电压。
2.4设计验证
图7三角波仿真图
图8正弦波仿真
图9方波仿真图
2.5印制电路板设计
图10系统原理图
图11PCB板图
图123D图
3结束语
本文介绍了一种基于CPLD的信号器的设计方案,用VHDL语言来设计主控器部分,并用D/A转换将数字信号转换成模拟信号用示波器显示出波形。
主控器部分采用MAX+PLUSII进行仿真,仿真结果验证了设计的正确性。
致谢
在作者设计的过程中,指导老师陈卫兵给予了大力支持,陈老师认真负责的工作态度,严谨的治学精神和深厚的理论水平使作者受益匪浅。
在此表示感谢!
参考文献
[1]李国洪,沈明山.可编程器件EDA技术与实践[M].北京:
机械工业出版社,2004
[2]王金明.VerilogHDL程序设计教程[M].北京:
人民邮电出版社,2004
[3]潘松、黄继业.EDA技术实用教程[M].北京:
科学出版社,2002
[4]徐惠民,安德宁.数字逻辑设计与VHDL描述[M].北京:
机械工业出版社,2002
[5]杜建国.VerilogHDL硬件描述语言[M].北京:
国防工业出版社,2004.1
[6]廖裕平,陆瑞强.数字电路设计—使用MAX+plusII[M].北京:
清华大学出版社,2001
SignalGeneratorDesignBasedonCPLD
Name:
LiuZhiyiStudentNumber:
200440602115
Advisor:
ChenWeibing
Abstract:
ThisarticlegivesasignalgeneratordesignusingCPLDasthemaincontroller.AsaresultofusingEDAtechnique,thedesignproposalhasmanyadvantagessuchasoffastworkingspeed,smallsizeinhardware,highreliability.
Keywords:
SignalGenerator。
VHDL。
EDA。
CPLD
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromthepersonconcernedandtherelevantobligee.
转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。
Reproductionorquotationofthecontentofthisarticlemustbereasonableandgood-faithcitationfortheuseofnewsorinformativepublicfreeinformation.Itshallnotmisinterpretormodifytheoriginalintentionofthecontentofthisarticle,andshallbearlegalliabilitysuchascopyright.