计算机硬件课程设计指导-CPLD部分_第1页
计算机硬件课程设计指导-CPLD部分_第2页
计算机硬件课程设计指导-CPLD部分_第3页
计算机硬件课程设计指导-CPLD部分_第4页
计算机硬件课程设计指导-CPLD部分_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、硬件课程设计指导CPLD部分硬件课程设计-基于CPLD的模型机设计21 硬件基础知识一、CPLD简介具有固定输入和输出数目的任何组合逻辑函数可以在可编程只读存储器(PROM)中,以输出为输入的查找表方式来实现,许多实现组合逻辑的结构变型已从这一简单的概念引申出来,然而利用VISI的密度产生更通用的,能实现PCB板上几个简单PAL互连功能的器件是PAL/PROM这类范例的扩展,称为PAL构造的PLD,也就是说复杂可编程逻辑器件CPLD(Complex programmable logic devices)。它是随着半导体工艺不断完善、用户对器件集成度要求不断提高的形势下所发展起来的。CPLD是复

2、杂的PLD,专指那些集成规模大于1000门以上的可编程逻辑器件。传统的CPLD编程是在编程器上完成的,因为那里对CPLD编程需要较高的电压和较特殊的波型。然而,由于工艺的改进,对CPLD器件的编程可在其工作电压下进行。因此,可将CPLD芯片安装在系统中,在其工作环境下,依靠编程软件完成,这就是所谓在系统编程(In System Program)。具有在系统编程功能的CPLD芯片的每个I/O端口(pin)都有一个三态门和一个可配置的上拉电阻,正常工作时这些三态门处于选通状态,而上拉电阻根据设计要求连在引脚上或者不连。芯片上还有专供在系统编程使用的引脚,例如LATTICE公司的ispLSI1016

3、芯片上有5个这样的控制端ispEN、SDI、SDO、SCLK和RESET。它们可通过编程电缆与计算机并口相连,正常工作时ispEN加高电平,编程(通常称此过程为下载)时加低电平,此时所有I/Opin内的三态门处于断开状态。将芯片内部与周边电路的联系隔断,而每个IO单元中的触发器被串接起来,成了一个移位寄存器。在系统编程技术的出现,可以将器件先装配在系统板或目标板上,然后下载将要设计的电路,这样,就改变了CPLD器件先下载后装配的程式,避免了因多次拔插而损坏芯片引脚,方便了实验中的调试,加快了生产的进度,而且在不改变系统硬件结构的情况下,实现对系统的重构或升级。在试制新产品和学生实验等需要经常更

4、换芯片信息的场合,在系统编程最为适用。所以,现在的CPLD芯片几乎全部采用了在系统编程原理。二、在系统可编程器件简介1、在系统可编程特点在系统编程技术与传统编程技术的最大区别在于它不使用编程器,通过下载电缆与计算机相连,直接在用户自己设计的目标系统中或电路板上对PLD编程。这就打破了使用PLD必先编程后装配的惯例,而可以先装配后编程,成为产品后还可反复编程,是一种全新的设计方法,使生产维护和系统更新都发生了革命性的变化,开创了数字系统设计的新纪元。在系统编程技术的主要特点如下:(1)缩短了设计试制的周期,降低了试制成本。由于ISP技术可以在器件被焊接在电路板上的情况下对系统编程或重构,因而在设

5、计系统时,可以先制作电路板,然后再对ISP器件编程。若要改变设计时,无须改动元器件或电路板,只要通过相应的开发系统软件在数分钟内即可完成,虽然设计的是硬件,却像软件一样方便。(2)缩小了芯片的体积并简化生产流程。由于在系统编程器件集成度高,且可以先装配在电路板上后编程,从而省去了插拔带来的损伤,系统的可靠性更高,体积可以做得更小,引脚数可以做得更多。采用传统的PLC,系统生产必须通过标准逻辑编程器来进行人工编程,因而要有巾标签、入库、装配、测试等过程,如采用ISP技术,新器件从包装盒中取出即可安装在电路板上,完全清洁卫生了单个编程和标记等工序,各个器件的组态可以通过自动测试设备(ATE)、PC

6、或工作丫等今后任务平台,在最终板子测试时下载,简化了生产流程,节省了生产时间。(3)方便了系统的维护和升级。在制成产品装运以后,由于ISP技术所具有的独特特点,使得对系统的维护和现场升级只要用一台笔记本电脑和下载电缆就能实现,在信息技术迅速发展的今天,完全可以通过互联网或其他通信工具对远隔千里的用户系统进行硬件版本升级换代。(4)提高系统的可测试性,啬系统的可靠性。随着系统板上元器件、芯片密度以及I/O口数量的增加,测试电路板上关键节点的难度就越来越大。可以把诊断用的测试模式暂时编程到ISP器件中,以毫无遗漏的方式运行电路板上的各项功能。此外,利用可编程数字开关,还可以测试环境中把编程信号引导

7、到所需部位,来进一眇强化板级的测试。采用边界扫描测试后,通过测试传输口将原告用歀测试方法无法接触的关键节点用环路串接起来,大大简化了现场诊断与测试过程,更进一步提高了整修系统的质量,同时使测试成本下降。由于ISP技术的一系列的优点,以及它缎带用户所带来的时间和经济效益,使得它的应用越来越广。可以预测,不严的硬件系统将越来越多针使用ISP器件,各种中、小规模的专用集成芯片都将逐渐被淘汰,人们再也不用为系统的升级而担心硬件设备的报废。在将来,系统设计者将需要接受新的思想去开发硬件,要考虑整个板子将能被重组,以适应任何应用。配件不再是“凝固不变”的,ISP器件的采用将使硬件设计更具有通用的组态,通过

