EDA设计论文.doc

上传人:土8路 文档编号:10062777 上传时间:2021-04-15 格式:DOC 页数:11 大小:221KB
返回 下载 相关 举报
EDA设计论文.doc_第1页
第1页 / 共11页
EDA设计论文.doc_第2页
第2页 / 共11页
EDA设计论文.doc_第3页
第3页 / 共11页
EDA设计论文.doc_第4页
第4页 / 共11页
EDA设计论文.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《EDA设计论文.doc》由会员分享,可在线阅读,更多相关《EDA设计论文.doc(11页珍藏版)》请在三一文库上搜索。

1、成 绩指导教师:日 期:EDA技术与VHDL语言设计课程设计题 目: EDA技术及其应用 -数字跑表 姓 名: 院 系: 电子信息工程学系 专 业: 电子信息工程 班 级: 学 号: 指导教师: 2011年 12 月EDA技术及其应用数字跑表(电子信息工程学系 指导教师:)中文摘要:随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。本程序设计的是数字跑表的设计。采用EDA作为开发工具,VHDL语言为硬件描述语言,M

2、AX + PLUS II作为程序运行平台,所开发的程序通过调试运行、波形仿真验证,初步实现了设计目标。本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的近亲。通过老师的指导和自己的学习完成了预想的功能。关键词:数字跑表 课程设计 EDA VHDL1 引言 我们生活在一个信息时代,各种电子产品层出不穷,作为一个电子信息专业的学生,了解这些电子产品的基本组成和设计原理是十分必要的,我们学习的是计算机组成的理论知识,而课程设计正是对我们学习的理论的实践与巩固。本设计主要介绍的是一个VHDL设计的数字跑表,其理论基础来源于计算机组成原理的时钟计数器。1.1

3、 设计的目的 本次设计的目的就是在掌握计算机组成原理理论的基础上,了解EDA技术,掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,例如本课程设计就是基于所学的计算机原理中的时钟计数器的基础之上的,通过本课程设计,达到巩固和综合运用计算机原理中的知识,理论联系实际,巩固所学理论知识,并且提高自己通过所学理论分析、解决计算机实际问题的能力。1.2 设计的基本内容基于MAX+PLUS 2 平台,运用VHDL语言对数字跑表的各个模块进行设计,并使用EDA 工具对各模块进行仿真验证。2 EDA、VHDL简介2.1 EDA技术 EDA

4、技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直

5、到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。2.2 硬件描述语言VHDL2.2.1 VHDL的简介 VHDL是一种用来描述数字逻辑系统的“编程语言”它的全名是Very-High-Speed Integrated Circuit HardwareDescription Language。它源于美国政府于1980年开始启动的超高速集成电路计划,VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称

6、设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。VHDL的应用必将成为当前以及未来EDA解决方案的核心,更是整个电子逻辑系统设计的核心。2.2.2 VHDL语言的特点 (1)VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和

7、设计大规模电子系统的重要保证。 (2)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (3)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2.3

8、 VHDL的设计流程 用VHDL语言设计电路的流程: 在用VHDL语言来设计电路时,主要的过程是这样的: (1)使用文本编辑器输入设计源文件。 (2)使用编译工具编译源文件。VHDL的编译器有很多,ACTIVE公司,MODELSIM公司,SYNPLICITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。 (3)功能仿真。对于某些人而言,仿真这一步似乎是可有可无的。但是对于一个可靠的设计而言,任何设计最好都进行仿真,以保证设计的可靠性。另外,对于作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。 (4)综合。综合的目的是在于将设计的源文件由语言转换为实际的

9、电路。这一部分的最终目的是生成门电路级的网表(Netlist)。 (5)布局、布线。这一步的目的是生成用于烧写的编程文件。在这一步,将用到第(4)步生成的网表并根据CPLD/FPG厂商的器件容量,结构等进行布局、布线。这就好像在设计PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。 (6)后仿真。这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。3 设计过程3.1 设计任务和要求:3.1.1 设计原理和要求 (1)设计一数字跑表,可以显示0.01秒、秒和分钟;(2)具有

10、暂停健,当按下该键时,停止计数,放开该键继续计数;(3)具有清零键,按下时跑表清零,从头计数;图1 数字跑表输入输出示意图(设计顶层图)数字跑表的功能模块划分: 数字跑表实际上为计数器,所以核心模块应为计数器,其次为暂停控制和清零控制。计数模块应包含如下模块: (2)、模60计数器,用来实现秒的计数和分钟的计数; (1)、模100计数器,用来实现百分秒的计数; 注意这里的模60和模100计数器是BCD码计数器,便于需要时送到数码管显示;3.1.2 设计任务(1)整个数字跑表实质是一个计数器,由百分秒计数器(模100计数器),秒钟计数器和分钟计数器(模60计数器)级联而成;(2)上述三个计数器均

11、为BCD码计数器;(3)清零为异步清零(aclr),暂停功能可用计数器的时钟使能(clk-en)来实现;(4)上述计数器可调用参数化宏单元(LPM-counter)来实现,注意进位信号的设计和使用。 表1 控制信号的作用控制端取 值功能复位(CLR)1异步清零0计数计数/暂停键(PAUSE)1暂停0计数3.2 程序设计3.2.1 程序代码 显示模块的源程序 数据选择器源程序module mulx(CLK,CLR,EN,S_1MS,S_10MS,S_100MS,S_1S,S_10S,M_1MIN,M_10MIN,HOUR,OUTBCD,SEG);input CLK, CLR, EN; input

