EDA技术及应用课程设计报告.docx

上传人:b****2 文档编号:2828783 上传时间:2023-05-04 格式:DOCX 页数:17 大小:275.95KB
下载 相关 举报
EDA技术及应用课程设计报告.docx_第1页
第1页 / 共17页
EDA技术及应用课程设计报告.docx_第2页
第2页 / 共17页
EDA技术及应用课程设计报告.docx_第3页
第3页 / 共17页
EDA技术及应用课程设计报告.docx_第4页
第4页 / 共17页
EDA技术及应用课程设计报告.docx_第5页
第5页 / 共17页
EDA技术及应用课程设计报告.docx_第6页
第6页 / 共17页
EDA技术及应用课程设计报告.docx_第7页
第7页 / 共17页
EDA技术及应用课程设计报告.docx_第8页
第8页 / 共17页
EDA技术及应用课程设计报告.docx_第9页
第9页 / 共17页
EDA技术及应用课程设计报告.docx_第10页
第10页 / 共17页
EDA技术及应用课程设计报告.docx_第11页
第11页 / 共17页
EDA技术及应用课程设计报告.docx_第12页
第12页 / 共17页
EDA技术及应用课程设计报告.docx_第13页
第13页 / 共17页
EDA技术及应用课程设计报告.docx_第14页
第14页 / 共17页
EDA技术及应用课程设计报告.docx_第15页
第15页 / 共17页
EDA技术及应用课程设计报告.docx_第16页
第16页 / 共17页
EDA技术及应用课程设计报告.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EDA技术及应用课程设计报告.docx

《EDA技术及应用课程设计报告.docx》由会员分享,可在线阅读,更多相关《EDA技术及应用课程设计报告.docx(17页珍藏版)》请在冰点文库上搜索。

EDA技术及应用课程设计报告.docx

EDA技术及应用课程设计报告

 

《EDA技术及应用》

课程设计报告

 

系别:

机电与自动化学院

专业班级:

电气自动化技术0902

学生姓名:

指导教师:

李静

 

(课程设计时间:

2011年6月27日——2011年7月8日)

华中科技大学武昌分校

目录

1.课程设计目的…………………………………………………………………3

2.课程设计题目描述和要求………………………………………………………3

3.课程设计报告内容………………………………………………………………3

4.各模块VHDL源程序………………………………………………………………5

4.1.3MHz→100Hz分频器的源程序…………………………………………………5

4.2.十进制计数器源程序……………………………………………………………6

4.3.六进制计数器源程序……………………………………………………………9

4.4.顶层综合文件TIMES的源程序………………………………………………11

5.总结………………………………………………………………………………14

参考文献……………………………………………………………………………15

 

秒表是人们日常生活中常用的测时仪器,它能够简单的完成计时、清零等功能,从一年一度的校际运动会到NBA、世界杯、奥运会,都能看到秒表的身影。

1.课程设计目的

学习使用EDA集成设计软件MaxplusⅡ设计一个计时范围为0.01秒~1小时的数字秒表,能够精确反映计时时间,并完成复位、计时功能。

秒表计时的最大范围为1小时,精度为0.01秒。

秒表可得到计时时间的分、秒、0.1秒等度量,且各度量单位间可正确进位。

当复位清零有效时,秒表清零并做好计时准备。

任何情况下,只要按下复位开关,秒表都要无条件的进行复位操作,即使在计时过程中也要无条件的清零。

了解全过程中VHDL程序的基本结构,掌握使用EDA工具设计数字系统的设计思路和设计方法。

学习VHDL基本逻辑电路的综合设计应用,以及程序中数据对象、数据类型、顺序语句、并行语句的综合使用。

根据电路持点,用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念;考虑软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合等问题。

2.课程设计题目描述和要求

(1)根据设计题目要求完成设计输入、综合、模拟仿真验证。

(2)具有复位、暂停、秒表计时及结果直接送LED显示的功能。

(3)三个输入端,分别为:

时钟输入(CLK)、复位(CLR)和启动/暂停(ENA)。

(4)输出端有:

百分秒、秒和分钟信号,皆采用BCD码计数方式,并直接送到6个LED显示。

(5)提供设计报告,报告要求包括以下内容:

设计思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论。

3.课程设计报告内容

系统由一个分频器CLKGEN,四个十进制计数器CNT10,两个六进制计数器CNT6组成。

其中1/100和1/10秒都是十进制计数器,秒和分的个位是十进制计数器,十位是六进制计数器。