8、在系统可编程逻辑和组件的互联,将获得它们的“个性”。ISP器件广泛的应用前景以及强大的生命力使我们能够确信,真正的可编程系统的新时代不久将会到来。2、在系统可编程器件简介ispLSI1032和ispLSI1032E有32个GLB。每个GLB有18个输入,一个可编程与/或/异或阵列,4个可以重组为组合型或寄存型的输出。进入GLB的信号可以来自全局布线区(GRP),也可以直接输入。GLB的所有输出都进入GRP,以便能同器件上的其他GLB相连接。ispLSI1000E器件是ispLSI1000器件的功能增强型,除1000E系列每个器件具有两个新的全局输出使能引脚(1016B仅一个)和编程输出转换速率

9、(slew rate)控制外,它们的结构是类似的。ispLSI1032E都有64个I/O单元,每一单元对应一个I/O脚。每个I/O单元可以独立编程为组合输入、寄存输入、锁存输入、输出或带有三态控制的双向I/O脚。另外,所有输出可选择有源高电平或低电平极性。信号电平与TTL电压兼容,输出能驱动4mA源电流或8mA吸收电流。每16个I/O单元成为一组,每组都要通过ORP与一个巨型块(Megablock)相连接。8个GLB、16个I/O单元、1个ORP和2个专用输入被连接在一起构成一个巨型块。8个GLB的输出通过ORP与16个通用I/O单元为一组连起来。每个巨型块共享一个输出使能信号。ispLSI1

10、032E各有4个巨型块。全局布线区(GRP)的输入来自所有GLB的输出以及双向I/O单元所有的输入。这些信号有效地构成了GLBS的输入。器件内的时钟通过时钟分配网络(CDN)选择。专用时钟引脚(Y0、Y1、Y2和Y3)进入分配网络,而5个输出(CLK0、CLK1、CLK2、IOCLK0和IOCLK1)连到GLBs和各I/O单元的时钟线路上。时钟分配网络也能被专用GLB(如ispLSI1032和1032E中的C0)驱动。这个专用GLB的逻辑允许设计者产生一个由器件内部信号组合的内部时钟。除增加了可选择的全局输出使能GOE引脚外,ispLSI1000E系列与ispLSI1000系列功能是完全相同的

11、。ispLSI1016E有一个GOE选择引脚,而其余ispLSI1000E系列器件有两个GOE。在ispLSI1016E、ispLSI1024E和ispLSI1032E中,这些引脚与专用输入脚是复用的。(1)通用逻辑块通用逻辑块(GLB)包括18个输入、4个输出,并能完成大多数标准逻辑功能,是Lattice Semiconductor Corporation(LSC)高密度ispLSI器件的标准逻辑块。GLB的内部逻辑可以分为4个独立部分:与阵列、乘积项共享阵列(PTSAProduct TermSharing Array)、可重构寄存器以及功能控制。与阵列包括20个乘积项,它基本上可以产生GL

12、B18个输入的任何逻辑和。16个来自全局布线区(GRP)的输入,或者外部I/O单元,或者任一个GLB的反馈信号。剩余的两个输入直接来自两个专用输入引脚。这些信号可以对乘积项的补码形式和逻辑真进行更有效的布尔逻辑化简。4个带有一个异或门输入的D型触发器组成可重构寄存器。GLB中的异或门能作为一个逻辑元件或重构D型触发器以仿真JK触发器或T型触发器,简化了计算器、比较器和ALU类功能的设计。如果设计者只需要一个组合输出,寄存器可以被旁路。每一个寄存器输出送回GRP,并且经ORP引到I/O单元。当使用了4个乘积项旁路时,重构寄存器失效。乘积项共享阵列可以类似现场可编程FPGA器件那样共享乘积项,还能

13、用一个旁路电路给每一个输出提供4个乘积项,以提高该单元的性能。控制功能提供控制GLB输出操作的各种信号。寄存器时钟可以来自时钟分配网络的三个时钟源或者GLB内部的乘积项。GLB的复位信号可以来自全局复位引脚。全局复位引脚总是被连接并与PT复位形成逻辑“或”的关系。有效的复位信号总是把寄存器的Q位置为逻辑0状态。与GLB有关的I/O单元的输出使能来自该块内的乘积项。对于控制功能来说,使用一个乘积项会使该乘积项作为一个逻辑项失效。(2)巨型块一个巨型块由8个GLB、1个输出布线区、16个I/O单元、2个专用输入和1个公共乘积项OE组成。ispLSI1000系列的不同成员的单个器件由1个到6个巨型块

14、组合而成。对ispLSI1000系列,巨型块内的8个GLB共享两个专用输入引脚。这些专用输入引脚对任何其他巨型块中的GLB是无效的。这些引脚仅是专用的输入而且是由软件自动指定的。由于在巨型块内的逻辑共享,共享公共功能的各种信号都是在同一个巨型块内被分组。因此设计者获得逻辑在器件内的最佳利用,并且可以有效的消除布线瓶颈。(3)IO单元IO单元是引导输入、输出或双向信号线与I/O引脚相连的单元。一个逻辑输入来自输出布线区(ORP),另一个来自较快的ORP旁路。一对多路转换器选择应该使用哪些信号以及信号的极性。I/O单元的输出使能受每个巨型块中产生的OE信号的控制。正如数据通路一样,多路转换器选择信

