目录
第一节 ispLEVER 简介
第二节 ispLEVER开发工具的原理图输入
第三节设计的编译与仿真
第四节硬件描述语言和原理图混合输入
第五节ispLEVER工具中VHDL和Verilog语言的设计方法第六节 ispVM System-在系统编程的软件平台
第七节约束条件编辑器(Constraint Editor)的使用方法附录一ispLEVER System上机实习题
附录二ispLEVER软件中文件名后缀及其含义
第一节ispLEVER 简介
ispLEVER 是Lattice 公司最新推出的一套EDA软件。设计输入可采用原理图、硬件描述语言、混合输入三种方式。能对所设计的数字电子系统进行功能仿真和时序仿真。编译器是此软件的核心,能进行逻辑优化,将逻辑映射到器件中去,自动完成布局与布线并生成编程所需要的熔丝图文件。软件中的Constraints Editor工具允许经由一个图形用户接口选择I/O设置和引脚分配。软件包含Synolicity公司的“Synplify”综合工具和Lattice的ispVM器件编程工具。ispLEVER软件提供给开发者一个简单而有力的工具,用于设计所有Lattice可编程逻辑产品。软件支持所有Lattice公司的ispLSI 、MACH、ispGDX、ispGAL、GAL器件。ispLEVER工具套件还支持Lattice新的ispXPGA TM和ispXPLD TM产品系列,并集成了Lattice ORCA Foundry设计工具的特点和功能。这使得ispLEVER的用户能够设计新的ispXPGA和ispXPLD产品系列,ORCA FPGA/FPSC系列和所有Lattice的业界领先的CPLD产品而不必学习新的设计工具。
软件主要特征:
1. 输入方式
* 原理图输入
* ABEL-HDL输入
* VHDL输入
* Verilog-HDL输入
* 原理图和硬件描述语言混合输入
2.逻辑模拟
* 功能模拟
* 时序模拟
3.编译器
* 结构综合、映射、自动布局和布线
4.支持的器件
* 含有支持ispLSI器件的宏库及MACH器件的宏库、TTL库
* 支持所有ispLSI、MACH、ispGDX、ispGAL、GAL、ORCA FPGA/FPSC、ispXPGA和ispXPLD 器件
5. Constraints Editor工具
* I/O参数设置和引脚分配
6. ispVM工具
* 对ISP器件进行编程
软件支持的计算机平台:
PC: Windows 98/NT/2000/XP
第二节 ispLEVER开发工具的原理图输入
I.启动ispLEVER(按Start=>Programs=>Lattice Semiconductor=>ispLEVER Project
Navigator)
II.创建一个新的设计项目
A.选择菜单File。
B.选择New Project...。
C.在Create New Project对话框的Project Name栏中,键入项目名d:\user\demo.syn。
在Project type栏中选择Schematic/ABEL(ispLEVER软件支持Schematic/ABEL、
Schematic/VHDL、Schematic/Verilog等的混合设计输入,在此例中,仅有原理图输
入,因此可选这三种中的任意一种)。
D.你可以看到默认的项目名和器件型号: Untitled and ispLSI5256VE-165LF256。
III.项目命名
A.用鼠标双击Untitled。
B.在Title文本框中输入“Demo Project”,并选OK。
IV.选择器件
A.双击ispLSI5256VE-165LF256, 你会看到Device Selector对话框(如下图所示)。
B.在Select Device窗口中选择ispMACH 4000项。
C.按动器件目录中的滚动条,直到找到并选中器件LC4032V-10T44I。
D.揿OK按钮,选择这个器件。
E.在软件弹出的如下图显示的Confirm Change窗口中,按Yes按钮。
F.因改选器件型号后,先前的约束条件可能对新器件无效,因此在软件接着弹出的如下图
显示的ispLEVER Project Navigato窗口中,按Yes按钮,以用来去除原有的约束条件。
V.在设计中增加源文件
一个设计项目由一个或多个源文件组成。这些源文件可以是原理图文件(*.sch)、ABEL
HDL文件(*.abl)、VHDL设计文件(*.vhd)、Verilog HDL设计文件(*.v)、测试向量文件(*.abv) 或者是文字文件(*.doc, *.wri, *.txt)。在以下操作步骤中,你要在设计项目中添加一张空
白的原理图纸。
A.从菜单上选择Source 项。
B.选择New... 。
C.在对话框中,选择Schematic(原理图),并按OK。
D.输入文件名demo.sch。
E.确认后揿OK。
VI.原理图输入
你现在应该进入原理图编辑器。在下面的步骤中,你将要在原理图中画上几个元件符号,并用引线将它们相互连接起来。
A.从菜单栏选择Add, 然后选择Symbol,你会看到如下图所示的对话框:
B.选择GATES.LIB库,然后选择G_2AND元件符号。
C.将鼠标移回到原理图纸上,注意此刻AND门粘连在你的光标上,并随之移动。
D.单击鼠标左键,将符号放置在合适的位置。
E.再在第一个AND门下面放置另外一个AND 门。
F.将鼠标移回到元件库的对话框,并选择G_2OR元件。
G.将OR门放置在两个AND门的右边。
H.现在选择Add菜单中的Wire项。
I.单击上面一个AND门的输出引脚,并开始画引线。
J.随后每次单击鼠标,便可弯折引线 (双击便终止连线)。
K.将引线连到OR门的一个输入脚。
L.重复上述步骤,连接下面一个AND门。
VII.添加更多的元件符号和连线
A.采用上述步骤,从REGS.LIB库中选一个g_d寄存器,并从IOPADS.LIB库中选择
G_OUTPUT符号。
B.将它们互相连接,实现如下的原理图:
VIII.完成你的设计
在这一节,通过为连线命名和标注I/O Markers来完成原理图。
当要为连线加信号名称时,你可以使用ispLEVER的特点,同时完成两件事-----同时添加连线和连线的信号名称。这是一个很有用的特点,可以节省设计时间。I/O Markers是特殊的元件符号,它指明了进入或离开这张原理图的信号名称。注意连线不能被悬空(dangling),它们必需连接到I/O Marker或逻辑符号上。这些标记采用与之相连的连线的名字,与I/O Pad符号不同,将在下面定义属性(Add Attributes)的步骤中详细解释。
A.为了完成这个设计,选择Add菜单中的Net Name项。
B.屏幕底下的状态栏将要提示你输入的连线名,输入…A?并按Enter键,连线名会粘连在
鼠标的光标上。
C.将光标移到最上面的与门输入端,并在引线的末连接端(也即输入脚左端的红色方块),
按鼠标左键,并向左边拖动鼠标。这可以在放置连线名称的同时,画出一根输入连线。
D.输入信号名称现在应该是加注到引线的末端。
E.重复这一步骤,直至加上全部的输入…B?,?C?,?D?和…CK?,以及输出…OUT?。
F.现在选择Add菜单的I/O Marker项。
G.将会出现一个对话框,请选择Input。
H.将鼠标的光标移至输入连线的末端(位于连线和连线名之间),并单击鼠标的左键。这时
回出现一个输入I/O Marker,标记里面是连线名。
I.鼠标移至下一个输入,重复上述步骤,直至所有的输入都有I/OMarker。
J.现在请在对话框中选择Output,然后单击输出连线端,加上一个输出I/O Marker。
K.至此原理图就基本完成,它应该如下图所示。
IX.定义器件的属性(Attributes)
你可以为任何一个元件符号或连线定义属性。在这个例子中,你可以为输出端口符号添加引脚锁定LOCK的属性。请注意,在ispLEVER中,引脚的属性实际上是加到I/O Pad符号上,而不是加到I/O Marker上。同时也请注意,只有当你需要为一个引脚增加属性时,才需要I/O Pad符号,否则,你只需要一个I/O Marker。
A.在菜单条上选择Edit =>Attribute =>Symbol Attribute项,这时会出现一个Symbol
Attribute Editor 对话框。
B.单击需要定义属性的输出I/O Pad。
C.对话框里会出现一系列可供选择的属性。
D.选择PinNumber属性,并且把文本框中的…*?替换成…4?(‘4’为器件的引脚号)。这样,该I/O Pad上的信号就被锁定到器件的第四个引脚上了。
E.关闭对话框。
F.请注意,此时数字…4?出现在I/O Pad符号内。
X.保存已完成的设计
从菜单条上选择File,并选Save命令。再选Exit命令。
第三节设计的编译与仿真
I.建立仿真测试向量(Simulation Test Vectors)
A.在已选择LC4032V-10T44I器件的情况下,选择Source菜单中的New...命令。
B.在对话框中,选择ABEL Test Vectors并按OK。
C.输入文件名demo.abv作为你的测试向量文件名。
D.按OK。
E.文本编辑器弹出后,输入下列测试向量文本:
F.完成后,选择File菜单中的Save命令,以保留你的测试向量文件。
G.再次选择File,并选Exit命令。
H.此时你的项目管理器(Project Navigator)应如下图所示。
II.编译原理图与测试向量
现在你已为你的设计项目建立起所需的源文件,下一步是执行每一个源文件所对应的处理过程。选择不同的源文件,你可以从项目管理器窗口中观察到该源文件所对应的可执行过程。在这一步,请你分别编译原理图和测试向量。
A.在项目管理器左边的项目源文件(Sources in Project)清单中选择原理图(demo.sch)。
B.双击原理图编译(Compile Schematic)处理过程。
C.编译通过后,Compile Schematic过程的左边会出现一个绿色的查对记号,以表明编译
成功。编译结果将以逻辑方程的形式表现出来。
D.然后从源文件清单中选择测试向量源文件(demo.abv)。
E.双击测试向量编译(Compile Test Vectors)处理过程。
III.设计的仿真
ispLEVER开发系统不但可以进行功能仿真(Functional Simulation),而且可以进行时序仿真(Timing Simulation)。在仿真过程中还提供了单步运行、断点设置功能。
IV.一、功能仿真
A. 在ispLEVER Project Navigator的主窗口左侧,选择测试向量源文件(demo.abv),
双击右侧的Functional Simulation功能条。将弹出如下图所示的仿真控制窗口
(Simulator Control Panel)。
B. 在Simulator Control Panel中,将根据(*.abv)文件中所给出的输入波形进行一步
到位的仿真。
在Simulator Control Panel中,按Simulate=>Run,再按Tools => Waveform Viewer 菜单,将打开波形观察器Waveform Viewer如下图所示。
C. 波形现在都显示在波形观察器的窗口中,如下图所示:
D. 单步仿真。选Simulator Control Panel窗口中的Simulate=>Step可对您的设计进
行单步仿真。ispLEVER中仿真器的默认步长为100ns,您可根据需要在按
Simulate=>Settings菜单所激活的对话框(Setup Simulator)中重新设置您所需要的步长。按Simulator Control Panel窗口中的Simulate=>Reset菜单,可将仿真状态退回至初始状态(0时刻)。随后,每按一次Step,仿真器便仿真一个步长。下图是按了七次Step钮后所显示的波形(所选步长为100ns)。
E. 设置断点(Breakpoint)。在Simulator Control Panel窗口中,按
Signal=>Breakpoints菜单,会显示如下图所示的断点设置控制的Breakpoint窗口。
在该窗口中按New按钮,开始设置一个新的断点。在Available Signals栏中单击鼠标选择所需的信号,在窗口中间的下拉滚动条中可选择设置断点时该信号的变化要求,例如:->0,指该信号变化到0状态;!=1,指该信号处于非1状态。一个断点可以用多个信号所处的状态来作为定义条件,这些条件在逻辑上是与的关系。最后在Breakpoints窗口中,先选中ADD,再按Arm按钮使所设断点生效。本例中选择信号
OUT->?作为断点条件,其意义是指断点条件成立的条件为OUT信号发生任何变化(变为0,1,Z或X状态)。这样仿真过程中在0ns,700ns,1000ns时刻都会遇到断点。F. 波形编辑(Waveform Edit)。
除了用*.abv文件描述信号的激励波形外,ispLEVER还提供了直观的激励波形的图形输入工具-Waveform Editor。以下是用Waveform Editor编辑激励波形的步骤(仍以设计demo.sch为例):
1. 在Simulator Cotrol Panel窗口中,按Tools=>Waveform Editor菜单,进入
波形编辑器窗口(Waveform Editing Tool),如下图所示:
2. 在上述窗口中按Object=>Edit Mode,将弹出如下图所示的波形编辑子窗口:
3. 在Waveform Editing Tool窗口中按Edit=>New Wave菜单,弹出如下窗口:
在该窗口中的Polarity选项中选择Input,然后在窗口下部的空格中输入信
号名:A,B,C,D,CK。每输完一个信号名按一次Add钮。
4. 在完成上述步骤3以后,Waveform Editing Tool窗口中有了A,B,C,D,CK
的信号名,如下图所示:
单击窗口左侧的信号名A,开始编辑A信号的激励波形。单击0时刻右端且与A信号所处同一水平位置任意一点,波形编辑器子窗口中将显示如下信息:
在States栏中选择Low,在Duration栏中填入200ns并按回车键。这时,在Waveform Editing Tool窗口中会显示A信号在0-200ns区间为0的波形。然后在Waveform Editing Tool窗口中单击200ns右侧区间任一点,可在波形编辑器的子窗口中编辑A信号的下一个变化。重复上述操作过程,编辑所有输入信号A,B,C,D,CK的激励波形,并将它存盘为wave_in.wdl 文件。完成后,Waveform Editing Tool窗口如下图所示:
5. 在Waveform Editing Tool菜单中,按File=>Consistency Check菜单,检测
激励波形是否存在冲突。在该例中,错误信息窗口会提示No Errors
Dected。
6. 至此,激励波形已描述完毕,剩下的工作是调入该激励文件(wave_in.wdl)进
行仿真:
回到ispLEVER Project Navigator 主窗口,按 Source=>Import菜单,调入激励文件wave_in.wdl。在窗口左侧的源程序区选中Wave_in.wdl文
件,双击窗口右侧的Functional Simulation栏进入功能仿真流程,以下的步
骤与用*.abv描述激励的仿真过程完全一致,在此不再赘述。
二、时序仿真(Timing Simulation)
时序仿真的操作步骤与功能仿真基本相似,以下简述其操作过程中与功能仿真的不同之处。
仍以设计Demo为例,在ispLEVER Project Navigator主窗口中,在左侧源程序区选中Demo.abv,双击右侧的Timing Simulation栏进入时序仿真流程。由于时序仿真需要与所选器件有关的时间参数,因此双击Timing Simulation栏后,软件会自动对器件进行适配,然后打开与功能仿真时间相同的Simulator Control Panel窗口。
时序仿真与功能仿真操作步骤的不同之处在于仿真的参数设置上。在时序仿真时,打开Simulator Control Panel窗口中的Simulate=>Settings菜单,产生Setup
Simulator对话框。在此对话框中可设置延时参数(Simulation Delay)最小延时(Minimun Delay)、典型延时(Typical Delay)、最大延时(Maximun Delay)和0延时(Zero Delay)。
最小延时是指器件可能的最小延时时间,0延时指延时时间为0。
在Setup Simulator对话框中,仿真模式(Simulation Mode)可设置为两种形式:惯性延时(Inertial Mode)和传输延时(Transport Mode)。
将仿真参数设置为最大延时和传输延时状态,在Waveform Viewer窗口中显示的仿真结果如下图所示:
由图可见,与功能仿真不同的是:输出信号OUT的变化比时钟CK的上升沿滞后了5ns。
IV. 建立元件符号(Symbol)
ispLEVER工具的一个非常有用的特点是能够迅速地建立起一张原理图的符号。通过这一步骤,你可以建立一个可供反复调用的逻辑宏元件,以便放置在更高一层的原理图纸上。下一节将指导你如何调用。这里仅教你如何建立元件符号。
A.双击原理图的资源文件demo.sch,把它打开。
B.在原理图编辑器中,选择File菜单。
C.从下拉菜单中,选择Matching Symbol命令。
D.关闭原理图。
E.至此,这张原理图的宏元件符号已经建立完毕,并且被加到元件表中。你可以在下一
节中调用这个元件。
第四节硬件描述语言和原理图混合输入
ispLEVER软件支持ABEL/原理图、VHDL/原理图、Verilog/原理图的混合输入。这一节,我们以ABEL/原理图为例,介绍硬件描述语言和原理图混合输入的方法。
现在,你要建立一个简单的ABEL HDL语言输入的设计,并且将其与上一节中完成的原理图进行合并,以层次结构的方式,画在顶层的原理图上。然后对这个完整的设计进行仿真、编译,最后适配到器件中。
现在我们就开始吧!
I 启动ispLEVER
如果你在上一节的练习后退出了ispLEVER,点击Start => Programs => LatticeSemiconductor => ispLEVER菜单,屏幕上你的项目管理器应该如下图所示。
II 建立顶层的原理图
A.仍旧选择LC4032V-10T44I器件,从菜单条上选Source。
B.选择New...
C.在对话框中选Schematic,并按OK。
D.在文本框中输入文件名top.sch,并按OK。
E.现在你就进入了原理图编辑器。
F.
调用上节中创建的元件符号。选择Add 菜单中的Symbol 项,这时会出现Symbol Libraries 对话框,选择Local 的库,你会注意到在下部的文本框中有一个叫demo 的元件符号,这就是你在上一节中自行建立的元件符号。 G.
选择demo 元件符号,并放到原理图上的合适位置。
II.
建立内含ABEL 语言的逻辑元件符号
现在你要为ABEL HDL 设计文件建立一个元件符号。只要知道了接口信息,你就可以为下一层的设计模块创建一个元件符号。而实际的ABEL 设计文件可以在以后再完成。 A. 在原理图编辑器里,选择ADD 菜单里的New Block Symbol...命令。 B. 这时候会出现一个对话框,提示你输入ABEL 模块名称及其输入信号名和输出信号
名。请按照下图所示输入信息:
C. 当你完成信号名的输入,揿Run 按钮,就会产生一个元件符号,并放在本地元件库中。同时元件符号还粘连在光标上,随之移动。
D. 把这个符号放在demo 符号的左边。
E. 单击鼠标右键,就会显示Symbol Libraries 的对话框。 请注意abeltop 符号出现在Local 库中。
F.
关闭对话框。你的原理图应该如下图所示:
III. 完成原理图
现在请你添加必需的连线,连线名称,以及I/O 标记,来完成顶层原理图,使其看上去如下图所示。如果你需要帮助,请参考第二节中有关添加连线和符号的指导方法。当你画完后,请存盘再退出。
IV.建立ABEL-HDL源文件
现在你需要建立一个ABEL源文件,并把它链接到顶层原理图对应的符号上。项目管理器使这些步骤简化了:
A.你当前的管理器应该如下图所示:
B.请注意abeltop左边的红色“?”图标。这意味着目前这个源文件还是个未知数,因
为你还没有建立它。同时也请注意源文件框中的层次结构,abeltop和demo源文
件位于top原理图的下面并且偏右,这说明它们是top原理图的底层源文件。这
也是ispLEVER项目管理器另外一个有用的特点。
C.为了建立所需的源文件,请选择abeltop,然后选择Source菜单中的New...命
令。
D.在New Source对话框中,选择ABEL-HDL Module并按OK。
E.下一个对话框会问你模块名,文件名,以及模块的标题。为了将源文件与符号相
链接,模块名必须与符号名一致,而文件名没有必要与符号名一致。但为了简
单,你可以给它们取相同的名字。按下图所示,填写相应的栏目:
F.按OK。你就进入了Text Editor,而且可以看到ABEL HDL设计文件的框架已经呈
现在你的面前。
G.输入下列的代码。确保你的输入代码位于TITLE语句和
END
H.当你完成后,选择File菜单中的Save命令。
I.退出文本编辑器。
J.请注意项目管理器中abeltop源文件左边的图标已经改变了。这就意味着你已经有了一个与此源文件相关的ABEL文件,并且已经建立了正确的链接。
V.编译ABEL HDL
A.选择abeltop源文件。
B.在处理过程列表中,双击Compile Logic过程。当处理过程结束后,你的项目管
理器应该如上图所示。
VII. 仿真
你现在可以对整个设计进行仿真。为此,你需要一个新的测试矢量文件。在这个例子中你只需要修改当前的测试矢量文件。
A.双击demo.abv源文件,就会出现文本编辑器。
B.按照下图修改测试矢量文件: