ispEXPERT使用方法简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ispEXPERT使用方法简介
3.2.1概述
ispEXPERT是美国Data I/O公司推出的一个世界级的强有力的用于可编程逻辑器件的数字系统设计软件,它是一种基于Windows的设计工具,是一套完整的EDA软件。
设计输入可采用原理图、硬件描述语言、混合输入三种方式。
能对所设计的数字电子系统进行功能仿真和时序仿真。
ispEXPERT 编译器是此软件的核心,能进行逻辑优化,将逻辑映射到器件中去,自动完成布局与布线并生成编程所需要的熔丝图(.jed)文件。
软件支持所有Lattice 公司的ispLSI器件、pLSI器件、ispGDS器件、ispGAL器件。
并能实现系统仿真。
ISP技术使用户能够在无需从电路板上拆下芯片的情况下,改变芯片的逻辑内容,实现在系统编程。
这种技术的应用能大大缩短电子系统设计周期,简化生产流程,降低生产成本,并可在现场对系统进行逻辑重构和升级。
ISP技术的发明,使硬件随时能够改变组态,实现了硬件设计软件化,革命性地改变了电子系统设计的传统概念和方法。
ispEXPERT软件的主要特征:
1.输入方式
* 原理图输入
* ABEL-HDL 输入
* VHDL 输入
* Verilog-HDL 输入
2.逻辑模拟
* 功能模拟
* 时序模拟
* 静态时序分析
3.编译器
* 结构综合、映射、自动布局和布线
4.支持的器件
* 含有宏库,有500个宏元件可供调用
* 支持所有ISP器件
5.下载软件
* ISP 菊花链下载软件
3.2.2原理图输入
原理图输入方式是比较简单易学的一种方法,只要按照原理图的形式将图画出,设定一定的输入输出符号,系统即可自动生成编程所需要的熔丝图文件,本章介绍如何使用原理图输入方式完成一个电路的设计。
1. 创建一个新的设计项目
可以按照以下步骤创建一个新的设计项目: (1)启动isp Expert System
按开始=>程序=>Lattice Semiconductor=>ispEXPERT System ,或者从桌面快捷方式中直接进入,屏幕上出现如图3.16所示的项目管理器窗口。
图3.16 项目管理器窗口
图3.17 建立New Project 后的对话框
文件(*.doc, *.wri, *.txt)。
下面将分别介绍原理图文件(*.sch)、ABEL HDL 文件(*.abl)、测试向
量文件(*.abv)的输入方法。
(1)建立原理图输入源文件
①从图3.17所示的菜单上选择Source 项。
②选择 New ,出现图3.19所示的对话框。
③在对话框中,选择Schematic (原理图),按OK 键。
(2)选择菜单File 。
(3)选择New Project..。
(4)键入 exam.syn ,将其保存到相应的文件夹中。
即可看到图3.17所示的画面,其中项目名为Untitled 。
默认的器件型号为 ispLSI1032E-125LT100。
双击Untitled 可以将项目名改为exam ,双击器件型号出现图 3.18
所示的chose device 对话框,按
动器件目录中的滚动条,直到找到并选中所需的器件,所选的型号应与电路板上的器件一致。
实验中我们选ispLSI1032E-70LJ84
(5)按OK 按键,选定这个器件。
2. 在设计中增加源文件 一个设计项目由一个或多个源文件组成。
这些源文件可以是原理图文件(*.sch)、ABEL HDL 文件(*.abl)、VHDL 设计文件(*.vhd)、Verilog HDL 设计文 件(*.v)、测ispLSI1032E-70LJ84
3.18 选择器件对话框图3.19New Source 对话框
④选择路径,建立一个文件夹,进入该文件夹后输入文件名exam。
⑤确认后按保存,进入原理图编辑器。
(2)原理图输入
按照下面的步骤在原理图编辑框中画所需元件符号,并用引线将它们相互连接起来,构成一个“异或”门组合逻辑电路。
①菜单栏选择Add ,然后选择Symbol,将出现图3.20所示的对话框。
图3.20 空白的原理图编辑对话框图3.21 I/O Marker选择框
②从Libary中选择GATES.LIB,
在Symbol框中选择2NAND,则选
中的符号将会粘贴在光标上,将其
放置在合适的位置上,连续放置即
可。
③将选好的元件符号放在对话
框内合适的位置上。
④从菜单栏选择Add ,然后选择
Wire,进行连线。
⑤从菜单栏选择Add ,然后选
择Net Name,输入A,按回车键,图3.22 绘制好的异或门原理图
将该字母放在逻辑图的输入端,同样的方法输入B和F,并分别放在输入和输出端。
⑥从菜单栏选择Add,然后选择I/O Marker,出现如图3.21所示的I/O Marker选择框,从中选择Input将输入标记符号放在图中输入端;选择Output,将输出标记符号放在图中输出端。
⑦将绘制好的逻辑图保存,完整的逻辑图如图3.22所示。
3. 建立仿真测试向量( Simulation Test Vectors)该步骤可以省略
(1)在已选择ispLSI1032E-70LJ84器件的情况下,选择图3.17中Source菜单的New命令。
(2)在图3.19所示对话框中,选择ABELTest Vectors 并按OK。
(3)输入文件名exam 作为测试向量文件名,按OK键确认。
确认后出现Text Editor空白
编辑窗口,输入以下程序。
module exam
A,B,F pin;
x =.x.;
test_vectors
([A,B]->[F])
[0,0]->[x];
[0,1]->[x];
[1,0]->[x];
[1,1]->[x];
end
将图3.23所示的测试向量图3.23 输入测试向量程序后的编辑器窗口
程序保存,关闭该窗口后便回到图3.17所示的对话框,此时看到对话框中Sources in Project 栏中增加了原理图(exam.sch)和测试向量(exam.abv)两个新的文件,见图3.24。
图3.24 建立原理图和测试向量后的项目管理器窗口
4. 编译与仿真
(1)在图3.24的Sources in Project 栏中选中exam项,然后双击右框中Compile Schematic
或选中该项后点击下面的Start键对原理图进行编译,编译通过后,在项目的左侧出现绿色的对号,否则将出现叉号。
(2)选中exam.abv项,右框中出现针对测试向量的编译命令。
(3)双击Functional Simulation或选中该项后点击下面的View。
(4)出现图3.25的仿真控制对话框后,点击Run 并选择Window栏中的Waveform Viewer 出现波形观察窗口,如果没有波形的话,可选择菜单栏中Edit下的Show项,出现图3.26所示的窗口,此时分别选择框中的A、B、F和Show键,关闭该窗口后,便呈现出图3.27所示的仿真波形图。
图3.25 仿真控制窗口
图3.26 波形显示选择窗口图3.27 仿真波形图
3.2.3将设计下载到Lattice器件中
完成了上述的原理图输入和仿真测试后就可将设计通过电缆下载到器件中去。
1.打开下载板电源开关。
2.在图3.24所示的项目管理器窗口中选中左边框中的器件项。
3.双击右框中JEDEC File建立熔丝图文件,通过后将在JEDEC File前面出现绿色对号。
4.点击右框中ISP Daisy Chain Download,出现如图3.28所示的下载控制窗口,选择菜单栏中Configration下的Scan Board命令。
5.选择Command下的Check Configration Setup对建立的结构文件校验以检查器件是否相符,出现PASS表示编程完毕,一旦出现Fail,应根据Message窗口中的提示进行检查,待问题解决后才能重新编译。
6.点击工具栏中左边第10个按钮(Run Turbo Download)开始下载,下载无误后,在图
3.28的Message窗口中出现提示,表示下载成功。
注意:在图中的浏览键(Browse)框内所显示的路径中不能出现中文字,否则会在Message 窗口中提示无法打开或找不到文件。
图3.28 菊花链下载操作窗口
7.回到图3.17所示的项目编辑器窗口,选中左框中的器件项,点击右框中的ispEXPERT Compiler,可查看编译好的器件管脚分配情况,按该器件管脚分配连接导线即可验证逻辑功能。
3.2.4 ABEL-HDL输入方式
ispEXPERT 除了提供原理图输入方式外,还可以提供ABEL-HDL输入方式,打开图3.16所示的项目管理器窗口后选择新建文件,将出现图 3.19所示的对话框,选择ABEL-HDL
MODULE,点击OK以确认,则显示图3.29所
示的对话框,在Module Name一栏中输入模块
名,在File Name一栏中输入文件名,通常将二
者取成一样。
Title栏中可以输入一行说明文字
(也可不要),最后点击OK确认。
当出现图3.30
所示的对话框后可用ABEL语言编写程序并输
入到框中,点击保存后退出到图3.31所示的项
目管理器窗口,双击右框中的check syntax进行
语法检查,通过后在该项的左侧出现绿色对号。
图 3.29 建立ABEL-HDL文件名操作窗口最后可以按照前面所述的方法将编译好的程序下载到电路板上进行验证。
图3.30 文本编辑器对话框
图3.31 项目管理器窗口
3.2.5硬件描述语言ABEL-HDL简介
在现代数字电路或数字系统设计中,通常对逻辑电路使用容易编写、计算机便于处理的硬件描述语言HDL(Hardware Description Language)进行描述。
在ispLSI的开发中,ispEXPERT 软件使用了一种源于ABEL的HDL语言,简写为ABEL-HDL。
它使用方便,简洁易懂,应用灵活,使用其可以大大提高电路的设计速度。
1. ABEL-HDL语言语法规则
(1)关键字
关键字是ABEL-HDL语言软件所保留的标识符,每个字都具有自己特定的涵义,这些字不能由用户用来对器件、引脚、节点、数组和宏定义,也不能用来对信号命名,否则在软件进行编译时被认为是编写“错误”而不能通过。
关键字无大小写之分,软件都可以接受,在编写软件时,出现关键字时自动显示为蓝色。
表3.1中所列的是该语言的关键字。
表3.1 关键字
(2)逻辑信号(逻辑变量)
逻辑信号(逻辑变量)是指传统的数字逻辑电路设计中的逻辑变量。
在ABEL-HDL语言中规定逻辑信号用标识符表示,标识符是一组下划线、字母、数字串,即一个名字,其长度不得超过31个字符,且必须以字母或下划线开头,否则被认为是非法的。
如标识符LS、IN、_LD等是合法的,而74LS、*IN则是非法字符。
通常在使用标识符中要注意下面几点:
①所选择的标识符应与所表示对象的功能或含义相一致,也就是说要“见名知意”,以增强程序的可读性,如OR_IN1、OR_IN2表示二输入或门的两个输入信号。
②标识符应简单明了,易于区分。
可以选择简单明了的单词或字母,若需要用几个单词时应用下划线将单词分开,而不能用空格。
如用OR_IN1、OR_IN2,而不用OR IN1、OR IN2。
③标识符与输入的字体有关,大小写被分别对待,一经定义在文件应用中不可改变,否则在编译时被视为是两个不同的字。
(3)逻辑常量
逻辑代数中的逻辑常量有“1”、“0”和X(任意态)。
当涉及到具体器件时,其输出还可能有高阻态(Z)和浮动态(F)。
此外,对异步时序电路,时钟脉冲和时钟脉冲边沿也可作为特殊逻辑常量看待。
在ABEL-HDL语言中常用的特殊逻辑量共有九个,如表3.2所示。
表3.2 逻辑常量
在实际编写源文件时,为了书写方便,常常用常量定义语句将H、L定义为1和0(1,0=H,L),将.C.、.X.定义为C和X(C,X=.C.,.X.)。
(4)逻辑运算符
逻辑代数中的各种运算在ABEL-HDL中有专门的符号,见表3.3。
表3.3 逻辑运算符
逻辑运算符表中的逻辑运算优先级别和逻辑代数中一样,按非、与、或、异或、同或的次序排列。
如果有些优先级低但又需要优先运算的量,可用圆括号将其括起来,例如逻辑表达式
=
]C)B
+
F
A
(
B[A+
用逻辑运算符表示则为
F=!A&(!B#(A#B)&!C)
(5)算术运算符
算术运算符定义表达式中各项之间的算术运算关系。
表3.4中列出的是算术运算符,注意减号符在用法不同时其作用是不一样的,用在操作数之前表示对这个操作数取二进制补码;在两个操作数之间表示将第二个操作数的二进制补码与第一个操作数相加。
表3.4 算术运算符
(6)关系运算符
关系运算符用于表达中两项之间的比较,其结果是“逻辑真”或“逻辑假”。
表3.5列出的是关系运算符。
例如:3==5是假;3!=5则是真;3>5是假;3<5则是真。
表3.5关系运算符
(7)赋值运算符
赋值运算符是一种特殊的运算符,只能用于逻辑方程的赋值,不能用于表达式。
其功能是将表达式的值通过等式赋给逻辑关系中的信号或信号集。
ABEL的赋值运算符只有两种,如表3.6所示。
其中用于组合逻辑电路的是非时钟型的赋值,而用于时序逻辑电路的是时钟型的赋值。
这两种赋值的性质是完全不同的,前者在组合逻辑电路的输入值发生变化时,输出立即被赋予新值,又称为即刻赋值或组合型赋值;而后者的输入逻辑发生变化时,输出则要等到时钟信号作用时才被赋予新值,因而称为时钟赋值或时序型赋值。
例如逻辑方程S=A+B+C 是组合型赋值,表示S是A、B、C的和,而QT:=!T是时序型赋值,表示时钟脉冲作用后!T的值赋给QT端,而且“!T”表示的为寄存器的下一个状态。
表3.6 赋值运算符
(8)集合
在ABEL语言中,集合是作为一个整体来进行运算的一组常量或信号,对集合的任何运
算即是对集合中每个元素进行的。
集合用方括号括起来,每个元素间用逗号或排列运算符(…)分开,用集合表示可以简化逻辑设计和测试向量的描述。
例如:全加器逻辑方程中的A、B、C、S、用集合表示则为A=[0,A3,A2,A1,A0];B=[0,B3,B2,B1,B0];C=[0,0,0,0,CYI];S=[CYO,S3,S2,S1,S0] ,在逻辑方程描述中可以简化写成S=A+B+C
(9)基本逻辑器件的描述
在ABEL-HDL语言中对逻辑器件的描述有自己的规定,门和组合逻辑电路可以象传统的数字电路设计中那样用逻辑关系式描述,只是要用语言规定的符号。
如前面介绍的全加器逻辑式S=A+B+C;三输入“与非”门逻辑式F=!(A&B&C);“异或”门逻辑式F=A&!B#!A&B。
对于触发器(在ABEL-HDL语言中,触发器统称为寄存器),除了有输出方程外,还必须要有时钟方程、复位方程、预置方程等才能完整描述。
对于寄存器的时钟信号、复位信号等需要在寄存器标识符后加带点的后缀。
例如,在计数器方程中描述的计数器输出COUNT.CK=CLK和COUNT.AR=CLR分别表示在时钟信号作用后计数器输出置位和清“0”。
ABEL-HDL常用的点后缀如表3.7所示。
表3.7 ABEL-HDL的部分点后缀
2. ABEL-HDL源文件编写格式
一个ABEL-HDL语言由一个或多个相互独立的模块组成,在每个模块中又由标题段、定义段、逻辑描述段或测试向量段、结束段等组成。
(1)标题段
标题段一般包括模块语句(MODULE)和标题语句(TITLE)两部分。
模块语句是源文件中必不可少的,它标志着源文件的开始,应与结束语句END相呼应。
其格式为:MODULE 模块名
模块名由用户自定义,一般取名时要便于阅读,如编码器用CODER;计数器用COUNTER 等。
标题段是可选语句,仅是用来说明模块的内容、用途、作者等,也可以在源文件中不出现。
其格式为:
TITLE ‘.…..’
单引号括起来的部分为字符串。
TITLE属任选语句,在编译时不对它进行处理。
(2)定义段
定义段包括器件定义、管脚定义、结点定义、常量定义、集合定义、宏定义等,下面介绍实验中用到的几种定义。
①器件定义
器件定义把模块中使用的器件名与设计中实际采用的器件联系在一起。
在ispEXPERT中所使用的器件是在菜单上选择的,因此该定义可以省略。
②管脚定义
管脚定义包括管脚标识符、管脚号和属性,说明了管脚与实际管脚间的关系,是使用中不可缺少的。
其格式为:
[!]管脚名[,[!]管脚名]···pin [in器件名,管脚号,管脚号] ···ISTYPE‘属性’;
[!]表示该管脚低有效,软件在编译时会自动识别将其取反。
定义时若不写管脚号,软件在编译时自动分配管脚。
属性是指输出信号的性质,如组合逻辑输出、寄存器输出等,常用的属性关键字见表3.8。
表3.8 属性关键字
例如:CLK,A,B PIN;“输入管脚名
OUT1,OUT2 PIN ISTYPE ‘COM’;“输出管脚名及属性
双引号后为注释语句,软件在编译时不予处理,语句结束后要加分号。
③常量定义
常量定义是软件中很重要的一部分,为了书写方便,常将一些常量用字母定义,在以后的程序中引用即可。
其格式为:
标识符,标识符···=常量,常量···;
例如:H,L,X=1,0,.X.;
常量定义还包括集合(数组)定义,如:
A=[0,A3,A2,A1,A0];B=[0,B3,B2,B1,B0];COUNT=[Q6,Q5,Q4,Q3,Q2,Q1,Q0];等。
(3)逻辑描述段
在完成了各项定义后,就可以对电路进行描述了。
描述可以采用逻辑方程、真值表等形式,在逻辑描述段的前面要加以关键字说明。
①逻辑方程
以关键字EUQTIONS开头并独占一行,行尾不加分号;每行长度不超过150个字符;每行用分号结束。
例如:
EQUATIONS
S=A+B+C;
②真值表
以关键字TRUTH_TABEL开头并独占一行,行尾不加分号。
第二行是表头,加圆括号,输入输出信号的真值表用集合(数组)形式表示,其格式有两种:
([输入变量]->[输出变量]),符号“->”表示输入输出关系为组合型;
([输入变量]:>[输出变量]),符号“:>”表示输入输出关系为寄存器(时序逻辑)型。
以后各行是真值表内容,其形式与表头一样但不加圆括号,每行以分号“;”结尾。
在实际的电路中常需要既有组合型又有时序型输出,则真值表可以有三部分组成,即:([输入变量] :>[时序逻辑输出]->[组合逻辑输出])
(4)测试向量段
测试向量段的目的是对所设计的电路进行功能仿真测试,其结果用波形图形式给出。
以关键字TEST_VECTORS开头,其格式为:
TEST_VECTORS[IN 器件名][注释]
([输入向量]->[输出向量])
[输入向量]->[输出向量];
测试向量表列出了各种输入信号和输出信号,在输出向量栏中,可以使用已定义的任意态参数,以观察仿真是否正确。
下面列出的是一个JK触发器当J=K=1时输出端的测试向量。
MODULE JK“模块名
c,x=.c.,.x.;“定义时钟脉冲和任意态参数
J,K,CK,Q pin;“定义输入信号、时钟和输出端管脚
test_vectors“测试向量表头
([CK,J,K]->[Q])“输入向量->输出向量
[c,1,1]->[x];“真值表的每一行仿真后为一个时钟波形,编写时
[c,1,1]->[x];可根据情况设定波形的个数,每行的结尾要加“;”。
[c,1,1]->[x];
[c,1,1]->[x];
end“结束语句
(5)结束段
ABEL-HDL的结束段用END表示,且不加标点符号。