当前位置:文档之家› ispLEVER官方中文培训教程

ispLEVER官方中文培训教程

ispLEVER官方中文培训教程
ispLEVER官方中文培训教程

目录

第一节ispLEVER 简介

第二节ispLEVER 开发工具的FPGA设计输入方法第三节ModelSim 的使用方法

第四节设计的实现

第一节 ispLEVER简介

ispLEVER 是完整的CPLD和FPGA设计软件,能帮助用户完成从概念到完成产品的设计。 ispLEVER包含许多有力的开发的工具,用于设计输入、项目管理、IP集成、器件映射、布局和布线,以及在系统逻辑分析等。

ispLEVER (Windows) 还包含业界领头羊——我们的伙伴Synplicity 和Mentor Graphics ——的第三方工具,这些工具用于综合和仿真。

ispLEVER 6.0完全支持最新的高性能、低成本的90纳米LatticeECP2?和LatticeSC? 终极性能的系统芯片FPGA系列,并且具有引以为豪的空前性能和经过重大改进的设计流程。ispLEVER 6.0版的主要亮点包括:支持业界最快的90纳米FPGA;推出新的、高度集成的Design Planner接口、针对原理图FPGA设计支持的改进以及一个IPexpress? 用户可配置的IP核拓展库。ispLEVER设计流程如下:

软件主要特征:

1. 输入方式

* 原理图输入

* ABEL-HDL输入

* VHDL输入

* Verilog-HDL输入

* EDIF输入

* 原理图和硬件描述语言混合输入

2.逻辑模拟

* 功能模拟

* 时序模拟

3.编译器

* 结构综合、映射、自动布局和布线

4.支持的器件

* 含有支持ispLSI器件的宏库及MACH器件的宏库、TTL库

* 支持所有LatticeEC、LatticeECP、LatticeSC、LatticeXP、ispLSI、ispMACH、ispGDX、GAL、MachXO、ORCA FPGA/FPSC、ispXPGA和ispXPLD 器件

5. 工具

* Design Planner、EPIC Device Editor、IPexpress、ispTRACY Core Linker、ispVM、ispTRACY Logic Analyzer、Power Calculator、Block Modular Design Wizard、Memory Initialization Tool、Synplify Synthesis、Precisin Synthesis、ModelSim Simulator和TCL等。

第二节 ispLEVER开发工具的FPGA设计输入方法

I.启动ispLEVER(按Start=>Programs=>Lattice Semiconductor=>ispLEVER

Project Navigator菜单)

II.创建一个新的设计项目

1. 选择菜单File。

2. 选择New Project,打开Project Wizard窗口。

3.在Project Wizard窗口的Project Name栏中,键入项目名demo。在

Location栏中,输入文件路径

D:\design\ispLEVER_tutorial_example\ 。在Design Entry Type栏

中选择Schematic/VHDL(ispLEVER软件支持Schematic/ABEL、

Schematic/VHDL、VHDL、Schematic/Verilog HDL、Verilog HDL、

EDIF、GDF输入)。在Synthesis Tools栏中选择Synplify。此时的窗

口如图2.1所示。

