能智函数发生器eda设计-大学毕设论文_第1页
能智函数发生器eda设计-大学毕设论文_第2页
能智函数发生器eda设计-大学毕设论文_第3页
能智函数发生器eda设计-大学毕设论文_第4页
能智函数发生器eda设计-大学毕设论文_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE12湖南商学院《EDA技术及应用》课程设计(实习)报告题目智能函数发生器姓名:黄亚珍学号:070910051专业:电子信息工程班级:电信0702指导教师:陈勇职称:副教授计算机与电子工程学院2010年1月课程设计(实习)评审表姓名黄亚珍学院电子信息工程学号070910051专业班级电信0702题目智能函数发生器评审意见评审成绩指导教师签名职称评审时间年月日课程设计(实习)作品验收表题目智能函数发生器参与人员姓名黄亚珍班级电信0702学号070910051设计任务与要求:作品完成情况:验收情况:验收教师签名:___________年月日目录1设计任务及要求 11.1设计任务 11.2设计要求 12总体设计方案 13各模块详细设计及实现 23.1下降斜坡信号产生 23.1.1详细设计 23.1.2设计实现 23.2上升斜坡信号产生 33.2.1详细设计 33.2.1设计实现 43.3正弦信号产生 43.3.1详细设计 43.3.2设计实现 53.4阶梯信号产生 63.4.1详细设计 63.4.2设计实现 73.5方波信号产生 83.5.1详细设计 83.5.2设计实现 83.6三角波信号产生 93.6.1详细设计 93.6.2设计实现 93.7信号选择 103.7.1详细设计 103.7.2设计实现 113.8顶层原理图 113.8.1详细设计 113.8.2设计实现 124软件仿真 125硬件实现 135.1引脚锁定 135.2硬件测试 146心得体会 156.1遇到的问题及解决方法 156.2感想 15参考文献 15附件 16智能函数发生器摘要自己写关键字自己写1设计任务及要求1.1设计任务1.2设计要求2总体设计方案(自己看书上面有)该设计主要分为8个模块,前6个模块是波形的VHDL描述模块;第七个模块的波形选择模块,也是用VHDL语言进行描述,用于选择何种波形进行最后的输出;最后一个模块是顶层原理图模块,是将前7个模块连接在一起构成完整的只能函数发生器。具体的总体设计方框图如下:顶层原理图波形选择下降斜坡信号方波信号顶层原理图波形选择下降斜坡信号方波信号阶梯波信号上升斜坡信号正弦波信号三角波信号3各模块详细设计及实现3.1下降斜坡信号产生3.1.1详细设计见书3.1.2设计实现具体VHDL语言描述如下:entitydeslopeis--实体port(clk,reset:instd_logic;--输入端口定义,为标准逻辑位q:outstd_logic_vector(7downto0)--输出端口定义,为8位标准逻辑矢量);enddeslope;architecturebehaveofdeslopeis--结构体beginprocess(reset,clk)--进程variablecnt:std_logic_vector(7downto0):="11111111";--定义变量CNTbeginifreset='0'thencnt:=(others=>'1');--当RESET为0时,输出Q为1elsifclk'eventandclk='1'then--当时钟上升沿到来时,判断变量CNTifcnt="00000000"then是否为0,即降到最地点cnt:=(others=>'1');--若CNT为0,则置为全1elsecnt:=cnt-1;--否则,CNT减1endif;endif;q<=cnt;--将CNT赋值给输出信号Qendprocess;--结束进程endbehave;--结构体结束3.2上升斜坡信号产生3.2.1详细设计见书3.2.1设计实现具体VHDL语言描述如下:entityinslopeis--实体port(clk,reset:instd_logic;--端口定义q:outstd_logic_vector(7downto0));endinslope;--实体结束architecturebehaveofinslopeis--结构体beginprocess(clk,reset)--进程,CLK及RESET为敏感信号variablecnt:std_logic_vector(7downto0);--定义变量CNTbeginifreset='0'thencnt:=(others=>'0');--当RESET为0时,重置为,输出置为0elsifclk'eventandclk='1'then--当时钟上升沿到来时,判断CNT是否为ifcnt="11111111"then最大值cnt:=(others=>'0');--若CNT为最大值,置为全0elsecnt:=cnt+1;--否则,CNT加1endif;endif;q<=cnt;--将变量CNT赋值给输出Qendprocess;--进程结束endbehave;--结构体结束3.3正弦信号产生3.3.1详细设计见书3.3.2设计实现具体VHDL语言描述如下:entitysinwaveis--实体port(clk,reset:instd_logic;--端口定义q:outintegerrange0to255);--输出为正整数endsinwave;--实体结束architecturebehaveofsinwaveis--结构体beginprocess(clk,reset)--进程variablecnt:integerrange0to63;--定义变量CNT为常数beginifreset='0'thenq<=0;--若复位信号为0,则输出置为0elsifclk'eventandclk='1'then--当时钟信号上升沿到来时ifcnt=63then--若CNT为63时则置为0cnt:=0;else--否则,CNT加1,相当于CNT为cnt:=cnt+1;一个64进制的计数器endif;casecntis--查表输出,根据不同CNT值确定输出Q的值when00=>q<=255;when01=>q<=254;when02=>q<=252;when03=>q<=249;when04=>q<=245;when05=>q<=239;when06=>q<=233;when07=>q<=225;when08=>q<=217;when09=>q<=207;when10=>q<=197;when11=>q<=186;when12=>q<=174;when13=>q<=162;when14=>q<=150;when15=>q<=137;when16=>q<=124;when17=>q<=112;when18=>q<=99;when19=>q<=87;when20=>q<=75;when21=>q<=64;when22=>q<=53;when23=>q<=43;when24=>q<=34;when25=>q<=26;when26=>q<=19;when27=>q<=13;when28=>q<=8;when29=>q<=4;when30=>q<=1;when31=>q<=0;when32=>q<=0;when33=>q<=1;when34=>q<=4;when35=>q<=8;when36=>q<=13;when37=>q<=19;when38=>q<=26;when39=>q<=34;when40=>q<=43;when41=>q<=53;when42=>q<=64;when43=>q<=75;when44=>q<=87;when45=>q<=99;when46=>q<=112;when47=>q<=124;when48=>q<=137;when49=>q<=150;when50=>q<=162;when51=>q<=174;when52=>q<=186;when53=>q<=197;when54=>q<=207;when55=>q<=217;when56=>q<=225;when57=>q<=233;when58=>q<=239;when59=>q<=245;when60=>q<=249;when61=>q<=252;when62=>q<=254;when63=>q<=255;endcase;endif;endprocess;--进程结束endbehave;--结构体结束3.4阶梯信号产生3.4.1详细设计见书3.4.2设计实现具体的VHDL描述语言如下:entitystairis--实体port(clk,reset:instd_logic;--端口定义q:outstd_logic_vector(7downto0));endstair;architecturebehaveofstairis--结构体beginprocess(clk,reset)--进程variablecnt:std_logic_vector(7downto0);--变量定义,计数CNTvariabletemp:std_logic;--变量定义,标志TEMPbeginifreset='0'thencnt:=(others=>'0');--当RESET为0时,CNT置0elsifclk'eventandclk='1'then--当时钟上升沿来到时iftemp='0'then--标志TEMP为0时,进行CNT赋值ifcnt="11111111"then--CNT到最大值时,置0cnt:=(others=>'0');temp:='1';elsecnt:=cnt+16;temp:='1';--否则,CNT加16(阶梯常数)endif;--CNT值改变后,标志TEMP置1elsetemp:='0';--标志TEMP为其他值时,进行TEMP置0endif;endif;q<=cnt;--将CNT赋值给输出信号Qendprocess;--进程结束endbehave;--结束结构体3.5方波信号产生3.5.1详细设计见书。3.5.2设计实现具体VHDL语言描述如下:entitysquareis--实体port(clk,reset:instd_logic;--端口定义q:outstd_logic_vector(7downto0));endsquare;architecturebehaveofsquareis--结构体signaltemp:std_logic;--定义标志变量TEMPbeginprocess(clk,reset)--进程,敏感信号为CLK,RESETvariablecnt:integer;--定义变量CNT,用于计数beginifreset='0'thentemp<='0';--RESET有效时,标志TEMP置为0elsifclk'eventandclk='1'then--当时钟信号上升沿到来时ifcnt<63then--CNT为64进制计数量,到63时置0cnt:=cnt+1;--否则CNT加1elsecnt:=0;temp<=nottemp;--64个时钟周期后,TEMP取反endif;endif;endprocess;--进程结束q<="11111111"whentemp='1'else--根据TEMP的值来确定输出"00000000";endbehave;--结构体结束3.6三角波信号产生3.6.1详细设计见书3.6.2设计实现entitytriangleis--实体port(clk,reset:instd_logic;--端口定义q:outstd_logic_vector(7downto0));endtriangle;architecturebehaveoftriangleis--结构体beginprocess(clk,reset)--进程variablecnt:std_logic_vector(7downto0);--定义计数变量CNTvariabletemp:std_logic;--定义标志变量TEMPbeginifreset='0'thencnt:="00000000";--RESET为0时,CNT为0elsifclk'eventandclk='1'then--当时钟上升沿到来时iftemp='0'then--TEMP为0时,CNT递减ifcnt="00000001"thencnt:="00000000";temp:='1';--CNT为最小值时,TEMP值1elsecnt:=cnt-1;endif;elsiftemp='1'then--TEMP为1时,CNT递增ifcnt="11111110"thencnt:="11111111";temp:='0';--CNT为最大值时,TEMP置0elsecnt:=cnt+1;endif;endif;endif;q<=cnt;--将CNT赋值给输出信号Qendprocess;--进程结束endbehave;--结构体结束3.7信号选择3.7.1详细设计实体部分主要是端口定义。7个输入信号,一个选择信号CHIOCE,D0至D5为输入端口,是8位的标准逻辑矢量。1个输出信号Q。结构体部分描述实体的功能,根据不同的选择信号CHOICE值的不同将端口D0到D5的值从Q进行输出。这部分用的并行条件赋值语句。3.7.2设计实现具体VHDL语言描述如下:entityselect6is--实体port(choice:instd_logic_vector(2downto0);--端口定义d0,d1,d2,d3,d4,d5:instd_logic_vector(7downto0);q:outstd_logic_vector(7downto0));endselect6;architecturebehaveofselect6isbegin--根据不同CHOICE的值进行选择输出q<=d0whenchoice="000"elsed1whenchoice="001"elsed2whenchoice="010"elsed3whenchoice="011"elsed4whenchoice="100"elsed5;endbehave;3.8顶层原理图3.8.1详细设计3个输入信号,选择信号CHICE,时钟信号CLK,复位信号RESET。没个波形的输出端口接选择模块的输入端口D0到D5。当选择信号为0时,输出下降的斜坡信号;当选择信号为1时,输出上升的斜坡信号;当选择信号为2时,输出为正弦波;当选择信号为3时,输出为方波信号。当选择信号为4时,输出为阶梯信号;当选择信号为5时,输出为三角波信号。3.8.2设计实现具体设计图形如下:图2顶层原理图4软件仿真当选择信号取不同值时输出不同的波形。选择信号为0时,输出为下降斜坡:图3下降斜坡信号输出选择信号为1时,输出为上升斜坡:图4上升斜坡信号输出选择信号为2时,输出为正弦波:图5正弦波信号输出选择信号为3时,输出为方波:图6方波信号输出选择信号为4,输出为阶梯波:图7阶梯波信号输出选择信号为5时,输出为三角波:图8三角波信号输出5硬件实现5.1引脚锁定首先在MAX+PLUSSII上进行引脚锁定,引脚锁定的具体模式选择1,芯片选择的是EPF10K10LC84-4。其端口的具体对应如下表格:表1引脚对应表格对应实验箱上的位置端口名称引脚名称对应引脚号键7CLKPIO4881键8RESETPIO4980键1CHOICE[0]PIO010CHOICE[1]PIO111CHOICE[2]PIO212数码管7Q0PIO2439Q1PIO2547Q2PIO2648Q3PIO2749数码管8Q4PIO2850Q5PIO2951Q6PIO3052Q7PIO31535.2硬件测试你就描述下功能6心得体会6.1遇到的问题及解决方法自己写。6.2感想自己参考文献[1]朱正伟.EDA技术及应用[M].北京:清华大学出版社,2005[2]沈明山.EDA技术及可编程器件应用实例[M].北京:科学出版社,2004[3]杨恒.FPGA/VHDL快速工程实践入门与提高[M].北京:北京航空航天大学出版社,2003附件各模块VHDL语言描述及原理图设计。上升斜坡波形设计:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityinslopeisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endinslope;architecturebehaveofinslopeisbeginprocess(clk,reset)variablecnt:std_logic_vector(7downto0);beginifreset='0'thencnt:=(others=>'0');elsifclk'eventandclk='1'thenifcnt="11111111"thencnt:=(others=>'0');elsecnt:=cnt+1;endif;endif;q<=cnt;endprocess;endbehave;下降斜坡波形设计:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydeslopeisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));enddeslope;architecturebehaveofdeslopeisbeginprocess(reset,clk)variablecnt:std_logic_vector(7downto0):="11111111";beginifreset='0'thencnt:=(others=>'1');elsifclk'eventandclk='1'thenifcnt="00000000"thencnt:=(others=>'1');elsecnt:=cnt-1;endif;endif;q<=cnt;endprocess;endbehave;正弦波设计:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysinwaveisport(clk,reset:instd_logic;q:outintegerrange0to255);endsinwave;architecturebehaveofsinwaveisbeginprocess(clk,reset)variablecnt:integerrange0to63;beginifreset='0'thenq<=0;elsifclk'eventandclk='1'thenifcnt=63thencnt:=0;elsecnt:=cnt+1;endif;casecntiswhen00=>q<=255;when01=>q<=254;when02=>q<=252;when03=>q<=249;when04=>q<=245;when05=>q<=239;when06=>q<=233;when07=>q<=225;when08=>q<=217;when09=>q<=207;when10=>q<=197;when11=>q<=186;when12=>q<=174;when13=>q<=162;when14=>q<=150;when15=>q<=137;when16=>q<=124;when17=>q<=112;when18=>q<=99;when19=>q<=87;when20=>q<=75;when21=>q<=64;when22=>q<=53;when23=>q<=43;when24=>q<=34;when25=>q<=26;when26=>q<=19;when27=>q<=13;when28=>q<=8;when29=>q<=4;when30=>q<=1;when31=>q<=0;when32=>q<=0;when33=>q<=1;when34=>q<=4;when35=>q<=8;when36=>q<=13;when37=>q<=19;when38=>q<=26;when39=>q<=34;when40=>q<=43;when41=>q<=53;when42=>q<=64;when43=>q<=75;when44=>q<=87;when45=>q<=99;when46=>q<=112;when47=>q<=124;when48=>q<=137;when49=>q<=150;when50=>q<=162;when51=>q<=174;when52=>q<=186;when53=>q<=197;when54=>q<=207;when55=>q<=217;when56=>q<=225;when57=>q<=233;when58=>q<=239;when59=>q<=245;when60=>q<=249;when61=>q<=252;when62=>q<=254;when63=>q<=255;endcase;endif;endprocess;endbehave;阶梯波设计:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitystairisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endstair;architecturebehaveofstairisbeginprocess(clk,reset)variablecnt:std_logic_vector(7downto0);variabletemp:std_logic;beginifreset='0'thencnt:=(others=>'0');elsifclk'eventandclk='1'theniftemp='0'thenifcnt="11111111"thencnt:=(others=>'0');temp:='1';elsecnt:=cnt+16;temp:='1';endif;elsetemp:='0';endif;endif;q<=cnt;endprocess;endbehave;方波设计:libraryieee;useieee.std_logic_1164.all;entitysquareisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endsquare;architecturebehaveofsquareissignalt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论