周期可调的 多波形发生器 课程设计.docx
- 文档编号:9595876
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:22
- 大小:180.01KB
周期可调的 多波形发生器 课程设计.docx
《周期可调的 多波形发生器 课程设计.docx》由会员分享,可在线阅读,更多相关《周期可调的 多波形发生器 课程设计.docx(22页珍藏版)》请在冰点文库上搜索。
周期可调的多波形发生器课程设计
成绩评定表
学生姓名
唐晶晶
班级学号
1203030209
专业
电子信息工程
课程设计题目
周期可调的
多波形发生器
评
语
组长签字:
成绩
日期
2015年3月10日
课程设计任务书
学院
信息科学与工程学院
专业
电子信息工程
学生姓名
唐晶晶
班级学号
1203030209
课程设计题目
周期可调的多波形发生器
一、内容及要求:
能正确划分设计层次;收集资料;独立思考,刻苦专研,严禁抄袭;按时完成设计任务,认
真、正确地书写课程设计报告。
二、功能要求:
能产生正弦波、方波、三角波和有用户编辑的特定形状波形。
三、进度安排:
课程设计时间为10天(2周)
1、调研、查资料1天。
2、总体方案设计2天。
3、代码设计与调试5天。
4、撰写报告1天。
5、验收1天。
指导教师:
2015年3月2日
专业负责人:
2015年3月2日
学院教学副院长:
2015年3月2日
目录
1概述..............................................................1
1.1设计背景和意义...............................................1
1.2设计任务.....................................................2
1.3设计要求.....................................................2
2原理设计及层次划分................................................4
2.1工作原理....................................................4
2.2层次划分....................................................4
3软件设计.........................................................6
3.1初值模块代码设计............................................6
3.2分频模块代码设计............................................6
3.3方波模块代码设计............................................7
3.4三角波模块代码设计...........................................8
3.5正弦波模块代码设计..........................................9
3.6特殊波形模块代码设计.......................................10
3.7顶层模块设计原理图.........................................11
4仿真及测试.......................................................12
4.1初值模块仿真................................................12
4.2分频模块仿真...............................................12
4.3方波模块仿真...............................................12
4.4三角波模块仿真.............................................13
4.5正弦波模块仿真.............................................13
4.6特殊波形模块仿真...........................................13
5总结.............................................................14
6参考文献.........................................................15
1概述
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
1.1设计背景和意义
EDA技术在进入21世纪后,得到了更大的发展应用,突出表现在以下几个方面:
1.在FPGA上实现DSP应用成为可能,用纯数字逻辑进行DSP模块的设计,使得高速DSP实现成为现实,并有力地推动了软件无线电技术的实用化和发展。
基于FPGA的DSP技术,为高速数字信号处理算法提供了实现途径。
2.嵌入式处理器软核的成熟,使得SOPC(SystemOnaProgrammableChip)步入大规模应用阶段,在一片FPGA中实现一个完备的数字处理系统成为可能。
3.使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能。
4.在仿真和设计两方面支持标准硬件描述语言且功能强大的EDA软件不断推出。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
设计意义:
1.周期可调的多波形发生器在1975年的开发成功为信号发生器产品增加了一个新品种。
在周期可调的多波形发生器作为测量用信号激励源进入市场之前,为了产生非正弦波信号,已使用函数发生器提供三角波、斜波、方波和余弦波等几种特殊波形。
声音和振动分析需要复杂调制的信号源,以便仿真真实的信号,只有借助周期可调的多波形发生器,例如医疗仪器测试往往需要心电波形。
周期可调的多波形发生器的应用非常广泛,在原理上可仿真任意波形,特别有用的是仿真单次偶发的信号,例如地震波形、汽车碰撞波形等。
周期可调的多波形发生器是在电路设计与调试中应用很多的一种信号发生装置和信号源。
对于模拟现场信号和各种信号合成能产生各种各样的波形。
2.周期可调的多波形发生器是信号源的一种,它具有信号源所有的特点和要领。
我们传统都认为信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。
可见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路$以达到测试的需要。
周期可调的多波形发生器是一种特殊的信号源,具有综合其它信号源波形生成能力,因而适合各种仿真实验的需要。
1.2设计任务
熟悉QuartusⅡ的VHDL文本设计流程的全过程,学会用可编程逻辑器件设计制作一个波形发生器,能产生正弦波、方波、三角波和有用户编辑的特定形状波形。
1.3设计要求
信号发生器的控制模块可以用数据选择器实现,三种信号的信号选择可以用3选1数选择器实现。
能产生正弦波、方波、三角波和有用户编辑的特定形状波形。
电路要求:
(1)具有产生正弦波、方波、三角波3种周期性波形的功能。
(2)用开关输入编辑生成上述3中波形的线性组合波形。
(3)输出波形的频率可调。
设计过程:
(1)提出设计说明书,即用自然语言表达系统项目的功能特点和技术参数等。
(2)建立VHDL行为模型,这一步是将设计说明书转化为VHDL行为模型。
(3)VHDL行为仿真。
这一阶段可以利用VHDL仿真器(如ModelSim)对顶层系统的行为模
型进行仿真测试,检查模拟结果,继而进行修改和完善。
(4)VHDL-RTL级建模。
如上所述,VHDL只有部分语句集合可用于硬件功能行为的建模,因
此在这一阶段,必须将VHDL的行为模型表达为VHDL行为代码(或称VHDL-RTL级模型)。
(5)前端功能仿真。
(6)逻辑综合。
(7)测试向量生成。
这一阶段主要是针对ASIC设计的。
FPGA设计的时序测试文件主要产
生于适配器。
对ASIC的测试向量文件是综合器结合含有版图硬件特性的工艺库后产生
的,用于对ASIC的功能测试。
(8)功能仿真。
利用获得的测试向量对ASIC的设计系统和子系统的功能进行仿真。
(9)结构综合。
主要将综合产生的表达逻辑连接关系的网表文件,结合具体的目标硬件环
境进行标准单元调用、布局、布线和满足约束条件的结构优化配置,即结构综合。
(10)门级时序仿真。
在这一级中将使用门级仿真器或仍然使用VHDL仿真器(因为结构综
合后能同步生成VHDL格式的时序仿真文件)进行门级时序仿真,在计算机上了解更接
近硬件目标器件工作的功能时序。
(11)硬件测试。
这是对最后完成的硬件系统(如ASIC或FPGA)进行检查和测试。
2原理设计及层次划分
2.1工作原理
(1)产生正弦波,是通过预先计算出正弦波表,然后查表输出实现的(此处一个周
期正弦波取64点)。
(2)产生方波,是通过交替送出全0和全1,给以适当的延时实现的。
(3)产生三角波,是通过由全0不断加同一个数,到全1之后再不断减同一个数来实
现的。
原理框图:
图2.1周期可调的原理框图
2.2层次划分
模块初值通过a的值提供初值,将产生的结果给下一个模块分频时使用
图2.2模块初值的原理图
模块分频由时钟clk和上一个模块得到的值来控制,为给后边模块改变频率,以致改变周期提供方便。
图2.3模块分频的原理图
模块正弦波,三角波和方波的周期均由上一模块分频所决定,最后产生相应的波形。
图2.4模块正弦波的原理图图2.5模块三角波的原理图图2.6模块方波的原理图
模块特殊波形是通过改变控制输入数据,改变三个波形的输出,在不同的输入条件下满足用户的需求。
图2.7模块特殊波形的原理图
3软件设计
3.1初值模块代码设计
模块初值的功能是提供初值,供下一个模块分频时用,通过不同的初值,是由输入a决定的。
libraryieee;
useieee.std_logic_1164.all;
entitychuzhiis
port(a:
instd_logic_vector(3downto0);
q:
outintegerrange0to312);
endchuzhi;
architecturechu_arcofchuzhiis
begin
process(a)
begin
caseais
when"0001"=>q<=313;
when"0010"=>q<=156;
when"0011"=>q<=104;
when"0100"=>q<=78;
when"0101"=>q<=63;
when"0110"=>q<=52;
when"0111"=>q<=45;图3.1初值的原理图
when"1000"=>q<=39;
when"1001"=>q<=35;
when"1010"=>q<=31;
whenothers=>null;
endcase;
endprocess;
endchu_arc;
3.2分频模块代码设计
模块分频的功能是将前一模块初值送来的初值对时钟进行分频,得到不同的工作频率,从而调节波形频率。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfanais
port(a:
inintegerrange0to312;
clk:
instd_logic;
q:
outstd_logic);
endfana;
architecturefan_arcoffanais
begin
process(clk)
variableb,d:
std_logic;
variablec:
integerrange0to312;
begin
ifclk'eventandclk='1'then
ifb='0'then
c:
=a-1;
b:
='1';
else
ifc=1then
b:
='0';图3..2分频的原理图
d:
=notd;
else
c:
=c-1;
endif;
endif;
endif;
q<=d;
endprocess;
endfan_arc;
3.3方波模块代码设计
模块方波的功能是产生方波。
libraryieee;
useieee.std_logic_1164.all;
entitysquareis
port(clk,clr:
instd_logic;
q:
outintegerrange0to255);
endsquare;
architecturesq_arcofsquareis
signala:
bit;
begin
process(clk,clr)
variablecnt:
integer;
begin
ifclr='0'then图3.3方波的原理图
a<='0';
elsifclk'eventandclk='1'then
ifcnt<31then
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;
endsq_arc;
3.4三角波模块代码设计
模块三角波的功能是产生三角波。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydeltais
port(clk,reset:
instd_logic;
q:
outstd_logic_vector(7downto0));
enddelta;
architecturedelta_arcofdeltais
begin
process(clk,reset)
variabletmp:
std_logic_vector(7downto0);
variablea:
std_logic;
begin
ifreset='0'then
tmp:
="00000000";
elsifclk'eventandclk='1'then图3.4三角波的原理图
ifa='0'then
iftmp="11111000"then
tmp:
="11111111";
a:
='1';
else
tmp:
=tmp+8;
endif;
else
iftmp="00000111"then
tmp:
="00000000";
a:
='0';
else
tmp:
=tmp-8;
endif;
endif;
endif;
q<=tmp;
endprocess;
enddelta_arc;
3.5正弦波模块代码设计
模块正弦波功能是产生正弦波
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysinis
port(clk,clr:
instd_logic;
d:
outintegerrange0to255);
endsin;
architecturesin_arcof=sinis
begin
process(clk,clr)
variabletmp:
integerrange0to63;
begin
ifclr='0'then
d<=0;
elsifclk'eventandclk='1'then图3.5正弦波的原理图
iftmp=63then
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;
whenothers=>null;
endcase;
endif;
endprocess;
endsin_arc;
3.6特殊波形模块代码设计
模块特殊波形的功能是根据外部的开工控制,输出三种波形。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitychpro31is
port(dlt,sqr,sin:
instd_logic;
dlta,sqra,sin,a:
instd_logic_vector(7downto0);
q:
outstd_logic_vector(7downto0));
endchpro31;
architecturech_arcofchpro31is
begin
process(dlt,dlta,sqr,sqra,sin,sina)
variabletmp:
std_logic_vector(2downto0);
variablea,b:
std_logic_vector(9downto0);
variablec,d,e:
std_logic_vector(9downto0);
begin
tmp:
=dlt&sqr&sin;
casetmpis
when"100"=>q<=dlta;
when"010"=>q<=sqra;
when"001"=>q<=sina;
when"110"=>a:
="00"&dlta+sqra;
q<=a(8downto1);
when"101"=>a:
="00"&dlta+sina;
q<=a(8downto1);图3.6特殊波形的原理图
when"011"=>a:
="00"&sqra+sina;
q<=a(8downto1);
when"111"=>a:
="00"&dlta+sqra;
b:
=a+sina;
c:
="00"&b(9downto2);
d:
="0000"&a(9downto4);
e:
="000000"&a(9downto6);
a:
=c+d;
b:
=a+e;
q<=b(7downto0);
whenothers=>null;
endcase;
endprocess;
endch_arc;
3.7顶层模块设计
图3.7顶层模块设计原理图
4仿真及测试
4.1初值模块仿真
图4.1初值模块功能仿真
模块初值的功能是提供初值,供下一个模块分频时用。
4.2分频模块仿真
图4.2分频模块功能仿真
模块分频的功能是将前一模块初值送来的初值对时钟进行分频,得到不同的工作频率,从而调节波形频率。
初值越大,输出Q的变化率越小。
4.3方波模块仿真
图4.3方波模块功能仿真
模块方波的功能是通过清零和时钟在分频的共同作用下产生0与1交替的数字,最后形成方波。
4.4三角波模块仿
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 周期可调的 多波形发生器 课程设计 周期 可调 波形 发生器