15、号的极性。当输出引脚需要时,输出使能可被置为逻辑高电平(即允许),当输入引脚需要时,被置为逻辑低电平(即禁止)。全局复位信号通过芯片复位引脚的有效低电平驱动。这个复位总是连接到所有的GLB和I/O寄存器。每个I/O单元可以独立选择两个时钟信号(IOCLK0或IOCLK1)中的一个。时钟信号可以由时钟分配网络产生。I/O单元可以被配置为输入、输出、三态输出或双向I/O。通过多路转换器可以实现这三种不同功能的选择。D型寄存器可以被配置为一个电平触发透明锁存器或一个边缘触发的触发器,以存储新来的数据。当I/O引脚没有被连接时,该引脚自动采用一个有源上拉电阻。通过选择可使有源上拉电阻所有引脚,有利于消

16、除噪声,减小器件的Icc。(4)输出使能控制在每一个GLB内利用OE乘积项PT(PT19)都可以产生OE信号。因此,巨型块中有一个OE信号被连接到该巨型块包括的所有I/O单元。这个OE信号可同时控制所有16个以三态模式使用的I/O单元。各个I/O单元也可以单独控制作为永久允许或禁止的输出缓冲器(参考I/O单元部分)。每一个巨型块以三态工作,仅允许一个OE信号。这种方式的优点是,输出使能信号可以在巨型块内的任何GLB内产生,而该巨型块中正好有一个未用的OE乘积项,使其他输出使能乘积项释放出来用作逻辑。ispLSI1000E和ispLSI1048E器件也有可选择的全局输出使能GOE。ispLSI1

17、016E、ispLSI1024E、ispLSI1032E器件GOE与专用输入复用。(5)输出布线区输出布线区(ORP)作用是引导各种信号从GLB输出到配置为输出或双向管脚的I/O单元。设置输出布线区的目的是为了更灵活地确定I/O引脚。它也简化了布线软件的工作量,增加了利用率。一个GLB输出可连接到4个I/O单元的其中之一。使用乘积项共享阵列(PTSA)会带来更大的灵活性,使GLB输出可以完全互换,这样的结构使布线程序能自由地互换输出以获得最好的布线率。这是一个自动处理过程,不需要设计者的介入。输出布线区旁路连接进一步增强了器件的适应性。ORP旁路以较快的速度连接指定的GLB输出到指定的I/O单

18、元。旁路路径制约了设备的布线率,只能为特殊信号使用。(6)输入布线器件内的信号输入以两种方式处理:器件内的每个I/O单元将其输入直接连到全局布线区(GRP),使器件内的每一个GLB能选取每个I/O单元输入。每个巨型块有两个专用的输入与巨型块内的8个GLB直接相连。(7)全局布线区全局布线区(GRP)以完备的连接提供了快速、可预设的速度,是专有的互联结构。GRP允许来自GLB的输出或I/O单元的输入与GLB的输入连接。任何GLB的输出都可以作为其他GLB的输入;同样,来自I/O引脚的一个输入可作所有GLB的任一输入。由于ispLSI器件的相同构造,通过GRP的延时是一致的和可预知的,然而,延时会

19、受到GLB的轻微影响。(8)时钟分配网络时钟分配网络(CDN)共产生5个全局误:CLK0、CLK1、CLK2、IOCLK0和IOCLK1。IOCLK0和IOCLK1信号用来给器件内的所有I/O单元计时。CLK0、CLK1和CLK2用来给器件内的所有GLB计时。器件有4个专用的系统时钟(Y0、Y1、Y2、Y3),对于ISPLSI1016有3个(Y0、Y1、Y2),通过时钟分配网络,这些系统时钟引脚可直接分给任何GLB或任何I/O单元。时钟分配网络的其他输入是专用时钟GLB(对ISPLSI1032为“CO”)的4个输出。这些时钟GLB的输出可用来生成一个设计者自定义的内部时钟配置。如,时钟GLB可

20、以利用外部主时钟引脚Y0连接到全局时钟信号CLK0进行计时。时钟GLB的输出可依次产生一个CLK0的“分频”信号,它可连接到CLK1、CLK2、IOCLK0或IOCLK1全局时钟线上。所有GLB都可以利用时钟乘积项PT(PT12)产生它们自己的异步时钟。在所有的GLB中,CLK0、CLK1和CLK2加到它们对应的时钟MUX输入。两个I/O时钟IOCLK0和IOCLK1是在时钟分配网络内产生的。并被加到所有I/O单元,设计者可以利用两者之一对I/O单元编程。(9)定时模型通过器件决定定时的任务非常简单。只需决定数据期望遵循的路径,然后把不同的延时加起来。定时模型(TM)中每个环节的延时各用一个号

21、码代表,查Lattice相应器件的数据手册,找到这些号码对应的延时量,就能求出总延时,也就可以由此决定通过器件取送数据的时间。3、ispLSI1032和ispLSI1048结构图22 硬件描述语言及设计软件2.2.1 ABEL语言简介ABELHDL语言是一种层次结构的逻辑描述语言,由美国DATAI/O公司研制开发,目前被广泛应用于可编程逻辑电路设计。ABELHDL语言也能够通过标准形式文件转换后在其它开发环境中使用。用ABELHDL语言进行设计,可以很少去关心或不去关心器件的内部结构,并且设计可以通过模拟得到验证,大大缩短了设计周期,降低了设计成本,提高了设计效率和成功率,受到电子设计工程技术