12、3:0S_1MS; input3:0S_10MS;input3:0S_100MS; input3:0S_1S; input3:0S_10S;input3:0M_1MIN; input3:0M_10MIN; input3:0HOUR;output3:0OUTBCD; output7:0SEG;wire CLK; wire CLR; wire EN;wire 3:0S_1MS; wire 3:0S_10MS; wire 3:0S_100MS;wire 3:0S_1S; wire 3:0S_10S; wire 3:0M_1MIN;wire 3:0M_10MIN; wire 3:0HOUR;reg 3

13、:0OUTBCD; reg 7:0SEG; reg 3:0COUNT;always (posedge CLR or posedge CLK) begin if(CLR=1b1) begin COUNT= 4b1111; end else Begin if(EN=1b1) begin if(COUNT=4b1001 ) begin COUNT=4b0000; end else begin COUNT=COUNT+1b1; end end end endalways (posedge CLK) begin case(COUNT) 4b0000 : begin OUTBCD= S_1MS; SEG=

14、8b11111110; end 4b0001 : begin OUTBCD=S_10MS; SEG=8b11111101; end 4b0010 : begin OUTBCD=S_100MS; SEG=8b11111011; end 4b0011 : begin OUTBCD=S_1S; SEG= 8b11110111; end 4b0100 : begin OUTBCD=S_10S; SEG=8b11101111; end 4b0101 : begin OUTBCD=M_1MIN; SEG=8b11011111; end 4b0110 : begin OUTBCD=M_10MIN; SEG=

15、8b10111111; end 4b0111 : begin OUTBCD= HOUR; SEG=8b01111111; end 4b1000 : begin OUTBCD=S_1MS; SEG=8b11111110; end 4b1001 : begin OUTBCD=S_10MS; SEG=8b11111101; end default : begin OUTBCD=4b0000; SEG= 8b00000000; end endcase endendmodule数码管显示模块module shumaguang(BCD,LED);input3:0BCD;output6:0LED;wire

16、3:0BCD;wire 6:0LED;assign LED = BCD = 4b 0000 ? 7b 1111110 : BCD = 4b 0001 ? 7b 0110000 : BCD = 4b 0010 ? 7b 1101101 : BCD = 4b 0011 ? 7b 1111001 : BCD = 4b 0100 ? 7b 0110011 : BCD = 4b 0101 ? 7b 1011011 : BCD = 4b 0110 ? 7b 1011111 : BCD = 4b 0111 ? 7b 1110000 : BCD = 4b 1000 ? 7b 1111111 : BCD = 4

17、b 1001 ? 7b 1111011 : 7b 0000000;endmodule计数模块 /*信号定义: CLK: CLK为时钟信号; CLR: 为异步复位信号; PAUSE: 为暂停信号; MSH,MSL: 百分秒的高位和低位; SH,SL: 秒信号的高位和低位; MH,ML: 分钟信号的高位和低位。 */ module paobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML); input CLK,CLR; input PAUSE; output3:0 MSH,MSL,SH,SL,MH,ML; reg3:0 MSH,MSL,SH,SL,MH,ML; reg

18、cn1,cn2; /cn1为百分秒向秒的进位,cn2为秒向分的进位 /*百分秒计数进程,每计满 100,cn1产生一个进位 * always (posedge CLK or posedge CLR) begin if(CLR) begin /异步复位 MSH,MSL=8h00; cn1=0; end else if(!PAUSE) /PAUSE为 0时正常计数,为 1时暂停计数 begin if(MSL=9) begin MSL=0; if(MSH=9) begin MSH=0; cn1=1; end else MSH=MSH+1; end else begin MSL=MSL+1; cn1=

19、0; end end end /*秒计数进程,每计满 60,cn2产生一个进位 *always (posedge cn1 or posedge CLR) begin if(CLR)begin /异步复位 SH,SL=8h00; cn2=0; end else if(SL=9) /低位是否为 9 begin SL=0; if(SH=5) begin SH=0; cn2=1; end else SH=SH+1; end else begin SL=SL+1; cn2=0; end end /*分钟计数进程,每计满 60,系统自动清零 *always (posedge cn2 or posedge

20、CLR) begin if(CLR) begin MH,ML=8h00; end /异步复位 else if(ML=9) begin ML=0; if(MH=5) MH=0; else MH=MH+1; end else ML=ML+1; end endmodule 3.2.2 程序原理图 模60原理图:图2 模60的原理图 跑表的组成模块由百分秒计数器(模100计数器),秒钟计数器和分钟计数器(模60计数器)级联而成;图3 模60与模100级联4 波形仿真 图4 十进制计数仿真波形 图5 六进制计数仿真波形 图6 数码管显示仿真波形图7 数据选择器仿真波形5 结束语 通过几天的课程设计,我对

21、数据库软件EDA技术、VHDL、等系列知识都有了一定的了解。使用EDA技术开发页面的能力也有了很大提高。 在整个设计过程中,有很多人对任务的完成给予了重要的支持和帮助。感谢老师给了我本次设计的机会并提供指导;感谢许多同学在我此课程设计遇到问题时给我的帮助使我能够顺利地进行设计的工作;论坛中有很多认识不认识的朋友也都为我的设计提出了很宝贵的建议,同样在这里感谢他们。参考文献:1 卢毅,赖杰.VHDL与数字电路设计M.科学出版社.20042 曾繁泰.VHDL程序设计(第二版)M.清华大学出版社.20083 陈雪松,滕立中.VHDL入门与应用M.人民邮电出版社.20024 王小军.VHDL简明教程M.清华大学出版社.2006

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1