分频器以3MHz的脉冲波做输入信号,为系统提供精确的100Hz时钟信号。

作为百分秒的CLK输入端。

1/100秒的进位信号作为1/10秒的CLK信号,而1/10秒的进位信号作为秒的CLK信号。

秒的进位信号作为秒10的CLK,秒10的进位接分的CLK,分的进位接分10的CLK。

ENA为异步开始信号,为‘1’时开始计时,为‘0’时暂停计时。

CLR为异步清零信号,为‘1’清零,所有计数器重新从‘0000’开始。

输出:

DOUT[0…23]是BCD码输出:

DOUT[0…3]为1/100秒的BCD码输出;

DOUT[4…7]为1/10秒的BCD码输出;

DOUT[8…11]为秒的BCD码输出;

DOUT[12…15]为10秒的BCD码输出;

DOUT[16…19]为分的BCD码输出;

DOUT[20…23]为10分的BCD码输出。

输出的BCD码送LED显示解码器。

系统的结构原理图1所示:

图1系统的结构原理图

4.各模块VHDL源程序

4.1.3MHz→100Hz分频器的源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCLKGENIS

PORT(CLK:

INSTD_LOGIC;

NEWCLK:

OUTSTD_LOGIC);

ENDENTITYCLKGEN;

ARCHITECTUREARTOFCLKGENIS

SIGNALCNTER:

INTEGERRANGE0TO10#29999#;

BEGIN

PROCESS(CLK)IS

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFCNTER=10#29999#

THENCNTER<=0;

ELSECNTER<=CNTER+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CNTER)IS

BEGIN

IFCNTER=10#29999#

THENNEWCLK<='1';

ELSENEWCLK<='0';

ENDIF;

ENDPROCESS;

ENDARCHITECTUREART;

此处用到了一个分频比为30000的分频器,用来将3MHz的脉冲分成100Hz,也就是当CLK经过三万个脉冲的时候,才会看到一个100Hz的计数脉冲NEWCLK。

由于使用的器件EPF10K10LC84-3反应时间最短为3ns,因此GridSize不能设置太小,否则会出错。

在这里设置为10.0ns。

这样,一个CLK的周期为20ns,总时间为

29999X2X10.0ns=0.59998ms

所以EndTime要设置为1ms才能使CNTER计数到29999并归0。

其仿真波形如图2所示:

 

图2CLKGEN的仿真波形

当变量CNTER计数到29999时清零,同时NEWCLK产生一个脉冲波。

其原理图如图3。

 

图3CLKGEN的原理图

4.2.十进制计数器源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt10IS

PORT(CLK:

INSTD_LOGIC;

CLR:

INSTD_LOGIC;

ENA:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CARRY_OUT:

OUTSTD_LOGIC);

ENDENTITYcnt10;

ARCHITECTUREART10OFcnt10IS

SIGNALCQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK,CLR,ENA)IS

BEGIN

IFCLR='1'

THENCQI<="0000";

ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THEN

IFCQI="1001"

THENCQI<="0000";

ELSECQI<=CQI+'1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)IS

BEGIN

IFCQI="0000"

THENCARRY_OUT<='1';

ELSECARRY_OUT<='0';

ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDARCHITECTUREART10;

