课程设计报告设计名称EDA(VHDL)课程设计专业班级电子0942姓名姬鹏冲学号0904451213成绩评定电气与信息工程学院二0一二年一月课程设计要求和成绩考核办法(要求和成绩考核办法在封皮背面打印)1.不允许在教室或实验室内吸烟、吃零食,不准带无关人员到教室或实验室活动,否则扣平时表现分。
2.凡病事假超过3天(每天7小时),或迟到早退三次以上,或旷课两次(1天)以上,不得参加本次考核,按不及格处理,本次课程设计不能通过。
3.病事假必须有请假条,需经班主任或有关领导批准,否则按旷课处理。
4.课程设计的考核由指导教师根据设计表现(出勤、遵守纪律情况等)、设计报告、设计成果、答辩等几个方面,给出各项成绩或权重,综合后给出课程设计总成绩。
该设计考核须经教研室主任审核,主管院长审批备案。
5.成绩评定采用五级分制,即优、良、中、及格和不及格。
6.课程设计结束一周内,指导教师提交成绩和设计总结。
7.设计过程考核和成绩在教师手册中要有记载。
实习报告要求实习报告内容、格式各专业根据实习(设计)类别(技能实习、认识实习、生产实习、毕业实习等)统一规范,经教研室主任审核、主管院长审批备案。
注意:1.课程设计任务书和指导书在课程设计前发给学生,设计任务书放置在设计报告封面后和正文目录前。
2.为了节省纸张,保护环境,便于保管设计报告,统一采用A4纸,课程设计报告建议双面打印(正文采用宋体五号字)或手写,左侧装订,订两个钉。
基于FPGA的半整数分频器设计一、系统设计任务及功能概述本系统是利用VHDL硬件描述语言和原理图输入方式,通过MUX+PLUSⅡ开发软件和ALTER 公司的FLEX系列EPF10K10LC84-4型FPGA方便的完成了半整数分频器电路的设计。
本系统是通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。
二、系统设计方案和程序设计1.系统设计方案我们采用脉冲吞吐计数器和锁相环技术,先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的5.5分频值。
该分频器电路可由一个异或门、一个模6数器和二分频器组成。
这样可以实现分频系数为5.5分频器以及11分频。
设计框图如下所示2.VHDL程序设计(1)模6计数器VHDL描述设计该计数器可产生一个分频系数为5.5分频器,并产生一个默认的逻辑符号cont6。
其输入端口为rst、en和clk;输出端口为qa,qb,qc。
下面给出模6数器的VHDL描述代码:libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity cont6 isport(clk:instd_logic;rst:instd_logic;en:instd_logic;qa,qb,qc:outstd_logic);end entity cont6;architecturewode of cont6 issignalcount:std_logic_vector(2 downto 0);beginprocess(clk,rst,en)isbeginifrst='1'then count<="000";elsifclk'event and clk='1'thenif en='1'thenif count="101" then count<="000";else count<=count+1;end if;end if;end if;end process;qa<=count(0);qb<=count(1);qc<=count(2);end architecture wode;模六计数器原件生成图如下:图一模六计数器原件生成上面的程序经编译、时序模拟在MAX+PLUSⅡ中可得到如图所示的仿真波形:图2模6计数器仿真波形(2)半整数分频器设计现在通过设计一个分频系数为5.5的分频器给出用FPGA设计半整数分频器的一般方法。
该5.5分频器由前面设计的模6计数器、异或门和D触发器组成,利用图形设计方法构造如图所示的5.5分频器电路原理图。
图3 5.5分频器电路原理图3.将cont6、异或门和D触发器通过图3所示的电路建立逻辑连接关系,并用原理图输入方式调入图形编辑器,然后经过逻辑综合即可得到如图4所示的仿真波形。
图4 5.5分频器仿真波形图三.通过用VHDL语言描述模N计数器,然后进行波形仿真,原理图仿真等,了解了半整数分频器的工作原理。
试验中遇到了好多不会的通过查书,请教老师,请教同学一一解决了。
通过这次的实验认识了把课本的知识用到生活实践中,来解决问题很好的培养了自己的动手能力和学习能力。
四.参考文献[1] 谭会生,张昌凡.EDA技术及应用. 西安:西安电子科技大学出版社,2006,12.[2] 郭振武,从红霞。
EDA实验教程. 天津:南开大学出版社,2011,8[3] 杨晓慧,杨永健.基于FPGA的EDA/SOPC技术与VHDL.北京:国防工业出版社,2007,7.[4] 皱其宏 EDA实验技术教程。
北京:中国电力出版社。
2009.5.[5] 陈雪松,滕立中编著.VHDL入门与应用.北京:人民邮电出版社. 2000.99分钟定时器的VHDL设计一.系统设计任务及功能概述1.系统设计任务任务要求:通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以秒速度递减至零。
2.系统功能概述本系统是一个99分钟的定时器,具有以下功能:具有整体清零(reset)功能,定时99分钟。
以秒速度递增至99分钟停止,启动报警(cout)5秒钟。
具有置位(cn)控制,即cn高电平时,clk脉冲上升沿到来,计数加一;cn 低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束,并同时报警(cout)5秒钟。
时钟信号提供秒信号(1HZ);四位数码管静态显示,高位high(3 downto 0)显示分,低位low(3 downto 0)显示秒。
二.系统设计方案和程序设计1.系统设计方案通过记数器控制中心输入秒信号,并输出两个四位的BCD码,可分别来表示各位与十位,也可整体复位清零。
通过该记数器实现以秒速度递增至清零,该记数器以秒的速度递增至99来实现置位,而以秒的速度递减至零以实现定时功能。
当以秒速度递增至99分钟停止,启动报警(cout)5秒钟。
cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束时也同时报警(cout)5秒钟。
通过二选一选择器对个位和十位进行扫描输出,并将输出送到译码器,通过译码器对输入的四位BCD码进行七段码编译,然后输出到数码管。
2.VHDL程序设计Aaa控制计数模块,是该定时器的核心部分.res为复位端,用来清零,采用异步复位方式;cn用于置位,高电平有效。
cout端将在定时结束时产生高电平。
Low和high为四位BCD 码输出端口,可用于显示。
当cn有效时,clk脉冲上升沿到来,计数加1;当cn为低电平时,置位结束,进入计时阶段,每1个时钟周期发出一个脉冲,使输出记数减1,直到记时结束,令cout位为高电平为止。
该模块的源程序如下:libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjsq isport (cn,res,clk:instd_logic;cout :out std_logic;flow,fhigh,mlow,mhigh:outstd_logic_vector(3 downto 0));endjsq;architecture art of jsq issignalfdisplow,fdisphigh,mdisplow,mdisphigh:std_logic_vector(3 downto 0); --定义信号分别表示分钟和秒钟的十位和个位beginprocess(clk,cn,res)beginif(res='1')thenmdisplow<="0000";mdisphigh<="0000";fdisplow<="0000";fdisphigh<="0000";cout<='0'; --res高电平执行复位elsif (clk'event and clk='1')thenifcn='1'thenifmdisplow<9 thenmdisplow<=mdisplow+1;--秒钟个位数小于9时执行计数加1cout<='0';elsifmdisplow="1001" and mdisphigh<5 thenmdisplow<="0000";mdisphigh<=mdisphigh+1;--秒钟十位进位加1elsifmdisphigh="0101" and fdisplow<9 thenmdisplow<="0000";mdisphigh<="0000";fdisplow<=fdisplow+1;--满59秒后分钟个位加1elsiffdisplow="1001" and fdisphigh<9 thenmdisplow<="0000";mdisphigh<="0000";fdisplow<="0000";fdisphigh<=fdisphigh+1;--满9分59秒后分钟十位加1elsiffdisplow="1000" and fdisphigh="1001" thenmdisplow<="0000";mdisphigh<="0000";fdisplow<="1001";--计时至99分停止elsiffdisplow="1001" and fdisphigh="1001" thencout<='1';--计时停止cout变为高电平end if;elsifcn='0' then --cn为0进入倒计时ifmdisplow>0 thenmdisplow<=mdisplow-1;--秒钟减1cout<='0';elsifmdisplow="0000" and mdisphigh>0 thenmdisplow<="1001";mdisphigh<=mdisphigh-1;--个位0时十位减1elsifmdisphigh="0000" and fdisplow>0 thenmdisplow<="1001";mdisphigh<="0101";fdisplow<=fdisplow-1;--分减1elsiffdisplow="0000" and fdisphigh>0 thenmdisplow<="1001";mdisphigh<="0101";fdisplow<="1001";fdisphigh<=fdisphigh-1;--分减10elsiffdisphigh="0000"and fdisplow="0000"and mdisphigh="0000"and mdisplow="0000"thencout<='1';--倒计时结束cout变为高电平end if;end if;end if;end process;mhigh<=mdisphigh;mlow<=mdisplow;fhigh<=fdisphigh;flow<=fdisplow;end art;该计数器生成的原件如下图所示:图一计数器原件生成图计数器波形仿真图如下图所示:图二计数器波形仿真报警器模块:主要功能是计数器以秒速度递增至99分钟停止时启动报警(cout)5秒钟。