阅读:3688回复:0
ispLEVER
目 录
第一节 ispLEVER 简介 第二节 ispLEVER开发工具的原理图输入 第三节 设计的编译与仿真 第四节 硬件描述语言和原理图混合输入 第五节 ispLEVER工具中VHDL和Verilog语言的设计方法 第六节 ispVM System-在系统编程的软件平台 第七节 约束条件编辑器(Constraint Editor)的使用方法 附录一 ispLEVER System上机实习题 附录二 ispLEVER软件中文件名后缀及其含义 第 一 节 ispLEVER 简 介 ispLEVER 是Lattice 公司最新推出的一套EDA软件。设计输入可采用原理图、硬件描述语言、混合输入三种方式。能对所设计的数字电子系统进行功能仿真和时序仿真。编译器是此软件的核心,能进行逻辑优化,将逻辑映射到器件中去,自动完成布局与布线并生成编程所需要的熔丝图文件。软件中的Constraints Editor工具允许经由一个图形用户接口选择I/O设置和引脚分配。软件包含Simplicity公司的“Synplify”综合工具和Lattice的ispVM器件编程工具。ispLEVER软件提供给开发者一个简单而有力的工具,用于设计所有莱迪思可编程逻辑产品。软件支持所有Lattice公司的ispLSI 、MACH、ispGDX、ispGAL、GAL器件。ispLEVER工具套件还支持莱迪思新的ispXPGATM和ispXPLDTM产品系列,并集成了莱迪思ORCA Foundry设计工具的特点和功能。这使得ispLEVER的用户能够设计新的ispXPGA和ispXPLD产品系列,ORCA FPGA/FPSC系列和所有莱迪思的业界领先的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菜单) 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) 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 ]->[ x ]; [ c , 0 , 1 , 0 , 1 ]->[ x ]; END 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. 编译原理图与测试向量 现在你已为你的设计项目建立起所需的源文件,下一步是执行每一个源文件所对应的处理过程。选择不同的源文件,你可以从项目管理器窗口中观察到该源文件所对应的可执行过程。在这一步,请你分别编译原理图和测试向量。 在项目管理器左边的项目源文件(Sources in Project)清单中选择原理图(demo.sch)。 A. 双击原理图编译(Compile Schematic)处理过程。 B. 编译通过后,Compile Schematic过程的左边会出现一个绿色的查对记号,以表明编译成功。编译结果将以逻辑方程的形式表现出来。 C. 然后从源文件清单中选择测试向量源文件(demo.abv)。 D. 双击测试向量编译(Compile Test Vectors)处理过程。 III. 设计的仿真 ispLEVER开发系统不但可以进行功能仿真(Functional Simulation),而且可以进行时序仿真(Timing Simulation)。在仿真过程中还提供了单步运行、断点设置功能。 一、功能仿真 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语句之间。 MODULE abeltop TITLE \'This is the Top Level ABEL file\' \" Inputs IN1,IN2,IN3 pin; \"Outputs OUT1,OUT2,OUT3,OUT4 pin; Equations OUT1=IN1 & !IN3; OUT2=IN1 & !IN2; OUT3=!IN1 & IN2 & IN3; OUT4=IN2 & IN3; END H. 当你完成后,选择File菜单中的Save命令。 I. 退出文本编辑器。 J. 请注意项目管理器中abeltop源文件左边的图标已经改变了。这就意味着你已经有了一个与此源文件相关的ABEL文件,并且已经建立了正确的链接。 V. 编译ABEL HDL A. 选择abeltop源文件。 B. 在处理过程列表中,双击Compile Logic过程。当处理过程结束后,你的项目管理器应该如上图所示。 VII. 仿真 你现在可以对整个设计进行仿真。为此,你需要一个新的测试矢量文件。在这个例子中你只需要修改当前的测试矢量文件。 A. 双击demo.abv源文件,就会出现文本编辑器。 B. 按照下图修改测试矢量文件: module demo; c,x = .c.,.x.; CLK,TOPIN1,TOPIN2,TOPIN3,TOPOUT PIN; TEST_VECTORS ([CLK,TOPIN1,TOPIN2,TOPIN3]->[TOPOUT]) [ c , 0 , 0 , 0 ]->[ x ]; [ c , 0 , 0 , 1 ]->[ x ]; [ c , 0 , 1 , 0 ]->[ x ]; [ c , 0 , 1 , 1 ]->[ x ]; [ c , 1 , 0 , 0 ]->[ x ]; [ c , 1 , 0 , 1 ]->[ x ]; [ c , 1 , 1 , 0 ]->[ x ]; [ c , 1 , 1 , 1 ]->[ x ]; END C. 完成后,存盘退出。 D. 仍旧选择测试矢量源文件,双击Functional Simulation过程,进行功能仿真。 E. 现进入Simulation Control Panel窗口。按 Tools=> Waveform Viewer窗口,打开波形观测器准备查看仿真结果。 F. 为了看波形,你必须在Waveform Viewer窗口中按Edit=>Show菜单,弹出如下Show Waveforms窗口: G. Show Waveforms窗口中选择CLK, TOPIN1, TOPIN2, TOPIN3和TOPOUT信号,并且按Show钮。然后按File=>Save菜单。这些信号名都可以在波形观测器中观察到。再按Run钮进行仿真,其结果如下图所示: H. 在步骤D中,如双击Timing Simulation过程,即可进入时序仿真流程,以下仿真步骤与功能仿真相同。 VIII. 把设计适配到Lattice器件中 现在你已经完成了原理图和ABEL语言的混合设计及其仿真。剩下的步骤只是将你的设计放入器件中。因为你已经在第二节中选择了器件,你可以直接执行下面的步骤: A. 在源文件窗口中选择LC4032V-10T44I器件作为编译对象,并注意观察对应的处理过程。 B. 双击处理过程Fit Design。这将迫使项目管理器完成对源文件的编译,然后连接所有的源文件,最后进行逻辑分割,布局和布线,将设计适配到所选择的Lattice器件中。 C. 当这些都完成后,你可以双击HTML Fitter Report,查看一下设计报告和有关统计数据。 D. 祝贺!!你现在已经完成了设计例子,并且掌握了ispLEVER的主要功能。 IX. 层次化操作方法 层次化操作是ispLEVER项目管理器的重要功能,它能够简化层次化设计的操作。 a) 在项目管理器的源文件窗口中,选择最顶层原理图“top.sch”.此时在项目管理器右边的操作流程清单中必定有Navigation Hierarchy过程。 b) 双击Navigation Hierarchy过程,即会弹出最顶层原理图“top.sch”。 c) 选择View菜单中的Push/Pop命令,光标就变成十字形状。 d) 用十字光标单击顶层原理图中的abeltop符号,即可弹出描述abeltop逻辑的文本文件abeltop.abl。此时可以浏览或编辑ABELHDL设计文件。浏览完毕后用File菜单中的Exit命令退回顶层原理图。 e) 用十字光标单击顶层原理图中的demo符号,即可弹出描述demo逻辑的底层原理图demo.sch。此时可以浏览或编辑底层原理图。 f) 若欲编辑底层原理图,可以利用Edit菜单中的Schematic命令进入原理图编辑器。编译完毕后用File菜单中的Save和Exit命令退出原理图编辑器。 g) 底层原理图浏览完毕后用十字光标单击图中任意空白处即可退回上一层原理图。 h) 若某一设计为多层次化结构,则可在最高层逐层进入其底层,直至最底一层;退出时亦可以从最底层逐层退出,直至最高一层。 i) 层次化操作结束后用File菜单中的Exit命令退回项目管理器。 注意: 将Y1端口定义成时钟输入端的方法 ispLSI1016和ispLSI2032两种器件的Y1端是功能复用的。如果不加任何控制,适配软件在编译时将Y1默认为是系统复位端口(RESET)。若欲将Y1端用作时钟输入端,必须通过编译器控制参数来进行定义。 第五节 ispLEVER工具中VHDL和Verilog语言的设计方法 用户的VHDL或Verilog设计可以经ispLEVER系统提供的综合器进行编译综合,生成EDIF格式的网表文件,然后可进行逻辑或时序仿真,最后进行适配,生成可下载的JEDEC文件。 VHDL设计输入的操作步骤 在ispLEVER System Project Navigator主窗口中,按File=>New Project菜单建立一个新的工程文件,此时会弹出如下图所示的对话框。请注意:在该对话框中的Project Type栏中,必须根据设计类型选择相应的工程文件的类型。本例中,选择VHDL类型。若是Verilog设计输入,则选择Verilog HDL类型。 将该工程文件存盘为demo.syn。 在ispLEVER System Project Navigator主窗口中,选择Source=>New菜单。在弹出的New Source对话框中,选择VHDL Module类型。 此时,软件会产生一个如下图所示的New VHDL Source对话框: 在对话框的各栏中,分别填入如上图所示的信息。按OK钮后,进入文本编辑器-Text Editor编辑VHDL文件。 在Text Editor中输入如下的VHDL设计,并存盘。 此VHDL设计所描述的电路与5.2节所输入的原理图相同,只不过将输出端口OUT改名为OUTP(因为OUT为VHDL语言保留字)。 此时,在 ispLEVER System Project Navigator主窗口左侧的源程序区中,demo.vhd文件被自动调入。选择器件ispMACH4A5-64/32-10JC,并启动Options=>Select RTL Synthesis菜单,显示如下对话框: 在该对话框选择Synplify,即采用Synplify工具对VHDL设计进行综合。 此时的ispLEVER System Project Navigator主窗口如下图所示: 双击Processes窗口的Synplify Synthesize VHDL File进行编译、综合。或者选择菜单Tools=> Synplify Synthesis产生如下窗口。选Add调入demo.vhd,然后对demo.vhd文件进行编译、综合。 若整个编译、综合过程无错误,该窗口在综合过程结束时会自动关闭。若在此过程中出错,双击上述Synplify窗口中Source Files栏中的demo.vhd文件进行修改并存盘,然后按RUN钮重新编译。 在通过VHDL综合过程后,可对设计进行功能和时序仿真。在ispLEVER System Project Navigator主窗口中按Source=>New菜单,产生并编辑如下的测试向量文件demo.abv: 在ispLEVER System Project Navigator主窗口中选中左侧的demo.abv文件,双击右侧的Functional Simulation栏,进行功能仿真。在Waveform Viewer窗口中观测信号A,B,C,CK,D和OUTP,其波形如下图所示: 在ispLEVER System Project Navigator主窗口中选中左侧的demo.abv文件,双击右侧的Timing Simulation栏,进行时序仿真。选择Maximum Delay,在Waveform Viewer窗口中观测信号A,B,C,CK,D和OUTP,其波形如下图所示: 在ispLEVER System Project Navigator主窗口中选中左侧的ispMACH器件,双击右侧的Fit Design栏,进行器件适配。该过程结束后会生成用于下载的JEDEC文件demo.jed。 Verilog设计输入的操作步骤 Verilog设计输入的操作步骤与VHDL设计输入的操作步骤完全一致,在此不再赘述。需要注意的是在产生新的工程文件时,工程文件的类型必须选择为Verilog HDL。 第六节 ispVM System-在系统编程的软件平台 Lattice器件的在系统编程是借助ispVM System 软件来实现的。ispVM System 软件集成在ispLEVER 软件中,它同时也可以是一个独立的器件编程软件。ispVM SystemTM 是一个综合的将设计下载到器件的软件包。该软件提供一种有效的器件编程方式,即采用由莱迪思半导体公司或其他公司的设计软件所生成的 JEDEC 文件来对 ISP 器件编程。这一完整的器件编程工具允许用户快速简便地通过 ispSTREAMTM 将设计烧写到器件上。它还拥有简化 ispATETM、ispTESTTM 及 ispSVFTM 编程的功能。在此仅介绍最常用的基于PC 机 Windows 环境的ispVM System,其使用方法如下: 在启动ispVM System前,先将Lattice下载电缆连接在PC机的并行口和待下载的印刷电路板上,并打开印刷电路板的电源。 在Windows中,按Start=>Programs=>Lattice Semiconductor=>ispVM System菜单启动ispVM System,如下图所示。 在LSC ispVM? System窗口中,按ispTools=>Scan Chain菜单,ispVM System软件会自动检测JTAG下载回路,找到回路中所有的器件型号。在本例中,印刷电路板上的JTAG下载回路中仅有一片M4A5-64/32-10JC器件,因此,Scan Chain后的窗口如下图所示。 为得到可供下载到M4A5-64/32-10JC器件中的JED文件,我们可以将第四节设计实例中的器件型号改选为M4A5-64/32-10JC,重新做编译和适配,得到基于M4A5-64/32-10JC器件的JED文件。 在LSC ispVM? System窗口中,双击New Scan Configuration Setup子窗口中的iM4A5-64/32栏,弹出Device Information对话框。在该对话框中的Data File栏里,选择需要下载的JED文件D:\\user\\demo.jed;在该对话框中的Operation栏里,选择所需的编程操作,这里选Erase,Program,Verify,对器件进行擦除、编程、校验。完成这些操作后,Device Information对话框如下图所示。按OK钮,关闭该对话框。 在LSC ispVM? System窗口中,按Project=>Download菜单启动下载操作。数秒钟后,下载完成,这时New Scan Configuration Setup子窗口中的Status栏显示PASS,并有一个绿色的圆点,参见下图。 器件回读与加密 器件回读 运用ispVM System软件,可以将已下载过的、未经加密的器件中的熔丝信息回读出来,并存储为新的JED文件共复制相同设计的器件。其操作方法是:在Device Information对话框中的Operation栏里,选择Read and Save JEDEC操作,同时,在Data File栏里,输入将要存放熔丝信息的文件名(JED文件)。在LSC ispVM? System窗口中,按Project=>Download菜单启动回读操作。 器件加密 为防止自己的设计被非法回读,设计者可以在下载设计的时候对器件进行加密。其操作方法是:在Device Information对话框中的Operation栏里,选择Erase,Program,Verify,Secure操作。在LSC ispVM? System窗口中,按Project=>Download菜单启动加密下载操作。如果对加密后的器件进行回读操作,那么可以看到回存的JED文件中,熔丝信息均为0。 第七节 约束条件编辑器(Constraint Editor)的使用方法 ispLEVER软件中的 Constraints Editor是一个功能强大的、集成的设计参数设置工具,其可以设置Pin Attributes,Global Constraints,Resource Reservation等参数。根据用户所选器件型号的不同,可供选择的参数也不尽相同。以下我们仍以第四节中的设计为例,说明其使用方法。 在ispLEVER Project Navigator 的主窗口左侧,选中器件型号栏(LC4032V-10T44I), 双击右侧的Constraint Editor功能条,打开Constraint Editor,如下图所示。 点击窗口左侧Input Pins和Output Pins左边的 ,展现所有的输入信号:CLK,TOPIN1,TOPIN2,TOPIN3以及输出信号TOPOUT。双击这些信号名,在窗口右侧会出现对应于每个信号的参数行,如下图所示。 在参数行中,可以单独设置每个信号的Group Members,GLB,Macrocell,Pin,I/O Types,Slewrate,Fast bypass,Osm bypass,Input registers,Register powerup等参数。在这些参数中,最常用的是用于引脚锁定的参数Pin,其设置方法如下: 双击每个信号参数行的Pin这一格,输入该信号需要锁定的引脚序列号。假定信号CLK,TOPIN1,TOPIN2,TOPIN3和TOPOUT需要锁定的引脚号分别为39,2,3,4,7,分别输入这些引脚号,结果如下: 设置完成后,按File=>Save菜单存盘保存设置。无论是原理图还是用HDL做的设计,都可以采用这种方法设定器件的引脚。 若需设置Global Constraints,Resource Reservation的参数,可以按窗口右下方的Global Constraints和Resource Reservation菜单。 引脚锁定的另一种方法: 引脚锁定是参数设置中最常用的,以下介绍另一种直观的引脚锁定方法: 在Constraints Editor窗口中,按Device=>Package View菜单,窗口变成如下形式。 在右侧窗口中选中要锁定的信号名,按下鼠标左键,将该信号拖至窗口左边器件引脚图中对应的引脚上,放开左键,该信号就被锁定在对应的引脚上了。用这种方法锁定引脚方便、直观,在复杂设计中尤为如此。 附录一 ispLEVER System上机实习题 实验习题一 按照所给电路图设计一个四位二进制加法计数器,并进行功能仿真 操作方法 1 建立一个名为CNT14的新设计项目,并打开原理图编辑器。 2 先按照上机操作教材第四节之3建立名为CBU14的逻辑元件符号。 3 调用逻辑元件CBU14,完成原理图输入,并标注内部节点名称,然后存盘退出。 4 四位二进制加法计数器CBU14的ABEL描述语句为: MODULE CBU14 CAI,CLK,CD PIN; CAO PIN ISTYPE \'COM\'; Q3..Q0 PIN ISTYPE \'REG\'; count = [Q3..Q0]; EQUATIONS count.CLK = CLK; count.AR = CD; count := (count.fb) & !CAI; count := (count.fb + 1) & CAI; CAO = Q3.Q & Q2.Q & Q1.Q & Q0.Q & CAI; END 5 根据以上语句用文本编辑器建立CBU14.ABL文件,并用Source菜单中的Import命令调入设计环境。 6 用文本编辑器建立测试向量文件CNT14.ABV。 module CNT14; \"pins CK pin; QQ0,QQ1,QQ2,QQ3 pin ISTYPE \'REG\'; COUT pin ISTYPE \'COM\'; test_vectors (CK -> [QQ0,QQ1]) @repeat 35 { .c. -> [.x.,.x.]; } end 7 调入测试向量文件CNT14.ABV,运行时序仿真的编译过程,通过后显示出波形图。 8 通过Edit菜单中的Show或Hide命令显示出如下图所示的波形: 图中,QBUS是由信号QQ3,QQ2,QQ1,QQ0所组成的总线信号。 附录二 ispLEVER软件中文件名后缀及其含义 SYN 源 文 件 设 计 项 目 管 理 文 件 ABL 源 文 件 ABEL 硬 件 描 述 语 言 源 文 件 ABV 源 文 件 测 试 向 量 描 述 文 件 SCH 源 文 件 电 路 原 理 图 文 件 VHD 源 文 件 VHDL 硬 件 描 述 语 言 源 文 件 V 源 文 件 Verilog 硬 件 描 述 语 言 源 文 件 PPN 源 文 件 引 脚 锁 定 描 述 文 件 ( 用 电 路 图 锁 定 引 脚 时 为 中 间 文 件) PAR 源 文 件 适 配 器 控 制 参 数 文 件 SYM 中 间 文 件 电 路 符 合 文 件 EQ0 中 间 文 件 逻 辑 描 述 文 件 ( 由 ABL 编 译 所 得) EQ1 中 间 文 件 简 化 逻 辑 文 件 ( 由 EQ0 化 简 所 得) EQ2 中 间 文 件 带 层 次 连 接 关 系 的 逻 辑 描 述 文 件 EQ3 中 间 文 件 经 优 化 的 逻 辑 描 述 文 件 EQ4 中 间 文 件 经 反 复 优 化 的 逻 辑 描 述 文 件 TMV 中 间 文 件 经 编 译 的 测 试 向 量 文 件 TT2 中 间 文 件 逻 辑 网 表 输 出 文 件, 适 配 器 输 入 文 件 FXP 中 间 文 件 逻 辑 布 局 结 果 文 件 LST 中 间 文 件 ABEL 源 文 件 的 列 表 文 件 LOG 中 间 文 件 运 行 流 程 记 录 文 件 SIM 中 间 文 件 仿 真 用 网 表 文 件 JHD 中 间 文 件 层 次 化 关 系 连 接 表 文 件 JED 结 果 文 件 熔 丝 图 文 件 ( JEDEC 文 件) REP 结 果 文 件 GAL 器 件 设 计 编 译 报 告 文 件 RPT 结 果 文 件 IspLSI 器 件 设 计 编 译 报 告 文 件 XRF 结 果 文 件 信 号 和 节 点 简 缩 名 称 文 件 ERR 结 果 文 件 错 误 报 告 文 件 MFR 结 果 文 件 频 率 分 析 报 告 文 件 TSU 结 果 文 件 寄 存 器 建 立 和 保 持 时 间 报 告 文 件 TPD 结 果 文 件 TPD 路 径 延 时 时 间 报 告 文 件 TCO 结 果 文 件 TCO 路 径 延 时 时 间 报 告 文 件 |
|