EDA课程设计DDS信号源文档格式.docx

上传人:b****5 文档编号:16470821 上传时间:2022-11-23 格式:DOCX 页数:16 大小:262.16KB
下载 相关 举报
EDA课程设计DDS信号源文档格式.docx_第1页
第1页 / 共16页
EDA课程设计DDS信号源文档格式.docx_第2页
第2页 / 共16页
EDA课程设计DDS信号源文档格式.docx_第3页
第3页 / 共16页
EDA课程设计DDS信号源文档格式.docx_第4页
第4页 / 共16页
EDA课程设计DDS信号源文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

EDA课程设计DDS信号源文档格式.docx

《EDA课程设计DDS信号源文档格式.docx》由会员分享,可在线阅读,更多相关《EDA课程设计DDS信号源文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

EDA课程设计DDS信号源文档格式.docx

四.总体设计方案

函数信号发生器主要由波形选择部分,波形发生部分和输出部分组成,其硬件结构图如下图。

五.电路图

六.单元电路设计

一.频率控制模块

代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFREQUENCYIS

PORT(CLK:

INSTD_LOGIC;

A:

INSTD_LOGIC_VECTOR(4DOWNTO0);

--设置A的初值

FOUT:

OUTSTD_LOGIC);

END;

ARCHITECTUREoneOFFREQUENCYIS

SIGNALFULL:

STD_LOGIC;

BEGIN

P_REG:

PROCESS(CLK)

VARIABLECNT1:

STD_LOGIC_VECTOR(4DOWNTO0);

BEGIN

IFCLK'

EVENTANDCLK='

1'

THEN

IFCNT1="

11111"

THEN

CNT1:

=A;

--当CNT1计数计满时,输入数据D被同步预置给计数器CNT1

FULL<

='

;

--同时使溢出标志信号FULL输出为高电平

ELSECNT1:

=CNT1+1;

--否则继续作加1计数

0'

--且输出溢出标志信号FULL为低电平

ENDIF;

ENDPROCESSP_REG;

P_DIV:

PROCESS(FULL)

VARIABLECNT2:

IFFULL'

EVENTANDFULL='

CNT2:

=NOTCNT2;

--如果溢出标志信号FULL为高电平,D触发器输出取反

IFCNT2='

THENFOUT<

ELSEFOUT<

ENDPROCESSP_DIV;

模块元件图

二.按键选择模块

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYBUTTONIS

PORT(d:

INSTD_LOGIC_VECTOR(2DOWNTO0);

a,b,c:

OUTSTD_LOGIC);

ARCHITECTUREONEOFBUTTONIS

BEGIN

PROCESS(d)

CASEdIS

WHEN"

000"

=>

NULL;

WHENOTHERS=>

a<

=d(0);

--dlt

b<

=d

(1);

--sqr

c<

=d

(2);

--sin

ENDCASE;

ENDPROCESS;

END;

模块元件图

三.三角波信号产生模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitydeltais

port(clk:

instd_logic;

clr:

instd_logic;

q:

outstd_logic_vector(7downto0));

enddelta;

architectureoneofdeltais

begin

process(clk,clr)

variablenum:

std_logic_vector(7downto0);

variableff:

std_logic;

ifclr='

then

num:

="

00000000"

elseifclk'

eventandclk='

then--时钟信号有上升沿时有效

ifff='

ifnum="

11111000"

ff:

='

else

=num+8;

endif;

--以上,ff=0时,上升,直至num加到11111000时,使ff=1

00000111"

=num-8;

--以上,ff=1时,下降,直至num减到00000111时,使ff=0

q<

=num;

--每一次脉冲,将num的值给q以输出

endprocess;

end;

四.方波信号产生模块

entityaquareis

endaquare;

architectureoneofaquareis

signalff:

bit;

p1:

std_logic_vector(5downto0);

ff<

then--当时钟脉冲有一个上升沿

ifnum<

31then

=num+1;

000000"

=notff;

--num每次加1,加32次ff取反1次

endprocessp1;

p2:

process(clk,ff)

begin

ifclk'

11111111"

--ff=1时输出高电平

