任意波形器设计.docx
- 文档编号:9716101
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:24
- 大小:774.24KB
任意波形器设计.docx
《任意波形器设计.docx》由会员分享,可在线阅读,更多相关《任意波形器设计.docx(24页珍藏版)》请在冰豆网上搜索。
任意波形器设计
苏州市职业大学
实习(实训)报告
名称任意波形产生器的设计
2013年6月17日至2013年6月21日共1周
院 系电子信息工程学院
班级
学号
姓名
院长
系主任
指导教师
苏州市职业大学
实习(实训)任务书
名称:
任意波形产生器的设计
起讫时间:
2013.6.17-2013.6.21
院系:
电子信息工程学院
班 级:
指导教师:
院长:
一、实习(实训)目的和要求
设计任意波形产生器。
二、实习(实训)内容
电路要求可以产生正弦波、锯齿波、方波、特殊波形,波形的频率可调,可以采用分频和DDS的原理控制信号输出的频率,并通过调节实验开发系统的按键控制设计信号的频率,波形的类型通过控制模块中程序设置选择,并通过调节实验开发系统的按键控制;整个电路输出8位数字,经过实验开发系统中D/A转换模块并进行放大输出模拟信号波形,通过示波器连接实验开发系统观察具体的波形,整个系统的外围电路包括按键控制电路、D/A转换电路、低频信号滤波电路、放大电路等。
任意波形产生器电路构成
三、实习(实训)方式
√集中□分散√校内□校外
四、实习(实训)具体安排
第1天:
布置实训任务,进行电路原理的讲述及程序的编写;
第2天:
进行程序的编写调试与仿真;
第3天:
进行硬件电路板的连接;
第4天:
进行硬件调试与设计报告的撰写
五、实习(实训)报告内容
1.理解电路的工作原理;
2.画出电路详细框图;
3.分析电路中各模块工作原理,并写出各模块的VHDL程序;
4.通过QuartusⅡ软件生成各模块的原理图及整个电路的顶层文件原理图;
5.对整个电路的程序进行调试与仿真;
6.连接实验开发板,下载程序,进行硬件的调试;
7.撰写实训报告,并注意报告结构合理,层次分明,在分析时注意语言的流畅。
目录
第1章绪论6
1.1EDA发展及应用6
1.2数字系统设计模型7
1.2.1传统的设计方法7
1.2.2现代的设计方法7
1.3EDA设计流程图8
第2章设计说明9
2.1设计要求9
2.2设计思路9
第3章系统设计10
3.1电路原理图及各模块图10
3.2设计流程10
3.3程序代码内容11
3.4定义管脚18
3.5硬件实现及调试结果18
第4章课程设计总结20
参考文献20
第1章绪论
1.1EDA发展及应用
伴随着计算机、集成电路、系统电子设计的发展,EDA技术经历了20世纪70年代的计算机辅助设计(CAD)、20世纪80年代的计算机辅助工程设计(CAED)和20世纪90年代电子系统设计自动化(EDA)三个发展阶段。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及应用广泛、工具多样、软件功能强大。
随着微电子技术与工具软件的发展,EDA技术的硬件载体软件开发工具与设计输入方式等都发生了很大的变化。
EDA工具的发展分为以下几个方面:
设计输入工具的发展趋势,具有混合信号处理能力的,EDA硬件载体的发展方向则向着密度更高、速度更快、频带更宽的百万门方向发展。
向系统内可重构的方向发展。
向混合可编程器件技术发展。
向低电压、向低功耗的绿色原件发展。
总的来说,EDA的发展趋势表现在如下几个方面:
(1)超大规模集成电路的集成度和工艺水平不断提高,深亚微米工艺走向成熟,使片上系统设计成为可能。
(2)市场对电子产品提出更高要求,如降低电子系统的成本、减小系统的体积等,从而对系统的集成度提出更高要求。
(3)高性能的EDA工具得到长足发展,自动化和智能化程度不断提高,为嵌入式系统设计提供功能强大的开发环境。
(4)计算机硬件设计平台性能大幅度提高,为复杂的片上系统提供了物理基础。
EDA技术在数学、科研、产品设计与制造等各个方面都发挥着巨大作用。
在数学方面,几乎所有理工科院校的电子信息类专业都开设了EDA课程,主要目的是让生了解EDA的基础概念和基本原理。
掌握用HDL语言编写规范的程序,掌握逻辑综合的理论与算法。
在科研方面,主要利用电路仿真工具进行电路设计与仿真,利用虚拟仪器进行产品测试,将CPLD/FPGA器件实际应用到仪器设备中,从事PCB设计和ASIC设计等。
在产品设计与制造方面,EDA技术应用于仿真、生产、测试等各个环节。
EDA技术已经应用于行业,在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域都有EDA技术的应用。
1.2数字系统设计模型
1.2.1传统的设计方法
由底向上的设计方法是传统的IC和PCB的设计方法。
有以下几个特征:
(1)设计方向是自底向上,先设计最小的单元电路,然后再将各个功能模块连接起来。
(2)采用通用逻辑元器件,通常采用74系列和CMOS4000系列的产品进行设计。
(3)在系统硬件设计的后期进行调试和仿真。
在部分或者全部硬件电路连接完成后才可以进行电路调试,使设计周期延长。
(4)设计结果是多张电路图。
设计调试完形成电路原理图,包括元器件型号和信号间的互连关系。
采用由底向上的设计方法需要设计者先定义和设计每个基本模块,然后对这些模块进行连线以完成整体设计。
在IC设计复杂程度低于10000门时,常采用这种设计方法,但是随着设计复杂程度的增加,该方法会产生产品生产周期长、可靠性低、开发费用高等问题。
1.2.2现代的设计方法
自顶向下的设计方法是现代的设计方法,这种设计方法综合运用各方面的知识,设计者必须从系统的角度来分析设计。
采用自顶向下技术进行设计可分为三个主要阶段:
系统设计、系统的综合优化和系统实现。
各个阶段之间没有绝对的界限。
系统设计时整个设计流程中最重要的部分,它包括系统功能分析、体系结构设计、系统描述与功能仿真,这一阶段所做的工作基本上决定了所设计电路的性能,后面所作的工作都是以这一部分为基础的。
在完成仿真后,接下来的工作就是系统综合优化,主要包括系统的综合优化与门级仿真。
如果系统综合优化的结果满足设计者的要求,就可以进行系统实现了,设计者可以将综合后的电路网表文件和设计者的时序要求给IC生产厂家进行下一步的工作,也可以通过EDA工具软件对FPGA/CPLD芯片进行配置与编程。
1.3EDA设计流程图
由下图可知,可以把EDA设计流程分为:
设计输入、功能仿真、综合、适配、时序仿真与下载。
第2章设计说明
2.1设计要求
电路要求可以产生本正弦波、锯齿波、方波、特殊波形。
波形的频率可调,可以采用分频和DDS的原理控制信号输出的频率。
并通过调节实验开发系统的按键控制设计信号的频率,波形的设计类型通过控制模块中程序设置选择,并通过调节实验开发系统的按键控制,整个电路输出8位数字,经过实验开发系统中D/A转换模块并进行放大输出模拟信号波形,通过示波器连接实验开发系统观察具体的波形,整个系统的外围电路包括按键控制电路、D/A转换电路、低频信号滤波电路、放大电路等。
2.2设计思路
1、提出设计说明书,即用自然语言表达系统项目的功能特点和技术参数等。
2、建立VHDL行为模型,这一步是将设计说明书转化为VHDL行为模型。
3、VHDL行为仿真。
这一阶段可以利用VHDL仿真器(如ModelSim)对顶层系统的行为模型进行仿真测试,检查模拟结果,继而进行修改和完善。
4、VHDL-RTL级建模。
如上所述,VHDL只有部分语句集合可用于硬件功能行为的建模,因此在这一阶段,必须将VHDL的行为模型表达为VHDL行为代码。
5、前端功能仿真。
6、逻辑综合。
7、测试向量生成。
这一阶段主要是针对ASIC设计的。
FPGA设计的时序测试文件主要产生于适配器。
对ASIC的测试向量文件是综合器结合含有版图硬件特性的工艺库后产生的,用于对ASIC的功能测试。
8、功能仿真。
利用获得的测试向量对ASIC的设计系统和子系统的功能进行仿真。
9、结构综合。
主要将综合产生的表达逻辑连接关系的网表文件,结合具体的目标硬件环境进行标准单元调用、布局、布线和满足约束条件的结构优化配置,即结构综合。
10、门级时序仿真。
在这一级中将使用门级仿真器或仍然使用VHDL仿真器
(因为结构综合后能同步生成VHDL格式的时序仿真文件)进行门级时序仿真,在计算机上了解更接近硬件目标器件工作的功能时序。
11、硬件测试。
这是对最后完成的硬件系统(如ASIC或FPGA)进行检查和测试。
第3章系统设计
3.1电路原理图及各模块图
3.1.1系统总体设计原理图:
3.1.2各模块图:
分频模块正弦函数模块锯齿波函数模块
方波函数模块特殊波形模块控制模块
3.2设计流程
1.启动QuartusⅡ6.0:
双击桌面上的QuartusⅡ6.0图标启动该软件。
2.编辑文件:
单击菜单栏中的File/New命令,选择原理图文件,并将其设为工程。
打开6个VHDL文件,一次输入分频模块、正弦函数模块、锯齿波函数模块、方波函数模块、特殊波形模块、控制模块的VHDL语言程序。
并将它们创建到原理图中的工程模块。
3.输入原理图:
在projict中把六个模块添加到原理图中,输入、输出信号添加并修改名称,保存文件。
4.创建工程:
打开新建工程向导,将设计文件加入工程中,选择目标芯片,选择仿真器和综合器类型,结束设置。
5.编译、仿真:
编译完成后建立仿真波形文件,打开波形编辑器,输入信号节点,编辑输入波形启动仿真及阅读仿真报告。
6.制定芯片管脚:
根据实验要求给管脚添加相应信号。
3.3程序代码内容
1.分频模块fp
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfpIS
port(clk:
instd_logic;--input
k:
instd_logic_vector(3downto0);
clko:
bufferstd_logic);--out
endfp;
architectureaoffpis
signaltemp:
std_logic_vector(3downto0);
begin
process(clk)
begin
ifclk'eventandclk='1'then
iftemp temp<=temp+1; else temp<="0000"; clko<=notclko; endif; endif; endprocess; enda; 2.正弦函数模块sin libraryieee; useieee.std_logic_1164.all; useieee.std_logic_arith.all; useieee.std_logic_unsigned.all; entitysinis port(clk4: instd_logic; dd4: outintegerrange255downto0); endsin; architecturedaccofsinis signalq: integerrange63downto0; begin process(clk4) begin if(clk4'eventandclk4='1')then q<=q+1; endif; endprocess; process(q) begin caseqis when00=>dd4<=255; when01=>dd4<=254; when02=>dd4<=253; when03=>dd4<=250; when04=>dd4<=245; when05=>dd4<=240; when06=>dd4<=234; when07=>dd4<=226; when08=>dd4<=218; when09=>dd4<=208; when10=>dd4<=198; when11=>dd4<=188; when12=>dd4<=176; when13=>dd4<=165; when14=>dd4<=152; when15=>dd4<=140; when16=>dd4<=128; when17=>dd4<=115; when18=>dd4<=103; when19=>dd4<=90; when20=>dd4<=79; when21=>dd4<=67; when22=>dd4<=57; when23=>dd4<=47; when24=>dd4<=37; when25=>dd4<=29; when26=>dd4<=21; when27=>dd4<=15; when28=>dd4<=10; when29=>dd4<=5; when30=>dd4<=2; when31=>dd4<=1; when32=>dd4<=0; when33=>dd4<=1; when34=>dd4<=2; when35=>dd4<=5; when36=>dd4<=10; when37=>dd4<=15; when38=>dd4<=21; when39=>dd4<=29; when40=>dd4<=37; when41=>dd4<=47; when42=>dd4<=57; when43=>dd4<=67; when44=>dd4<=79; when45=>dd4<=90; when46=>dd4<=103; when47=>dd4<=115; when48=>dd4<=128; when49=>dd4<=140; when50=>dd4<=165; when51=>dd4<=176; when52=>dd4<=188; when53=>dd4<=198; when54=>dd4<=208; when55=>dd4<=218; when56=>dd4<=226; when57=>dd4<=234; when58=>dd4<=240; when59=>dd4<=245; when60=>dd4<=250; when61=>dd4<=253; when62=>dd4<=254; when63=>dd4<=255; whenothers=>null; endcase; endprocess; enddacc; 3.锯齿波函数模块sawtooth libraryieee; useieee.std_logic_1164.all; useieee.std_logic_unsigned.all; useieee.std_logic_arith.all; entitysawtoothis port(clk3: instd_logic; dd3: outintegerrange255downto0); endsawtooth; architecturedaceofsawtoothis begin process(clk3) variableb: std_logic; variablec: integerrange255downto0; begin if(clk3'eventandclk3='1')then if(b='0')then c: =c+5; if(c>=200)then b: ='1'; endif; else c: =0; b: ='0'; endif; endif; dd3<=c; endprocess; enddace; 4.方波函数模块square libraryieee; useieee.std_logic_1164.all; useieee.std_logic_arith.all; useieee.std_logic_unsigned.all; entitysquareis port(clk1: instd_logic; dd1: bufferintegerrange255downto0); endsquare; architecturedaccofsquareis signalq: integerrange255downto0; begin process(clk1) begin if(clk1'eventandclk1='1')then q<=q+1; endif; endprocess; process(q) begin caseqis when0to127=>dd1<=255; when128to255=>dd1<=127; whenothers=>null; endcase; endprocess; enddacc; 5.特殊波形函数模块sintra libraryieee; useieee.std_logic_1164.all; useieee.std_logic_arith.all; useieee.std_logic_unsigned.all; entitysintrais port(clk4: instd_logic; dd4: outintegerrange255downto0); endsintra; architecturedaccofsintrais signalq: integerrange63downto0; begin process(clk4) begin if(clk4'eventandclk4='1')then q<=q+1; endif; endprocess; process(q) begin caseqis when00=>dd4<=255; when01=>dd4<=247; when02=>dd4<=239; when03=>dd4<=231; when04=>dd4<=223; when05=>dd4<=215; when06=>dd4<=207; when07=>dd4<=199; when08=>dd4<=191; when09=>dd4<=183; when10=>dd4<=175; when11=>dd4<=167; when12=>dd4<=159; when13=>dd4<=151; when14=>dd4<=143; when15=>dd4<=135; when16=>dd4<=128; when17=>dd4<=115; when18=>dd4<=103; when19=>dd4<=90; when20=>dd4<=79; when21=>dd4<=67; when22=>dd4<=57; when23=>dd4<=47; when24=>dd4<=37; when25=>dd4<=29; when26=>dd4<=21; when27=>dd4<=15; when28=>dd4<=10; when29=>dd4<=5; when30=>dd4<=2; when31=>dd4<=1; when32=>dd4<=0; when33=>dd4<=1; when34=>dd4<=2; when35=>dd4<=5; when36=>dd4<=10; when37=>dd4<=15; when38=>dd4<=21; when39=>dd4<=29; when40=>dd4<=37; when41=>dd4<=47; when42=>dd4<=57; when43=>dd4<=67; when44=>dd4<=79; when45=>dd4<=90; when46=>dd4<=103; when47=>dd4<=115; when48=>dd4<=127; when49=>dd4<=135; when50=>dd4<=143; when51=>dd4<=151; when52=>dd4<=159; when53=>dd4<=167; when54=>dd4<=175; when55=>dd4<=183; when56=>dd4<=191; when57=>dd4<=199; when58=>dd4<=207; when59=>dd4<=215; when60=>dd4<=223; when61=>dd4<=231; when62=>dd4<=239; when63=>dd4<=247; whenothers=>null; endcase; endprocess; enddacc; 6.控制模块control libraryieee; useieee.std_logic_1164.all; useieee.std_logic_arith.all; useieee.std_logic_unsigned.all; entitycontrolis port(sel: instd_logic_vector(1downto0); k0,k1,k2,k3: inintegerrange255downto0; qout: outintegerrange255downto0); endcontrol; architectureaofcontrolis begin process(sel,k0,k1,k2,k3) begin ifsel="00"then qout<=k0; elsifsel="01"then qout<=k1; elsifsel="10"then qout<=k2; elsifsel="11"then qout<=k3; endif; endprocess; enda; 3.4定义管角 3.5硬件实现及调试结果 定义好管脚,下载程序到硬件上,编译调试,控制SEL的值,在示波器上看到产生的波形图如下: Fp为0000时,即二分频产生波形如下: Sel=00,正弦波: Sel=01,锯齿波: Sel=10,方波: Sel=11,特殊波: 第4章课程设计总结 在为期一周的EDA实训中,我对QuartusII软件更加了解了。 不仅巩固了以前学过的知识,而且还学到了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 任意 波形 设计