tx099电梯控制电路的VHDL的设计和实现
收藏
资源目录
压缩包内文档预览:
编号:516517
类型:共享资源
大小:683.74KB
格式:RAR
上传时间:2015-11-12
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
机械毕业设计
- 资源描述:
-
tx099电梯控制电路的VHDL的设计和实现,机械毕业设计
- 内容简介:
-
江苏大学 2004 界本科毕业设计论文 电梯控制电路的 VHDL 的设计和实现 院系: 计算机科学与通信工程 专业: 通 信 工 程 班级: tw001 班 姓名: 王 伟 丽 指导老师: 韩 晓 茹 nts江苏大学本科毕业论文 I 摘 要 文章第一章主要介绍了课题来源 ,VHDL 和 FPGA 的应用背景。第二章详细介绍了 VHDL 语言和 FPGA 及其特点。第三章介绍了论文的主要工作部分即电梯控制电路的设计。第四章介绍 了电梯控制电路的 VHDL 源代码。第五章对设计过程进行了小结。 关键字 VHDL, FPGA,可编程逻辑器件,电梯控制 ABSTRACT The main idea of the first chapter is the source of the subject, vhdl and the background of the fpgas application. The main idea of the second chapter is the character of the vhdl and the fpga. The third chapter is the main part of the paper that introduces the design of the lift controlling circuit. The fourth chapter is about the VHDL source code of the lift controlling circuit. The last chapter is the summary of the design. keywords VHDL, FPGA, PLD, lift controlling nts江苏大学本科毕业论文 II 目 录 第一章 绪论 . 1 1.1 前言 . 1 1.2 用 VHDL 的理由 . 1 1.2.1 VHDL 的简单介绍 . 1 1.2.2 VHDL 的发展 . 1 1.3 FPGA 的发展 . 2 1.3.1 FPGA 的起源 . 2 1.3.2 FPGA 的简单介绍 . 3 1.4 电梯控制系统 . 3 第二章 相关技术介绍 . 4 2.1 VHDL 的相关技术 . 4 2.1.1 VHDL 的自身优点 . 4 2.1.2 用 VHDL 设计的优越性 . 4 2.1.3 VHDL 的模块组织 . 5 2.1.4 开发流程 . 6 2.1.5 VHDL 编码方式对综合质量的影响 . 7 2.2 FPGA 的优势 . 8 2.2.1 FPGA 推动制造技术的发展 . 8 2.2.2 FPGA/EPLD 的自上而下( Top-Down)设计方法 . 8 2.2.3FPGA 将替代 ASIC . 9 2.2.4 FPGA 推动制造技术的发展 . 10 2.2.5 可编程 ASSP 方案 . 10 第三章 电梯控制系统的设计方案 . 11 3.1 实验要求: . 11 3.2 初步方案: . 12 3.3 简单框图: . 12 3.4 简单流程图 :. 13 3.5 详细方案: . 14 3.6 详细框图 . 14 3.7 详细流程图兼状态图 :(图中 ”,”表示 or) . 14 3.8 电路图 . 17 第四章 电梯控制系统的实现 . 18 4.1 源程序极其简单解释 . 18 第五章 小结 . 23 5.1 设计的划分 . 23 5.2 设计的流程 . 23 5.3 设计中需要注意的地方 . 23 结束语 . 23 致谢 . 24 参考文献 . 24 nts江苏大学本科毕业论文 1 第一章 绪论 1.1前言 VHDL 语言是一种非常流行的硬件描述语言。而 FPGA 设计已成为电子设计的主要手段,随着集成电路产业及通信产业在我国的迅速发展,学习 VHDL 语言和 FPGA 设计是大中专在校生和工程技术人员的迫切需求。 1.2用 VHDL的理由 1.2.1 VHDL 的简单介绍 严格地讲, VHDL 是一种用来描述数字逻辑系统的 “编程语 言 ”。它源于美国政府于 1980年开始启动的超高速集成电路计划( Very High Speed Integrated Circuits, VHSIC)。在这一计划的执行过程中,专家们认识到要有一种标准的语言来描述集成电路的结构和功能,由此,VHSIC 的硬件描述语言( VHSIC HDL)即 VHDL 便诞生了,并很快被美国电气和电子工程师协会( IEEE)所承认。 VHDL(VHSIC Hardware Description Language)是用来描述从抽象到具体级别硬件的工业标准语言, VHDL 既可以被计算机阅读又可 以被人阅读,它支持硬件的设计,验证,综合和测试。它还支持硬件设计数据的交换,维护,修改和硬件的实现。 VHDL支持行为级和结构级的硬件描述,并且可以从最抽象的系统级即顶层一直到可实现的逻辑级最低层。 VHDL 可实现下至具体逻辑门的描述 ,上至系统行为描述。这种宽范围的描述能力使 VHDL成为高层次设计的核心 ,而高层次的设计非常接近人们的日常习惯 ,不必经过繁琐的层层细化来梳理信号的逻辑关系。 VHDL 的优点之一是:在描述数字系统时,可以使用前后一致的语意义和语法跨越多哥级别的混合描述模拟该系统。因此,可以对由高层次行为 描述子系统及低层次详细实现子系统所组成的系统进行模拟。 由于 VHDL 是 IEEE 公布的工业标准 ,故得到众多 EDA 软件的支持。用编辑器编写的 VHDL 程序可在各 EDA 软件平台上运行 ,具有良好的移植性。正因为有诸多的优点 ,VHDL 越来越得到电子工程师的青睐,使以前繁琐的硬件设计软件化 。 在技术高速发展的现代社会中,数字化的浪潮正席卷各个行业,数字电子系统的设计方法和设计手段已有了根本性的变化,以往分立的数字电路已经被可编程逻辑器件( CPLD 和 FPGA)所取代。现在我们已经可以采用自上到下的模式用软件(硬件描述语言)的方 法来设计硬件。这也促使可编程逻辑器件在通信系统及复杂的现场控制系统中得到广泛的应用。 1.2.2 VHDL 的发展 VHDL 最早是美国国防部为描述电子电路所开发的一种语言,因此早期的 VHDL 是用在文件上的。他可以很容易的描述一个系统的功能,也可以详细描述一个器件的状态。在70 年代,大多数的数字逻辑还是以分散的 TTL 器件所组成。就当时的情况而言,工程师们必须了解各种逻辑器件的特性,再将逻辑器件组合成电路图。一个简单的逻辑电路,也许需nts江苏大学本科毕业论文 2 要十歌分散的 TTL 器件组合成一块电路板。加上当时的器件都是以 DIP 的方式封装 ,一块电路板是一排排地器件看起来壮观无比。 80 年代后期出现了可编程逻辑器件,其设计的切入点有两个,一种是采用原理图的方法,这就像是原先将分散的 TTL 逻辑组合成电路板一样,只是将电路板换成了一个 IC。另一种设计方法是以简单的方程式来表现逻辑架构,经过编译器产生刻录文件,再写到可编程逻辑器件里。这种器件的最大好处是可以将不同的逻辑放在一颗 IC 中。假设一个设计中使用到一个 ANDgate,一个 Orgate 和一个 Inverter,要是使用分散的 TTL 器件,电路板上就要使用三个 IC。但如果使用可编程逻辑器件,只要一颗 IC 就能将这三种功能放进去了不过由于其容量并不是很大,因此能容纳的功能也不是很多,所有电路板上的 IC 还是很多。 随着技术的发展, 90 年代初期出现了 FPGA( Field Programmable Gate Array) ,这是一种比较复杂的可编程逻辑器件。但当时的 FPGA 其逻辑门数目( gate count)并不是很多,因此并没有影响到工程师的设计方式,画原理图的设计方式仍是最流行的。随着半导体制程的演进,单位面积内逻辑门的数目急速增加。逻辑门的数目增多,半导体线径的宽度变细,逻辑门的延时时间也越来越小,使其功能 大为增加。所以 FPGA 使用的范围也就大了许多。加上其弹性极大,对于规格不是很确定的设计,使用起来相当方便。 当然市场上并不是只有可编程逻辑器件的出现,许多大厂乐于将固定功能设计成一颗IC,这种 IC 称为 ASSP( APPLICATION SPECIFIC SRANDARD PRODUCT,专用标准产品)。ASSP 的好处是设计者可以将许多功能都放在一颗 IC 里面,一般设计者要将这么复杂的功能设计时间急降低风险的情况下,许多设计者会直接选择 ASSP 来使用。但是优点也可能变成缺点,由于 ASSP 的功能都已经确定了,如果有 些设计中只甬道 ASSP 的一小部分功能但仍使用 ASSP 设计的话,则只有将整颗 IC 放在电路板上。或者是设计者要将 ASSP 提供的功能再做修改,由于 ASSP 缺乏弹性,在某些设计中也会无法应用。 除了 PLD 和 ASSP 之外,还有一种称为 ASIC 的器件。其内部功能完全由设计者自行决定,因此不会出现使用 ASSP 做设计浪费许多功能的情况。但当 ASIC 开发出来以后,就和ASSP 一样,仅能完全满足设计者的要求。而且当器件开发出来之后其单价相当低,这是ASIC 的最大优点。不过其仍有缺点,由于其设计时间与设计 PLD 相当,还要额外加上 光罩制作等过程,所以其设计的时间最长。而且设计的复杂度越来越大。因此设计 PLD 或 ASIC时,传统的画原理图方式也就越来越不能满足设计者的需求。加上逻辑合成器的日趋成熟,高级的硬件描述语言的设计方式,以逐渐取代画原理图的方式了。 1.3 FPGA的发展 1.3.1 FPGA 的起源 随着计算机与微电子技术的发展,电子设计自动化 EDA( Electronic Design Automation)和可编程逻辑器件 PLD( Programmable Logic Device)的发展都非常迅速,熟练地利用 EDA软件 进行 PLD 器件开发已成为电子工程师必须掌握的基本技能。先进的 EDA 工具已经从传统的自下而上的设计方法改变为自顶向下的设计方法,以硬件描述语言 HDL( Hardware Description Language)来描述系统级设计,并支持系统仿真和高层综合。 ASIC( Application Specific Integrated Circuit)的设计与制造,电子工程师在实验室就可以完成,这都得益于 PLD器件的出现及功能强大的 EDA 软件的支持。现在应用最广泛的高密度 PLD 器件主要是现场可编程门阵列 FPGA( Field Programmable Gate Array)和复杂可编程逻辑器件 CPLD( Complex nts江苏大学本科毕业论文 3 Programmable Logic Device)。 1.3.2 FPGA 的简单介绍 目前流行的 FPGA/CPLD 在 EDA 基础上得到了广泛的应用,由于可以通过软件编程对该硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样方便快捷。这一特性极大地改变了传统数字系统的设计方法、设计过程、乃至设计观念。在设计过程中,设计者可根据需要,随时改变器件的内部逻辑功能和管脚的信号方式。而管脚定义的灵活性,能大大减轻电路图设计和电路板设计的工作量和难度,同时,这种基于可编程逻辑器件芯片的设计大大减少了系统芯片的数量,缩小了系统的体积,提高了系统的可靠性。对于FPGA/CPLD 器件,常用的硬件描述语言有 VHDL 和 Verilog 等。而支撑 FPGA/CPLD 及硬件描述语言的对应工具软件有 MAX-Plus 等,它被尊为业界最易用易学的 EDA 软件,它支持原理图、 VHDL 和 Verilog 语言文本文件,以及波形与 EDIF 等格式的文件作为设计输入。 MAX-Plus 具有门级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿 真结果。在设计一项工程时,首先利用 EDA 工具软件 MAX-Plus 中的文本编辑器,将其用文本方式( VHDL 程序方式)表达出来,在通过 MAX-Plus 转换为实际可用的电路网表,并用此网表对 FPGA/CPLD 进行布线,最后进行功能仿真和时序仿真,得到所需的设计效果 。FPGA( Field Programmable Gates Arrays,现场可编程门列阵)与 CPLD( Complex Programmable Logic Device,复杂可编程逻辑器件)都是可编程逻辑器件,他们是在 PAL, GAL 等逻辑器件的基 础上发展起来的。同以往的 PAL, GAL 相比较, FPGA/CPLD 规模较大,适合于时序,组合等逻辑电路应用场合,它可以替代几十甚至上百片通用 IC 芯片。这样的 FPGA/CPLD实际上就是一个子系统部件。这种芯片具有可编程性和实现方案容易改动的特点。 随着半导体技术的迅速发展,在现代数字系统设计中,现场可编程器件( FPGA 和 CPLD)的使用越来越广泛。 CPLD/FPGA 的应用设计复杂,硬件描述语言 HDL(Hardware Description Language)已成为设计大规模 CPLD/FPGA 的一种有效手段 。 随 着半导体技术的迅速发展,在现代数字系统设计中,现场可编程器件( FPGA 和 CPLD)的使用越来越广泛。与此同时,基于大规模可编程逻辑器件的 EDA(电子设计自动化)硬件解决方案也被广泛采用。一般地说, EDA解决方案均采用计算机自顶向下的设计方式:在底层设计时对逻辑进行必要的描述,并依赖特定的软件执行逻辑优化( logic optimization)与器件映射( device mapping),最后再使用由各芯片生产厂商提供的编译器执行布线( route)和网单优化( netlist optimization)。虽然对于 简单的逻辑,采用原始逻辑图或布尔方程输入可以获得非常有效的结果,但对于复杂的系统设计,应用以上两种方案就很容易产生错误,而必须依靠一种高层的逻辑输入方式,这样就产生了硬件描述语言 HDL( hardware description language),其中符合 IEEE-1076 标准的 VHDL 的应用成为新一代 EDA 解决方案中的首选。因此, VHDL 的应用必将成为当前以及未来 EDA 解决方案的核心,更是整个电子逻辑系统设计的核心。 1.4电梯控制系统 随着人类社会的发展,建筑技术水平的提高,出现了高楼大厦。这些高层 建筑物的数量增多,人们迫切需要一种交通工具,以方便人们的生活,提高工作效率,这样电梯这一新的交通工具便应运而生。电梯自从诞生起,就得到许多国家的重视,尤其是经济发达的国家,nts江苏大学本科毕业论文 4 这对电梯事业的发展起着重要的推动作用,使得电梯行业在随后得到很大发展。 第二章 相关技术介绍 2.1 VHDL的相关技术 2.1.1 VHDL 的自身优点 VHDL 是为了满足逻辑设计过程中的各种需求而设计的。 首先,它可以用来描述逻辑设计的结构,比如逻辑设计中有多少个子逻辑,而这些子逻辑又是如何连接的。 除此之外, VHDL 并不 十分关心一个具体逻辑是靠何种方式实现的,而是把开发者的精力集中到逻辑所实现的功能上。 其二, VHDL 采用类似高级语言的语句格式完成对硬件行为的描述,这也是为什么我们把 VHDL 称为 “编程语言 ”的原因。 最后, VHDL 所给出的逻辑的模拟与调试为设计工作提供了最大的空间,用户甚至不必编写任何测试向量便可以进行源代码级的调试。而且,设计者可以非常方便地比较各种方案之间的可行性及其优劣,而不需做任何实际的电路实验。 鉴于 VHDL 具有以上诸多优点,只要开发者拥有 Pascal、 C 等计算机高级 语言的基础,便可以轻松地掌握 VHDL,使硬件工作软件化。 2.1.2 用 VHDL 设计的优越性 VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外, VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。 VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分 ,及端口 ) 和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直 接调用这个实体。这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点。应用 VHDL进行工程设计的优点是多方面的。 ( 1)与其他的硬件描述语言相比, VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 ( 2) VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 nts江苏大学本科毕业论文 5 ( 3) VHDL语句的行为描述能力和程序结构决定了 他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效 , 高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 ( 4)对于用 VHDL完成的一个确定的设计,可以利用 EDA工具进行逻辑综合和优化,并自动的把 VHDL描述设计转变成门级网表。 ( 5) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计 。 2.1.3 VHDL 的模块组织 1 在应用 VHDL 描述数字系统结构时,我们使用 entity-achitecture 结构。 2 entity 描述了数字系统的输入输出接口,同时还定义了一些全局常量以及与其他电路(程序模块或逻辑图模块)之间必要连接的拓扑结构。但在 entity 中,我们并不对电路的逻辑做任何描述,可将其看成是一个所谓的逻辑 “黑盒子 ”。很明显, VHDL 遵循 EDA 解决方案中自顶向下的设计原则,并能够保持良好的接口兼容性。 3 architecture 则是 entity 的实体,它对具体的逻辑进行描述,主要由变量声明和语句描述两部分构成,变量有信号型和内部节点型;语句包括组合逻辑语句、同步时序逻辑 语句。对于异步时序则依靠语句排列顺序再加上延时语句来完成。 entity和 architecture 总是成对出现,它们是 VHDL 描述逻辑时的基本结构。 4 VHDL 在描述同步时序逻辑时主要使用 process 结构和 wait 语句。在一个 architecture中可以同时拥有几个 process,它是用于描述时序的基本单元。 VHDL 描述硬件行为时,最重要的就是依据时间的变化对信号做出相应的分配和赋值,具体细节由于篇幅所限不再赘述。 5 在 EDA 解决方案中应用 VHDL有助于缩短数字系统的开发周期。但除 了靠编写 VHDL程序简化逻辑之外,还需要选择合理的 HDL 合成( HDL synthesis),不同的 HDL 合成所支持的语法并不相同,而且生成的代码效率也不同。经实验比对,相同的程序经过不同的编译器编译,芯片资源的消耗相差可高达 10%。另外,由于知识产权和专利保护等问题,目前国际上尚无统一的集成化开发工具可以完成从逻辑输入到下载电路所需要的全部工作,这也给 VHDL 在 EDA 解决方案中的广泛应用带来了一定的困难。但总的来讲,一般厂商均遵循VHDL-87 通用标准并互相提供良好的软件接口,在某种程度上可以缓解该矛盾。可 以预计,随着 VHDL-93 标准的广泛应用以及第二代可编程逻辑器件的推出, VHDL 必将在未来的EDA 解决方案中发挥不可替代的作用。 CPLD/FPGA 设计越来越复杂,使用硬件描述语言设计可编程逻辑电路已经成为大势所趋,目前最主要的硬件描述语言是: VHDL(Very High Speed Integrated Circuit HDL)和 Verilog HDL。两种语言都已被确定为 IEEE 标准。 附:一个简单的 VHDL 的例子: (12位寄存器 ) nts江苏大学本科毕业论文 6 - VHDL Example - User-Defined Macrofunction library ieee use ieee.std_logic_1164_.all; ENTITY reg12 IS PORT(d : IN BIT_VECTOR(11 DOWNTO 0); clk : IN BIT; q : OUT BIT_VECTOR(11 DOWNTO 0); END reg12; ARCHITECTURE a OF reg12 IS BEGIN PROCESS BEGIN WAIT UNTIL clk = 1; q if(r1=1)and(cw=0)and(co=0)then encw if(cr=1)then state if(r2up=1)or(r3=1)or(r3up=1)or(r3down=1)or(r4=1)then state if(r2=1)or(r2up=1)or(r2down=1)and(r3=0)and(r3down=0)and(r3up=0)and(r4=0)nts江苏大学本科毕业论文 20 )and(cw=0)and(co=0)then encw if(r2=1)or(r2down=1)or(r2up=1)and(r1=0)and(cw=0)and(co=0)then encw if(r3up=1)or(r4=1)then state if(r3=1)or(r3up=1)or(r3down=1)and(r4=0)and(cw=0)and(co=0)then encw if(r3=1)or(r3down=1)or(r3up=1)and(r2=0)and(r2down=0)and(r2up=0)and(r1=0)and(cw=0)and(co=0)then encw if(r4=1)and(cw=0)and(co=0)then encw if(cr=1)then state=f3down;encr=0; end if; end case; end if; 在不同的状态输出不同的 BCD 码 ,显示楼层 if(state=f1stay)or(state=f1up)then floor=0001; elsif(state=f2stay)or(state=f2up)or(state=f2down)then floor=0010; elsif(state=f3stay)or(state=f3up)or(state=f3down)then floor=0011; elsif(state=f4stay)or(state=f4down)then floor=0100; end if; end process; 在不同的状态上、下行灯显示不同。 lightup=1when(state=f2up)or(state=f1up)or(state=f3up)else 0; lightdown=1when(state=f2down)or(state=f3down)or(state=f4down)else 0; end behaves; nts江苏大学本科毕业论文 23 第五章 小结 5.1设计的划分 对于一个 FPGA 的设计者来说,当刚拿到一个设计任务时先思考一下,考虑如何将我们的设计划分较小的,功能较接近的方块,由于是将大的设计划分成小的设计,因此这算是top-down design.当划分完后开始 coding 的工作,再做完 function simulation,将一个个方块在结合成完整的设计,这就是 botton-up design. 5.2设计的流程 (1)设计要求的定义; (2)用 VHDL 进行设计描述(系统描述与代码设 计); (3)源代码模拟; (4)设计综合,设计优化和设计的布局布线; (5)布局布线后的设计模块模拟; (6)器件编程。 上述六个步骤中, 1、 2 需要人工参与, 3-6 各步由计算机自动完成,整个设计过程在计算机上完成。用户充分利用套件资源,就可以设计完成并检验各种各样的具有一定规模的数字系统,从而达到掌握 CPLD 设计及 VHDL 语言的目的 5.3设计中需要注意的地方 在设计阶段应该尽量选用 SRAM Base 的 FPGA。虽然在设计阶段我们作了 function simulation 和 timing simulation,但是设计者用来做仿真的 testbench 不见得能包含电路上所有的情况。如果有例外情况发生,而使用的又是 ANTI-FUSE 的 FPGA,那么设计者的 FPGA就报销了。但如果使用 SRAM BASE 的 FPGA,只要重新 CONFIGURATION 一次就好了。即使已经使用 PROM 来做 CONFIGURATION,重刻一颗 PROM 的代价应该比重刻一颗FPGA 低的多。 结束语 本次毕业设计为期十五周,通过对电梯控制系统的设计了解了硬件描述语言 VHDL 的基本概况,它的广泛应用的原因,了解对于这种利用硬件语言编程在设计 阶段对设计进行模块划分的方法,了解了一个 VHDL设计的流程以及通过仿真软件的应用来验证设计的正确性 。同时还了解到 FPGA 的巨大应用和未来的前景。 nts江苏大学本科毕业论文 24 致谢 感谢韩晓茹老师在这次课程设计中给予我的大力支持和帮助。 参考文献 1 胡振华 VHDL 和 FPGA 设计中国铁道出版社 2 Stephen Brown, Zvonko Vranesic数字逻辑设计基础(英文版 )机械工业出版社 nts源程序和编码 开门等待计数器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity clockopen is port (clk:in std_logic; enco:in std_logic; co:out std_logic ); end clockopen; architecture clocko of clockopen is signal count:std_logic_vector(5 downto 0); begin process(clk) begin if(clkevent and clk=1)then if(enco=0)then co i1, clk= clk, sout= i1_t ); u12 : syncir port map( sin= i2, clk= clk, sout= i2_t ); u13 : syncir port map( sin= i3, clk= clk, sout= i3_t ); u14 : syncir port map( sin= i4, clk= clk, sout= i4_t ); u15 : syncir port map( sin= i1up, clk= clk, sout= i1up_t ); u16 : syncir port map( sin= i2up, clk= clk, sout= i2up_t ); u17 : syncir port map( nts sin= i3up, clk= clk, sout= i3up_t ); u18 : syncir port map( sin= i2down, clk= clk, sout= i2down_t ); u19 : syncir port map( sin= i3down, clk= clk, sout= i3down_t ); u10 : syncir port map( sin= i4down, clk= clk, sout= i4down_t ); u2 : inputs port map( start = start, clk = clk, i1 = i1_t, i1up = i1up_t, i2 = i2_t, i2up = i2up_t, i2down = i2down_t, i3 = i3_t, i3up = i3up_t, i3down = i3down_t, i4 = i4_t, i4down = i4down_t, reset1 = reset1, reset2 = reset2, reset2up = reset2up, reset2down= reset2down, nts reset3 = reset3, reset3up = reset3up, reset3down= reset3down, reset4 = reset4, r1 = r1, r2 = r2, r2down = r2down, r2up = r2up, r3 = r3, r3down = r3down, r3up = r3up, r4 = r4 ); u3 : center port map( clk = clk, start = start, r1 = r1, r2 = r2, r2down = r2down, r2up = r2up, r3 = r3, r3down = r3down, r3up = r3up, r4 = r4, co = co, cw = cw, cr = cr, enco = enco, encw = encw, encr = encr, reset1 = reset1, reset2 = reset2, reset2up = reset2up, reset2down= reset2down, reset3 = reset3, reset3up = reset3up, reset3down= reset3down, reset4 = reset4, lightopen1= o1, lightopen2= o2, lightopen3= o3, lightopen4= o4, nts lightup = up, lightdown = down, floor = floor_t ); u4 : clockopen port map( clk = clk, enco = enco, co = co ); u5 : clockrun port map( clk = clk, encr = encr, cr = cr ); u6 : clockwait port map( clk = clk, encw = encw, cw = cw ); u7 : floor port map( clk = clk, floor= floor_t, l1 = l1, l2 = l2, l3 = l3, l4 = l4 ); end Behavioral; 控制器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity center is port (clk:in std_logic; ntsstart:in std_logic; r1,r2,r2down,r2up,r3,r3down,r3up,r4:in std_logic; co:in std_logic; cw:in std_logic; cr:in std_logic; enco:out std_logic; encw:out std_logic; encr:out std_logic; reset1,reset2,reset2up,reset2down,reset3,reset3up,reset3down,reset4:out std_logic; lightopen1,lightopen2,lightopen3,lightopen4:out std_logic;-low v is avilable lightup,lightdown:out std_logic;-low v is avilable floor:out std_logic_vector(3 downto 0) ); end center; architecture behaves of center is type elevator_system is(f1stay,f1up,f2down,f2stay,f2up,f3down,f3stay,f3up,f4down,f4stay); signal state:elevator_system; begin process(clk,start) begin if(start=1)then state if(r1=1)and(cw=0)and(co=0)then ntsencw if(cr=1)then state if(r2up=1)or(r3=1)or(r3up=1)or(r3down=1)or(r4=1)then state if(r2=1)or(r2up=1)or(r2down=1)and(r3=0)and(r3down=0)and(r3up=0)and(r4=0)and(cw=0)and(co=0)then encw if(r2=1)or(r2down=1)or(r2up=1)and(r1=0)and(cw=0)and(co=0)then encw if(r3up=1)or(r4=1)then state if(r3=1)or(r3up=1)or(r3down=1)and(r4=0)and(cw=0)and(co=0)then encw if(r3=1)or(r3down=1)or(r3up=1)and(r2=0)and(r2down=0)and(r2up=0)and(r1=0)and(cw=0)and(co=0)then ntsencw if(r4=1)and(cw=0)and(co=0)then encw if(cr=1)then state=f3down;encr=0; end if; end case; end if; if(state=f1stay)or(state=f1up)then floor=0001; elsif(state=f2stay)or(state=f2up)or(state=f2down)then floor=0010; elsif(state=f3stay)or(state=f3up)or(state=f3down)then floor=0011; elsif(state=f4stay)or(state=f4down)then floor=0100; end if; ntsend process; lightup=1when(state=f2up)or(state=f1up)or(state=f3up)else 0; lightdown=1when(state=f2down)or(state=f3down)or(state=f4down)else 0; end behaves; nts 1 前言 这本书是关于逻辑电路的 计算机得以建立的电路。对逻辑电路正确的理解对今天的电力和电脑工程师都很重要。这些电路是计算机的关键组成部分同时使用于许多其他的应用。它们普遍的应用在生产的产品里,例如数字表,各种家用电器, CD播放机,电动游戏,还有在大型系统里面的,就像电话和电视网的设备。 书里的材料将会给读者介绍包含在逻辑电路设计里的许多讨论。它用简单的例子解释关键的思想同时展示如何从基本组成部分获得复杂电路。我们发现传统理论很大程度应用在逻辑电路的设计上因为它使读者对这种电路的本质有一个直接的理解。但是整本 书里我们同时阐明了逻辑电路设计的现代方法,即使用精密的电脑辅助设计硬件工具。在这本书里采用的 CAD 方法体系是基于称为 VHDL 的工业标准设计语言。用 VHDL 设计将在第二章首次介绍,在这本书里 VHDL和 CAD工具的使用是每一章的基本组成部分。 我们先在这里穿插介绍一下 VHDL的优点 . 以硬件描述语言从事设计工作 ,不需要考虑线路的布局 ,设计之初只需要一个好用的仿真软件即可 ,因此可降低设计时的复杂度。 硬件描述语言比较接近算法的推演 ,而画原理图的设计方法需由算法转换成硬件概念 ,在将硬件概念转化成一个个硬件单元 ,因 此硬件描述语言可减少设计周期 ,加快商品的上市时间 .譬如一个补码的转换电路 ,相信学过基本数字逻辑设计的人都知道 ,只要将等待转换数值的每一个位都反相 ,再将结果加 1即可 .但对于一个对数字设计不是很有经验的设计者 ,要以逻辑电路完成补码转换电路 ,相信必定要一段很长的时间才行。 硬件描述语言没有固定的目标器件 ,硬件描述语言可以用来做 ASIC,也可用来做 FPGA和 CPLD.但使用画原理图的设计方式 ,其使用的器件种类或厂商不同 ,就必须使用不同的LIBRARY(库 )来设计 .因此在选择目标器件方面 ,硬件描述语言的设计会有很 大的弹性。 逻辑电路是通过电子来实现完成的,在基本电路集成片上使用晶体管。用现代技术构造包含数以亿计晶体管的集成片是可能的。这种电路的基本构建模块是容易理解的。但是包含数以亿计晶体管的电路一点都不简单。逻辑电路的大尺寸带来的复杂性只有使用高度集成设计技术才能成功的被处理。在本章里我们将介绍这些技术,但首先我们简略的描述用来建立逻辑电路的硬件技术。 1.1数字硬件 nts 2 逻辑电路是用来构造计算机硬件的,同时可以构建许多其它类型的产品。所有这些产品大体的分类为数字硬件。名称之所以用数字的原因在书的后面将会清楚 它 是由信息出现在电脑上的方法获得,就像电信号对应于数字信息。在过去的四十年里用来构建数字硬件的技术已经有了很大的发展。直到 1960年逻辑电路由大量的零件组成,就像晶体管和各个部分的阻抗。组合电路的出现使得在一个简单的集成片上的放置许多的晶体管,组成一个完整电路。一开始这些电路上只有一些晶体管,但是随着技术的发展它们变大了。组合电路集成片在一个硅盘上制造,如图 1.1所展示的盘上 .这种现象,通常称为摩尔定律,一直延续到现在。因此早在 1990年初期微技术只能用几百万个晶体管构成,到了 1990年末期制造包含超过一千万 个晶体管的集成片已经成为可能。 摩尔定律预计至少在未来十年里仍然是正确的。就像 SIA 路图 1,这个估计预计能在一个基本电路集成片上制造的晶体管的最小尺寸。晶体管的尺寸由门列长度参数来测量,我们将在第三章对它进行讨论。在表 1.1 中给出了一个 SIA 路图的例子。在 1999,最小能被可靠制造的门列长度大约是 0.14微米。表的第一行指出最小门列长度预计到 2012年逐步降低到 0。 035微米。晶体管的尺寸决定在一个给定大小的集成片区域内能放置多少的晶体管,目前最多每平方厘米大概能放 140000000个晶体管。这个数字到 2012年预计要增加到一亿个。在当时最大的集成片尺寸预计每平方厘米 1300个;因此集成片每平方厘米包含 13亿是可能的!这项技术将对人们生活的各个方面产生重大影响是毫无疑问的。 数字硬件的设计者可能面临设计能在单个集成片上实施的逻辑电路,或者,很可能,设计包含大量放置在 PCB 上集成片的电路。通常,一些逻辑电路能在存在的集成片上实现是非常方便的。这种状况简化了设计任务缩短了开发最后产品需要的时间。再我们更详细的讨论设计过程之前,我们应先介绍可能用到的不同类型的基本逻辑集成片。 存在着许多各种能实施在设计数字硬件 时有用功能的集成片。集成片范围从具有小功能的简单集成片到非常复杂的集成片。例如,一个数字硬件产品 可能满足微处理器来实施一些学术操作,记忆集成片可以提供存储功能,同时接口集成片允许输入和输出设备的简单连接。这样的集成片来自不同的供应商是方便的。 对大多数数字硬件产品来说,从头开始设计和建立一些逻辑电路是必要的。要完成这些电路,三个主要类型的集成片可能用到:标准集成片,可编程逻辑器件,和普通集成片。这些将在下面讨论它。 nts 3 1.1.1标准集成片 大量的集成片在完成一些经常使用的逻辑电路方面是非常方便的。我们将这称 为标准集成片,因为它们通常遵守功能和物理构造方面一致达成的标准。每个标准集成片包含一部分子电路(一般包含少于 100个晶体管)同时执行一些简单的功能。为建立一个逻辑电路,设计者选择能实施需要的任何功能的集成片之后决定这些电路如何连接来实现一个更大的逻辑电路。 直到 1980 年早期用标准集成片来建立逻辑电路还是受欢迎的。然而,随着 基本 电路技术的发展,在 PCB 上用有价值的空间实现小功能的集成片是没有效率的。标准集成片的另一缺点是每一块集成片的功能是固定的不能改变。 1.1.2可编程逻辑器件 与具有固定功能的标准集成片 相反,可编程逻辑器件构造包含能被使用者配置来实现一个范围不同的逻辑子电路的集成片。这些集成片有一个大概的结构和包含有可编程,允许用各种不同方法在集成片内部子电路配置的选择功能的集合。设计者能实施任何特殊的通过选择一个合适的选择开关配置的需要的功能。这些选择功能由最后的使用者编程完成,要比制造好的集成片要好。这样的集成片一般称为可编程逻辑器件,我们将在第三章介绍它们。 大部分类型的 PLD能被无数次的编程。这个功能是有利的因为一个开发产品的原型的设计师能编辑一个 PLD来完成一些功能,但是随后,当原形硬件被测试, 要重新编辑 PLD来改正错误。重新编辑可能是必要的,例如,一个设计的功能不是本来所想要的或者需要在原先的设计里没有的新的功能。 PLD在一个大尺寸范围内是有效的。它们能用来实现比典型标准集成片能实现大的多的逻辑电路因为它们的尺寸和它们能被改变来满足特应用的需要,在现在 PLD被广泛的使用。众多的精密 PLD中的一种被称为 FPGA。包含超过 1亿个晶体管 FPGAS将很快会很方便。包含 1千万个晶体管的 FPGA集成片的图片展示在模块 1.2。由大量的小的逻辑电路元素构成的集成片,能被可编程选择开关连接在一起。逻辑电路元素以规 则的两面结构排列。 1.1.3惯例设计的集成片 PLDS作为能脱离整体从可不同供应者购买的器件。因为它们可以编辑,它们可用来完nts 4 成在数字硬件里发现的大部分的逻辑电路。然而, PLDS也有缺点就是可编程选择开关消耗有价值的集成片区域同时限制了完成电路操作的速度。因此在一些情况下 PLDS可能不能达到想要的结果或者浪费器件。在这种情况下从头设计一个集成片是可能的;也就是,先设计必须包含在集成片里的逻辑子电路然后选择合适的技术来完成集成片。最后,集成片由有制造设备的公司制造。这个方法称为惯例或者半习惯设计。这样的集成 片一般称为惯例或者半习惯集成片。这种集成片是打算用在特殊需要时有时称作特殊用途基本电路。 一个普通集成片的主要的优点是它的设计能做特殊的用途。因为它通常能达到一个更好的结果。在一个惯例集成片里包含的逻辑子电路比在其他类型的集成片里可能包含的 果他们投入生产在已经大量卖出的产品上,花费到每个集成片上的,估计总的生产的集成片的数量,可能比要实现同样功能需要的额外集成片总的花费要低。更进一步,如果一个简单的集成片可以替代复合的集成片来完成同样的功能,在最后的产品里的 PCB 上只需要更小的区域就可以构建集成片。这个结果使的费用大大降低了。 惯例设计方法的不利之处就是生成一个习惯集成片经常花费相当长的时间,以月 来计算。相反,如果 PLD 能被代替,集成片将由最后的使用者编程得到。这样就没有制造延迟包含在里面。 1.2设计过程 计算机基本工具的便利在于在各种大的设计环境里很大程度上影响了设计过程。例如,设计一个手机在大体上和设计一个火炉,计算机是相似的。如果最后的产品要满足特殊目的那在开发过程中要按照一定的步骤。我们将用最普通的方式介绍一个典型的开发过程开始。然后我们将重点放在特别的有关逻辑电路的设计方面。 在模块 1.3的流程图里描绘了一个典型的开发过程。我们假设这个过程是为了开发一个满足一定的预期目的的产品 。最明显的要求是产品必须功能正确,它一定满足实施的水平的要求,它的花费不能超过给定的指标。 过程由产品说明的定义开始。产品的本质特征是不同的,一个可接受估计实现的最后产品的特征的方法建立了。说明必须和确立开发的产品将满足总体上的期望紧密相连,但是不能是不必要的限制。 从一个完整说明的建立,定义一个整体的最初产品的设计的结构是必要的。这个过程很难自动完成。它必须有设计者自己完成。因为在开发产品的整个结构里它没有清除功能 nts 5 它需要相当的设计经验和直觉。 当大体结构建立之后, CAD工具被用来完成具体细节工作。许多 CAD工具是方便的。从那些帮助系统设计单个部分到允许整个系统的结构出现在计算机 上。当最初的设计完成之后,结果一定验证原来的说明。按惯例,在 CAD工具出现之前,这一步包含构建设计产品的一个物理模块。通常只包含主要部分。今天很少需要建立一个物理模块。 CAD 工具使设计者能仿真非常复杂的产品。这种仿真被用来决定获得的设计是否满足需要的产品规范。如果发生错误,就做合适的改变同时新设计的验证仍然需要重新。虽然一些缺点能通过仿真,但是大部分的问题都是通过这种方法检测的 当仿真表明设计正确。一个完整的产品物理模块建立了。 原型完全通过与说明相一致的检验。在验证时发现的所有问题都要改正。问题可能很小,它们经常能被直接在产品的原型上改动来消除。对于大的错误,重新设计产品和重复上面的步骤是必要的。当原型通过所有的检验,产品被认为成功的设计好了它就可以投入生产。 1.3数字硬件设计 我们以前对开发过程的讨论总的来说是相对的。模块 1.3列出的步骤是非常适用的。在我们讨论在这个开发环境里的整个的一系列步骤之前,我们应该先强调设计过程的内在本质。 1.3.1基本设计流程 在各种情况下任何设计过程包括基本的一系列实施任务。这个过程就如模块 1.4。假设我们有一个最初的关于我们在设计过程中应该获得什么的构思。第一步就是有一个最初的设计,下一步就是用人工仿真设计同时用已有的优秀 CAD工具帮助完成。为成功的完成仿真,拥有足够能被应用的仿真设计输入和之后最终能被测试得成品是必须的。运用这些输入条件,仿真设计者将试图验证设计产品。如果仿真出现一些问题,那么这些设计将被修改来克服这些问题。新的设计版本将再次通过验证来看问题是否被解决。这个过程直到仿真表明是个正确的设计才算完成。一个谨慎的设计者在设计中花费很多的努力来解决问题。甚至,一些错误在仿真过程中不可 能被发现。 1.3.2数字硬件单元设计 数字硬件产品包含拥有许多集成片和其他器件的一个或多个 PCB。这些产品的发展以nts 6 全面完整的结构定义开始。然后选择这些需要的基本电路集成片。如果被选择的集成片包含PLD或者惯例集成片。那么这些集成片在 PCB 标准设计之前完成。因为在单个集成片和电路模板上。组合电路的复杂性是很高的,所以利用好的 CAD工具是必不可少的。 如图 1.5 所示 PCB 例子。 PCB 是由多伦多大学设计的大型计算机系统的一部分,这台被称为 NUMACHINO4.5的计算机是减法器。这意味着它包含许多能 和在一起工作完成特殊任务的器件。图中的 PCB 包含一个器件集成片和许多记忆,支持集成片。在器件和系统的其他部分间需要复杂的逻辑电路来形成接口。大量的 PLD用来连接这些逻辑电路。 为了更仔细的阐明开发的流程,我们将考虑能生产一个可以在 PCB 上实施的数字硬件组合的步骤。这个硬件能被看作成一个非常复杂实施产品标准功能的逻辑电路。模块 1.6显示了设计流程,假设我们有一个限定了这个大型电路所期望的功能和主要性能的设计构思。 处理内在的复杂性的一套有序的方法就是将电路划分成小块,然后分别设计每个小快。将一个大任务分解成有 功能的许多小块,被称为分解成方法。每个小块的设计按照模块 1.4中列举的过程。每个块中的子被定义,需要使用到的集成片被选出。这个子电路的实施是仿真,需要做一些的必要的修改。 成功设计了所有的模块。各个块之间的接口需要被定义,它有效的将这些模块连接成一个独立的大的电路。仿真整个电路和改正一些错误是必要的。在遇到错误的情况下,回到以前就像流程图中路径 A, B 和 C 中阐明的步骤。一些错误可能由模块间不正确的连接引起 .在这些情况下 ,这些连接将被重新设计就像路径 C.一些块可能没有被正确设计就像路径 B,错误的块可能被重新设计 .另一种可能是在最初开始的时候将整个大电路分解成小块的步骤没做好 ,就像路径 B.这可
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。