您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > EDA 智能函数发生器k
EDA课程设计报告智能函数发生器内容摘要应用EDA技术完成一个电子产品的设计,以FPGA芯片中集成一个在电子生产或检测中通常用到波形发生器。在Max+plusⅡ软件开发平台,输入原理图或硬件描述语言VHDL完成的设计文件,系统将自动地完成逻辑编译、综合、仿真、目标芯片的适配编译、下载等的工作。设计的工作是利用编程的方式来进行对系统的功能的描述,在EDA工具的帮助下,应用相应的可编程器件,实现设计的最终结果。使常用到的波形发生器微型化,设计简单化,使用简单化。2关键词:FPGAEDA六种波形1.设计功能要求设计一个函数发生器,该函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波、及阶梯波,并且可以通过选择开关选择输出相应波形。具有复位的功能;通过按键确定输出的波形及确定是否输出波形。FPGA是整个系统的核心,构成系统控制器,波形数据生成器,加法器,运算/译码等功能。通过以上分析设计要求完成的功能,确定函数发生器可由递增斜波产生模块、递减斜波产生模块、三角波产生模块、阶梯波产生模块、正弦波产生模块、方波产生模块和输出波形选择模块组成,以及按键复位控制和时钟输入。由此可确定系统的总体原理框图为32、模块分析从设计要求可以得知,智能函数发生器主要由两大类电路模块组成,即函数发生电路和函数选择电路,其中函数发生电路包括了产生递增斜波、递减斜波、方波、三角波、正弦波、梯行波六种不同函数波形的模块。智能函数发生器的系统框图如图(1)。其中CLK位输入时钟脉冲,时钟上升沿有效;CLR为复位清零信号,当高电平有效时,系统恢复初始状态;SEL【2..0】为输出选择信号,该信号的不同取值对应递增斜波、递减斜波、方波、三角波、正弦波、梯行波六种不同的输出;Q【7..0】为输出信号,根据输出函数选择信号SEL【2..0】的取值输出相应的波形。一、路要产生六种不同的波形,因此要对每种波形函数设计对应的电路模块,每个模块的输入输出设置相同,但不同函数发生模块对输入信号的处理方式是不同的,仅以递增斜波函数为例,模块框图如图波形发生模块时钟clk复位reset波形输出选择模块4(2)。其中CLK为时钟输入信号,CLR为复位清零信号,Q【7..0】为输出波形函数。二、选择电路本质是一个简单的译码器模块。其框图如图2所示。其中SEL【2..0】为输出选择信号,根据该信号的取值,电路将选择输入信号D0【7..0】~D5【7..0】中的某一组数据,作为输出信号在输出端Q【7..0】输出。完整电路原理图:5(1)、Increase斜波函数发生模块框图6Increase斜波函数发生模块VHDL语言描述:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYincreaseISPORT(CLK,CLR:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDincrease;ARCHITECTURErtlOFincreaseISBEGINPROCESS(CLK,CLR)VARIABLETMP:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLR='1'THENTMP:=00000000;ELSIFCLK'EVENTANDCLK='1'THENIFTMP=11111111THENTMP:=00000000;ELSETMP:=TMP+1;ENDIF;ENDIF;Q=TMP;ENDPROCESS;ENDrtl;7Increase斜波函数发生模块仿真图(2)、decrease斜波函数发生模块框图:8decrease斜波函数发生模块VHDL语言描述:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecreaseISPORT(CLK,CLR:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdecrease;ARCHITECTURErtlOFdecreaseISBEGINPROCESS(CLK,CLR)VARIABLETMP:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLR='1'THENTMP:=11111111;ELSIFCLK'EVENTANDCLK='1'THENIFTMP=00000000THENTMP:=11111111;ELSETMP:=TMP-1;ENDIF;ENDIF;Q=TMP;ENDPROCESS;ENDrtl;decrease斜波函数发生模块仿真图9(3)Delta三角波函数发生模块框图:10Delta三角波函数发生模块仿VHDL语言描述:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdeltaISPORT(CLK,CLR:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdelta;ARCHITECTURErtlOFdeltaISBEGINPROCESS(CLK,CLR)VARIABLETMP:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLETAG:STD_LOGIC;BEGINIFCLR='1'THENTMP:=00000000;ELSIFCLK'EVENTANDCLK='1'THENIFTAG='0'THENIFTMP=11111110THENTMP:=11111111;TAG:='1';ELSETMP:=TMP+1;ENDIF;ELSEIFTMP=00000001THENTMP:=00000000;TAG:='0';ELSE11TMP:=TMP-1;ENDIF;ENDIF;ENDIF;Q=TMP;ENDPROCESS;ENDrtl;Delta三角波函数发生模块仿真图12(4)、ladder梯形波函数发生模块框图:ladder梯形波函数发生模块VHDL语言描述:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYladderISPORT(CLK,CLR:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDladder;ARCHITECTURErtlOFladderISBEGINPROCESS(CLK,CLR)VARIABLETMP:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLETAG:STD_LOGIC;BEGINIFCLR='1'THENTMP:=00000000;ELSIFCLK'EVENTANDCLK='1'THENIFTAG='0'THENIFTMP=11111111THENTMP:=00000000;TAG:='1';ELSETMP:=TMP+16;TAG:='1';ENDIF;ELSETAG:='0';ENDIF;13ladder梯形波函数发生模块仿真图(5)、sin正弦波函数发生模块框图:14sin正弦波函数发生模块VHDL语言描述:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYsinISPORT(CLK,CLR:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDsin;ARCHITECTURErtlOFsinISBEGINPROCESS(CLK,CLR)VARIABLETMP:INTEGERRANGE0TO63;BEGINIFCLR='1'THENQ=00000000;ELSIFCLK'EVENTANDCLK='1'THENIFTMP=63THENTMP:=0;ELSETMP:=TMP+1;ENDIF;CASETMPISWHEN0=Q=conv_std_logic_vector(255,8);WHEN1=Q=conv_std_logic_vector(254,8);WHEN2=Q=conv_std_logic_vector(252,8);15WHEN3=Q=conv_std_logic_vector(249,8);WHEN4=Q=conv_std_logic_vector(245,8);WHEN5=Q=conv_std_logic_vector(239,8);WHEN6=Q=conv_std_logic_vector(233,8);WHEN7=Q=conv_std_logic_vector(225,8);WHEN8=Q=conv_std_logic_vector(217,8);WHEN9=Q=conv_std_logic_vector(207,8);WHEN10=Q=conv_std_logic_vector(197,8);WHEN11=Q=conv_std_logic_vector(186,8);WHEN12=Q=conv_std_logic_vector(174,8);WHEN13=Q=conv_std_logic_vector(162,8);WHEN14=Q=conv_std_logic_vector(150,8);WHEN15=Q=conv_std_logic_vector(137,8);WHEN16=Q=conv_std_logic_vector(124,8);WHEN17=Q=conv_std_logic_vector(112,8);WHEN18=Q=conv_std_logic_vector(99,8);WHEN19=Q=conv_std_logic_vector(87,8);WHEN20=Q=conv_std_logic_vector(75,8);WHEN21=Q=conv_std_logic_vector(64,8);WHEN22=Q=conv_std_logic_vector(53,8);WHEN23=Q=conv_std_logic_vector(43,8);WHEN24=Q=conv_std_logic_vector(34,8);WHEN25=Q=conv_std_logic_vector(26,8);WHEN26=Q=conv_std_logic_vector(19,8);WHEN27=Q=conv_std_logic_vector(13,8);WHEN28=Q=conv_std_logic_vector(8,8);WHEN29=Q=conv_std_logic_vector(4,8);WHEN30=Q=conv_std_logic_vector(1,8);WHEN31=Q=conv_std_logic_vector(0,8);WHEN32=Q=conv_std_logic_vector(0,8);WHEN33=Q=conv_std_logic_vector(1,8);WHEN34=Q=conv_std_logic_vector(4,8);WHEN35=Q=conv_std_logic_vector(8,8);WHEN36=Q=conv_std_logic_vector(13,8);WHEN37=Q=conv_std_logic_vector(19,8);WHEN38=Q=conv_std_logic_vector(26,8);WHEN39=Q=conv_std_logic_vector(34,8);WHEN40=Q=conv_std_logic_v
本文标题:EDA 智能函数发生器k
链接地址:https://www.777doc.com/doc-4465004 .html