22、人员的重视和欢迎。ABELHDL语言支持多种输入形式,包括逻辑方程、状态图和真傎表等。ABELHDL语言设计文件是ASC11格式的文本文件,叫作ABELHDL源文件。用ABELHDL语言来设计,其基本单位是模块,一项设计可以是一个模块,也可以是多个模块。如果一项设计包含多个模块,则按照层次结构将它们组织起来。顶层的模块只有一个,它描述设计的总体轮廓,其它低层的模块详细描述顶层模块中包含的各子功能块,层次数不受限制。一项设计的所有模块,可以包含在一个文件中,也可以包含在几个文件中。这些模块经过编译、优化、连接、模拟、器件适配等步骤,生成一个JEDEC格式的文件。最后将JEDEC文件下载到器件中,

23、就完成了对器件的编程。一、 ABEL语言的基本语法1标识符与关键字标识符用来表示标识器件名称、器件引脚名称、输入或输出信号的名称、状态名称、集合名称、常量、变量及模块名称等。标识符必须以英文字母或下划线“ ”开始,其后可跟数字、英文字母、波浪线“”和下划线“ ”,标识符最长不得超过31个字符;标识符不能使用空格,单词中的分隔需用下划线;标识符与字母的大小写有关。如En和en是两个不同的标识符。关键字是一些具有特殊用途的保留标识符。关键字不得用来给器件、引脚、节点、常量、集合、宏或信号命名。关键字不分大、小写,可以用大写、小写或大小写混合方式输入,它们表示的含义相同。表2-1ABEL语言的关键字

24、关键字功能说明Async_reset异步复位状态描述语句Case-Endcase条件选择语句Cycle周期关键字Declarations说明段关键字Device器件说明语句End模块结束语句Equations逻辑方程关键字Function_block功能模块说明语句Fuses熔丝状态说明语句Goto无条件转移语句If-Then-Else条件转移语句(只能用在状态图输入)Interface功能模块接口语句Istype属性说明语句Library库引用语句Macro宏说明语句Module模块开始语句Node节点说明语句Options控制选项定义语句Pin引脚说明语句Property特征说明语句Sta

25、te状态说明语句State_diagram状态图关键字State_register状态寄存器说明语句Sync_reset同步复位状态描述语句Test_vectors测试向量Title标题语句Trace跟踪选项关键字Truth_table真值表关键字Wait等待关键字When-Then-Else条件转移语句(只能用在方程中)With转移方程语句Xor_factors异或因子关键字2 专用常量专用常量字母可以用大写或者小写字母输入,表示的含义相同。表示方法是在英文字母的左下方及右下方各加一个圆点。专用常量可用于赋值、真值表和测试向量中。如果将专用常量赋值给一个标识符,那么该标识符在整个模块中都代表

26、该常量,如X.X.;则X代表任意态。表2-2专用常量常 量说 明.C. 时钟输入(低电平高电平低电平转换).D. 脉冲下降沿(高电平低电平转换).F. 悬浮的输入或输出信号.K. 时钟输入(高电平低电平高电平转换).P. 寄存器预置数.SVn.N2-9,驱动输入到超级电平2-9.U. 时钟上升沿(低电平高电平转换).X. 任意值.Z. 三态值3注释用户可用两种方式进行注释:(1) 用一对双引号 括起来或用双引号开始,以行的末尾来结束。(2) 用一双斜杠/开始,以行的末尾来结束。4数ABELHDL中所有数值在计算机中都是以128位的形式存储,因而合法数值应在0到21281之间。数有五种表示形式:

27、(1) b,o,d及h(或B,O,D及H)表示,d可以省略不写。(2) 可以用英文字母的字符串表示数, 如:A= h41,AE= h4145。表2-3数制表示数制名基数符号举例二进制2bb1011八进制8oo13十进制10d(缺省)d11(11)十六进制16hhb5运算符和逻辑表达式(1)算术运算符表2-4算术运算符运算符表达式举例说 明运算优先级A求二进制补码1AB减3AB加3下述运算符不支持集合运算*A*B乘2/A/B无符号整除2%A%B取模:无符号数整除的余数2AABA右移B位2注意:(1)符号“”当在一个数的前面时,表示对这个数取二进制补码;当在两个数之间时表示两个数相减。(2)除法是

28、无符号整数除法,结果是整数,余数可通过取模得到。(3)移位运算是逻辑无符号移位,移位运算时用“0”来补缺位。(2)逻辑运算符表2-5逻辑运算符运算符表达式举例说 明运算优先级!!A非1&A&B与2#A#B或3$A$B异或3!$A!$B异或非(同或)3(3)关系运算符表2-6关系运算符运算符表达式举例说 明运算优先级= =A= =B等于4!=A!=B不等于4AB小于4=AAB大于4=A=B大于或等于4注意:运算的结果是逻辑值真1或逻辑假0,逻辑真在计算机内部以“1”表示,即128位置全1,逻辑假128位置全0。所有的关系运算都是无符号运算。如“12”的值为真,因为1的补码是128位均为1的二进制

29、数。由于关系运算符的优先级比较低,使用时用圆括号来保证它所处的位置。如(AB)C,如不加圆括号,则相当于A(BC)。(4)赋值运算符表2-7赋值运算符运算符举例说明=A=B组合型确定态赋值 (把B的值立即赋给A,没有时延): =A: =B寄存器型确定态赋值 (在下一个时钟脉冲有效沿来后,把B的值赋予A)?=A?=B组合型任意态赋值?:=A?:=B寄存器型任意态赋值注意:在使用点扩展名时用和?=来赋值。:=和?:=只能用于写引脚到引脚的寄存器方程中。使用任意态赋值时,要用指示字DCSET设置,或用属性定义ISTYPE指定“DC”属性,以表明未指定逻辑是任意态,否则?=和?:=逻辑方程将被忽略。如

