毕业设计(论文)基于VHDL的8255并行接口芯片的设计_第1页
毕业设计(论文)基于VHDL的8255并行接口芯片的设计_第2页
毕业设计(论文)基于VHDL的8255并行接口芯片的设计_第3页
毕业设计(论文)基于VHDL的8255并行接口芯片的设计_第4页
毕业设计(论文)基于VHDL的8255并行接口芯片的设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 绪论当今是数字化的时代,数字技术的应用已渗透到人类生活的方方面面,信息、高速公路、多媒体电脑、移动电话、数字电视,各种自动化设备以及家用电器无不尽可能地采用了数字技术。凡是利用数字技术对信息进行存储、传输、处理的电子系统皆可称为数字系统。和模拟系统相比,数字系统具有以下特点:稳定性、精确性、可靠性和模块化。在数字化的道路上,电子设计技术的发展经历了,并将继续经历许多重大的变革飞跃。从应用ssi通用数字集成芯片构成的数字系统,到广泛应用mcu(微控制器或单片机),使数字系统的设计方法发生了具有里程碑意义的飞跃,这一飞跃不但克服了纯ssi数字系统许多不可逾跃的困难,同时也为数字电子设计技术的应

2、用开拓了更广阔的前景,它使得数字电子系统的智能化水平在广度和深度上发生了质的飞跃。数字系统设计技术的发展在很大程度上得益于器件和集成技术的发展,大规模可编程逻辑器件pld(programmable logic device)、现场可编程门阵列fpga(field programmable gate array)的出现、集成工艺和计算机技术的发展使得数字系统的设计理念、设计方法发生了深刻的变化。数字系统的设计历来存在两个分支,即系统硬件设计和系统软件设计。但是,以大规模集成电路为物质基础的eda(electronic design automation)技术终打破了软硬件之间的最后屏障,为数字系

3、统的硬件和软件的协同设计打下了良好的基础,即数字系统的硬件、软件设计可以在一开始就进行通盘考虑,进行早期仿真,大大提高了系统设计的效率。本课题提出的“基于vhdl的8255并行接口芯片的设计”技术将是计算机硬件技术的发展趋势。本课题在altera公司的quartus2开发环境下采用vhdl语言进行设计、编译综合、仿真,采用alera公司的acex 1k系列的ep1k10tc100-3 fpga芯片实现。2 vhdl语言及实现2.1 eda技术的发展因为eda技术丰富的内容以及电子技术各学科领域的相关性,其发展的历程同大规模集成电路设计技术、计算机辅助工程、可编程逻辑器件,以及电子设计技术和工艺

4、的发展是同步的。就过去近30年的电子技术的发展历程,可大致将eda技术的发展分为三个阶段:a) 20世纪70年代,集成电路制作方面,mos工艺已经得到广泛的应用。可编程逻辑技术及其器件已经问世,计算机作为一种运算工具已在科研领域得到广泛应用。而在后期,cad的概念已见雏形。这一阶段人们开始利用计算机取代手工劳动,辅助进行集成电路版图编辑、pcb布局布线等工作。b) 20世纪80年代,集成电路设计进入了cmos(互补场效应管)时代。复杂可编程逻辑器件已进入商业应用,相应的辅助设计软件也已投入使用.而在80年代末,出现了fpga(filed programmable gate array), ca

5、e和cad技术的应用更为广泛,它们在pcb设计方面的原理图输入、自动布局布线及pcb分析,以及逻辑设计、逻辑仿真、布尔方程综合和化简等方面担任了重要的角色,特别是各种硬件描述语言的出现、应用和标准化方面的重大进步,为电子设计自动化必须解决的电路建模、标准文当及仿真测试奠定了基础。c) 进入20世纪90年代,随着硬件描述语言的标准化得到进一步的确立,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得更加广泛的应用,与此同时电子技术在通信、计算机及家电产品生产中的市场需求和技术需求,极大地推动了全新的电子设计自动化技术的应用和发展。特别是集成电路设计工艺步入了超深亚微米阶段,百万门次以上的大规模

