- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EDA课程设计 简易信号发生器
简易信号发生器?
直接数字频率合成(DDS)直接数字频率合成技术是根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表。频率合成时,相位累加器在参考时钟的作用下对时钟脉冲进行计数,同时将累加器输出的累加相位与频率控制字K预置的相位增量相加,以相加后的吉果形成正弦查询表的地址;取出表中与该相位对应的单元中的幅度量化正弦函数值,经D/A转换器输出模拟信号,再经低通滤波器平滑得到符合要求的模拟信号。相位累加器的最大计数长度与正弦查询表中所存储的相位分隔点数相同,由于相位累加器的相位增量不同,将导致一周期内的取样点数不同,在取样频率(由参考时钟频率决定)不变的情况下,输出信号的频率也相应变化。
系统设计
总体设计方案
信号发生器从总体上可以分为系统控制模块,波形产生模块和D/A转换模块。
系统控制模块负责处理按键的读入,按键处理,将频率和幅度在数码管上显示,调节频率和幅度以及波形的选择。
波形发生模块负责按照控制模块输入的信号,输出相应的波形(正弦波,方波锯,齿波,三角波),以及输出相应幅度和频率的信号。
D/A转换模块负责将输入的数字信号转换为模拟信号。
3.2 系统控制模块
按键控制模块和数码显示模块
1)、按键读取模块设计思路:由于按键按下时有一段时间的低电平,而按下时A、B、C、D的输入键值始终是高电平,故可以通过在20M时钟的每个上升沿来检测按键输入端的电平变化,经过消抖后就可以判断是哪个按键按下。
按键检测和按键值读取的主要进程:
process(clk_key)
variable counter: std_logic_vector(15 downto 0);
variable state:integer range 4 downto 0;
begin
if rising_edge(clk_key)then
case state is
when 0 = if (abcd(0)=0 or abcd(1)=0 or abcd(2)=0or abcd(3)=0) then
state:=1;
else state:=0;
end if;
when 1 = if counter=1111111111111110 then
state:=2;
counter:=0000000000000000;
else counter:=counter+1;
state:=1;
end if;
when 2 = if abcd(0)=0 or abcd(1)=0 or abcd(2)=0or abcd(3)=0 then
case abcd is
when 0111=key_value_1=00;state:=3;
when 1011=key_value_1=01;state:=3;
when 1101=key_value_1=10;state:=3;
when 1110=key_value_1=11;state:=3;
when others=state:=0;
end case;
else state:=0;
end if;
when 3 = if (abcd(0)=0 or abcd(1)=0 or abcd(2)=0or abcd(3)=0)then
if counter=0000000000000011then
counter:=0000000000000000;out_clk=1;
else counter:=counter+1;
end if;
state:=3;
else
state:=4;
out_clk=1;
end if;
when 4 = if counter=0000000000000111 then
state:=0;
counter:=0000000000000000;out_clk=0;
else counter:=counter+1;
state:=4;
end if;
end case;
end if;
end process;
2)、按键处理和显示模块设计思路
外接的四个按键的分配:
A:数码管频率显示和幅度显示切换;
B:波形之间的切换(用四个LED
文档评论(0)