当前位置:文档之家› ispLEVER5.0简明中文教程(CPLD篇)

ispLEVER5.0简明中文教程(CPLD篇)

Lattice CPLD/FPGA 开发工具

ispLEVER5.0 简明 中文教程(CPLD篇)

黄 俊

2005年7月

概述

ispLEVER是Lattice(莱迪思)的数字设计工具套件,它支持莱迪思所有的FPGA、CPLD、ispGDX和SPLD器件。ispLEVER包含Lattice以及业界领先者们所开发的工具,用于设计输入、综合、验证/仿真、适配、布局和布线以及器件编程。

本文简要说明了ispLEVER中的各种工具的使用方法,并说明如何查看ispLEVER中的报告。

本篇以一个简单的4位比较器为例介绍开发CPLD的流程,最后还重点介绍了在CPLD开发中占一定比例的原理图编辑法。

关于Help文件

z学习一个软件的最佳途径就是学习它的Help,ispLEVER的Help文档非常详细,不仅有对软件各功能的详细解释还学习指南;

z用户可以在软件的任何环境下按F1打开Help;

z在不同的窗口下的菜单栏内点击Help菜单,即可以打开相应的Help文件;

z为尽快掌握ispLEVER的操作,用户也可以联系代理商以安排软件培训。

在这里做个广告,我们公司——晏阳科技(总公司为彦阳科技)是Lattice的代理商之一,本人是深圳办事处的一名应用工程师,客户主要在福建和深圳。我们深圳办事处的总机号码是0755-********,传真是0755-********。福州联络处的电话是:0591-********

系统需求

z若开发CPLD,建议内存256M以上,推荐512M;

z若开发FPGA,建议内存512M以上,推荐768M;

z强烈建议使用Windows XP系统。

软件安装

1、放入安装光盘,ispLEVER Setup会自动启动。

2、选第三项Install ispLEVER 5.0 Design Tools(第4项Install PAC-

Designer 3.4是安装Lattice PAC系列产品的开发软件,支持在系统可编程模拟器件ispPAC,在系统可编程电源管理芯片ispPAC-POWER,本人也写了一篇关于该软件的中文说明)

3、一直点Next:

设定安装路径,一路点Next,:

4、到以上页面时,选择需要安装器件和开发工具。之后一直点Next。直至安

装完毕。如果完全安装,中间会提示插入第二张光盘。

5、安装完之后,还需要一个license才能运行,要获取该license和license

的安装方法请与代理商取得联系。

第一篇用ispLEVER开发CPLD的流程

1、双击图标,或点开始?程序?Lattice Semiconductor?ispLEVER

Project Navigator,启动ispLEVER。

2、点File?New Project...,或点工具栏上的按钮新建一个项目:

3、在弹出的Project Wizard里面设好项目名及新建项目保存的目录,选择

设计输入的方式及综合工具。ispLEVER里面的输入方式有原理图、ABEL、VHDL、Verilog HDL或原理图分别与这三种语言的混合输入。

4、点下一步,在弹出的对话框里选择好器件,在这里以Lattice目前主流

的CPLD:ispMACH 4000系列CPLD为例,选择LC4032V-75T48C这颗芯片。

5、点下一步,点Add Source...添加已编写好的源文件,勾上Copy Source

to Dirt...,将源文件复制到项目文件夹内。如没有需要添加的源文件则直接点下一步。

6、点完成。最后如下图所示。

7、

点Options ?environment,可以对ispLEVER 的界面做一些设置,其中较为重要的几个设置有:

8、

在Revision Controls(ON)处点右键,选Turn Off,关掉版本记录。

从这里开始,为便于说明,将流程分为两个部分,一是源文件级,二是项目级。

源文件级流程

9、在左边空白处点右键,选New...,选VHDL Module,点OK。

10、填入文件名,实体名和结构体名,点OK。