6、可编程逻辑期间的陆续面世,以及基于计算机技术的面向用户的低成本大规模asic设计技术的应用,促进了eda技术的形成。更为重要的是各eda公司致力于推出兼容各种硬件实现方案和支持准硬件描述语言的eda工具软件的研究,都有效地将eda技术推向成熟。eda技术在进入21世纪以后,得到了更大的发展,突出表现在以下几个方面:1)电子设计成果以自主知识产权的方式得以明确表达和确认成为可能。2)电子技术全方位纳入eda领域,除了口益成熟的数字技术外,传统的电路系统设计建模理念发生了重大的变化:软件无线电技术的崛起,模拟电路系统硬件描述语言的表达和设计的标准化,系统可编程模拟器件的出现,数字信号处理和图像处理

7、的全硬件实现方案普遍接受,软硬件技术的进一步融合等。3)在方针和设计两方面支持标准硬件描述语言的功能强大的eda软件不断推出。4)eda使得电子领域各学科的界限更加模糊,更加互为包容:模拟与数字、软件与硬件、系统与器件、asic与gpga、行为与结构等。5)更大规模的fpga和cpld器件的不断推出。6)基于eda工具的asic设计标准单元以涵盖了大规模电子系统及ip核模块。软硬件ip核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认。(ip即intellectual property,即知识产权的简称,往往指一个公司出售给另一个公司的硬件设计包)。7)soc高效低成本设计技术的成熟

8、。值得提出的是,世界个eda公司致力退出兼容各种硬件事先方案和支持标准硬件描述语言的eda工具软件,有效地将eda技术推向成熟。今天,eda技术已经成为电子设计的重要工具,无论是设计芯片还是设计系统,如果没有eda工具的支持,都将是难以完成的。eda工具已经成为电路设计师的重要武器,正在发挥着越来越重要的作用。2.2 vhdl概述2.2.1 vhdl的由来vhdl是very high speed integrated circuit hardware description language 的缩写,意思是非常高速集成电路的硬件描述语言,是hdl的一种,诞生于1982年。1987年底,vhdl

9、被ieee和美国国防部确认为标准硬件描述语言。自ieee公布了vhdl的标准版本,ieee-1076(简称87版)之后,各eda公司相继推出了自己的vhdl设计环境,或宣布自己的设计工具可以和vhdl接口。此后vhdl在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,ieee对vhdl进行了修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本,(简称93版)。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,已成为事实上的通用硬件描述

10、语言。这是一项诞生与由美国国防部所支持的研究计划,目的是为了把电子电路的设计意义以文字或文件的方式保存下来,以便他人能轻易地了解电路的设计意义。由于vhdl电路描述语言所能涵盖的范围很广,从asic的设计到pcb系统的设计,vhdl电路描述语言都能派上用场,所以vhdl语言毫无疑问地成为硬件设计工程师的必备工具。2.2.2 vhdl的特点vhdl主要用于描述数字系统的结构、行为、功能和接口。除了含有许多方面具有硬件特征的语句外,vhdl的语言形式和描述风格与句法十分类似与一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(

11、即端口)和内部(即设计实体的内部功能和算法完成部分)。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其它的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。具体特点如下:1)与其它的硬件描述语言相比,vhdl具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模集成电路的重要保证。2)vhdl丰富的仿真语言和库函数,使得在大规模集成电路设计的早期就能查验出设计系统的功能可行性,可随时对设计进行功能仿真、时序仿真,使设计者在设计初期就可以对整个工程设计的可行性做出

12、决策,从而缩短了设计周期,减少了研发成本。3)vhdl语句的行为描述能力和程序结构决定了它具有支持大规模集成电路设计的分解和对已有设计的再利用功能。重复利用他人的ip(intelligence property core)模块和软核(softcore)是vhdl的特色,设计不必各个都从头再来,只要在更高的层次上把ip模块利用起来,能达到事半功倍的效果。4)对于vhdl完成的一个确定的设计,可以利用eda工具(如quartus2)进行逻辑综合和优化,并自动把vhdl描述设计转换成门级网表。这种设计方式突破了传统门级设计中的瓶颈,极大地减少了电路设计的时间和错误发生率,降低了开发成本,缩短了设计周

