EDA信号发生器设计学院电气信息学院专业姓名学号日期2014.6.282目录二.功能介绍...................................................................................................32.1整体功能介绍.......................................................................................32.2频率调节模块.......................................................................................42.3分频数产生模块...................................................................................62.4分频模块.............................................................................................102.5正弦波设计.........................................................................................11图8弦波仿真图.......................................................................................132.6三角波设计.........................................................................................13图9三角波仿真图...................................................................................142.7方波设计.............................................................................................14图10方波仿真图.....................................................................................162.8锯齿波设计.........................................................................................16图11锯齿波仿真图.................................................................................172.9数据选择器.........................................................................................172.10幅度调节模块...................................................................................182.11整体功能仿真...................................................................................19三.硬件调试结果............................................................................................203一.设计思想本次设计基于VHDL语言设计一个简易多功能信号发生器,通过九个模块来实现信号发生器的整体功能。每个模块建立一个工程,并进行编译和仿真,最后建立一个顶层文件,将各个模块调入并生成器件,最后,新建Block文件调用器件,经过连线,编译,仿真,下载,实现完成整个设计。具体原理图结构如下图所示:图1多功能信号发生器原理图二.功能介绍2.1整体功能介绍(1)设计一个简易多功能信号发生器,产生稳定的正弦波,三角波,方波和锯齿波。4(2)信号发生器波形信号的选择由外部按键控制选择。(3)信号发生器输出信号的频率范围为100Hz-20KHz,要求通过按键控制输出信号的频率,频率步进为500Hz。(4)信号发生器显示部分设计:用LED数码管实时显示输出波形的频率值。(5)要求使用相应的按键控制实现信号发生器的幅度调节。幅度调节为2.5V和5V。本次设计共用九个模块,分别为:频率调节模块,分频数产生模块,分频模块组成频率控制单元,方波发生器,三角波发生器,锯齿波发生器,正弦波发生器组成波形生成单元,4选1数据选择器和调节幅度模块组成波形控制单元,调节幅度模块,下面对每个模块的功能及其仿真结果进行分析。2.2频率调节模块图2频率调节模块本模块有五个输入端,其中一个时钟输入端clk,两个频率调节输入端b_d和b_x,一个使输出波形的频率为最大的控制端z_d和一个使输出波形的频率为最小的控制端z_x。后四个连按键。一个输出端address,连接分频数产生模块的输入端。本课程设计要求输出波形的频率在每按一次b_d或b_x时,就增加或减500Hz。z_d或z_x为高电平时,输出波形频率分别为20KHz和100Hz,再按相应的使频率增减的按键则可实现频率从最大或最小开始增加或减少的功能。其VHDL代码:entitytiaopinis-------entity对各端口定义port(clk:instd_logic;b_d,b_x,z_d,z_x:instd_logic;addrss:outintegerrange0to40);endtiaopin;architecturebhvoftiaopinis-------实体部分,对器件功能进行叙述signaltemp0,temp1,temp2,temp3:std_logic;clkb_db_xz_dz_xaddrss[5..0]tiaopininst5beginprocess(z_d,z_x,clk)variablex:integerrange0to40;-------变量的定义beginifclk'eventandclk='1'then-------时钟条件信号temp0=b_d;temp1=temp0;temp2=b_x;temp3=temp2;ifz_d='1'thenx:=40;elsifz_x='1'thenx:=0;elsiftemp0='0'andtemp1='1'then-------标志循环ifx=40thenx:=0;elsex:=x+1;endif;elsiftemp0='1'andtemp1='0'thenifx=40thenx:=0;elsex:=x+1;endif;elsiftemp2='0'andtemp3='1'thenifx=0thenx:=40;elsex:=x-1;endif;6elsiftemp2='1'andtemp3='0'then-------标志循环ifx=0thenx:=40;elsex:=x-1;endif;endif;endif;endif;addrss=x;endprocess;endbhv;在QuartusII软件输入其代码,经过编译仿真后的仿真图形为:图3频率调节仿真图仿真图分析:刚开始令z_d为‘1’,则address为最大40,每按一次b_x按键,则address减1,之后令z_x为‘1’,则address变为最小0,每按一次b_d按键,address相应加1。其中address0到40分别对应100Hz到20KHz,步进为500Hz。具体原因会在分频数产生模块进一步说明。由此,实现了由按键控制输出的功能。2.3分频数产生模块address[5..0]data[9..0]wan[3..0]qian[3..0]bai[3..0]shi[3..0]ge[3..0]pinlvinst17图4分频数产生模块在分频数产生模块中有一个输入端,它接收从频率调节模块中输出的频率选择信号address,一个分频数输出端,五个相应的接数码管以显示系统输出信号频率的输出端。本模块相当于一个存储器,频率调节模块输出端相当于对其地址的控制输入端,当分频数产生模块的输入端address接收从频率调节模块中输出的对频率的控制信号后,便产生相应的分频数送到输出端,分频数data=12MHz/(2*64*f),其中f为输出波形的频率,同时将与分频数相应频率f送到与数码管相应的输出端。其VHDL代码entitypinlvis---------定义实体port(address:inintegerrange0to40;data:outintegerrange0to938;wan,qian,bai,shi,ge:outstd_logic_vector(3downto0));--------实体输出endpinlv;architecturebhvofpinlvisbeginprocess(address)begincaseaddressiswhen0=data=938;wan=ZZZZ;qian=ZZZZ;bai=0001;shi=0000;ge=0000;when1=data=188;wan=ZZZZ;qian=ZZZZ;bai=0101;shi=0000;ge=0000;when2=data=94;wan=ZZZZ;qian=0001;bai=0000;shi=0000;ge=0000;when3=data=63;wan=ZZZZ;qian=0001;bai=0101;shi=0000;ge=0000;when4=data=47;wan=ZZZZ;qian=0010;bai=0000;shi=0000;ge=0000;when5=data=38;wan=ZZZZ;qian=0010;bai=0101;shi=0000;ge=0000;when6=data=31;wan=ZZZZ;qian=0011;bai=0000;shi=0000;ge=0000;8when7=data=27;wan=ZZZZ;qian=0011;bai=0101;shi=0000;ge=0000;when8=data=23;wan=ZZZZ;qian=0100;bai=0000;shi=0000;ge=0000;when9=data=21;wan=ZZZZ;qian=0100;bai=0101;shi=0000;ge=0000;when10=data=19;wan=ZZZZ;qian=0101;bai=0000;shi=0000;ge=0000;when11=data=17;wan=ZZZZ;qian=0101;bai=0101;shi=0000;ge=0000;when12=data=16;wan=ZZZZ;qian=0110;bai=0000;shi=0000;ge=0000;when13=data=14;wan=ZZZZ;qian=0110;bai=0101;shi=0000;ge=0000;when14=data=13;wan=ZZZZ;qian=0111;bai=0000;shi=0000;ge=0000;when15=data=