《基本门电路和数值比较器的设计.doc》由会员分享,可在线阅读,更多相关《基本门电路和数值比较器的设计.doc(19页珍藏版)》请在三一办公上搜索。
1、长沙理工大学计算机硬件综合课程设计报告 基本门电路和数值比较器的设计吕健辉学 院 计算机与通信工程 专 业 计算机科学与技术 班 级 085010502 学 号 200550080232 学生姓名 吕健辉 指导教师 肖晓丽 课程成绩 完成日期 2008年1月18日课程设计任务书计算机与通信工程学院 计算机科学与技术专业 课程名称计算机组成原理课程设计时间20072008学年第一学期1920周学生姓名吕健辉指导老师肖晓丽题 目基本门电路和数值比较器的设计主要内容:利用VHDL设计基本门电路和数值比较电路模块,并使用EDA 工具对各模块进行仿真验证。基本门电路模块中包含与门、或门、异或门等6个基本
2、电路。数值比较器模块用来实现两个数值比较,结果用特定的二进制编码来表示1。要求:(1)通过设计计算机各组成部件的器件、设计指令系统及对应的模型机、做复杂模型机的实验, CPU系统与存储器扩展设计、接口技术应用设计等课题,掌握计算机组成和接口技术的基本分析方法和设计方法,加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机系统整体概念,初步掌握微机硬件开发方法,为以后进行实际的计算机软、硬件应用开发打下良好的基础。(2)熟练操作设计所用的软硬件系统:TDN-CM+实验系统或EDA软件。(3)按要求编写课程设计报告,正确绘制程序流程图、实验接线图等,正确阐述设计原理、方法和实验结果。(4)通
3、过课程设计培养学生严谨的科学态度,认真地工作作风和团队协作精神。(5)在老师的指导下,要求每个学生独立完成课程设计报告的全部内容。应当提交的文件:(1)课程设计报告。(2)课程设计附件(源程序、各类图纸、实验数据、运行截图等1)。课程设计成绩评定学 院 计算机与通信工程 专 业 计算机科学与技术班 级 计05-02 学 号 200550080232 学生姓名 吕健辉 指导教师 肖晓丽 课程成绩 完成日期 2008.1.18 指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质
4、量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日基本门电路 和数值比较器的设计学生姓名:吕健辉 指导老师:肖晓丽摘 要 系统采用EDA技术设计基本门电路和数值比较器中的两个部分,基本门电路模块中包含与门、或门、异或门等6个基本电路。数值比较器模块用来实现两个数值比较,结果用特定的二进制编码来表示。系统采用硬件描述语言VHDL把电路按模块化方式进行设计,然后进行编程、时序仿真等。各个模块的结构简单,使用方便,具有一定的应用价值。关键字 门电路;EDA;VHDL;数值比较目录1 引 言11.1 设计的目的11.2 设计的基本内容12 EDA、VHDL简介12.1 EDA技术12.2
5、 硬件描述语言VHDL23 设计规划过程43.1基本门电路工作原理43.2数值比较器的工作原理43.3课程设计中各个模块的设计5结束语9参考文献11附录121 引 言20世纪60年代初,美国德克萨斯仪器公司TI(Texas Instruments)将各种基本逻辑电路以及连线制作在一片体积很小的硅片上,经过封装后提供给用户使用,这就是集成电路。从先前的采用半导体技术实现的计算机到现在广泛应用的采用高集成度芯片实现的计算机。基本门电路和数值比较器作为计算机原理中的一个元件,因而成为深入研究和了解基本逻辑电路的基石。本设计主要介绍的是一个基于超高速硬件描述语言VHDL对基本门电路和数值比较器电路进行
6、编程实现。1.1 设计的目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,深入了解计算机组成的一些基本原理。并以计算机组成原理为指导,掌握计算机基本门电路和数值比较器电路的设计方法和思想。通过学习的VHDL语言结合所学的计算机组成原理知识,理论联系实际,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。1.2 设计的基本内容利用VHDL设计基本门电路和数值比较电路模块,并使用EDA 工具对各模块进行仿真验证。基本门电路模块中包含与门、或门、异或门等6个基本电路。数值比较器模块用来实现两个数值比较,结果用特定的二进制编码来表示。2 EDA、VHDL简介2.1 EDA
7、技术EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度。2.2 硬件描述语言VHDL VHDL的简介 VHDL语言是一种
8、用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为A I/IEEE的标准(IEEE STD 1076-1987)。1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。VHDL的英文全写是:VHSIC(Very High eed Integrated Circuit)Hardware Descriptiong Langu
9、age.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。 VHDL语言的特点应用VHDL进行系统设计,有以下几方面的特点:(一)功能强大。VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。(二)可移植性。VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿
10、真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。此外,通过更换库再重新综合很容易移植为ASIC设计。(三)独立性。 VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。(四)可操作性。由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。(五)灵活性。VHDL最初是作为一种仿真标准格式出现的,有着丰富
11、的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。所以,即使在原离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。 VHDL的设计流程用高级语言设计电路的流程:在用高级语言来设计电路时,主要的过程是这样的:(1)使用文本编辑器输入设计源文件(你可以使用任何一种文本编辑器。但是,为了提高输入的效率,你可以用某些专用的编辑器,如:Hdl Editor,Tubor Writer或者一些EDA工具软件集成的HDL编辑器)。(2)使用编译工具编译源文件。HDL的编译器有很多,ACTIVE公司,MODELSIM公司,SYNPLI
12、CITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。(3)功能仿真。对于某些人而言,仿真这一步似乎是可有可无的。但是对于一个可靠的设计而言,任何设计最好都进行仿真,以保证设计的可靠性。另外,对于作为一个独立的设计项目而言,仿真文件的提供足可以证明你设计的完整性。 (4)综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。这一部分的最终目的是生成门电路级的网表(Netlist)。(5)布局、布线。这一步的目的是生成用于编程PROGRAMMING的编程文件。在这一步,将用到第(4)步生成的网表并根据CPLD/FPG厂商的器件容量,结构等进行布局、布线。这就好像在设计
13、PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。最后,生成一个供编程的文件。这一步同时还会加一些时序信息到你的设计项目中去,以便与你做后仿真。(6)后仿真。这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。如果设计的电路的时延满足要求的话,则就编程了!3 设计规划过程3.1基本门电路工作原理使用VHDL中的关系运算符实现各种门电路。门电路框图如图3.1所示。图3.1 基本门电路框图 3.2数值比较器的工作原理利用IF_THEN_ELSE表达的VHDL顺序语句的方式,描
14、述了一个数值比较器的电路行为,真值表如图3.2所示,实验模块如图3.3所示。结构体中的IF语句类似于软件语言,比较符合人的思维,但写像IF这样的条件语句一定要注意条件的“完整性”与“不完整性”,“完整”指列出了条件的所有可能及其对应的操作。完整的条件语句只能构成组合逻辑电路,不完整的条件语句将引进寄存器,从而构成时序电路。这两者无所谓对错,只是要根据自己的目的谨慎选择。随意写出的IF或其他条件语句往往使综合结果与自己的本意相差甚远。输 入输 出A BY1 Y2 Y3 A B 1 0 0 A = B0 1 0 A B0 0 0 图3.2 输入输出关系a3.0b3.0y1Y3y2 图3.3 比较器
15、的框图3.3课程设计中各个模块的设计课程设计中各个模块由VHDL实现后,利用EDA工具对各模块进行了时序仿真(Timing Simulation),其目的是通过时序可以更清楚的了解程序的工作过程。1. 基本门电路模块基本门电路可由VHDL程序来实现,下面是其中的一段VHDL代码:process(clk,key)BEGIN if (key=111111) then cnt01999999 then cnt0=0;temp=key; else cnt0cccccccb THEN -ab y1=1; y2=0; y3=0; ELSIF a=b THEN -a=b y1=0; y2=1; y3=0;
16、ELSIF ab THEN -ab y1=0; y2=0; y3b,y1=1,y2=y3=0;当输入信号a=0,b=1时,输出为ab,y1=0,y2=0,y3=1;当输入信号a=1,b=1时,输出信号为a=b,y1=0,y2=1,y3=0。数值比较器的引脚分配图如图3.7所示: 图3.7 数值比较器的引脚分配图结束语 通过两星期的紧张工作,最后完成了我的设计任务基于VHDL基本门电路和数值比较器电路的设计。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个
17、学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让同学们学以致用。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件(C语言)顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时
18、间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。致谢本设计是在肖晓丽老师的精心指导和严格要求下完成的,从课题选择到具体设计和调试,都得到肖老师的悉心指导,无不凝聚着肖老师的心血和汗水,她多次为我指点迷津,帮助我开拓设计思路,精心点拨、热忱鼓励。她渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。通过这次课程设计我从肖老师那学到不少有用的知识,也积累了一定的电路设计的经验。参考文献 1潘松.VHDL实用教程M.成都:电子科技大学出版社,20002 侯伯亨,顾新.VHDL硬件描述语言及数字逻辑电路设计.西安:西安电子科技大出版社,2003 3 甘登
19、岱.EDA培训教程.北京:机械工业出版社,2005 4 Jayaram.Bhaker.VHDL教程.北京:机械工业出版社,2006附录基本门电路的程序代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity logic is Port ( a,b,clk:in std_logic; key: in std_logic_vector(5 downto 0); c: out std_logic );end logic;architec
20、ture Behavioral of logic issignal temp: std_logic_vector(5 downto 0);signal cnt0: integer range 0 to 2000000;beginprocess(clk,key)BEGIN if (key=111111) then cnt01999999 then cnt0=0;temp=key; else cnt0cccccccb THEN -ab y1=1; y2=0; y3=0; ELSIF a=b THEN -a=b y1=0; y2=1; y3=0; ELSIF ab THEN -ab y1=0; y2=0; y3=1; END IF;END PROCESS;END RTL;