--ff=0时输出低电平

endprocessp2;

五.正弦波信号产生模块

entitysinis

--正弦信号的相位

d:

--正弦函数值

end;

architectureoneofsinis--结构体开始

process(clk,clr)

d<

111111"

--每加到111111时清零

casenumis--四个输入,共有16总相位可能360/64=5.625

when"

=CONV_STD_LOGIC_VECTOR(128,8);

--每5.625取一个点

000001"

=CONV_STD_LOGIC_VECTOR(141,8);

--共64个点

000010"

=CONV_STD_LOGIC_VECTOR(153,8);

000011"

=CONV_STD_LOGIC_VECTOR(165,8);

000100"

=CONV_STD_LOGIC_VECTOR(177,8);

000101"

=CONV_STD_LOGIC_VECTOR(188,8);

000110"

=CONV_STD_LOGIC_VECTOR(199,8);

000111"

=CONV_STD_LOGIC_VECTOR(209,8);

001000"

=CONV_STD_LOGIC_VECTOR(218,8);

001001"

=CONV_STD_LOGIC_VECTOR(227,8);

001010"

=CONV_STD_LOGIC_VECTOR(234,8);

001011"

=CONV_STD_LOGIC_VECTOR(240,8);

001100"

=CONV_STD_LOGIC_VECTOR(246,8);

001101"

=CONV_STD_LOGIC_VECTOR(250,8);

001110"

=CONV_STD_LOGIC_VECTOR(253,8);

when"

001111"

=CONV_STD_LOGIC_VECTOR(254,8);

010000"

=CONV_STD_LOGIC_VECTOR(255,8);

010001"

010010"

010011"

010100"

010101"

010110"

010111"

011000"

011001"

011010"

011011"

011100"

011101"

011110"

011111"

100000"

100001"

=CONV_STD_LOGIC_VECTOR(115,8);

100010"

=CONV_STD_LOGIC_VECTOR(103,8);

100011"

=CONV_STD_LOGIC_VECTOR(91,8);

100100"

=CONV_STD_LOGIC_VECTOR(79,8);

100101"

=CONV_STD_LOGIC_VECTOR(68,8);

100110"

=CONV_STD_LOGIC_VECTOR(57,8);

100111"

=CONV_STD_LOGIC_VECTOR(47,8);

101000"

=CONV_STD_LOGIC_VECTOR(38,8);

101001"

=CONV_STD_LOGIC_VECTOR(29,8);

101010"

=CONV_STD_LOGIC_VECTOR(22,8);

101011"

=CONV_STD_LOGIC_VECTOR(16,8);

101100"

=CONV_STD_LOGIC_VECTOR(10,8);

101101"

=CONV_STD_LOGIC_VECTOR(6,8);

101110"

=CONV_STD_LOGIC_VECTOR(3,8);

101111"

=CONV_STD_LOGIC_VECTOR(1,8);

110000"

=CONV_STD_LOGIC_VECTOR(0,8);

110001"

110010"

110011"

110100"

110101"

110110"

110111"

111000"

111001"

111010"

111011"

111100"

111101"

111110"

whenothers=>

null;

endcase;

endprocess;

六.波形选择器

entitychangeris

port(dlt,sqr,sin:

dltd,sqrd,sind:

instd_logic_vector(7downto0);

endchanger;

architectureoneofchangeris

process(dlt,dltd,sqr,sqrd,sin,sind)

variabletemp:

std_logic_vector(2downto0);

--variablea,b:

std_logic_vector(9downto0);

--variablec,d,e:

temp:

=dlt&

sqr&

sin;

casetempis

100"

=dltd;

--a00输出三角波

010"

=sqrd;

--0b0输出方波

001"

=sind;

--00c输出正弦波

null;

endcase;

七.实验调试结果

三角波波形

方波波形

正弦波波形

八.实验总结

从仿真及实验结果可以看出,本设计较好地满足了设计要求。

同时,由于采用模块化的设计方法,系统中的各个电路均可独立实现各自的功能从而使系统具有较强的可移植性和维护性,这也为系统的功能扩展和升级提供了很大的便利。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1