30、DCSETFA!B!ABF?=!A!B;6块块是括在大括号“”内的一段ASCII码文本,括号内的文本可以是一行,也可以是多行。块用于逻辑方程、状态图、宏定义和标识符中,块可以嵌套使用,即块中包含块。例: WHEN (Mode = = S_Data) THEN Out_data := S_in; S_Valid := 1; ELSE WHEN (Mode = = T_Data) THEN Out_data := T_in; T_Valid := 1; 7集合集合是作为一个整体参与运算的一组信号或常量。它采用一个标识符,用方括号内的一组信号或常量表示,其中的每一个信号或常量称为集合的元素。例1:A

31、ddr = A7, A6, A5, A4,A3,A2,A1,A0; 为枚举法Addr = A7 . A0; 为界限符法Addr = A7 . A2,A1,A0; 为两种方法的组合 例2:集合的赋值设集合AA1,A2,A3,若A1,0,1,则等效于A11,A20,A31,也可以表示为A5若 A1,A2,A32,则等效于A10,A21,A30用于集合赋值或比较的数要转换成二进制形式,并遵从以下规则: 如果二进制数的有效位多于集合中元素的个数,要从左边截去多余的位。 如果二进制位的有效位少于集合中的元素个数,要从左边用0补齐缺少的位。 单个信号对集合赋值时,则用此信号对每个元素赋值。如:c,d=a,

32、则 c=a,d=a;c,d=a&b, 则 c=a&b,d=a&b二、ABEL源文件的基本结构逻辑关系描述部分(三者取一或其任意组合)说明部分module模块名; 模块开始title 标题说明 Declarations器件名 device 器件的工业标号 ;低层模块名INTERFACE(输入输出);例化名FUNCTIONLBLOCK低层模块名;信号名, 信号名 pin 引脚号, 引脚号 istype 属性 ;信号名, 信号名 node istype 属性 ;常量说明语句;集合的定义;宏定义语句;equations逻辑方程;truth-table(输入变量 输出变量) 真值表;state-diag

33、ram(状态变量) 状态图描述;测试向量部分test-vectors(输入变量 输出变量) 测试向量表;end 模块名 ; 模块结束MODULE低层模块名上面带有方括号的可根据需要选择,不是每个程序中都必须有的。如果在引脚和节点的说明中没有指明属性,则表明属性为com。下面是一个完整描述可逆十进制计数器的ABEL程序可逆十进制计数器可作加法计数器,又可作减法计数器,设计要求:使能端EN,低电平有效。加、减法计数选择信号M,M0时,加法计数;M1时,减法计数。进位信号CO,借位信号CI,输出Q3Q0,高位为Q3。MODULEcounterTitle ADD and SUB changeable

34、counterCLK,EN,M PIN;Q3.Q0,CI,CO PIN ISTYPE REG;C,X,Z,P=.C.,.X.,.Z.,.P.;Q=Q3.Q0;EQUATIONSQ.CLK=CLK;Q.OE=!EN;CI.CLK=CLK;CO.CLK=CLK;CI.OE=!EN;CO.OE=!EN;WHEN(M=0)&(Q=0)&(Q0)&(QQ,CI,CO)1,X,X-X,X,X;0,X,P-0,0,0;REPEAT 110,0,C-X,X,X;REPEAT 110,1,C-X,X,X;END1.信号属性的说明:用ISTYPE语句定义信号属性。它可以在节点或引脚说明语句中使用,也可以单独使用。

35、单独使用时须放在引脚或节点说明语句之后。属性规定了器件结构或信号的限制。输入信号不指定属性,输出信号有属性,缺省的属性为COM。某些属性与器件结构有关,另一些则与器件结构无关。由于ABELHDL是与器件无关的通用语言,若不规定信号属性或者其他信息(如点扩展名),则设计从一种器件移植到另一种器件时,可能工作不正常。要求信号的属性并不意味着设计必须总是指定一个特定器件。如果设计不使用与器件结构有关的属性,则设计适用的范围广。使用与器件结构有关的属性越多,适合该设计的器件种类就越受限制。当然,在针对某些特定器件进行设计时,使用属性可以更精确地描述电路的行为,排除模棱两可的情况。表2-8 引脚、节点属

36、性表属性与结构无关意 义buffer目标器件中寄存器输出到引脚输出之间无反相器collapse优化时此信号可能去掉com组合输出dc未指定的逻辑为任意态invert目标器件中寄存器输出到引脚输出之间有反相器keep不将此信号从方程式中简化掉neg未规定的逻辑为0pos未规定的逻辑为1retain不对输出进行最小化优化,保留冗余乘积项reg寄存器型输出reg_g钟控D触发器reg_dD型触发器JK型触发器reg_jkreg_srSR型触发器reg_tT型触发器xor目标器件中的异或门表中neg,pos,dc这三个属性是互斥的,在属性说明中只能使用其中的一个。2.点扩展名主要用于寄存器逻辑方程中,