11、在弹出的源程序编辑窗口中输入顶层文件,(注:本文中的源文件软件

中有自带,在ispLEVER安装目录下找到ispTOOLS5_0\ispcpld\

examples\cpld\vhdl\compare文件夹或在ispLEVER主窗口下,进

File?Open example,选CPLD\VHDL\compare,选compare.syn,点打开:

library ieee;

use ieee.std_logic_1164.all;

entity TOP_SCHEMATIC is

port (CLK : in std_logic;

RST : in std_logic;

SEL : in std_logic;

DAT : in std_logic_vector (3 downto 0);

COMPDAT : in std_logic_vector (3 downto 0);

GT_O : out std_logic;

LT_O : out std_logic;

EQ_O : out std_logic);

end TOP_SCHEMATIC;

architecture IMP_TOP_SCHEMATIC of TOP_SCHEMATIC is

COMP_LT

component

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

component;

end

COMP_GT

component

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

component;

end

component

COMP_EQ

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

component;

end

signal CR : std_logic_vector (3 downto 0);

signal W_CR : std_logic_vector (3 downto 0);

begin -- IMP_TOP_SCHEMATIC

------------------------------------------- -- Instantiate lower level modules ------------------------------------------- GT_1: COMP_GT port map( O1 => GT_O, IN0 => W_CR, IN1 => COMPDAT); LT_1: COMP_LT port map ( O1 => LT_O, IN0 => W_CR, IN1 => COMPDAT); EQ_1: COMP_EQ port map ( O1 => EQ_O, IN0 => W_CR, IN1 => COMPDAT);

W_CR <= CR;

-------------------------------------------- -- Define logic for loading compare register -- -- The compare register (cr) is only loaded -- when sel input is asserted on rising edge of clk. -------------------------------------------- LOAD_COMP_REG : process (CLK, RST) begin -- process LOAD_COMP_REG -- activities triggered by asynchronous reset (active low) if RST = '0' then CR <= "0000"; -- activities triggered by rising edge of clock elsif CLK'event and CLK = '1' then if SEL = '0' then CR <= DAT; else

CR <= CR; end if; end if; end process LOAD_COMP_REG;

end IMP_TOP_SCHEMATIC;

12、 点保存。主界面显示如下,ispLEVER 会自动显示该顶层程序中调用了三

个底层程序, 因这三个底层程序还没有编辑,所以前面标有一个图标。

13、三个底层程序的输入方法也与顶层程序一样,在这里不再重复。在这里

也给出三个底层程序,以方便学习:

(1)

library ieee;

use ieee.std_logic_1164.all;

entity COMP_EQ is

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

end COMP_EQ;

architecture IMP_COMP_EQ of COMP_EQ is

begin -- IMP_COMP_EQ

FUNCTION_EQ : process (IN0, IN1)

begin -- process FUNCTION_GT

if IN0 = IN1 then

O1 <= '1';

else

O1 <= '0';

if;

end

end process FUNCTION_EQ;

end IMP_COMP_EQ;

(2)

library ieee;

use ieee.std_logic_1164.all; entity COMP_GT is port (O1 : out std_logic; IN0 : in std_logic_vector (3 downto 0); IN1 : in std_logic_vector (3 downto 0));

end COMP_GT;

architecture IMP_COMP_GT of COMP_GT is

begin -- IMP_COMP_GT

FUNCTION_GT : process (IN0,IN1) begin -- process FUNCTION_GT if IN0 > IN1 then O1 <= '1'; else

O1 <= '0'; end if;

end process FUNCTION_GT;

end IMP_COMP_GT;

(3)

library ieee;

use ieee.std_logic_1164.all; entity COMP_LT is port (O1 : out std_logic; IN0 : in std_logic_vector (3 downto 0); IN1 : in std_logic_vector (3 downto 0));

end COMP_LT;

architecture IMP_COMP_LT of COMP_LT is

begin -- IMP_COMP_LT

FUNCTION_LT : process (IN0,IN1) begin -- process FUNCTION_LT if IN0 < IN1 then O1 <= '1'; else

O1 <= '0'; end if;

end process FUNCTION_LT;

end IMP_COMP_LT;

14、文本编辑器窗口下有以下比较实用的小技巧值得关注:

(1) 对源文件的剪切(Ctrl+X)、复制(Ctrl+C)、粘贴(Ctrl+V)和一般文字处理软件的操作一样;

(2) 点工具栏上的按钮,可以在每行程序的开头处显示行号。

(3) 寻找和替换在调试程序时很有用,快捷方式分别是F2,F3;

(4) 键盘记录功能。点下,启动键盘记录功能,从此时起,变

成,系统会自动记录键盘输入的文本字符,直到点击为

止。在此期间的文本都会被暂存,到需要复制该段文本的地方,

按F7,即可粘贴出来。

(5)个性化界面的颜色。点Options?Set color。设置好,点OK。

(6) 模板的使用。模板的合理使用,可以加快源程序的输入速度和准备度,以提高工作效率。

a、建立模板文件。进Templates?Creat File...,设定模板

文件的名字,保存路径:

b、进Templates?New...在弹出的空白文本编辑器中输入模

板的内容。点保存,弹出对话框,选择当前模板存于什么

模板文件中,如这里就选mytpl,输入该模板的模板名,

点OK,该模板即已被保存下来。

c、插入模板。在需要插入模板的地方点Templates?

Insert..., 或点F9,或点工具栏上的图标,在弹出的

对话框中选择需要的模板文件和模板名,点OK。ispLEVER

中已经提供一些常用的模板,用户也可以自己制作,自己

调用。

15、最后显示如下界面:

16、源程序编写完之后是综合(synthesize)。综合是将HDL语言翻译成由

与、或、非门、RAM、寄存器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(如果在代码中还加了约束条件的话)优化所生成的逻辑连接的过程。ispLEVER中有两种综合工具,一是Synplicity公司的Synplify,另两个是Mentor Graphics公司的LeonardoSpectrum和Precision。在新建文件夹的时候已经选定综合工具,如果在这时想改,可以在ispLEVER Project Nagavitor主界面下,点Options?Select RTL Synthesize...,在弹出的对话框中直接选择。三者都已嵌入ispLEVER,所以直接在右边的窗口直接双击指令即可。如果通过了会在该指令前显示绿勾,如果出错则会显示红色的叉号,并在Automake Log 栏显示综合信息,出错的提示语句会以红色显示,双击红色提示会直接

连接到出错的程序行,并以高亮显示。

17、双击Compile EDIF File。

18、可以根据需要选择双击Generate Schematic Symbol,该指令的作用是

由HDL文件生成电路图编辑器中的一个电路元件。这在原理图与HDL语

言混合输入的设计当中非常有用。以上三个步骤如果提示有错误或警告

信息,可以根据Automake Log中的信息进行排错,或修改设计。

19、在这里有Compiled Equations和VHDL Test Bench Template两个小指

令,前者可以查看设计实现的表达式,后者可以生成针对该设计的测试

平台的模板。

20、说到测试平台,下面就介绍一下仿真。用ispLEVER开发CPLD有两种仿

真方法,一是用ispLEVER自带的波型仿真,简单直观,另一是使用第三方的工具Modelsim来仿真。

(1) 波型仿真。

z左边空白处,点右键,点Waveform Stimulus。

z选其中一个进行仿真,如果选LC4032V-75T48C就是对整个设计仿真,且还可以支持时序仿真,而其它的只能进行功能仿真。

z点OK,输入文件名。

z点Options?Timing Options,选择最小刻度的单位。

z点Edit?Import Wave...选择信号,点Add,再点Show,可以导入信号。

z也可以用工具栏上的、分别增加和删除波形。如总线输入DAT[3:0]不想分开显示波型可以点图标,再如下图所示,点OK,即可。

z信号列表会在左边显示,信息的摆放顺序可以移动,点中某

个信号,会显示状波纹,点住左键不放,直接拖到想要到的位置即可。

z画好输入的波形图。直接在右边窗口点即可。会弹出对话框,可以选择是什么状态,在Duration里面写入精确的时间。

z 双击已画好的部分波型,则该波型被两条黑线框住,可以在Scale里面整休调节宽度,在Repeat里填入重复的周期数。

z 其它的输入也一样,全部画好如下(在这里随便意思了一下,设计者要根据实际可能发生的情况规划好仿真的输入波形):

相关主题
文本预览
相关文档 最新文档