FPGA课设DAC0832接口电路程序设计解析.docx
《FPGA课设DAC0832接口电路程序设计解析.docx》由会员分享,可在线阅读,更多相关《FPGA课设DAC0832接口电路程序设计解析.docx(13页珍藏版)》请在冰豆网上搜索。
![FPGA课设DAC0832接口电路程序设计解析.docx](https://file1.bdocx.com/fileroot1/2023-6/27/d959bbfd-c8ed-46fa-b917-57fce7662a3f/d959bbfd-c8ed-46fa-b917-57fce7662a3f1.gif)
FPGA课设DAC0832接口电路程序设计解析
DAC0832接口电路程序设计
摘要
根据DAC0832输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。
分析了TI公司的DA芯片DAC0832的工作原理,利用VHDL硬件描述语言中状态机的设计方法设计实现了DA芯片DAC0832与FPGA的接口电路,对FPGA的系统时钟进行分频处理得到的频率为762.9Hz的锯齿波。
在QuartusII中完成时序仿真实践证明设计的电路能够稳定、可靠的工作。
关键词:
接口电路;DAC0832;EDA;VHDL;FPGA
Abstract
AccordingtotheDAC0832outputsequencecontrol,usingtheinterfacediagram,bychangingtheoutputdatatodesignasawtoothwavegenerator.AnalyzedtheworkingprincipleofDADAC0832chipofTIcompany,usingVHDLhardwaredescriptionlanguagedesignmethodofstatemachinedesignhasrealizedtheDADAC0832andFPGAchipinterfacecircuit,systemclockfrequencydivisionprocessingonFPGAsawtoothwavefrequencyis762.9Hz.IntheQuartusIIcompletetimingsimulationproveddesignedcircuitcanworkstableandreliable.
Keywords:
interfacecircuit;DAC0832;EDA;VHDL;FPGA
1.前言.................................................1
2.EDA概述.............................................1
2.1硬件描述语言....................................2
2.1.1Verilog-HDL................................2
2.1.2VHDL.......................................3
2.2可编程逻辑器件..................................4
2.3EDA软件........................................6
3.DAC0832接口电路设计原理.............................6
3.1DAC0832接口电路设计............................6
3.2DAC0832接口电路程序设计........................7
4.软件设计与仿真.......................................8
4.1VHDL程序设计...................................8
5.软件仿真...........................................10
5.1编辑和输入设计文件.............................10
5.2创建工程.......................................11
5.3全程综合与编译.................................12
5.4仿真测试.......................................12
6.课设总结...........................................13
参考文献..............................................15
1.前言
数模转换器(即DAC)是数字世界和模拟世界之间的桥梁。
人类生活在模拟世界中,虽然数字器件及设备的比重日益增强,但是DAC的发展仍是必不可少的。
DAC现已广泛用于多种领域,从航空航天、国防军事到民用通信、多媒体、数字信号处理,都涉及到DAC的应用。
FPGA是目前广泛采用的一种可编程器件。
随着微电子技术的发展。
现场可编程门阵列(FPGA)得到了飞速的发展。
FPGA的时钟延迟可达到纳秒级,结合其并行工作的方式,在超高速、实时测控方面有非常广阔的应用前景,具有工作速度快、集成度高和现场可编程的优点。
2.EDA概述
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度[1]。
2.1硬件描述语言
硬件描述语言(HDL)[2]是各种描述方法中最能体现EDA优越性的描述方法。
所谓硬件描述语言,实际就是一个描述工具,其描述的对象就是待设计电路系统的逻辑功能,实现该功能的算法,选用的电路结构以及其他各种约束条件等。
通常要求HDL既能描述系统的行为,又能描述系统的结构。
HDL的使用与普通的高级语言相似,编制的HDL程序也需要首先经过编译器进行语法,语义的检查,并转换为某种中间数据格式。
但与其他高级语言相区别的是,用硬件描述语言编制程序的最终目的是要生成实际的硬件,因此HDL中有与硬件实际情况相对应的并行处理语句。
此外,用HDL制程序时,还需注意硬件资源的消耗问题(如门,触发器,连线等的数目),有的HDL程序虽然语法,语义上完全正确,但并不能生成与之相对应的实际硬件,其原因就是要实现这些程序所描述的逻辑功能,消耗的硬件资源将十分巨大。
目前主要有以下两种HDL语言[3][4]。
2.1.1Verilog-HDL
Verilog-HDL语言是在1983年由GDA(GatewayDesignAutomation)公司的首创的。
主要用于数字系统的设计。
设计者可以用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证,时序分析,逻辑综合等。
它是目前应用最广泛的硬件描述语言之一。
其最大优点是与工艺无关性,这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级电路及其工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。
实际上,这是利用EDA工具,把逻辑验证与具体工具库
匹配,把布线及延时计算由计算机自动完成,从而减轻了设计者的劳动。
Verilog-HDL把数字系统当作一组模块来描述,每一个模块具有模块接口以及关于模块内容的描述,一个模块代表一个逻辑单元,这些模块用网络相互连接,相互通信。
由于Verilog-HDL是标准
化的,所以能把完成的设计移植到不同厂家的不同芯片中去。
又由于Verilog-HDL设计的信号位数很容易改变,所以可以通过对信号位数的修改,来适应不同的硬件规模,而且在仿真验证时,仿真测试用例可以用同一种描述语言来完成。
2.1.2VHDL
VHDL语言是美国国防部于20世纪80年代后期,出于军事工业的需要开发的。
1984年VHDL被IEEE确定为标准化的硬件描述语言。
1993年IEEE对VHDL进行了修订,增加了部分新的VHDL命令与属性,增强了对系统的描述能力,并公布了新版本的VHDL,即IEEE标准的1076-1993版本。
现在,VHDL已经成为系统描述的国际公认标准,得到众多EDA公司的支持,越来越多的硬件设计者使用VHDL描述数字系统。
VHDL涵盖面广,抽象描述能力强,支持硬件的设计,验证,综合与测试。
VHDL能在多个级别上对同一逻辑功能进行描述,如可以在寄存器级别上对电路的组成结构进行描述,也可以在行为描述级别上对电路的功能与性能进行描述。
无论哪种级别的描述,都可以利用综合工具将描述转化为具体的硬件结构。
VHDL的基本结构包含有一个实体和一个结构体,而完整的VHDL结构还包括配置,程序包与库。
各种硬件描述语言中,VHDL的抽象描述能力最强,因此运用VHDL进行复杂电路设计时,往往采用自顶向下结构化的设计方法。
比较而言,VHDL语言是一种高级描述语言,适用于电路高级建模,综合的效率和效果较好。
Verilog-HDL语言是一种低级的描述语言,适用于描述门级电路,容易控制电路资源,但其对系统的描述能力不如VHDL语言。
2.2可编程逻辑器件
可编程逻辑器件(简称PLD)[5]是一种由用户编程来实现某种逻辑功能的新型逻辑器件。
它不仅速度快,集成度高,能够完成用户定义的逻辑功能外,还可以加密和重新定义编程,其允许编程次数可多达上万次。
使用可编程逻辑器件可大大简化硬件系统,降低成本,提
高系统的可靠性,灵活性。
因此,自20世纪70年代问世以后,受到广大工程人员的青睐,被广泛应用于工业控制,通信设备,智能仪表,计算机硬件和医疗电子仪器等多个领域。
目前,PLD主要分为FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)两大类。
FPGA和CPLD最明显的特点是高集成度,高速度和高可靠性。
高速度表现在其时钟延时可小至纳秒级,结合并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景;其高可靠性和高集成度表现在几乎可将整个系统集成于同一芯片中,实现所谓片上系统,从而大大缩小了系统体积,也易于管理和屏蔽。
Altera公司是世界上大的可编程逻辑器件供应商之一。
其主要产品有MAX7000/9000,FLEX10K,APEX20K,ACEX1K,Stratix,Cyclone等系列。
Altera公司在20世纪90年代以后发展很快,业界普遍认为其开发工具MAX+plusⅡ是最成功的EDA开发平台之一,QuartusⅡ是MAX+plusⅡ的升级版本。
Xilinx公司是FPGA的发明者,其产品种类较全,主要有XC9500/4000,Spartan,Virtex,Coolrunner(XPLA3)等。
Xilinx公司是与Altera公司齐名的可编程逻辑器件供应商,在欧洲用Xilinx器件的人多,在日本和亚太地区用Altera器件的人多,在美国则是平分秋色。
全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。
可以讲,Altera和Xilinx共同决定了PLD技术的发展方向。
Lattice公司是ISP(在系统可编程)技术的发明者,其主要产品有ispL2000/5000/8000,
MACH4/5,ispMACH4000等。
与Altera公司和Xilinx公司相比,Lattice的开发工具略逊一筹,大规模PLD,FPGA的竞争力也不够强,但其中小规模PLD比较有特色。
Lattice于1999年推出可编程模拟器件,现已成为全球第三大可编程逻辑器件供应商。
Actel公司是反熔丝(一次性编程)PLD的领导者。
由于其PLD具有抗辐射,耐高低温,功耗低和速度快等优良品质,在军工产品和宇航产品上有较大优势,而Altera和Xilinx公司则一般不涉足军品和宇航市场。
2.3EDA软件
目前在国内比较流行的EDA软件[6]工具主要有Altera公司的MAX+plusⅡ和QuartusⅡ,Lattice公司的ExpertLEVER和Synario,Xilinx公司的Foundation和Alliance,Actel公司的ActelDesigner等。
3.DAC0832接口电路设计原理
3.1DAC0832接口电路设计
DAC0832是采用CMOS/Si-Cr工艺实现的8位D/A转换器。
该芯片包含8位输入寄存器、8位DAC寄存器、8位D/A转换器。
DAC0832中有两级锁存器,第一级即输入寄存器,第二级即DAC寄存器,可以工作在双缓冲方式下。
FPGA与DAC0832接口电路原理图
FPGA_IO1~8向DAC0832的数据输入口(DI0~DI7)输送数据。
FPGA_IO9提供DAC0832数据锁存允许控制信号ILE,高电平有效。
FPGA_IO10提供DAC0832控制信号(CS:
片选信号;Xfer:
数据传输控制信号;WR1、WR2:
DAC寄存器写选通信号),低电平有效。
Iout1、Iout2、Rfb与运算放大器LM324完成电流/电压的转换(DAC0832属电流输出型)。
3.2DAC0832接口电路程序设计
DAC0832输出控制时序图
根据DAC0832输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。
DAC0832是8位的D/A转换器,转换周期为1μs。
锯齿波形数据可以由256个点构成,每个点的数据长度为8位。
又因为FPGA的系统时钟为50MHz,必须对其进行分频处理,这里进行64分频,得到的锯齿波的频率为762.9Hz。
4.软件设计与仿真
4.1VHDL程序设计
DAC0832输出控制接口电路程序符号图
DAC0832接口电路程序:
-文件名:
DAC0832.VHD
--功能:
产生频率为762.9Hz的锯齿波。
--最后修改日期:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityDAC0832is
port(clk:
instd_logic;--系统时钟
rst:
instd_logic;--复位信号
ile:
outstd_logic;--数据锁存允许信号
cont:
outstd_logic;--控制信号(WR1、WR2、CS、Xfer)
data_out:
outstd_logic_vector(7downto0));--波形数据输出
endDAC0832;
architecturebehavofDAC0832is
signalq:
integerrange0to63;--计数器
signaldata:
std_logic_vector(7downto0);--波形数据
begin
process(clk)
begin
ifrst='1'thenq<=0;--复位,对计数器q清零
elsifclk'eventandclk='1'then
ifq=63thenq<=0;--此IF语句对系统时钟进行64分频
ifdata="11111111"thendata<="00000000";--此IF语句产生锯齿波波形数据
elsedata<=data+1;
endif;
elseq<=q+1;
endif;
endif;
endprocess;
ile<='1';cont<='0';data_out<=data;--ile、cont赋值;波形数据输出
endbehav;
5.软件仿真
5.1编辑和输入设计文件
新建一个文件夹,建立VHDL文件,输入源程序,文件存盘。
图5-1建立VHDL文件
5.2创建工程
打开并建立新工程管理窗口,讲设计文件加入工程中,选择目标芯片,做好相应设置。
图5-3建立工程文件
图5-4将VHDL文件加入工程
图5-5FPGA器件选择
5.3全程综合与编译
图5-6综合与编译
5.4仿真测试
打开波形编辑器,设置仿真时间区域,保存波形文件,将工程的端口信号加入到波形编辑器中,编辑输入信号,设置相应参数和格式,启动仿真器,观察仿真结果。
图5-6仿真波形
观察仿真结果,发现得到了对输入时钟这里进行64分频,得到的锯齿波的频率为762.9Hz。
6.课设总结
本文根据DAC0832输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿波发生器。
DAC0832是8位的D/A转换器,转换周期为1μs。
锯齿波形数据可以由256个点构成,每个点的数据长度为8位。
又因为FPGA的系统时钟为50MHz,必须对其进行分频处理,这里进行64分频,得到的锯齿波的频率为762.9Hz。
此次设计的中心就在于对FPGA的编程,程序设计的方式决定了输出信号的正确性。
了解VHDL的编程方式,是设计的必要前提。
在经过多次编程测试,学习前人的编程思想,借鉴不少的实例后,终于实现了8种码型的输出;同时在选FPGA芯片时,由于相同的程序放在不同的芯片上仿真时,波形中会出现一定程度的延时,导致延时大的芯片出现了短的脉冲,所以合理选择芯片也是很重要的。
通过这次设计,使我了解了数字基带信号的编码的规则,以及EDA技术的实用性,对以后从事相关事业有了一定的基础。
此次设计中也存在一些需要优化的设计,如VHDL设计可能设计的更为简便,以减少使用的资源,达到提高速度的目的等,存在许多需要改进的地方。
参考文献
[1]谭会生.EDA技术基础[M].湖南大学出版社,2004
[2]潘松,黄继业.EDA技术与VHDL[M].清华大学出版社,2005,7
[3]郑信源.Verilog硬件描述语言数字电路设计范例[M].北京:
机械工业出版社,2005
[4]王伟.VerilogHDL程序设计与应用[M].北京:
人民邮电出版社,2005
[5]杨贵.FPGA在数字信号处理中的应用与研究[D].湖南大学,2005,10
[6]路而红.电子设计自动化应用技术[M].北京:
高等教育出版社,2004,11