13、期。5)vhdl对设计的描述具有相对的独立性,设计者可以不懂硬件的结构,也不必关心最终设计的目标器件是什么而进行独立的设计。正因为vhdl的硬件描述与具体的工艺和硬件结构无关,vhdl设计程序的硬件实现目标器件有广阔的选择范围。6)由于vhdl具有类属描述语句和子程序调用等功能,对于己完成的设计,在不改变源程序的前提下,只需改变类属参数或函数,就能改变设计的规模和结构。2.2.3 vhdl的描述风格在vhdl结构体中,可以用不同的描述方式或说是建模方法来表达,通常可归纳为行为描述、寄存器传输rtl(registers transfer language)描述和结构描述。1)行为描述 行为描述只

14、表示输入与输出间转换的行为,不包含任何结构信息。行为描述主要指顺序语句描述,既通常是指含有进程的非结构化的逻辑描述。2)rtl描述 也称为数据流描述,是以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。rtl描述是建立在用并行信号赋值语句(进程)基础上的,rtl描述能比较直观地表达底层逻辑行为。它既含有逻辑单元的结构信息,又隐含表示某种行为,rtl描述主要是指非结构化的并行语句描述。3)结构描述 结构描述是基于元件例化或生成语句的应用,表示元件间的互连,其风格最接近实际的硬件结构。2.2.4 vhdl的基本程序结构一个相对完整的vhdl设计由以下几个部分组成:1) 库、程序包;

15、2) 实体;3) 结构体;4) 配置;其各自作用如图2.1所示:vhdl设计 vhdl文件程序包(packages)声明在设计或实体中将用到的常数,数据类型,元件及子程序等实体(entities)声明到其他实体及其他设计的接口,即定义设计的输入/出端口。结构体(architecture)定义了实体的实现。即电路的具体描述。图2.1 vhdl基本程序结构以上四个部分并不是每一个vhdl程序都必须具备的,其中只有一个实体和一个与之对应的结构体是必须的。a) 实体实体(entity)是vhdl设计中最基本的一个组成部分,vhdl表达的所有设计均与实体有关。实体类似与原理图中的一个部件符号,它并不描述

16、设计的具体功能,只定义了该设计所需的全部输入输出信号。实体的语法格式如下:entity e_name isprot( p_name : prot_m data_type; p_name : port_mi data_type);end entity e_name;上式中,entity、is、port和end、entity都是描述实体的关键词,在实体描述中必须包含这些关键词。在编译中,关键词不分大写和小写。b) 结构体所有能被仿真的实体都有结构体(architecture)描述即结构体描述实体的结构或行为。在结构体描述中可采用行为描述、结构描述或数据流描述三种不同的描述方式,或称为建模方法,从不

17、同的侧面描述结构体的行为方式。在实际应用中,为了兼顾整个设计的功能、资源、性能几方面的因素,通常混合使用这三种描述方式。结构体的语法格式如下:architecture arch_name of e_name is说明语句begin(功能描述语句)end architecture arch_name;上式中,architecture、of、is、begin和end architecture都是描述结构体的关键词,在描述中必须包含它们。arch_name是结构体名,是标识符。说明语句包括在结构体中,用以说明和定义数据对象、数据类型、元件调用声明等。说明语句并非是必须的,(功能描述语句)则不同,结构

18、体中必须给出相应的电路功能描述语句,可以是并行语句,顺序语句或它们的混合。2.2.5 程序包(package)在vhdl语言中,数据类型、常量与子程序已在实体说明部分和结构体部分加以说明,而且实体说明部分所定义的类型、常量及子程序在相应的结构体中是可见的(可以被使用)。但是,在一个实体的说明部分与结构体部分中定义的数据类型、常量及子程序对于其它实体的说明部分与结构体部分是不可见的。程序包就是为了使用一组类型说明、常量说明和子程序说明对多个设计实体都成为可见的而提供的一种结构。程序包定义了一组数据类型说明、常量说明、元件说明和子程序说明它分包头和包体两部分。包头以保留字package开头,包体则

19、以package body识别。2.2.6 库(library)库是专门存放预先编好的程序包(package)的地方,这样它们就可以在其它设计中被调用。它实际上对应一个目录,预编译程序包的文件就放在此目录中。用户自建的库即为设计文件所在的目录,库名与目录名的对应关系可在编译软件中指定。2.2.7 vhdl运算符vhdl为构造计算数值的表达式提供了许多预定义算符。预定义算符可分为四种类型:算术运算符,关系运算符,逻辑运算符与连接运算符。算术运算符 + 加 减 * 乘 / 除* 乘方mod 求模 rem 求余 abs 求绝对值关系运算符 = 等于 /= 不等于 小于 大于 = 大于等于注:其中=操

20、作符也用于表示信号的赋值操作逻辑运算符 and 逻辑与 or 逻辑或not 逻辑非 nand 与非 nor 或非 xor 异或 xnor 同或并直运算符 & 用于将多个元素或矢量连接成新的矢量。2.2.8 vhdl数据对象在逻辑综合中,vhdl语言常用的数据对象为信号、常量、变量。1)信号(signal)用于声明内部信号,而非外部信号(外部信号对应为in, out, inout,buffer),其在元件之间起互联作用,可以赋值给外部信号。信号也可在状态机中表示状态变量。信号赋值符号为“=”。2)常量常量在设计描述中保持某一规定类型的特定值不变。利用它可设计不同模值的计数器,模值存于一常量中。常

21、量在定义时赋初值,赋值符号为“:=”。3)变量变量在给定的进程中用于声明局部值或用于子程序中。变量的赋值符号“:=”。2.2.9 vhdl常用语句vhdl常用语句分并行(concurrent)语句和顺序(sequential)语句:1)并行语句(concurrent):并行语句总是处于进程(process)的外部。所有并行语句都是并行执行的,即与它们出现的先后次序无关。如whenelse语句。2)顺序语句(sequential)顺序语句总是处于进程(process)的内部,并且从仿真的角度来看是顺序执行的。如if-then-else语句。进程(process)用于描述顺序(sequential

22、)事件并且包含在结构体中,一个结构体可以包含多个进程语句。以下为进程语句的构成:2.3 fpga概述fpga即现场可编程门阵列(field programmable gate array),fpga既具有门阵列器件的高度集成度和通用性,又有可编程器件用户可编程的灵活性。所谓现场可编程,指用户在自己的实验室编程。2.3.1 fpga结构fpga门阵列中的每一个节点放的不象cpld是单独的门,而是用门、触发器等做成的逻辑单元(cell),并在各个单元之间预先制作了许多连线,所谓编程,就是安排逻辑单元与这些连线之间的关系,依靠连接点的合理配置,实现各逻辑单元之间的互连。flex 10k系列是非常有代

23、表性的器件,它结合了可编程器件的灵活性,器件规模从10000门到250000门,系统时钟可达到204mhz,具有独特的逻辑实现结构嵌入式阵列eba(embedded array block)和逻辑阵列la(logic array)。2.3.2 基于fpga的数字集成电路设计过程基于fpga的设计流程图如图2.2所示: 1)设计输入设计输入就是设计者对逻辑器件的逻辑功能描述。设计输入通常采用图形输入和vhdl文本输入方式。在设计输入过程中,往往采用层次化设计方法,分模块、分层次地进行设计描述。描述器件总功能的模块放在最上层,称顶层设计;描述器件最基本功能的模块放在最低层,称低层设计;一般在顶层设

24、计中采用图形输入法来描述模块连接关系;在低层设计中采用hdl(vhdl、ahdl)文本输入法描述模块的逻辑功能。本设计的设计输入底层采用文本输入,而顶层采用图形输入。设计规则设计输入设计编译功能/时序仿真定时分析器件编程在线仿真形成产品设计修改图2.2 基于fpga/cpld的设计流程图2)项目编辑为完成对设计的处理,quartus提供了一个完全集成的编译器(compiler),可直接完成从网表提取到最后编程文件的生成。在编译过程中生成一系列标准文件可进行时序模拟、适配等。在编译过程中,若某个环节出错,编译器会停下来,并告诉错误的原因及位置,直到编译通过。3)项目校验完成对设计的功能、时序仿真

25、;进行时序分析、寄存器性能分析。4)项目编程将设计的项目下载/配置到所选择的器件(fpga)中。由fpga的设计流程可知,采用vhdl语言进行fpga设计或利用fpga进行asic前端设计的功能验证,主要工作是系统模块的划分、对各个模块rtl(registers transfer language)级可综合vhdl语言的描述、功能及时序的仿真,至此仅完成了系统软件上的仿真。由于仿真激励文件的不完善,所以时序仿真的通过并不代表加载到fpga片中的成功,只有真正通过了fpga的硬件调试,才是系统设计的真正成功。2.4 quartus概述altera公司的quartus开发系统是一个完全集成化、易学

26、易用的可编程逻辑设计环境,它可以在多种平台上运行。它所提供的灵活性和高效性是无可比拟的。它具有丰富的图形界面,辅之以完整的、即时访问的在线文档,使设计者能够轻松的使用去quartus软件包设计数字集成电路。它能够解决fpga/cpld开发过程中的编译、编辑、综合及仿真等内容,目前最高版本为quartus,是目前fpga/cpld开发工具中较为理想的综合、仿真软件,具有许多优良的特性。2.4.1 quartus的特点:1)开放的界面quartus软件可以与其它工业标准的设计输入、综合与校验工具相连接。目前quartus支持与candence、exemplarlogic、synopsys、synp

27、licity、viewlogic等其它公司所提供的eda工具接口。2)与结构无关quartus2系统的核心compiler支持altera公司的flex10k、flex8000、flex6000、max9000、max5000和classic可编程器件,提供了真正与结构无关的可编程设计环境。quartus的compiler还提供了强大的逻辑综合与优化功能,使用户比较容易地将起设计集成到器件中。3)完全集成化quartus软件的设计输入、处理与校验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短设计周期。4)丰富的设计库quartus提供了丰富的库单元,其中包括74系列的全部器件和多种

28、特殊的逻辑宏功能以及参数化的兆功能供设计者调用,大大减轻了设计者的工作量,缩短了设计周期。5)模块化工具设计者可以从各种设计输入、处理和校验选项中进行选择从而使设计环境用户化,必要时,还可以根据需要添加新功能。由于quartus支持多种器件,设计者不必学习新的工具就可支持新的结构。6)支持多种硬件描述语言quartus软件支持多种硬件描述语言设计输入选项,包括vhdl、veriloghdl和ahdl等语言。7)继承了max/+plus的优点图形输入依然形象,图形符号与max/+plus符号一样符合数字电路的特点,大量74系列器件符号使初学者能在较短的时间内利用图形编辑设计出需要的电路。文本输入

29、几乎与max/+plus相同,而且在文本的每一行都有行号,适用语言编写的电路清晰易读。底层编辑仍然采用chipview方式,引脚排列位置映射了实际器件引脚,只要简单的鼠标拖放即可完成底层编辑。8)支持的器件更多出了支持max3000、max7000、flex6000、flex10ke、acex1k等max+plus已支持的器件外,还支持pex20k、apex20k、apex、excalibur-arm、mercury、stratix等max+plus下无法支持的大容量高性能的器件。9)综合器的功能更强大quartus的环境下已经集成了sesign architect、design compil

30、er、epga compiler 、epga compiler、epga compileraltera edition、fpga express、leonard spectrum、lecnard spectrum、simlify、viewdraw等强有力的综合工具,是vhdl、verlog hdl编写的电路综合效果比max+plus有大幅度提高。当然,quartus也有它的不足之处,那就是软件结构庞大,适用复杂,不如max+plus简单,易学易用。2.4.2 配置要求为了使quartus软件的性能达到最佳,altera公司建议计算机的最低配置如下:1) cpu为pentium 400mhz以上

31、型号,512mb以上系统内存。2) dayu 200mb的安装quartus软件所需的最小硬盘空间。3) microsft windows nt4.0(service pack4以上)、windows2000以上。4) microsft windows兼容的svga显示器。5) cd-rom驱动器。6) 至少有下面的接口之一:应用byteblaster或byteblaster mv下载电缆的井口接口(lpt接口);用于masterblaster通信电缆的串行接口;用于usb-blaster下载电缆、masterblaster通信电缆以及apu(altera programming unit)的

32、usb接口(仅用于windows2000和windows xp)。7) microsoft ie以上浏览器。8) tcp/ip网络协议。3 可编程并行接口芯片8255背景知识intel 8255芯片是配合inter微处理器而设计的通用可编程并行i/o接口器件,它能把外围设备连到微型计算机总线上,通用性强,使用灵活,可以用程序来设置和改变芯片的工作方式,是一种典型的可编程并行接口芯片。8255共有三种模式:基本的输入/输出(方式0)、有选通的输入/输出(方式l)和双向总线输入/输出(方式2)。3.18255芯片的特性及外部信号8255并行1/0接口芯片具有如下特性:与mcs一85兼容。与ttl电

33、路完全兼容。与intel公司的微处理器完全兼容。改善了时序特性。直接复位/置位特性便于实现控制性接口。减少了器件数目。提高了直流驱动能力。可编程并行接口8255芯片的引脚如图3.1所示:图3.1 8255引脚图除了电源(vcc)和地(gnd)以外,其它引脚信号可分为两组:1)和外设一边相连的pa7-pa0。端口a的数据信号,根据工作方式a口可工作于输入、输出方式或双向方式。pb7-pb0。端口b的数据信号,根据工作方式b口可工作于输入或输出方式,但端口b不能工作在双向方式。pc7-pc0端口c的数据信号,根据工作方式c口的数据线可作为输入/输出线、控制线和状态线。2)和cpu一边相连的rese

34、t复位信号(高电平有效),复位后,a口、b口、c口均被自动设为输入方式,同时所有内部寄存器/锁存器都被清零。d7-d0双向数据总线,和系统数据总线相连,用来读/写数据和控制字。cs片选信号(低电平有效),只有当有效信号到来时,读信号rd和写信号wr才对8255有效。rd芯片读信号(低电平有效),当rd有效时,cpu可以从8255中读取输入数据和状态字。wr芯片写信号(低电平有效),当wr有效时,cpu可以往8255中写入控制字或数据。a1、a0端口选择线。8255内部有3个数据端口(a、b、c口)和1个控制端口,规定当a1、a0为00时,选中a口;为01时,选中b口;为10时,选中c口;为11

35、时,选中控制口。概括起来,8255的几个控制信号和传输动作之间的关系如下表所示:表3.1 8255控制信号和传输动作之间的关系a1a0/rd/wr/cs传输说明00010数据从端口a送数据总线01010数据从端口b送数据总线10010数据从端口c送数据总线00100数据从数据总线送端口a01100数据从数据总线送端口b10100数据从数据总线送端口c11100d7为1,则数据总线往控制字寄存器写入控制字xxxx1d7-d0进入高阻态xx110d7-d0进入高阻态3.2 可编程8255并行i/o口接口芯片内部结构8255内部结构如图3.2所示:图3.2 8255内部结构由图3.2可知,左边的信号

36、与cpu总线相连,而右边的信号与外部设备相连。a,b,c端口的输出都有锁存能力,而输入端口也有锁存能力。为了控制方便,3个端口a,b,c 分为两组,其中c端口折开,高4位pc7-pc4, 划归b组。低4位pc3pc0, 划归a组。a组和b组端口都分别由软件控制。3.3 可编程8255并行i/0芯片工作方式及控制字8255有3种工作方式:方式0、方式1和方式2。1)方式0方式o也叫基本的输入/输出方式,查询方式;a,b,c三个端口均可。在这种方式下,任何一个端口可作为输入口,也可作为输出口,各端口之间没有规定必然的关系。各个端口的输入或输出,可以有16种不同的组合,所以可使用于多种使用场合。2)

37、方式l方式1也叫选通的输入/输出方式,中断方式;a ,b,两个端口均可。和方式0相比,最重要的差别是a口和b口用方式1进行输入/输出传输时,要利用c口提供选通和应答信号,而这些信号与端口c中的数位之间有固定的对应关系,这种关系不是程序可以改变的,除非改变工作方式。3)方式2方式2也叫双向传输方式,这种方式只适用于a口,当a日工作在方式2时,端口c的高5位(pc7-pc3)自动配合端口a提供控制信号和状态信号。8255有很强的功能,其中不同的功能的实现是通过对控制器写不同的控制字来实现的。8255有两种控制字:方式控制字和c口位操作控制字。方式控制字8255方式控制字如表3.2所示:表3.2 8