`

图2.1 Project Wizard窗口

4.完成上述步骤后,按Next按钮,产生Project Wizard – Select

Device窗口。在此窗口的Family栏中,选择LatticeXP;Device栏中

选择LFXP3C;Speed grade栏中选择–3;Package type栏中选择

PQFP208;Operating conditions栏中选择Commercial; Part Name栏中选择器件型号LFXP3C-3P208C。此时的窗口如图2.2所示。

图2.2 Project Wizard – Select Device窗口

5.完成上述步骤后,按Next按钮,产生Project Wizard – Add Source

窗口。

6.直接在Project Wizard – Add Source窗口中按Next按钮,产生

Project Wizard – Project Information窗口。

7.在Project Wizard – Project Information窗口中按Finish按钮。此

时的ispLEVER Project Navigator主窗口如图2.3所示。

图2.3 ispLEVER Project Navigator主窗口

III. VHDL设计输入的操作步骤

本例中,选择VHDL类型。若是Verilog设计输入,则选择Verilog HDL 类型。

将该工程文件存盘为demo.syn。

在ispLEVER Project Navigator主窗口中,选择Source=>New菜单。在弹出的New Source对话框(如图2.4)中,选择VHDL Module类型,按OK按

钮。

此时,软件会产生一个New VHDL Source对话框。

图2.5 New VHDL Source对话框

在对话框的各栏中,分别填入如图2.5所示的信息。按OK钮后,进入文本编辑器-Text Editor编辑VHDL文件。

在Text Editor中输入如下的VHDL设计,并存盘,该文件(demo.vhd)即为顶层文件。

顶层文件

library ieee;

use ieee.std_logic_1164.all;

entity demo 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;

architecture demo_architecture of demo is

component COMP_LT

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

end component;

component COMP_GT

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

end component;

component COMP_EQ

port (O1 : out std_logic;

IN0 : in std_logic_vector (3 downto 0);

IN1 : in std_logic_vector (3 downto 0));

end component;

signal CR : std_logic_vector (3 downto 0);

signal W_CR : std_logic_vector (3 downto 0);

begin

-------------------------------------------

-- 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 demo_architecture;

该设计为实现比较器。采用模块化的分层结构,有一个顶层文件,三个底层文件,参照上述操作,完成三个底层文件(eq.vhd, gt.vhd, lt.vhd)的输入。底层文件1(eq.vhd)

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';

end if;

end process FUNCTION_EQ;

end IMP_COMP_EQ;

底层文件2(gt.vhd)

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(lt.vhd)

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;

接下来采用Synplify工具对VHDL设计进行综合。此时的ispLEVER Project Navigator主窗口如图2.6所示:

图2.6 ispLEVER Project Navigator主窗口

双击Processes窗口的Synplify Synthesize VHDL File进行编译、综合。

在通过VHDL综合过程后,可对设计进行功能和时序仿真。请参见第三节。

IV. IPexpress的使用方法

ispLEVER软件中的IPexpress工具用于帮助设计者利用Lattice 的参数化模块和IP核设计来完成更大的设计。

在ispLEVER Project Navigator主窗口中,按Tools=>IPexpress菜单,

即会出现如图2.7所示的窗口。

图2.7 IPexpress窗口

在左侧Module文件夹中选择所要的模块,例如FIFO_DC。在File Name

栏中填入文件名。

然后按Customize钮。界面如图2.9所示。

图2.9 设置参数- General Options

然后在对话框中选Configuration,再设置各种参数,最后按Generate钮,即产生相应的模块。这时软件会根据图2.8中Design Entry栏中的设计输入类型产生一个VHDL(或者Verilog HDL)的网表文件,并将它存放在指定的目录下。用户可以在其设计中调用此文件。

复选框Import LPC to ispLever project能让用户选择是否将生成的*.lpc文件装载到ispLever project中。*.lpc文件和模块一起产生,存有用户指定的参数。如果用户选择将其装载到ispLever project中的话,就可以在ispLever project窗口中双击该文件直接打开图2.9所示的窗口。在此窗口中能看到先前生成的模块并且可以对其进行修改。

一旦模块生成后,用户可以在自己设计的上层模块中调用该模块的*.lpc或

者VHDL/Verilog-HDL文件。

第三节 ModelSim 的使用方法

ModelSim 是一个仿真工具,可以用来模拟设计的结果,进行功能仿真和时序仿真。以下用前一节的例子来说明ModelSim的使用方法。

1.建立测试向量文件

2.在ispLEVER Project Navigator主窗口中选择Source=>New即弹出如图

3.1

所示的窗口。点击VHDL Test Bench,输入以下测试向量内容,并将其存盘为tb_demo.vhd文件。

图3.1 New Source窗口

library ieee;

use ieee.std_logic_1164.all;

entity TB_DEMO is

end TB_DEMO;

-- purpose: STIMULUS for testing comparator

architecture TB of TB_DEMO is

component DEMO

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 component;

signal CLK : std_logic := '0'; -- Primary Clock

signal RST : std_logic := '0'; -- RESET

signal SEL : std_logic := '1'; -- Select to load compare register

signal DAT : std_logic_vector (3 downto 0) := "0000";

signal COMPDAT : std_logic_vector (3 downto 0 ) := "0000";

signal GT_O : std_logic; -- Asserted when COMPDAT > signal LT_O : std_logic; -- Asserted when COMPDAT < signal EQ_O : std_logic; -- Asserted when COMPDAT =

constant CLK_PERIOD : time := 20 ns;

begin -- TB

--------------------

-- Clock generator

--------------------

CLK <= not CLK after (CLK_PERIOD/2);

-------------------------------------------

-- Instantiate Unit Under Test

-------------------------------------------

UUT : DEMO port map (

CLK => CLK,

RST => RST,

SEL => SEL,

DAT => DAT,

COMPDAT => COMPDAT,

GT_O => GT_O,

LT_O => LT_O,

EQ_O => EQ_O);

STIMULUS : process

begin -- process STIMULUS

wait for (5 * CLK_PERIOD);

------------------------------

-- Remove Reset condition

------------------------------

RST <= '1';

wait for (5 * CLK_PERIOD);

-------------------------------------

-- Expect tGT = 0; tLT = 0; tEQ = 1;

-------------------------------------

wait for (CLK_PERIOD);

---------------------------------------

-- Load compare register with new data

---------------------------------------

wait for (CLK_PERIOD);

SEL <= '0';

DAT <= "1010";

wait for (CLK_PERIOD);

-------------------------------------

-- Expect tGT = 1; tLT = 0; tEQ = 0;

-------------------------------------

SEL <= '1';

COMPDAT <= "1010";

wait for (CLK_PERIOD);

-------------------------------------

-- Expect tGT = 0; tLT = 0; tEQ = 1;

-------------------------------------

COMPDAT <= "1011";

wait for (CLK_PERIOD);

-------------------------------------

-- Expect tGT = 0; tLT = 1; tEQ = 1;

-------------------------------------

wait for (5 * CLK_PERIOD);

end process STIMULUS;

end TB;

图3.2 准备进行功能仿真

在图3.2所示的源文件窗口中选中tb_demo.vhd,在操作流程窗口中双击VHDL Functional Simulation,会弹出如图3.3所示的窗口。图中左侧列出了设计中所有输入、输出信号。右侧显示了仿真波形。

图3.3 仿真波形

信号名前若有[+]表示含有下层的信号,可以点击该符号,将显示出下层的

信号。图3.4中显示了信号展开后的波形。

图3.4 输入信号展开后的波形

同样,在图3.2所示的源文件窗口中选中tb_demo.vhd,在操作流程窗口中

双击 VHDL Post-Route Functional Simulation,可进行布线后的功能仿真(即不

带延时信息的门级仿真);双击 VHDL Post-Route Timing Simulation,可进行布

线后的时序仿真(即带延时信息的门级仿真)。它们的操作步骤与功能仿真类似。

第四节设计实现

针对FPGA的设计输入完成编译和功能仿真后,下一步就是进行设计实现(Design Implementation)。整个设计实现过程包括两个重要的执行环节——映射(Map)和布局布线(Place & Route)。映射是将设计由一个与器件无关的元件(例如:门电路和触发器)网络的表述转换为一个与器件相关的元件(例如:可配置的逻辑块)网络的表述。布局布线是根据映射后生成的结构设计(Physical Design)文件(*.ncd)在器件中对设计进行适配。在映射和布局布线的过程中,ispLEVER还提供给设计者交互式编辑功能(Interactive Editing)。

交互式编辑(Interactive Editing)

ispLEVER 6.0的FPGA设计流程提供强大的交互式编辑功能,通过两个重要的工具—— Design Planner和EPIC Device Editor来实现。

在ispLEVER 6.0版开发工具中,新的Design Planner工具将两个最常用的优化工具 - Preference Editor 和Floorplanner集成在一起,更真实地反映出专业FPGA设计者的处理思路和工作流程。现在用户能够无缝地从一项任务转移到另一项任务,而无需多余的中间步骤。Preference Editor被用来定义诸如关键路径和时序目标等设计参数,因为这些参数的定义是专门针对器件的,无法在硬件描述语言(HDL)层上完成。Floorplanner支持器件内逻辑布局的具体控制。将这两种相关的工具集成在一起,极大地简化了一些任务,诸如将客户定制的逻辑指定到器件I/O引脚。采用这种新的方法,设计者拥有一种标准的工具,可以帮助他们无缝地工作,从而更快、更高效地完成这些设计任务。

Design Planner

在上一节中,对Compare这个设计完成了功能仿真,接下来就可以用Design Planner进行优化设置了。在ispLEVER Project Navigator窗口中,共有三种操作可运行Design Planner。它们分别为Design Planner (Pre-Map)、Design Planner (Post-Map)和Design Planner (Post-PAR)。首先进行的是Design Planner (Pre-Map) 操作:

1.在ispLEVER Project Navigator窗口中,选中左侧源文件窗口中的器件

LFXP3C-3P208C。

2.右侧的操作流程窗口中会有一栏Design Planner (Pre-Map),双击该栏会

弹出三个窗口,依次为:Design Planner Control、Package View 以及

SpreadSheet View,分别如图4.1、图4.2和图4.3所示。

Design Planner Control窗口是Design Planner工具的入口。它是第一个打开的窗口,并且在您工作的时候一直保持打开状态,提供给您访问六种设计观察窗口(Pre-Mapped View、Post-Mapped View、Package View、

Floorplan View、Physical View和Spreadsheet View)以及Path Tracer的菜单,并且提供撤销和重做命令。Design Planner Control窗口显示有关设计的处理、状态以及提示信息。

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