数字电路课程设计函数信号发生器.docx
- 文档编号:10136995
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:36
- 大小:2.74MB
数字电路课程设计函数信号发生器.docx
《数字电路课程设计函数信号发生器.docx》由会员分享,可在线阅读,更多相关《数字电路课程设计函数信号发生器.docx(36页珍藏版)》请在冰点文库上搜索。
数字电路课程设计函数信号发生器
第一部分:
要求………………………………………………………………4
1.1技术要求……………………………………………………………………4
1.2功能要求……………………………………………………………………4
1.3本人任务……………………………………………………………………4
第二部分设计………………………………………………………………5
2.1软件电路方案设计…………………………………………………………5
2.2原理框图……………………………………………………………………5
第三部分单元模块设计,仿真结果及分析…………………………5
3.1分频器模块…………………………………………………………………5
3.2频率选择……………………………………………………………………6
3.3幅度选择……………………………………………………………………7
3.4六种波形设计………………………………………………………………8
3.5输出模块……………………………………………………………………19
第四部分顶层模块…………………………………………………………21
4.1顶层模块设计………………………………………………………………21
4.2仿真结果及分析……………………………………………………………19
第五部分硬件电路设计及安装图………………………………………21
5.1连线图………………………………………………………………………24
5.2输入、输出信号说明………………………………………………………24
5.3设计中需要注意的问题……………………………………………………25
第六部分调试结果说明及分析…………………………………………26
6.1实体图………………………………………………………………………26
6.2输出实物波形………………………………………………………………26
6.3设计中需要注意的问题……………………………………………………32
第七部分收获体会…………………………………………………………30
第一部分:
要求
1.1技术要求
1).生成方波、三角波、正弦波;
2).可以进行简单的频率选择或相幅调节;
3).在完成前三种波形的情况下可以进行波形类别的扩展;
4).用VHDL语言设计符合上述功能要求的函数发生器,并用层次化设计方法设计该电路;
5).对各个模块的功能进行仿真,并掌握数字信号发生器电路的设计及其调试方法。
1.2功能要求
实现基于FPGA的简易多功能信号发生器,产生稳定的方波、三角波、正弦波、锯齿波、阶梯波、梯形波输出,并用数码管输出相应数字,且频率、幅值可调。
具体要求如下:
通过拨动开关S3、S2、S1实现波形的选择:
共六种,同时数码管显示“1”到“6”;
通过拨动开关A2、A1实现波形幅度的选择:
共计四种;
通过拨动开关F2、F1实现波形频率的选择:
共计四种;
下载并测试电路的功能,用示波器观察DAC0832输出波形。
1.3本人任务
进行基于vhdl的软件设计,包括顶层模块设计,配合硬件进行硬件仿真和测试。
第二部分设计
2.1软件电路方案设计
对六个波形模块和三个选择模块进行单独编写,最后设计顶层模块输出。
在确定课题的第一天,我和我的组员查找资料,初步确定了电路的设计方案。
2.2原理框图
第三部分单元模块设计,仿真结果及分析
3.1分频器模块
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
entityfanais
port(a:
inintegerRANGE0TO312;--a为频率输入的初始值
clk:
instd_logic;
q:
outstd_logic);--q为输出的脉冲频率
end;
architecturefana_arcoffanais
begin
process(clk)
variableb,d:
std_logic;
variablec:
integerRANGE0TO312;
begin
ifclk'eventandclk='1'then
ifb='0'then--检测b
c:
=a-1;--b为低电平则将a-1送到c
b:
='1';--且令b=1
else
ifc=1then--b为1时检测c
b:
='0';--c=1时使b=0
d:
=notd;--d取反
elsec:
=c-1;--c不等于1时c-1
endif;
endif;
endif;
q<=d;--将d作为频率输出
endprocess;
end;
分析:
这一部分主要实现对fpga内部时钟的初始分频。
波形如上,当输入a为256时,每256个clk脉冲后q发生一个脉冲。
3.2频率选择
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
entitychuzhiis
port(f0:
instd_logic_vector(1downto0);--f0初始频率选择开关
q:
outintegerRANGE0TO312);
end;
architecturechu_arcofchuzhiis
begin
withf0select--四种不同的初值
q<=312when"00",
201when"01",
101when"10",
10when"11",
NULLwhenothers;
end;
分析:
这部分程序实现脉冲频率的选择,当f0为00、01、10、11时,频率分别为312、201、101、10;将此输出作为分频器的输入。
3.3幅度选择
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
entityfuduis
port(f1:
instd_logic_vector(1downto0);--f0初始频率选择开关
q:
outintegerRANGE0TO255);
end;
architecturefudu_arcoffuduis
begin
withf1select--四种不同的初值
q<=255when"00",
207when"01",
167when"10",
119when"11",
NULLwhenothers;
end;
分析:
此程序为幅度选择,当f1为00、01、10、11时,幅度分别为255、207、167、169。
3.4六种波形设计
a、方波
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
entitysquareis
port(clk,clr:
instd_logic;
k:
inintegerrange0to255;--幅度选择信号
q:
outintegerrange0to255);--方波输出
end;
architecturesq_arcofsquareis
signala:
bit;
begin
process(clr,clk)
variablecnt:
integer;
begin
ifclr='0'then
a<='0';
elsifclk'eventandclk='1'then--时钟上升沿
ifcnt<31thencnt:
=cnt+1;--cnt未到31时加1
elsecnt:
=0;--cnt到31时清零
a<=nota;--并将a取反
endif;
endif;
endprocess;
process(clk,a)
begin
ifclk'eventandclk='1'then
ifa='1'then--每个时钟上升沿检测a
q<=k;--a为1则q为最大值,即高电平
else
q<=0;--a为0时取反,q为最小值
endif;
endif;
endprocess;
end;
分析:
64个上升沿脉冲形成一个周期,半个周期为高电平255,半个周期低电平0。
b、三角波
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydeltais
port(clk,clr:
instd_logic;
k:
inintegerrange0to255;--k幅度选择信号
q:
outintegerrange0to255);
enddelta;
architectureaofdeltais
begin
process(clk,clr)
variablenum:
integerrange0to255;
variableff:
std_logic;--上升沿/下降沿判断标志,为0时上升,为1时下降
begin
ifclr='0'then--异步复位端
num:
=0;
elsifclk'eventandclk='1'then--上升沿
ifff='0'then
ifnum=k-7then
num:
=k;
ff:
='1';
else
num:
=num+8;--ff=0,每个上升沿脉冲加8
endif;
else
ifnum=7then
num:
=0;
ff:
='0';
else
num:
=num-8;--ff=1,下降沿,每个脉冲减8
endif;
endif;
endif;
q<=num;
endprocess;
enda;
分析:
每个脉冲上升8个点,点连成线形成三角的上升和下降曲线。
由上图可知当幅度输入为207时,当上升到207个点时下降。
c、正弦波
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitysinis
port(clk,clr:
instd_logic;
k:
inintegerrange0to255;--幅度选择信号
d:
outintegerrange0to255);
end;
architecturesin_arcofsinis
begin
process(clk,clr,k)
variabletmp:
integerrange0to63;
begin
ifclr='0'then
d<=0;
elsifclk'eventandclk='1'then--时钟上升沿
iftmp=63then--tmp=63则清零
tmp:
=0;
else
tmp:
=tmp+1;--否则tmp+1
endif;
ifk=255then
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;
elsifk=207then
casetmpis
when00=>d<=207;when01=>d<=206;when02=>d<=205;--上升曲线
when03=>d<=202;when04=>d<=199;when05=>d<=195;
when06=>d<=190;when07=>d<=183;when08=>d<=177;
when09=>d<=169;when10=>d<=160;when11=>d<=152;
when12=>d<=142;when13=>d<=132;when14=>d<=123;
when15=>d<=111;when16=>d<=100;when17=>d<=91;
when18=>d<=80;when19=>d<=70;when20=>d<=61;
when21=>d<=52;when22=>d<=43;when23=>d<=35;
when24=>d<=28;when25=>d<=21;when26=>d<=15;
when27=>d<=10;when28=>d<=6;when29=>d<=3;
when30=>d<=1;when31=>d<=0;when32=>d<=0;--下降曲线
when33=>d<=1;when34=>d<=3;when35=>d<=6;
when36=>d<=10;when37=>d<=15;when38=>d<=21;
when39=>d<=28;when40=>d<=35;when41=>d<=43;
when42=>d<=52;when43=>d<=61;when44=>d<=70;
when45=>d<=80;when46=>d<=91;when47=>d<=100;
when48=>d<=111;when49=>d<=123;when50=>d<=132;
when51=>d<=142;when52=>d<=152;when53=>d<=160;
when54=>d<=169;when55=>d<=177;when56=>d<=183;
when57=>d<=190;when58=>d<=195;when59=>d<=199;
when60=>d<=202;when61=>d<=205;when62=>d<=206;
when63=>d<=207;--完成一个周期
whenothers=>NULL;
endcase;
elsifk=167then
casetmpis
when00=>d<=167;when01=>d<=166;when02=>d<=165;--上升曲线
when03=>d<=163;when04=>d<=162;when05=>d<=155;
when06=>d<=151;when07=>d<=146;when08=>d<=141;
when09=>d<=134;when10=>d<=128;when11=>d<=121;
when12=>d<=113;when13=>d<=105;when14=>d<=97;
when15=>d<=89;when16=>d<=81;when17=>d<=73;
when18=>d<=64;when19=>d<=56;when20=>d<=49;
when21=>d<=42;when22=>d<=34;when23=>d<=28;
when24=>d<=22;when25=>d<=17;when26=>d<=12;
when27=>d<=8;when28=>d<=5;when29=>d<=3;
when30=>d<=1;when31=>d<=0;when32=>d<=0;--下降曲线
when33=>d<=1;when34=>d<=3;when35=>d<=5;
when36=>d<=8;when37=>d<=12;when38=>d<=17;
when39=>d<=22;when40=>d<=28;when41=>d<=34;
when42=>d<=42;when43=>d<=49;when44=>d<=56;
when45=>d<=64;when46=>d<=73;when47=>d<=81;
when48=>d<=89;when49=>d<=97;when50=>d<=105;
when51=>d<=113;when52=>d<=121;when53=>d<=128;
when54=>d<=134;when55=>d<=141;when56=>d<=146;
when57=>d<=151;when58=>d<=155;when59=>d<=162;
when60=>d<=163;when61=>d<=165;when62=>d<=166;
when63=>d<=167;--完成一个周期
whenothers=>NULL;
endcase;
elsifk=119then
casetmpis
when00=>d<=119;when01=>d<=118;when02=>d<=117;--上升曲线
when03=>d<=116;when04=>d<=114;when05=>d<=112;
when06=>d<=109;when07=>d<=105;when08=>d<=101;
when09=>d<=97;when10=>d<=92;when11=>d<=87;
when12=>d<=81;when13=>d<=76;when14=>d<=70;
when15=>d<=64;when16=>d<=58;when17=>d<=52;
when18=>d<=46;when19=>d<=41;when20=>d<=35;
when21=>d<=30;when22=>d<=25;when23=>d<=20;
when24=>d<=16;when25=>d<=12;when26=>d<=9;
when27=>d<=6;when28=>d<=4;when29=>d<=2;
when30=>d<=1;when31=>d<=0;when32=>d<=0;--下降曲线
when33=>d<=1;when34=>d<=2;when35=>d<=4;
when36=>d<=6;when37=>d<=9;when38=>d<=12;
when39=>d<=16;when40=>d<=20;when41=>d<=25;
when42=>d<=30;when43=>d<=35;when44=>d<=41;
when45=>d<=46;when46=>d<=52;when47=>d<=58;
when48=>d<=64;when49=>d<=70;when50=>d<=76;
when51=>d<=81;when52=>d<=87;when53=>d<=92;
when54=>d<=97;when55=>d<=101;when56=>d<=105;
when57=>d<=109;when58=>d<=112;when59=>d<=114;
when60=>d<=116;when61=>d<=117;when62=>d<=118;
when63=>d<=119;--完成一个周期
whenothers=>NULL;
endcase;
endif;
endif;
endprocess;
end;
分析:
与三角波一样,正弦波也是采用点连成曲线的方法完成的。
d、锯齿波
实体框图
程序清单:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjuchiis
port(clk,clr:
instd_logic;
k:
inintegerrange0to255;--幅度选择信号
q:
outintegerra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字电路 课程设计 函数 信号发生器