文档库 最新最全的文档下载
当前位置:文档库 › ispLEVER_VHDL

ispLEVER_VHDL

ispLEVER_VHDL
ispLEVER_VHDL

目录

第一节 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.按照下图修改测试矢量文件:

相关文档