37、它说明了寄存器引脚的性质。表2-9ABEL的点后缀点扩展名与结构无关意 义.ACLR异步复位.AP异步寄存器预置位.AR异步寄存器复位.ASET异步置位.CE钟控触发器时钟使能端.CLK边沿触发器的时钟.CLR同步复位.COM组合反馈.DD触发器的D端.FB寄存器反馈.FC触发模式控制.JJK触发器的J端.KJK触发器的K端.LD锁存器的D端.LE锁存器锁存使能端.LH锁存器锁存使能(H)端.OE输出使能.PIN引脚反馈.PR寄存器预置位.Q寄存器输出.RRS触发器R端.RE寄存器复位.SRS触发器S端.SET同步置位.SP同步寄存器预置位.SR同步寄存器复位.TT触发器T端3.真值表描述真值

38、表用表格的形式直观地说明不同输入下的逻辑输出。真值表可用于组合电路也可用于时序电路。格式:TRUTHTABEL(输入-输出)输入-输出;.或TRUTHTABEL(输入:寄存器输出)输入:寄存器输出;.或TRUTHTABEL(输入:寄存器输出-输出)输入:寄存器输出-输出;.其中:(1)-表示输入与输出关系为组合型;(2):表示输入与输出关系为寄存型;例:状态机有四个状态和一个输出,集合A,B代表当前状态,集合C,D表示下一个状态,E是一个简单组合型输出。该状态机工作时,在各个不同状态间循环。TRUTHTABEL(A,B:C,D-E)0,0:0,1-1;0,1:1,0-0;1,0:1,1-1;1

39、,1:0,0-1;4.状态图描述状态图十分适合用来设计时序电路中的状态机,利用状态图可以设计复杂的时序逻辑。状态图首先用关键词STATEDIAGRAM定义一个状态机,状态机的工作过程由IFTHENELSE、CASE和GOTO语句定义。(1)STATEDIAGRAM状态图语句格式:STATEDIAGRAM状态寄存器-状态输出STATE状态表达式:方程;方程;.;状态转移语句;STATEDIAGRAM结构定义了一个状态机,状态寄存器定义状态机的当前状态,它由状态表达式定义的某一状态开始运行,其输出由状态表达式后的方程给出,在下一个时钟之后执行转移语句,使状态机转移到下一个状态。方程为可选项,每一状

40、态必须包含转移语句。(2)转移语句无条件转移语句GOTO格式:GOTO状态表达式;无条件转移到下一个状态,后面可跟WITH语句。例:STATES0:YY1;GOTOS1;条件转移语句IFTHENELSE格式:IF表达式THEN状态表达式ELSE状态表达式;若IF后的表达式为真,则转向THEN后的状态表达式所定义的状态,否则,转向ELSE后状态表达式所定义的状态,它所规定的转移条件是互斥的。IFTHENELSE语句可跟WITH语句,也可以嵌套。嵌套的条件转移语句称为链接式条件转移语句,格式如下:IF表达式THEN状态表达式ELSEIF表达式THEN状态表达式ELSE状态表达式;链接的数目没有限制

41、,但最后一个语句必须用分号结束。链接式条件语句适合条件不互斥的情况,条件互斥的情况用CASE语句更清楚。选择语句CASEENDCASE格式:CASE表达式:状态表达式;表达式:状态表达式;.ENDCASE;选择语句中的表达式必须满足互斥条件,即在任何时候,有且只有一个表达式条件为真。状态表达式后可跟WITH语句。如STATES0:CASEC0:S1;WITHA1;C1:S2;C2:S3;ENDCASE;转移方程语句WITH格式:转移语句状态表达式WITH方程;方程;.转移语句指GOTO、IFTHENELSE和CASE等语句,状态表达式是下一个状态,WITH后面的方程指定本次转移相应的输出。WI

42、TH特别适用于Mealy型状态机,因为它的状态转换与条件有关。如:STATES5:IFA1THENS1WITHX:=1;Y:=1;ELSES2WITHX:=0;Y:=1;5.ABEL语言的指示字ABEL语言的指示字以开头,这些指示字在源文件中所起的作用是指示语言处理程序如何对源文件的内容加以处理,能够实现有条件地采用某段源程序、将另一个源文件包含在该源文件中、或在处理中输出某些必要的信息。利用它们可以简化编程,方便调试。(1)重复指示字REPEAT格式:REPEAT表达式块作用:将块中的内容重复插入源文件中N次,N是表达式的值。例:REPEAT5H,执行该语句后,在源文件中插入“H,H,H,H

43、,H,”。(2)任意态设置指示字DCSET格式:DCSET作用:将任意态设置为1态或0态,以满足对逻辑方程优化的需要。例:DCSETFA!B!A;F?!A!B;在逻辑方程优化的过程中,!A!B既可作1处理,也可作0处理。(3)退出指示字EXIT格式:EXIT作用:指示语言处理程序,当出错位被置1时,停止对源文件进行分析处理。(4)其它替代指示字ALTERNATE,标准指示字STANDARD,表达式指示字EXPR,引用指示字IFCLUDE,字符无重复指示字IRPC,基数指示字RADIX,无限重复指示字IRP,这些指示字的说明请参看ABELHDL手册。6逻辑方程关键字:EQUATIONS格式:EQ

44、UATIONS信号名?=表达式;信号名?:表达式;WHENTHENELSE语句;2.2.2 ispDesign EXPERT软件的使用一、ispDesign EXPERT软件简介 运用大规模、超大规模可编程逻辑器件与电子设计自动化(EDA)技术是现代数字电子 技术发展的潮流,将其引入高校教学、科研、研究所、电子产品生产企业势在必行。美国 Lattice半导体公司推出的ISP技术为电子系统设计提供了功能完善的设计手段,特别适 合教学、科研和产品开发。 ISP技术使用户能够在无需从电路板上拆下芯片的情况下,改变芯片的逻辑内容。这 种技术能大大缩短电子系统设计周期,简化生产流程,降低生产成本,并可在