38、255控制字格式d7d6d5d4d3d2d1d0功能控制位0:位操作1:方式选择a组方式00:方式001:方式11x:方式2控制a口高8位1:输入2:输出控制c口高4位1:输入2:输出b组方式0:方式o1:方式1控制b口8位1:输入2:输出控制c口低4位1:输入2:输出如果在设定a口为输入口,b口为输出口,c口的低4位输入,c口的高4位为输出,那么控制字的格式为91h。将该控制字写向控制寄存器,就会使8255处于设定的工作方式。c口位操作控制字此控制字的最高位为零,用来指定pc口的某一位(某个引脚)输出高电平或低电平。用此位作为软件开关将控制字写入不同的控制器。例如,当c作为输入口时,控制字为

39、0dh,将此值送控制寄存器地址就可以使pc6置1。如表3.3所示:表3.3 c端口控制字d7d6d5d4d3d2d1d0-特征位无关(写0)c口的位选择:000=pc0 100=pc4001=pc1 101=pc5010=pc2 110=pc6011=pc3 111=pc71=置位(高电平)2=复位(低电平)4 系统方案设计4.1 传统的系统硬件设计方法在eda(electronic design automation)出现以前,人们一直采用传统的硬件电路设计方法,这种设计的特点是:a) 自下而上(bottom-up)的设计方法自下而上的设计流程图如图4.1所示。从流程图可知,传统的硬件设计方

40、法是从选择具体器件开始的,并用这些器件进行逻辑设计,完成系统各个独立功能块的设计,再将各功能模块连接起来,完成整个系统的设计。上述过程从最底层开始设计,直到最高层的设计,所以这种设计方法称为自下而上的设计。系统划分、分解分解设计单元功能块设计子系统设计系统总成图4.1 自下而上的设计流程图b) 采用通用的逻辑器件在传统的设计中,设计者根据系统的要求,选择市场上能够买到的标准芯片。如:74/45系列(ttl)、4000/4500(coms)芯片等,采用“搭积木”式的方法进行设计,而这些芯片的功能是固定的,设计时几乎没有灵活性可言。c) 系统设计的后期进行仿真、调试在传统的设计方中,仿真和调试通常

41、只能在后期进行,因为仿真和调试的仪器一般为系统仿真器、示波器等,因此只有系统设计完成后才能仿真和调试。这样,在系统设计时存在的问题只有在后期才能发现。一旦考虑不周,修改很麻烦,甚至会前功尽弃,不得不重新设计系统,使设计的周期和成本都大大增加。d) 主要设计文件为电路图在用传统的设计方法对系统设计调试完后,所形成的硬件设计文件主要是由若干张电路图组成的文件。对于系统比较大的系统,这种电路图可能会有几千张、几万张,甚至几十万张,如此多的电路图对于归档、阅读、修改和使用都会带来许多麻烦。4.2 基于硬件描述言hdl的硬件设计方法随着大规模可编程逻辑器件pld、现场可编程门阵列fpga的出现和eda技

42、术的发展,基于fpga目标器件、利用vhdl硬件描述语言的系统设计称为设计的主流方向。利用vhdl进行系统设计的特点是: a) 自上而下(topdown)的设计方法基于eda技术的自上而下的设计方法,与传统的自下而上的设计方法正好相反,其步骤就是采用可完全独立于目标器件芯片物理结构的硬件描述语言,如vhdl,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术,在确保设计的可行性与正确的前提下,完成功能设计。然后利用eda工具(如quartus)的逻辑综合功能,把功能描述转换成某一具体目标器件芯片的网表文件,输出给该器件厂商的布局布线适配器,进行逻辑映射及布局布线,再利用

43、产生的仿真文件进行包括功能和时序的验证,以确保系统的功能。自上而下的设计流程图如图4.2所示:图4.2 自上而下的设计流程图从流程图可知,从总体设计到最终进行逻辑综合、形成网表为止,每一步都进行仿真,这样有利于尽早发现问题,从而使设计的成本和周期大大降低。这是用hdl语言设计硬件系统的最突出的优点之一。b) ip(intelleetual property)的使用和嵌入式模块的应用随着芯片规模的日益扩大、系统功能的日益复杂,特别是片上系统的出现,如果仍延续传统的设计方法,开发周期将会很长,设计的质量也会受到影,在此情况下,ip应运而生,人们可以将合适的ip软核(core)或其它形式的核,作为嵌

