EDA课程设计任意波形发生器.docx
《EDA课程设计任意波形发生器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计任意波形发生器.docx(23页珍藏版)》请在冰豆网上搜索。
![EDA课程设计任意波形发生器.docx](https://file1.bdocx.com/fileroot1/2023-1/9/872b8483-eb7a-46a1-a0be-4b381c6e8eab/872b8483-eb7a-46a1-a0be-4b381c6e8eab1.gif)
EDA课程设计任意波形发生器
第一章EDA技术概述
EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL(HardwareDescriptionlanguage)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。
1.1EDA技术的发展
回顾近30年电子设计技术的发展历程,可将EDA技术分为三个阶段。
(1)七十年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和PCB布局布线,取代了手工操作,产生了计算机辅助设计的概念。
(2)八十年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,以实现工程设计,这就是计算机辅助工程的概念。
CAE的主要功能是:
原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。
(3)九十年代为ESDA阶段。
尽管CAD/CAE技术取得了巨大的成功,但并没有把人从繁重的设计工作中彻底解放出来。
在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。
基于以上不足,人们开始追求贯彻整个设计过程的自动化,这就是ESDA即电子系统设计自动化。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。
在EDA软件开发方面,目前主要集中在美国。
但各国也正在努力开发相应的工具。
日本、韩国都有ASIC设计工具,但不对外开放。
中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。
相信在不久的将来会有更多更好的设计工具有各地开花并结果。
据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年复合增长率分别达到了50%和30%。
EDA技术发展迅猛,完全可以用日新月异来描述。
EDA技术的应用广泛,现在已涉及到各行各业。
EDA水平不断提高,设计工具趋于完美的地步。
EDA市场日趋成熟,但我国的研发水平沿很有限,需迎头赶上。
1.2EDA技术的基本设计方法
EDA技术的每一次进步、都引起了设计层次上的一个飞跃,可以用图1说明。
物理级设计主要指IC版图设计,一般由半导体厂家完成,对电手工程师并没有太大的意义,因此本文重点介绍电路级设计和系统级设计。
1.2.1电路级设计
电路级设计工作流程如图2所示,电子工程师接受系统设计任务后,首先确定设计方案,同时要选择能实现该方案的合适元器件,然后根据具体的元器件设计电路原理图。
接着进行第一次仿真,包括数字电路的逻辑模拟、故障分析、模拟电路的交直流分析、瞬态分析。
系统在进行仿真时,必须要有元件模型库的支持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。
这一次仿真主要是检验设计方案在功能方面的正确性。
仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线。
在制作PCB板之前还可以进行后分析,包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并且可以将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真,这一次仿真主要是检验PCB板在实际工作环境中的可行性。
由此可见,电路级的EDA技术使电子工程师在实际的电子系统产生之前,就可以全面地了解系统的功能特性和物理特性,从而将开发过程中出现的缺陷消灭在设计阶段,不仅缩短了开发时间,也降低了开发成本。
1.2.2系统级设计
进入90年代以来,电子信息类产品的开发出现了两个明显的特点:
一是产品的复杂程度加深,二是产品的上市时限紧迫。
然而电路级设计本质上是基于门级描述的单层次设计,设计的所有工作(包括设计输入,仿真和分析,设计修改等)都是在基本逻辑门这一层次上进行的,显然这种设计方法不能适应新的形势,为此引入了一种高层次的电子设计方法,也称为系统级的设计方法。
高层次设计是一种"概念驱动式"设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的概念构思与方案上,一旦这些概念构思以高层次描述的形式输入计算机后,EDA系统就能以规则驱动的方式自动完成整个设计。
这样,新的概念得以迅速有效的成为产品,大大缩短了产品的研制周期。
不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,在厂家综合库的支持下,利用综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得轻松容易。
具体的设计流程见图3。
高层次设计步骤如下:
第一步:
按照"自顶向下"的设计方法进行系统划分。
第二步:
输入VHDL代码,这是高层次设计中最为普遍的输入方式。
此外,还可以采用图形输入方式(框图,状态图等),这种输入方式具有直观、容易理解的优点。
第三步:
将以上的设计输入编译成标准的VHDL文件。
对于大型设计,还要进行代码级的功能仿真,主要是检验系统功能设计的正确性,因为对于大型设计,综合、适配要花费数小时,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间,一般情况下,可略去这一仿真步骤。
第四步:
利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网表文件,这是将高层次描述转化为硬件电路的关键步骤。
综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库支持下才能完成。
综合后,可利用产生的网表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,较为粗略。
一般设计,这一仿真步骤也可略去。
第五步:
利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。
适配完成后,产生多项设计结果:
①适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;②适配后的仿真模型;③器件编程文件。
根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确地预期未来芯片的实际性能。
如果仿真结果达不到设计要求,就需要修改VHDL源代码或选择不同速度品质的器件,直至满足设计要求。
第六步:
将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。
如果是大批量产品开发,通过更换相应的厂家综合库,可以很容易转由ASIC形式实现。
1.2.3 数字系统设计模型及基本步骤
数字系统是指由若干数字电路和逻辑部件构成的能够处理或传送、存储数字信息的设备数字系统通常可以分为三个部分,即系统接口、数据处理器和控制器。
其中,系统接口是完成将物理量转化为数字量或将数字量转化为物理量的功能部件。
例如键盘、打印机接口即是系统接口;数据处理器的逻辑功能可分解为若干个子处理单元,通常称为子系统,例如译码器、运算器等都可作为一个子系统;控制器接收外部输入信号,以及数据处理器反馈的信号,管理各个子系统的局部及整个系统按规定顺序工作。
一般情况下,系统接口、数据处理器由组合电路时序电路构成;控制器由同步时序电路构成。
数字系统结构框图如图4所示。
图4数字系统结构框图
其中:
•控制器部分:
是数字电子系统的核心部分。
它由记录当前逻辑状态的时序电路和进行逻辑运算的组合电路组成。
根据控制器的外部输入信号、执行部分送回的反馈信号以及控制部分的当前状态控制逻辑运算的进程,并向执行部分和系统外部发送控制命令。
•数据处理器部分:
由组合电路和时序电路组成。
它接受控制命令,执行相应的动作。
同时,还要将自身的状态反馈给摔制部分。
逻辑功能可分解为若干个子处理单元,通常称为子系统,例如译码器、运算器等都可作为一个子系统。
该部分的输入信号:
控制部分的外部输入信号,作为控制部分的参数或控制;输出信号:
由控制部分产生的送到外部的控制信号;反馈信号:
由执行部分产生,反映执行部分状态的信号;输入数据:
送到数字系统的待处理数据;输出数据:
由数字系统处理过的输出到外部的数据。
•时钟:
为整个系统提供时钟、同步信号。
•输入接口电路:
为系统的输入信号提供预处理功能。
•输出接口电路;输出系统的各类信号、信息。
由图4可知,控制器接收外输入和处理器的各个子系统的反馈输人,然后综合为各种控制信号,分别控制各个子系统在定时信号到来时完成某种操作,并向外输出控制信号。
有没有控制器是区别功能部件(数字单元电路)和数字系统的标志。
凡是有控制器,且能
按照一定程序进行数据处理的系统,不论其规模大小,均称之为数字系统:
否则,只能是功能部件或是数字系统中的子系统。
现在的数字系统设计已经逐渐向片上系统(SystemonChip)发展。
从芯片的功能和规模来将,一个芯片就是一个完整的数字电子系统,也称之为系统芯片。
在数字电子技术领域中,“系统芯片”的基本定义是:
这种芯片含有一个或多个主要功能块(CPU核心,数字信号处理器核心和其他的专门处理功能模块)。
它还含有其他功能块,如静态RAM、ROM、EPROM、闪存或动态RAM以及通用或专用I/O功能块。
尽管如此,没有两种系统芯片是完全相同的。
大多数系统芯片都经过功能调整,使之专门适合指定的用途。
1.3数字系统设计
1.3.1数字系统设计概要
日常生活中可以发现无数数字系统的例子,如自动播放器、CD播放机、电话系统、个人计算机以及视频游戏等。
可以简单地将数字系统定义为仅用数字来“处理”信息以实现计算和操作的电子系统。
但是,数字系统中的数字来自于二进制计数系统,只有两个可能的值:
0和2,即只使用0和1来完成所有的计算和操作任务。
因此,数字系统必须实现如下功能:
1)将现实世界的信息转换成数字网络可以理解的二进制“语言”。
2)仅用数字0和1完成所要求的计算和操作。
3)将处理的结果一我们可以理解的方式返回给现实世界。
1.3.2数字系统的设计模型
数字系统指的是交互式的、以离散形式表示的具有存储、传输、信息处理能力的逻辑子系统的集合。
用于描述数字系统的模型有多种,各种模型描述数字系统的侧重点不同。
下面介绍一种普遍采用的模型。
这种模型根据数字系统的定义,将整个系统划分为两个模块或两个子系统:
数据处理子系统和控制子系统,如图5所示
数据处理子系统主要完成数据的采集、存储、运算和传输。
数据处理子系统主要由存储器、运算器、数据选择器等功能电路组成。
数据处理子系统与外界进行数据交换,在控制子系统(或称控制器)发出的控制信号作用下,数据处理子系统将进行数据的存储和运算等操作。
数据处理子系统将接收由控制器发出的控制信号,同时将自己的操作进程或操作结果作为条件信号传送给控制器。
应当根据数字系统实现的功能或算法设计数据处理子系统。
控制子系统是执行数字系统算法的核心,具有记忆功能,因此控制子系统是时序系统。
控制子系统由组合逻辑电路和触发器组成,与数据处理子系统共用时钟。
控制子系统的输入信号是外部控制信号和由数据处理子系统送来的条件信号,按照数字系统设计方案要求的算法流程,在时钟信号的控制下进行状态的转换,同时产生与状态和条件信号相对应的输出信号,该输出信号将控制数据处理子系统的具体操作。
应当根据数字系统功能及数据处理子系统的需求设计控制子系统。
把数字系统划分成数据处理子系统和控制子系统进行设计,这只是一种手段,不是目的。
它用来帮助设计者有层次地理解和处理问题,进而获得清晰、完整正确的电路图。
因此,数字系统的划分应当遵循自然、易于理解的原则。
1.3.3数字系统的设计步骤
1.系统任务分析
数字系统设计中的第一步是明确系统的任务。
在设计任务书中,可用各种方式提出对整个数字系统的逻辑要求,常用的方式有自然语言、逻辑流程图、时序图或几种方法的结合。
当系统较大或逻辑关系较复杂时,系统任务(逻辑要求)逻辑的表述和理解都不是一件容易的工作。
所以,分析系统的任务必须细致、全面,不能有理解上的偏差和疏漏。
2.确定逻辑算法
实现系统逻辑运算的方法称为逻辑算法,也简称为算法。
一个数字系统的逻辑运算往往有多种算法,设计者的任务不但是要找出各种算法,还必须比较优劣,取长补短,从中确定最合理的一种。
数字系统的算法是逻辑设计的基础,算法不同,则系统的结构也不同,算法的合理与否直接影响系统结构的合理性。
确定算法是数字系统设计中最具创造性的一环,也是最难的一步。
3.建立系统及子系统模型
当算法明确后,应根据算法构造系统的硬件框架(也称为系统框图),将系统划分为若干个部分,各部分分别承担算法中不同的逻辑操作功能。
如果某一部分的规模仍嫌大,则需进一步划分。
划分后的各个部分应逻辑功能清楚,规模大小合适,便于进行电路级的设计
4.系统(或模块)逻辑描述
当系统中各个子系统(指最低层子系统)和模块的逻辑功能和结构确定后,则需采用比较规范的形式来描述系统的逻辑功能。
设计方案的描述方法可以有多种,常用的有方框图、流程图和描述语言等。
对系统的逻辑描述可先采用较粗略的逻辑流程图,再将逻辑流程图逐步细化为详细逻辑流程图,最后将详细逻辑流程图表示成与硬件有对应关系的形式,为下一步的电路级设计提供依据。
5.逻辑电路级设计及系统仿真
电路级设计是指选择合理的器件和连接关系以实现系统逻辑要求。
电路级设计的结果常采用两种方式来表达:
电路图方式和硬件描述语言方式。
EDA软件允许以这两种方式输入,以便作后续的处理。
当电路设计完成后必须验证设计是否正确。
在早期,只能通过搭试硬件电路才能得到设计的结果。
目前,数字电路设计的EDA软件都具有仿真功能,先通过系统仿真,当系统仿真结果正确后再进行实际电路的测试。
由EDA软件的验证结果十分接近实际结果,因此,可极大地提高电路设计的效率。
6.系统的物理实现
物理实现是指用实际的器件实现数字系统的设计,用仪表测量设计的电路是否符合设计要求。
现在的数字系统往往采用大规模和超大规模集成电路,由于器件集成度高、导线密集,故一般在电路设计完成后即设计印刷电路板,在印刷电路板上组装电路进行测试。
需要注意的是,印刷电路板本身的物理特性也会影响电路的逻辑关系。
第二章任意波形产生器
2.1任意波形信号发生器的概述:
随着信息科技的发展,波形发生器在科技社会等多个领域发挥着越来越重要作用。
采用EDA技术利用MAX+PLUS
软件平台,设计的多功能波形发生器系统,大大简化其结构,降低成本,提高了系统的可靠性和灵活性。
设计中运用计数器,数据选择器,对所需的频率进行选择和同步。
使用宏功能模块存储波形。
然后多波形进行幅度的选择。
产生满足需要的不用频率和幅度的波形。
2.2发展趋势及应用
任意波形发生器的应用非常广泛,在原理上可仿真任意波形,只要数字示波器或其它记录仪捕捉到的波形,任意波形发生器都可复制出,特别有用的是仿真单次偶发的信号,例如地震波形、汽车碰撞波形等等。
任意波形发生器的发展趋势是更高取样率,更高分辨率和更大存储量,目前实时带宽超过1GHz的产品比较少,而且分辨率只有8位,不能满足快速发展的移动通信和高速网络的测量要求。
与数字存储示波器相比,任意波形发生器的全面指标存在明显差距,前者的取样率达到20GS/s和带宽6GHz,后者的取样率是4.8GS/s和带宽2GHz。
任意波形发生器首先要赶上数字存储示波器,然后再往前发展,因为在电路构成方面,任意波形发生器的核心部件是高速数/模转换器,它的工艺潜力还很大,显然缺少的是市场需求。
任意波形发生器在通信系统、测试系统等方面得到广泛应用。
任意波形发生器的另一重要应用领域是低频,例如心电图、汽车点火、防撞气囊、医疗仪器等。
2.3任意波形产生器构成
•上图为任意波形发生器的构成图,sel为控制波形输出。
•Kk为分频模块,与k步长调整波形输出的频率。
输出8位数字信号经过D/A转换输出负波形,再经过1:
1比例反向放大器输出正向波形,施密特触发电路输出方波然后经测频模块由数码管显示出频率。
产生的波形如下:
正弦波三角波
特殊波形方波
CPLD系统的分析
分频系统
第三章任意波形产生器的设计
3.1设计的意义
信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛地应用。
凡是产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。
信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量参数。
可见,信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。
它能够产生多种波形,如三角波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛地用途。
例如,在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。
在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。
本设计采用EDA来设计制作多功能信号发生器。
该信号发生器可以产生正弦波、三角波、方波等波形。
电路模块组成部分:
3.2设计程序及步骤
1分频模块
以下为分频模块(CT74161)的VHDL语言编程源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCT74161IS
PORT(clk:
INSTD_LOGIC;
clk_div2:
OUTSTD_LOGIC;
clk_div4:
OUTSTD_LOGIC;
clk_div8:
OUTSTD_LOGIC;
clk_div16:
OUTSTD_LOGIC);
ENDCT74161;
ARCHITECTURErtlOFCT74161IS
SIGNALcount:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk)
BEGIN
IF(clk'EVENTANDclk='1')THEN
IF(count="1111")THEN
Count<=(OTHERS=>'0');
ELSE
Count<=count+1;
ENDIF;
ENDIF;
ENDPROCESS;
clk_div2<=count(0);
clk_div4<=count
(1);
clk_div8<=count
(2);
clk_div16<=count(3);
ENDrtl;
2频率选择模块
以下为频率选择模块(tiaopin)的VHDL语言编程源程序
libraryieee;
useieee.std_logic_1164.all;
entitytiaopinis
port(s1,s0:
instd_logic;
a,b,c,d:
instd_logic;
y:
outstd_logic);
endtiaopin;
architectureoneoftiaopinis
signals:
std_logic_vector(1downto0);
signaly_temp:
std_logic;
begin
s<=s1&s0;
process(s1,s0,a,b,c,d)
begin
casesis
when"00"=>y_temp<=a;
when"01"=>y_temp<=b;
when"10"=>y_temp<=c;
when"11"=>y_temp<=d;
whenothers=>y<='X';
endcase;
endprocess;
y<=y_temp;
endone;
3波形选择模块
以下为波形选择模块(decoder)的VHDL语言编程源程序
libraryieee;
useieee.std_logic_1164.all;
entityDECODERis
port(a0,a1,a2,s0,s1,s2:
instd_logic;
y0,y1,y2,y3,y4,y5,y6,y7:
outstd_logic);
endDECODER;
architectureymqofDECODERis
signala:
std_logic_vector(2downto0);
begin
a<=a2&a1&a0;
process(a,s0,s1,s2)
variabley:
std_logic_vector(7downto0);
begin
if(s2='0'ands1='0'ands0='1')then
caseais
when"000"=>y:
="11111110";
when"001"=>y:
="11111101";
when"010"=>y:
="11111011";
when"011"=>y:
="11110111";
when"100"=>y:
="11101111";
when"101"=>y:
="11011111";
when"110"=>y:
="10111111";
when"111"=>y:
="01111111";
whenothers=>y:
="XXXXXXXX";
endcase;
else
y:
="11111111";
endif;
y0<=y(0);
y1<=y
(1);
y2<=y
(2);
y3<=y(3);
y4<=y(4);
y5<=y(5);
y6<=y(6);
y7<=y(7);
endprocess;
endymq;
4.输出波形选择模块
以下为输出波形模块(lpm)的VHDL语言编程源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitylpmis
port(s1,s2,s3:
instd_logic;
a,b,c,d,e,f,g,h:
instd_logic_vector(7downto0);
z:
outstd_logic_vector(7downto0));
endlpm;
architectureoneoflpmis
signals:
std_logic_vector(2downto0);
begin
s<=s3&s2&s1;
process(s1,s2,s3,a,b,c,d,e,f,g