45、现场对系统 进行逻辑重构和升级。ISP技术的发明,使硬件随时能够改变组态,实现了硬件设计软件 化,革命性地改变了电子系统设计的传统概念和方法。 Lattice公司推出的ispEXPERT的数字系统设计软件,它是一套完整的EDA软件。设 计输入可采用原理图、硬件描述语言、混合输入三种方式。能对所设计的数字电子系统进行功能仿真和时序仿真。ispEXPERT编译器是此软件的核心,能进行逻辑优化,将逻辑映射到器件中去,自动完成布局与布线并生成编程所需要的熔丝图文件。软件支持所有 Lattice公司的ispLSI器件。软件主要特征有输入方式原理图输入,ABEL-HDL输入,VHDL输入,Verilog-

46、HDL输 入逻辑模拟功能模拟,时序模拟,静态时序分析编译器 结构综合,映射,自动布局和布线支持的器件含有宏库,有500个宏元件可供调用,支持所有ISP器件下载软件ISP菊花链下载软件二、ISP Expert System的原理图输入1启动ispExpertSystem 2创建一个新的设计项目1)选择菜单File2)选择New Project.3)键入项目名c:examplesdemo.syn4)你可以看到默认的项目名和器件型号: Untitled and ispLSI1032E-125LT1003.项目命名(1)鼠标双击Untitled。(2)在Title文本框中输入“Demo Project

47、”,并选OK。4.选择器件(1)双击ispLSI1032E-125LT100,你会看到Choose Device对话框(如下图所示)。(2)在Choose Device窗口中选择ispLSI1000项。(3)按动器件目录中的滚动条,直到找到并选中器件ispLSI 1032E-70LJ84。(4)揿OK按钮,选择这个器件。5.在设计中增加源文件 一个设计项目由一个或多个源文件组成。这些源文件可以是原理图文件(*.sch)、ABEL HDL文件(*.abl)、VHDL设计文件(*.vhd)、Verilog HDL设计文件(*.v)、测试向量文件 (*.abv)或者是文字文件(*.doc, *.wr

48、i, *.txt)。在以下操作步骤中,你要在设计项目中添加一张空白的原理图纸。(1)菜单上选择Source项。 (2)选择New.(3)在对话框中,选择Schematic(原理图),并按OK(4)选择路径: c: examples 并输入文件名demo.sch(5)确认后按OK6.原理图输入 你现在应该进入原理图编辑器。在下面的步骤中,你将要在原理图中画上几个元件符号,并用引线将它们相互连接起来。(1)从菜单栏选择Add ,然后选择Symbol,你会看到如下图所示的对话框(2)选择GATES.LIB库,然后选择G_2AND元件符号。(3)将鼠标移回到原理图纸上,注意此刻AND门粘连在你的光标上

49、,并随之移动。(4)单击鼠标左键,将符号放置在合适的位置。(5)再在第一个AND门下面放置另外一个AND门。(6)将鼠标移回到元件库的对话框,并选择G_2OR元件。(7)将OR门放置在两个AND门的右边。(8)现在选择Add菜单中的Wire项。(9)单击上面一个AND门的输出引脚,并开始画引线。(10)随后每次单击鼠标,便可弯折引线(双击便终止连线)。(11)将引线连到OR门的一个输入脚。(12)重复上述步骤,连接下面一个AND门。7.添加更多的元件符号和连线(1)采用上述步骤,从REGS.LIB库中选一个g_d寄存器,并从IOPADS.LIB库中选择G_OUTPUT符号。(2)将它们互相连接

50、,实现如下的原理图:8.完成你的设计 在这一节,通过为连线命名和标注I/O Markers来完成原理图。当要为连线加信号名称时,你可以使用Synario的特点,同时完成两件事-同时添加连线和连线的信号名称。这是一个很有用的特点,可以节省设计时间。I/O Markers是特殊的元件符号,它指明了进入或离开这张原理图的信号名称。注意连线不能被悬空(dangling),它们必需连接到I/O Marker或逻辑符号上。这些标记采用与之相连的连线的名字,与I/O Pad符号不同,将在下面定义属性(Add Attributes)的步骤中详细解释。(1)为了完成这个设计,选择Add菜单中的Net Name项

51、。(2)屏幕底下的状态栏将要提示你输入的连线名,输入A并按Enter键,连线名会粘连在鼠标的光标上。(3)光标移到最上面的与门输入端,并在引线的末连接端(也即输入脚左端的红色方块), 按鼠标左键,并向左边拖动鼠标。这可以在放置连线名称的同时,画出一根输入连线。(4)名称现在应该是加注到引线的末端。(5)重复这一步骤,直至加上全部的输入B,C,D和CK,以及输出OUT。(6)现在在Add菜单的I/O Marker项。(7)将会出现一个对话框,请选择Input。(8)将鼠标的光标移至输入连线的末端(位于连线和连线名之间),并单击鼠标的左键。这时会出现一个输入I/O Marker,标记里面是连线名。