44、入式模块装在自己的设计中,方便而快捷地完成一个系统设计。c) 降低了设计难度用传统的设计方法,要求设计者在设计电路前要写出逻辑表达式或真值表或时序电路的状态表,这个过程相当繁杂,而采用hdl语言就可以使设计者免除编写逻辑表达式、真值表和状态表之苦。d) 主要设计文件是用hdl语言编写的源程序用hdl语言编写的源程序资料量小,易于归档。可继承性好,当设计其它电路时可以调用己设计好的程序,阅读性好。4.3 8255并行接口芯片的设计实现4.3.1 系统整体方案为了使设计的程序不太复杂,这里设计的模块仅使用于可编程并行接口的0工作模式,即基本的输入输出方式。由图3.2 8255内部结构图可知,该模块

45、应由3种逻辑电路构成:锁存器、组合逻辑电路、和三态缓冲器。1) 锁存器锁存器用于锁存数据。在8255的模块的结构中定义了7个锁存器,它们是:pa_latch: a口输出锁存器,8位;pb_latch: b口输出锁存器,8位;pcl_latch: c口低4位输出锁存器,4位;pch_latch: c口高4位输出锁存器,4位;ptrreg: 方式控制字寄存器;bctrreg: c口位控制字寄存器,4位;ctrregf: 选择标志寄存器,1位。当该标志寄存器为1时,数据存人方式控制字寄存器,当它为0时,该数据的低4位存人c口控制寄存器。2) 三态缓冲器在8255芯片中数据线d0d7,端口pa,pb,

46、pc都是双向的,因此,在设计该部分逻辑与外部接口时,必须是三态的,即这些引脚都应为三态双向引脚。3) 组合逻辑电路除上述两类电路外,余下的基本上是选择电路和译码电路。entity mode0_8255 isport(reset:in std_ulogic; - 复位信号rd:in std_ulogic; -读信号wr:in std_ulogic; -写信号cs:in std_ulogic; -片选信号a0:in std_ulogic; -选择端口a1:in std_ulogic; -选择端口pa: inout std_ulogic_vector(7 downto 0); - a口pb: ino

47、ut std_ulogic_vector(7 downto 0); - b口pcl: inout std_ulogic_vector(3 downto 0); - c口低4位pch: inout std_ulogic_vector(3 downto 0); - c口高4位databus: inout std_ulogic_vector(7 downto 0) - 与cpu数据接口);end mode0_8255;4.3.2 各模块的设计与实现可编程8255并行接口的各模块由6个进程描述,它们分别是读,写的进程和形成pa、pb、pc三态输出的三个进程。下面对该构造体详细说明。a) 构造体中各信号

48、定义1) 内部总线在构造体中定义了两条内部总线interal_bus_out 和internal_bus_in,所有8位。数据的输入或输出,在8255模块内部都是通过这两条总线实现的。architecture mode0 of mode0_8255 issignal internal_bus_out: std_ulogic_vector(7 downto 0); - 数据写入缓冲 signal internal_bus_in: std_ulogic_vector(7 downto 0); - 数据读入缓冲signal st,ad,flag: std_ulogic_vector(1 downto

49、 0);signal ctrreg: std_ulogic_vector(7 downto 0); - 控制寄存器signal pa_latch,pb_latch,pc_latch: std_ulogic_vector(7 downto 0); 2) 锁存器和寄存器输出构造体中信号pa_latch,pb_latch和pc_latch是8255模块中a口、b口及c口锁存器的输出。信号ctrreg是方式控制寄存器的输出。 pa_out:process(pa_latch) - a口锁存器数据输出到a口beginif(ctrl_reg(4) =0) then pa = (pa_latch);else

50、pa = zzzzzzzz;end if;end process;pb_outprocess(pb_latch) - b口锁存器数据输出到b口 beginif(ctrl_reg(1) =0) then pb = pb_latch;else pb = zzzzzzzz;end if;end process;pcl_out:process(pc_latch) - c口低4位begin if(ctrreg(0) =0) then pcl = pc_latch(3 downto 0); else pcl = zzzz; end if;end process;pch_out:process(pc_latch) - c口高4位 begin if(ctrreg(3)= 0) then pch = pc_latch(7 downto 4); else pch =zzzz; end if;end process;b) 写进程8255模块在方式0下写进程的流程图如图5.1所示。在写的进程最前面是将写8255时的最高数据位送标志寄存器保存,以便以后在判别是方式控制字还是位控制字时使用。这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论