以上为十进制计数器源程序,基本原理是在使能信号ENA为高电平﹑清零信号CLR为低电平且CLK为时钟上升沿(CLK'EVENTANDCLK='1')时,CQI开始进行累加计数(CQI<=CQI+1),当CQI="0101",即为BCD数0101时,计数器向CARRY_OUT进位且CQI<="0000"进行清零。

如此0000→0001→0010→0011→0100→0101→0110→0111→1000→1001循环,进行十进制计数。

上述源程序的波形仿真波形如下图4所示。

图4cnt10的仿真波形

由图4可以看出,CQ从“0000”开始计数,计数到“1001”时翻“0000”,同时CARRY_OUT进位信号输出高电平。

当ENA使能信号为高电平时计数器计数,为低电平时停止计数,CQ输出值没有变化。

当CLR清零信号为高电平时CQ清零,CARRY_OUT进位信号输出高电平,当CLR为低电平时正常计数。

其原理图如图5。

图5cnt10的原理图

4.3.六进制计数器源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt6IS

PORT(CLK:

INSTD_LOGIC;

CLR:

INSTD_LOGIC;

ENA:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CARRY_OUT:

OUTSTD_LOGIC);

ENDENTITYcnt6;

ARCHITECTUREART11OFcnt6IS

SIGNALCQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(CLK,CLR,ENA)IS

BEGIN

IFCLR='1'

THENCQI<="0000";

ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THEN

IFCQI="0101"

THENCQI<="0000";

ELSECQI<=CQI+'1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CQI)IS

BEGIN

IFCQI="0000"

THENCARRY_OUT<='1';

ELSECARRY_OUT<='0';

ENDIF;

ENDPROCESS;

CQ<=CQI;

ENDARCHITECTUREART11;

以上为六进制计数器源程序,基本原理是在使能信号ENA为高电平﹑清零信号CLR为低电平且CLK为时钟上升沿(CLK'EVENTANDCLK='1')时,CQI开始进行累加计数(CQI<=CQI+1),当CQI="0101",即为BCD数0101时,计数器向CARRY_OUT进位且CQI<="0000"进行清零。

如此0000→0001→0010→0011→0100→0101循环,进行六进制计数。

上述源程序的波形仿真波形如下图6所示。

图6cnt6的仿真波形

从上图可以看出,CQ从“0000”开始计数,计数到“0101”时翻“0000”,同时CARRY_OUT进位信号输出高电平。

当ENA使能信号为高电平时计数器计数,为低电平时停止计数,CQ输出值没有变化。

当CLR清零信号为高电平时CQ清零,CARRY_OUT进位信号输出高电平,当CLR为低电平时正常计数。

其原理图如图7。

 

图7cnt6的原理图

4.4.顶层综合文件TIMES的源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtimesIS

PORT(CLK:

INSTD_LOGIC;

CLR:

INSTD_LOGIC;

ENA:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(23DOWNTO0));

ENDENTITYtimes;

ARCHITECTUREARTOFtimesIS

COMPONENTCLKGENIS

PORT(CLK:

INSTD_LOGIC;

NEWCLK:

OUTSTD_LOGIC);

ENDCOMPONENTCLKGEN;

COMPONENTCNT10IS

PORT(CLK,CLR,ENA:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CARRY_OUT:

OUTSTD_LOGIC);

ENDCOMPONENTCNT10;

COMPONENTCNT6IS

PORT(CLK,CLR,ENA:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CARRY_OUT:

OUTSTD_LOGIC);

ENDCOMPONENTCNT6;

SIGNALS0:

STD_LOGIC;

SIGNALS1,S2,S3,S4,S5:

STD_LOGIC;

BEGIN

U0:

CLKGENPORTMAP(CLK=>CLK,NEWCLK=>S0);

U1:

CNT10PORTMAP(S0,CLR,ENA,DOUT(3DOWNTO0),S1);

U2:

CNT10PORTMAP(S1,CLR,ENA,DOUT(7DOWNTO4),S2);

U3:

CNT10PORTMAP(S2,CLR,ENA,DOUT(11DOWNTO8),S3);

U4:

CNT6PORTMAP(S3,CLR,ENA,DOUT(15DOWNTO12),S4);

U5:

CNT10PORTMAP(S4,CLR,ENA,DOUT(19DOWNTO16),S5);

U6:

CNT6PORTMAP(S5,CLR,ENA,DOUT(23DOWNTO20));

ENDARCHITECTUREART;

因为TIMES中包含的CLKGEN的分频作用,因此需要30000个CLK信号才能使1/100秒位计数一次,给仿真带来很大难度。

所以仿真前先要把CLKGEN去掉,直接把CLK信号作为1/100秒的时钟信号。

但是还是需要360000个CLK信号才能得到59分翻0分。

所以分两步进行仿真,先检验1/100秒跟1/10秒,再把CLK信号作为秒的时钟信号进行仿真。

第一步:

对TIMES中相应的程序进行一下改动:

(把CLKGEN去掉,直接把CLK信号作为1/100秒的时钟信号。

SIGNALS0:

STD_LOGIC;

SIGNALS1,S2,S3,S4,S5:

STD_LOGIC;

BEGIN

U1:

CNT10PORTMAP(clk,CLR,ENA,DOUT(3DOWNTO0),S1);

U2:

CNT10PORTMAP(S1,CLR,ENA,DOUT(7DOWNTO4),S2);

U3:

CNT10PORTMAP(S2,CLR,ENA,DOUT(11DOWNTO8),S3);

U4:

CNT6PORTMAP(S3,CLR,ENA,DOUT(15DOWNTO12),S4);

U5:

CNT10PORTMAP(S4,CLR,ENA,DOUT(19DOWNTO16),S5);

U6:

CNT6PORTMAP(S5,CLR,ENA,DOUT(23DOWNTO20));

ENDARCHITECTUREART;

 

然后进行波形仿真,仿真波形如下图8:

图8timestest1的波形仿真

如图所示,1/100秒,1/10秒,秒,10秒位都能正常计数和进位,翻0。

第二步:

对TIMES中相应的程序进行一下改动:

(把CLKGEN去掉,直接把CLK信号作为秒的时钟信号。

SIGNALS3,S4,S5:

STD_LOGIC;

BEGIN

U2:

CNT10PORTMAP(clk,CLR,ENA,DOUT(11DOWNTO8),S3);

U3:

CNT6PORTMAP(S3,CLR,ENA,DOUT(15DOWNTO12),S4);

U4:

CNT10PORTMAP(S4,CLR,ENA,DOUT(19DOWNTO16),S5);

U5:

CNT6PORTMAP(S5,CLR,ENA,DOUT(23DOWNTO20));

ENDARCHITECTUREART;

然后进行波形仿真,仿真波形如图9。

图9timestest2的波形仿真

如图8所示,秒,10秒,分和10分位都能正常计数和进位,翻0。

5.总结

通过这次课程设计,使我们加深了对VHDL语言和MaxplusII的认识,增强了动手能力,并培养了我们独立思考的习惯,和树立了对试验操作和数据分析一丝不苟的的态度。

下面是试验中碰到的部分问题的解决方法和应该注意的事项:

图10cnt10的波形仿真

进行波形仿真时,要考虑不同的输入条件所能出现的所有情况。

比如说在有使能信号ENA(或者清零信号CLR)的仿真图要包含信号为‘1’和为‘0’两种情况下的波形;有二输入与门(或者非门)这样器件则要包含输入信号四种不同组合情况下的四种波形;还有计数器,要包含计满清零向高位进位的波形等。

如图10,包含了ENA,CLR分别为‘0’和‘1’时的波形,还有CQ在时钟CLK下降沿计数到9后清零并由CARRY_OUT向高位输出进位信号的波形。

关于时钟信号的设置。

时钟信号能设置的最小周期和Options中的GridSize来决定,要得到周期为20ns的时钟信号,就要把GridSize设置为10ns。

但是CLK的周期也不是越小越好,因为器件有最小反应时间,设置的周期必须大于器件的反应时间。

减少不必要的计算。

第一次做Times的波形时,没有进行分步仿真,直接把CLK信号加在CLKGEN的输入端开始仿真。

结果半个多小时过去了,还只是仿真到8分多。

(仿真用的计算机CPU为奔腾41.7G)要得出59分翻0的波形,估计要4个多小时。

所以把CLKGEN去掉,并且分两步来进行波形仿真,计算量大大减小了,仅几分钟就得出了59分翻0的波形。

参考文献

1.潘松.EDA技术实用教程.成都:

电子科技大学出版社,2000

2.李玉山.电子系统集成设计技术.北京:

电子工业出版社,2001.6.

3.李国丽.EDA与数字系统设计.北京:

机械工业出版社,2004

4.周彩宝.VHDL语言及其应用.上海:

华东计算机技术研究所,1998

5.于海生.微型计算机控制技术.北京:

清华大学出版社,2006.8

6.林红.周鑫霞.数字电路与逻辑设计.北京:

清华大学出版社,2004.8

7.谭会生.张昌凡.EDA技术及应用.西安:

西安电子科技大学出版社,2001

8.朱定华.陈林.电子电路测试与实验.北京:

清华大学出版社,2005.7

9.刘皖.谭明.FPGA设计与应用.北京:

清华大学出版社,2006.6

10.黄智伟.FPGA系统设计与实践.北京:

电子工业出版社,2005.1

11.王志鹏.何丽琴.可编程逻辑器件开发技术MAX+plusⅡ.北京:

国防工业出版社,2005.3

 

 

课程设计成绩:

项目

业务考核成绩(70%)

(百分制记分)

平时成绩(30%)

(百分制记分)

综合总成绩

(百分制记分)

0.01秒~1小时数字秒表

注:

教师按学生实际成绩(平时成绩和业务考核成绩)登记并录入教务MIS系统,由系统自动转化为“优秀(90~100分)、良好(80~89分)、中等(70~79分)、及格(60~69分)和不及格(60分以下)”五等。

指导教师评语:

指导教师(签名):

20年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2