52、(9)光标移至下一个输入,重复上述步骤,直至所有的输入都有I/O Marker。(10)现在请在对话框中选择Output, 然后单击输出连线端,加上一个输出I/O Marker。(11)至此原理图就基本完成,它应该如下图所示。9. 定义ISPLSI/ispLSI器件的属性(Attributes) 你可以为任何一个元件符号或连线定义属性。在这个例子中,你可以为输出端口符号添加引脚锁定LOCK的属性。请注意,在ispEXPERT中,引脚的属性实际上是加到I/O Pad 符号上,而不是加到I/O Marker上。同时也请注意,只有当你需要为一个引脚增加属性时,才需要I/O Pad符号,否则,你只需要

53、一个I/O Marker.(1)在菜单条上选择Edit = Attribute = Symbol Attribute项,这时会出现一个 Symbol Attribute Editor 对话框。(2)单击需要定义属性的输出I/O Pad.(3)在对话框里会出现一系列可供选择的属性。(4)选择Synario Pin属性,并且把文本框中的 * 替换成4.(5)关闭对话框。(6)请注意,此时数字4出现在I/O Pad 符 号内。10.保存已完成的设计(1)从菜单条上选择File,并选Save命令。(2)再次选File,并选Exit命令。三、设计的编译与仿真1.建立仿真测试向量(Simulation T

54、est Vectors)(1)已选择ispLSI1032E-70LJ84器件的情况下,选择Source菜单中的New. 命令。(2)在对话框中,选择ABEL Test Vectors并按OK。(3)输入文件名demo.abv 作为你的测试向量文件名。(4)按 OK。(5)文本编辑器弹出后,输入下列测试向量文本:module demo;c,x = .c.,.x.;CK,A,B,C,D,OUT PIN;TEST_VECTORS(CK, A, B, C, D-OUT) c , 0 , 0 , 0 , 0 - x ; c , 0 , 0 , 1 , 0 - x ; c , 1 , 1 , 0 , 0

55、- x ; c , 0 , 1 , 0 , 1 - x ; END(6)完成后,选择File 菜单中的Save命令,以保留你的测试向量文件。(7)再次选择File,并选Exit命令。(8)此时你的项目管理器(Project Navigator)应如下图所示。2、编译原理图与测试向量 现在你已为你的设计项目建立起所需的源文件,下一步是执行每一个源文件所对应的 处理过程。选择不同的源文件,你可以从项目管理器窗口中观察到该源文件所对应的可执行过程。在这一步,请你分别编译原理图和测试向量。(1)在项目管理器左边的项目源文件( Sources in Project )清单中选择原理图 (demo.sch

56、)。(2)双击原理图编译(Compile Schematic) 处理过程。这时会出现一个如右的对话框。 (3)编译通过后,Compile Schematic过程的左边会出现一个绿色的查对记号,以表明编译成功。编译结果将以逻辑方程的形式表现出来。(4)然后从源文件清单中选择测试向量源文件(demo.abv)。 (5)双击测试向量编译(Compile Test Vectors )处理过程。 这时会出现另一个状态对话 框。3、 设计的仿真 ISP Expert开发系统较先前的ISP Synario开发系统而言,在仿真功能上有了极大的改进。它不但可以进行功能仿真(Functional Simulati

57、on),而且可以进行时序仿真(Timing Simulation)。在仿真过程中ISP Expert开发系统提供了单步运行、断点设置以及跟踪调试等新的功能。(1) 功能仿真 在ispEXPERT System Project Navigator 的主窗口左侧,选择测试向量源文件 (demo.abv),双击右侧的Functional Simulation功能条。将弹出如下图所示的仿真控制窗口(Simulator Control Panel)。 在上述窗口中按 Debug 钮,该窗口将进入跟踪调试模式,其状态如下图所示。在Available Signals工具条中,选中所要跟踪查看的信号名,如:A

58、,B,C,CK,D,OUT,按 Monitor钮,可跟踪查看这些信号的状态。 在Simulator Control Panel中,按Run钮将根据(*.abv)文件中所给出的输入波形进行一步到位的仿真。 在 Simulator Control Panel中,按Window = Waveform Viewer菜单,将打开波形观察器 Waveform Viewer如下图所示。 为了能观察到波形,你必须选择Edit菜单中的Show命令。你会看到如下的对话框,其中列出了输入、输出端口的信号名。 单击每一个你想看的信号名,然后单Show。每一个你所选的波形现在都显示在波形观察器的窗口中,如下图所示: 如

59、需查看内部节点波形,可在Simulator Control Panel窗口中选中该节点,然后按Monitor 钮,即可在Waveform Viewer窗口中看到该信号波形。 单步仿真。 按Simulator Control Panel 窗口中的Step钮可对您的设计进行单步仿真。ispEXPERT系统中仿真器的默认步长为100ns,您可根据需要在按File=Setup菜单所激活的对话框(Setup Simulator)中重新设置您所需要的步长。按Simulator Control Panel 窗口中的File=Reset菜单,可将仿真状态退回至初始状态(0时刻)。随后,每按一次Step钮,仿真

60、器便仿真一个步长。下图是按了七次Step钮后所显示的波形(所选步长为100ns)。设置断点(Breakpoint)。在Simulator Control Panel窗口中,按 Windows= Breakpoints 菜 单,会显示如下图所示的断点设置控制的Breakpoint窗口。 在该窗口中按New按钮,开始设置一个新的断点。在Available Signals栏中单击鼠标选择所需的信号,在窗口中间的下拉滚动条中可选择设置断点时该信号的变化要求,例如: -0,指该信号变化到0状态;!=1,指该信号处于非1状态。一个断点可以用多个信号所处的状态来作为定义条件,这些条件在逻辑上是与的关系。最后

温馨提示

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

评论

0/150

提交评论