ISE学习教程
- 格式:doc
- 大小:1.43 MB
- 文档页数:27
Xilinx 工具流程实验Xilinx 工具流程实验介绍本实验介绍ISE 软件结构向导管脚及区域约束编辑器和Xilinx 的工具流程目标完成此实验后你将会• • • 在ISE 的项目导航器中建立一个新的项目 利用结构向导建立一个DCM 例化 将例化置于设计之中• 利用软件的缺省选项实现一个设计• 利用PACE 工具指定管脚位置和区域位置过程注意当用Toolwire来执行实验时所有的软件程序文件和项目都在卷标 U:\ 下而不是在 C:\ 下建立一个新的项目第一步登录到ISE 项目导航器在C:\training\fund\labs\flow 子目录下建立一个名称为FlowLab 的新项目目标器件为xc2v40-4fg256设计流程可以是XST Verilog 或XST VHDL 你可以根据你的喜好选择相应的语言打开Xilinx ISE 5.1 软件从开始菜单里选择程序Programs→ Xilinx ISE5.1 →项目导航器Project Navigator在项目导航器中选择文件File →新项目New Project这时新项目窗口就会打开图 5b-1图5b-1. 新项目窗口对于项目名键入FlowLab对于项目位置使用按钮浏览到C:\training\fund\labs\flow单击 OK选择器件家族 Virtex 2选择器件为xc2v40封装为fg256速度等级为–4选择设计流程XST Verilog 或 XST VHDL单击 OK添加源文件第二步将子目录C:\training\fund\labs\flow\verilog 或C:\training\fund\labs\flow\vhdl 中所有源文件添加到FlowLab 项目中在项目导航器窗口中选择项目Project →添加源文件Add Source在添加已有源文件对话框图 5b-2中用下拉菜单浏览到C:\training\fund\labs\flow子目录然后进入 VHDL 或 Verilog子目录这取决于你在建立项目时所选择的流程选中所有文件单击第一个文件ch_fifo然后在按住Shift键的同时在添加已有源文件对话框中单击文件 pn_correlator图 5b-2. 添加已有源文件对话框点击打开Open对于VHDL 用户每个文件将出现选择源文件类型对话框对于除了ch_fifo_pack.vhd之外的的其它所有文件选择VHDL模块VHDL Module并点击OK对于ch_fifo_pack.vhd 选择VHDL封装VHDL Package并点击OK图5b-3. 选择源文件类型ISE将处理所有的文件并确定设计层次在项目导航器的右下角的进程条显示分析的进程添加的文件被分析后设计文件和层次将反映在项目窗口的源文件中用结构向导建立DCM例化 第三步用结构向导中的DCM向导创建一个名为MyDCM的新的源文件使用CLK0 CLK2X和LOCKED引脚 设定输入时钟频率为100MHz而其它选项为缺省设置在项目导航器中选择项目Project→新源文件New Source在新源文件窗口中选择结构向导(Architecture Wizard)并输入MyDCM作为文件名点击下一步 Next然后在下一个窗口中点击完成Finish在结构向导选择对话框中确定DCM向导已被选择并点击OK (图 5b-4).图 5b-4. 结构向导选择对话框注意Rocket I/O向导在此不可选这是因为我们的目标器件为Virtex-II而 Rocket I/O 能力仅在 Virtex-II PRO 器件中才有在Xilinx DCM 向导 – 通用设置窗口操作如下输入DCM例化名MyDCM_inst选中 CLK 2X输出框去除RST引脚的选择输入输入时钟频率为100 MHz然后点击下一步图 5b-5. Xilinx DCM 向导 – 通用设置窗口注意在DCM向导中指定频率的目的是让向导知道DCM是工作在高频模式还是低频模式基于输入的频率还可以计算输出的频率以确保是否在规定的频率范围之内另外如果选择CLKFX 输出的话输入频率还可以被用来计算在CLKFX上的输出频率以及计算估计的抖动在 Xilinx DCM向导中 – 时钟缓冲器窗口保持选项为缺省设置并点击完成注意一个新的文件(MyDCM.xaw)被添加到项目源文件窗口选择MyDCM.xaw文件进入当前源文件进程窗口双击查看HDL源文件并检查结构向导所产生的源代码将DCM例化置于设计(VHDL)中 第四步注意对于Verilog进入第五步将例化模板中的部件声明部分拷贝到ch_fifo.vhd中的合适位置然后将部件例化从例化模板中拷贝到ch_fifo.vhd 中的合适位置最后分配信号和修改代码以完成例化见本节的子步骤6和7将DCM例化置于设计中)保存修改好的文件在项目源文件窗口双击 ch_fifo.vhd 打开源代码选择文件MyDCM.xawMyDCM.xaw 选中后进入当前源文件进程窗口双击查看HDL例化模板在HDL 例化模板中复制部件声明这一部分 (从 COMPONENT MyDCM开始到 ENDCOMPONENT为止)并粘贴到 ch_fifo.vhd 的第四十行 (在部件fifo_2048x8之后在信号pn_lock, wr, wr_addr_srst : std_logic之前)在HDL 例化模板中复制部件例化这一部分 (从 Inst_MyDCM: MyDCM 直到文件结束为止) 并粘贴到 ch_fifo.vhd 的第五十四行在 begin之后在 pn_correlator_inst:pn_correlator之前按照如下方式完成例化MyDCM_inst: MyDCM PORT MAP(clkin_in => wr_clk_in,locked_out => lock ,clk2x_out => rd_clk,clk0_out => wr_clk);目前设计中有两个时钟信号没有用到DCM既然我们现在已使用了DCM我们需要修改和添加一些信号名以便例化能工作有三个地方需要修改a) 在ch_fifo 实体声明中将wr_clk改为wr_clk_in.b) 在 ch_fifo实体中将 rd_clk 信号删除既然该信号将要由DCM生成c) 在五十三行附近其它信号声明之后begin 行之前添加以下信号声明signal lock, rd_clk, wr_clk : std_logic;选择 文件File→ 保存Save 以保存文件将DCM置于设计(Verilog)中 第五步将部件例化从例化模板中拷贝到ch_fifo.v 中的合适位置最后分配信号和修改代码以完成例化见本节的子步骤4和5将DCM例化置于设计中)保存修改好的文件在项目源文件窗口双击 ch_fifo.vhd 打开源代码现在选择文件MyDCM.xawMyDCM.xaw 选中后进入当前源文件进程窗口双击查看HDL例化模板在HDL例化模板中复制部件声明这一部分 (从 MyDCM 开始一直到最后的 );结束 ) 并粘贴到ch_fifo.v 的第十行(在 wire [7:0] wr_data之后在pn_correlatorpn_correlator_inst之前)按照如下方式修改例化MyDCM MyDCM_inst (.CLKIN_IN(wr_clk_in),.LOCKED_OUT(lock),.CLK2X_OUT(rd_clk),.CLK0_OUT(wr_clk));目前设计中有两个时钟信号没有用到DCM既然我们现在已使用了DCM我们需要修改和添加一些信号名以便例化能工作有四个地方需要修改a) 在ch_fifo模块的端口列表中将 wr_clk 改为 wr_clk_inb) 同样在ch_fifo 模块的端口列表中, 删除 rd_clk端口c) 在 ch_fifo 的端口声明中从输入信号列表中删去 rd_clk信号因为此信号将由DCM产生d) 添加下列wire声明到第七行lock, rd_clk, wr_clk这样整个一行将变成wire pn_lock, wr, wr_addr_srst, lock, wr_clk, rd_clk;选择 文件File→保存Save以保存文件实现设计 第六步选择顶层设计文件ch_fifo.v/vhd, 实现设计.确认在项目源文件窗口中选择的是顶层的设计文件 (如图 5b-6). 顶层设计文件名为 ch_fifo.v/vhd图5b-6. 项目源文件窗口在当前源文件进程窗口如图5b-7中双击实现设计Implement Design注意工具将会执行实现设计所必需的所有进程在本实现中在进入实现之前工具将先执行综合图 5b-7. 当前源文件进程窗口实现期间的观测第七步注意进程条每一个进程旁边的状态符号和控制信息注意项目导航器窗口的右下角显示的是进程和设计实现的完成百分比如图5b-8图5b-8. 进程条在当前源文件进程窗口点击实现设计旁边的+展开实现步骤并查看进程我们称此为展开一个进程每一步完成之后在每一步旁边将出现一个符号 • • • 绿色的对号表示成功黄色的惊叹号表示有警告 红色的X 表示有错误对于这个特定的设计在每一步将会有一个黄色的惊叹号警告但这些警告无碍可以忽略当实现完成时项目导航器窗口底部的控制/信息窗口将会显示以下信息Done: completed successfully.打开PACE第八步在项目导航器中以建立一个新源文件的方式建立一个名为myucf 的UCF 文件然后从当前源文件进程窗口中打开PACE 工具用户约束User Constraints → 指定封装引脚Assign Package Pins在我们能够打开PACE 之前我们必须建立一个UCF 文件按照警告信息要建立一个UCF文件只要选择项目Project →新源文件New Source选择实现约束文件输入 myucf作为文件名点击下一步Next在下一个窗口中确定选择的是 ch_fifo点击下一步然后在最后一个窗口中点击完成如图5b-11)图 5b-11. 关联一个约束文件在当前源文件进程窗口展开用户约束然后双击指定封装管脚以打开PACE如果你不能看到这些进程确认在项目源文件窗口中选择的是ch_fifo测试PACE 第九步检查PACE中的四个窗口检测这些窗口怎样相互作用在PACE窗口中移动器件结构窗口和封装引脚窗口以使它们相邻图 5b-12. 器件结构窗口和封装引脚窗口在封装引脚窗口中点击用户I/O符号这些符号是中间为圆圈的框它们可能是不同颜色的方框圆圈后的不同颜色代表不同的I/O组注意在器件结构窗口中相应的引脚是如何被高亮的在设计层次窗口点击I/O引脚旁的的+号展开I/O引脚子目录你也可以展开全局逻辑和逻辑子目录来检查其中的内容这些名称来自于设计图 5b-13. 设计层次窗口注意设计对象列表窗口是如何跟着设计层次窗口中所选的子目录而变化的建立引脚和区域指配 第十步将所有rd_data<?>信号指定到BANK2上将DCM 元件放置在位置 DCM_X1Y1上将BRAM元件放置在块RAM 位置X1Y1上在设计层次窗口选择 I/O管脚子目录注意可以为每一个信号指配一个实际的引脚位置或为一个信号指定在特定组中的引脚范围在设计对象列表-I/O引脚窗口中将所有rd_data<?>信号指定到BANK2上可以这样操作选择一个信号在位置这一列点击框的右侧使用选择组的下拉菜单然后选择BANK 2图 5b-14. 设计部件列表 – I/O引脚窗口注意你可以在下拉菜单向下滚动时看到其它的位置选择 T, L, R, TL, TR, BL, BR,RT, RB, 等等这些词语是指组它们表示上部 组 硅片顶部的两组左部 组 硅片左部的两组左上部 组 硅片左上部的组等等这在你不了解组号但你又想将引脚指定到器件的那个区域是非常有帮助的在设计层次窗口点击全局逻辑文件夹在接下来的几步中我们将要将它们拖放到器件结构窗口中以便为这些部件指定特定的位置在设计对象列表窗口中选择DCM 元件并将其拖到器件结构窗口中将DCM 放置在右上方的DCM_X1Y1位置上如图所示图 5b-15. 指定一个位置在设计对象列表窗口中选择块RAM fifo_2048x8_inst_fifo_bram并将其拖到硅片的右上方的块RAM 位置X1Y1上图 5b-16. 指定一个位置选择文件 → 保存以保存引脚范围指配和DCM 及块RAM 布局选择 文件 → 退出以关闭PACE 工具在项目导航器的当前源文件进程窗口中在用户约束的下方双击编辑约束文本来查看通过PACE 工具在文件myucf.ucf 中所生成的约束查看文本版本的UCF 文件检查约束是否被写入文件图5b-17. 当前源文件进程窗口实现设计第十一步实现设计确保没有错误或与我们所建约束的冲突确认在项目源文件窗口中选择的是顶层的设计文件 (如图 5b-18)顶层设计文件名为 ch_fifo.v/vhd图 5b-18. 项目源文件窗口在当前源文件进程窗口如图5b-19中双击实现设计 Implement Design注意工具将会执行实现设计所必需的所有进程在本实现中在进入实现之前工具将先执行综合图5b-19. 当前源文件进程窗口结论本实验的目的是熟悉实现进程结构向导和PACE 的使用在本实验中我们在ISE 中将一个设计的主要阶段走了一遍建立项目添加源文件使用结构向导来改进和/或完成我们的代码指定管脚和区域位置实现整个设计。
XILINX FPGA/CPLD设计丛书 - 1ISE 4.1i 快速入门目 录ISE 教程------------------------------------------------------------------------------------------------------ 3 教程概述 ------------------------------------------------------------------------------------------------- 4 设计开始 ------------------------------------------------------------------------------------------------- 5软件要求 ------------------------------------------------------------------------------------------- 5运行ISE软件 -------------------------------------------------------------------------------------- 5使用在线帮助 ------------------------------------------------------------------------------------- 5设计输入VHDL---------------------------------------------------------------------------------------- 6创建一个新的工程项 ---------------------------------------------------------------------------- 6创建一个计数器模块 ---------------------------------------------------------------------------- 6利用计数器模板修改计数器模块 ------------------------------------------------------------- 7仿真行为模型功能仿真-------------------------------------------------------------------------- 9创建一个 testbench 波形源文件 ------------------------------------------------------------- 9初始化计数器输入 ----------------------------------------------------------------------- 10生成预期的输出响应 -------------------------------------------------------------------- 10使用 ModelSim 进行仿真 --------------------------------------------------------------------- 11行为仿真 ----------------------------------------------------------------------------------- 11布局布线后的仿真 ----------------------------------------------------------------------- 12设计输入顶层为原理图------------------------------------------------------------------------- 14创建 VHDL 模块生成一个原理图符号 ---------------------------------------------------- 14创建一个新的顶层原理图 -------------------------------------------------------------------- 14例化VHDL模块 ---------------------------------------------------------------------------------- 14原理图中连线 ----------------------------------------------------------------------------------- 15为连线添加网络名 ----------------------------------------------------------------------------- 16为总线添加网络名 ----------------------------------------------------------------------------- 17添加输入/输出管脚标记 ---------------------------------------------------------------------- 18设计实现 ----------------------------------------------------------------------------------------------- 20运行实现设计 ----------------------------------------------------------------------------------- 20在资源分配器Floorplanner中查看设计布局 ----------------------------------------- 20对顶层文件进行仿真时序仿真---------------------------------------------------------------- 22创建一个 testbench 波形源文件 ---------------------------------------------------------- 22初始化计数器输入 ----------------------------------------------------------------------------- 22生成预期的输出响应 -------------------------------------------------------------------------- 22布局布线后的仿真 ----------------------------------------------------------------------------- 24附录EDIF设计方法 --------------------------------------------------------------------------------- 26设计输入 ----------------------------------------------------------------------------------------------- 26创建一个新的工程项 -------------------------------------------------------------------------- 26添加EDIF源文件 ------------------------------------------------------------------------------- 27设计实现 ----------------------------------------------------------------------------------------------- 27运行实现设计 ----------------------------------------------------------------------------------- 27在FPGA Editor中查看设计 ----------------------------------------------------------------- 28ISE 教程ISE - Integrated Software Environment本教程主要是向ISE的初学者描述和演示, 在XILINX的ISE集成软件环境中如何用VHDL和原理图的方式进行设计输入如何用 ModelSim 仿真工具对设计进行功能仿真和时序仿真如何实现设计注本教程的例子是在PC机上的ISE 4.x环境中实现的本教程包括以下几个章节教程概述设计开始设计输入(VHDL)行为模型仿真功能仿真设计输入(顶层为原理图)设计实现对顶层文件进行仿真时序仿真要想学习如何用网表文件进行设计请参考附录EDIF设计方法要想更深入地学习了解ISE设计工具请参阅XILINX网站上的ISE深入教程(/support/techsup/tutorials/)教程概述完成本教程后你将会对以下的设计流程有一个清楚的认识创建一个新的工程项用 Virtex 器件作为设计的目标器件用ISE的语言模板生成一个4位计数器的VHDL模块创建一个用波形输入的测试向量文件并对4位计数器进行功能仿真创建一个顶层为原理图输入的设计在顶层原理图中调用计数器的VHDL模块把所有的模块连接在一起并标出内连网线总线以及I/O管脚的名称对4位计数器模块和顶层原理图的输入信号波形进行初始化设置并对仿真长度进行约束对4位计数器模块进行功能和时序仿真对顶层原理图设计进行时序仿真使用Floorplanner工具查看经过布局布线后该设计的布局情况参照附录EDIF设计方法完成网表(EDIF)文件输入的设计流程参照附录EDIF设计方法使用 FPGA Editor查看经过布局布线后该设计的布局和布线情况设计开始本节主要描述本教程的软件要求如何在PC机上运行ISE软件以及如何获得在线帮助软件要求为了完成本教程你必须在你的PC机上安装以下软件ISE 4.xModelSim VHDL如果在XILINX的软件安装过程中遇到问题请参阅ISE安装指南ISE Release Notesand Installation Guide软件安装完后环境变量应如下所述1在Windows 98中如果你的ISE软件安装在C:\XILINX目录下ModelSim软件安装在C:\Modeltech目录下在C:\autoexec.bat文件中应该包含如下设置SET XILINX=C:\XILINXSET PATH=%XILINX%\BIN\NT;C:\Modeltech\win32;SET LM_LICENSE_FILE=%XILINX%\data\license.dat;C:\Modeltech\win32\license.dat;2在Windows NT/2000中通过选择 开始 -> 设置 -> 控制面板 -> 系统 -> 高级 ->环境变量 等选项来设置相应的环境变量关于在线申请ModelSim XE Starter License请选择 开始 -> 程序 -> ModelSim XE-> Submit License Request可以在线申请 ModelSim Xilinx Edition Starter 的 license 文件运行ISE软件对于PC机用户可选择 开始 -> 程序 -> Xilinx ISE 4.x -> Project Navigator 来启动ISE软件使用在线帮助你可以在ISE运行过程中随时获得在线帮助当你按下F1键时帮助系统就会显示出正在运行过程的在线帮助比如说当你在运行ECS(原理图输入)时按下F1键那么关于如何使用ECS的在线帮助就会显示出来设计输入(VHDL)本节中你将会利用VHDL语言模板来设计一个4位计数器模块首先创建一个新的工程项和生成一个计数器模块然后参照计数器VHDL语言模板来完成一个4位计数器的VHDL设计创建一个新的工程项按照以下步骤创建一个新工程项1选择 File -> New Project2在 New Project 对话框中的 Project Location 下键入新工程项存放的路径或者点击 Project Location 旁的浏览按钮选择你想存放新工程项的路径3在 Project Name 下键入 ‘Tutorial’当你在 Project Name 下键入 ‘Tutorial’后在 Project Location 下会自动创建一个 ‘Tutorial’的子目录4使用Value处的下拉菜单你可以对每种属性进行选择在下拉菜单列表中点击所需的属性值如下器件系列(Device Family) : Virtex器件(Device) : xcv50-6bg256设计流程(Design Flow) : XST VHDL图 1-1 新工程项对话框New Project Dialog Box5点击 OKISE将会在工程项导航器(Project Navigator)中创建和显示你的新工程项创建一个计数器模块按照以下步骤创建一个计数器VHDL模块1选择 Project -> New Source2选择VHDL模块(VHDL Module)作为源程序类型3在文件名中键入 counter4点击 Next5点击 Next6点击 Finish ,完成这个新源程序的模板新源程序模板 counter.vhd 将会显示在HDL编辑窗口中它包括计数器的 Library, Use, Entity, Architecture等语句的描述利用计数器模板修改你的计数器模块要完成这个计数器模块你将要用到ISE的语言模板(ISE Language Template)工具选择其中的计数器VHDL描述来完成 counter.vhd 的设计1选择 Edit -> Language Templates 来打开语言模板或者通过点击工具栏中最右端的灯泡按钮来打开语言模板2在语言模板(Language Templates)窗口中通过点击 + 符号来展开VHDL下的综合模板(Synthesis Templetes)图 1-2 计数器语言模板Counter Language Template3从VHDL综合模板中选择计数器模板(Counter Template)并把它拖动或粘贴到源程序 counter.vhd 的 begin 和 end 之间4关闭语言模板(Language Templates)窗口5将带有注释符号(--)的计数器端口定义的语句剪切并粘贴到计数器的实体(entity)描述中去 计数器端口定义语句如下-- CLK: in STD_LOGIC-- RESET: in STD_LOGIC-- CE, LOAD, DIR: in STD_LOGIC-- DIN: in STD_LOGIC_VECTOR(3 downto 0)-- COUNT: inout STD_LOGIC_VECTOR(3 downto 0)6去掉 counter.vhd 源程序中端口定义语句前的注释符号(--)7去掉 COUNT 端口定义语句后的分号()如下所示COUNT inout STD_LOGIC_VECTOR(3 downto 0)8选择 File -> Save , 保存counter.vhd 源程序此时你的 counter.vhd 源程序应与 图1-3 中的VHDL描述一样图 1-3 修改后的计数器模块Modified Counter Module仿真行为模型功能仿真在本节中你将会创建一个 testbench 波形用于定义计数器模块所应有的功能这个 testbench 波形将被用于与 Modelsim 仿真器连接用来验证该计数器是否达到设计要求的功能和时延需求创建一个 Testbench 波形源文件首先在 Project Navigator 中创建一个 testbench 波形源文件该文件将在 HDL Bencher 中进行修改1. 在工程项窗口Project Window的源文件中选中计数器(counter.vhd)2. 选择 Project -> New Source3. 在新的对话框中选择新文件类型为 Test Bench Waveform4. 键入文件名为counter_tbw5. 点击 Next注在其他工程项中你可以将你的 testbench 波形与其他源文件关联6. 点击 Next7. 点击 Finish此时HDL Bencher 程序自动启动并等候你输入所需的时序需求你现在可以指定仿真所需的时间参数时钟高电平时间和时钟低电平时间一起定义了设计操作必须达到的时钟周期输入建立时间定义了输入在什么时候必须有效输出有效延时定义了有效时钟沿到达后多久必须输出有效数据在本教程中不需要改变任何默认的时间约束默认的初始化时间设置如下时钟高电平时间 Clock high time: 50 ns时钟低电平时间 Clock low time: 50 ns输入建立时间 Input setup time: 10 ns输出有效时间 Output valid delay: 10 ns8. 点击 OK接受默认的时间设定你的 testbench 波形显示如图 1-4 所示图 1-4 在 HDL Bencher 中的 Testbench 波形初始化计数器输入在 HDL Bencher 的波形中初始化计数器输入如下注在每个单元的蓝色区域输入激励1. 在 CLK 第 1 周期下点击 RESET 单元直到该单元变为高2. 在 CLK 第 2 周期下点击 RESET 单元直到该单元变为低3. 在 CLK 第 3 周期下点击 CE 单元直到该单元变为高4. 在 CLK 第 2 周期下点击 DIR 单元直到该单元变为高你的 testbench 波形现在看起来应该如图 1-5 所示图 1-5 HDL Bencher 激励及响应输入5. 将你的 testbench 文件存盘选择 File -> Save Waveform或点击工具栏的存盘图标接下来HDL Bencher 会提示你设置你希望仿真的时钟周期数6. 在End the testbench __ cycles after the last input assignment对话框中输入8 默认值为17. 点击 OK8. 退出 HDL Bencher新的 testbench 波形源文件counter_tbw.tbw自动加入到该工程项中生成预期的输出响应现在你可以在已输入初始化激励的基础上生成时钟模块预期的输出1. 在 Sources in Project 窗口中选中 counter_tbw.tbw 文件2. 在 Processes for Current Source 窗口中点击 ModelSim Simulator 旁边的+符号展开 ModelSim 仿真器的层次结构3. 双击 Generate Expected Simulation Results此步骤采用定义好的输入运行一个后台仿真产生输出值加入到 testbench 波形中你的 testbench 波形现在看起来应该如图 1-6 所示图 1-6 生成仿真结果4. 直接退出 HDL Bencher 而不选择波形存盘使用 ModelSim 进行仿真根据 HDL Bencher 中产生的预期结果你现在可以用 ModelSim 进行仿真在这部分教程中你将运行行为仿真亦即功能仿真和布局布线后的仿真时序仿真行为仿真我们进行行为仿真以验证计数器模块的功能1. 在 Sources in Project 窗口中选择 counter_tbw.tbw 文件2. 在 Processes for Current Source 窗口中点击 +符号展开 ModelSim 仿真器的层次结构找到并双击 Simulate Behavioral VHDL Model此时ModelSim 仿真器自动启动3对于第一次运行 ModelSim 的用户会显示一个对话框需要在其中做以下处理:. 选中 Do not show this dialog again 选项. 点击 Run ModelSim此对话框在你重新安装或重新配置 ModelSim 之前将不再显示你的仿真结果现在显示在 ModelSim 的波形窗口(wave window)注ISE 通过自动创建及运行一个仿真宏文件(.fdo文件)来自动处理仿真过程虽然用户无法看到但在本教程中counter_tbw.fdo 文件实现了以下操作. 创建设计库. 编译设计源文件和 testbench 源文件. 调用仿真器. 打开所有的观察窗口. 将所有信号加到 wave 窗口. 将所有信号加到 list 窗口. 按照要求的运行时间属性进行仿真(默认为1000ns)4. 点击 Zoom -> Zoom Ful 或在工具条点击 Zoom Full 图标5. 点击 Zoom -> Zoom in 或在工具条点击 Zoom in 图标6拖动波形窗口下端的滚动条至窗口的最左端仿真输出波形应如图 1-7 所示图 1-7 行为仿真波形7. 关闭 ModelSim 主窗口退出 ModelSim布局布线后的仿真布局布线后的仿真包括了目标器件的时延信息对 counter 模块的后仿真操作如下1. 在 Sources in Project 窗口中选择 counter_tbw.tbw2. 在 Processes for Current Source 窗口点击 +符号 展开 ModelSim 仿真器的层次结构找到并双击 Simulate Post-Place & Route VHDL Model注此步骤会启动设计实现来进行布局布线及启动ModelSim3. 点击 Zoom -> Zoom Full 或在工具条中点击 Zoom Full 图标4. 点击 Zoom -> Zoom In 或在工具条中点击 Zoom in 图标5. 拖动波形窗口下端的滚动条至波形窗口的最左端仿真输出波形应该如图 1-8所示图 1-8 布局布线后的仿真波形 6. 关闭 ModelSim 主窗口退出ModelSim设计输入 (顶层为原理图)(Top-Level Schematic)本节以一个原理图设计为例说明了如何创建一个包含有例化的 VHDL 计数器模块的顶层原理图描述了如何将若干个模块连接成一个原理图如何给单根连线命名如何给总线命名以及如何添加输入/输出管脚标记创建 VHDL 模块 (VHDL Module)生成一个原理图符号 (Schematic Symbol)1. 在工程项导航器 (Project Navigator) 菜单中, 点击 Project -> Add Source来添加一个 VHDL 模块 -- counter.vhd(在选择源类型(Choose Source Type)弹出窗口中选择 VHDL Module)2. 在 Sources in Project 窗口中选中计数器模块 counter.vhd3. 在 Processes for Current Source 窗口中, 点击设计输入实用程序 (DesignEntry Utilities) 之前的 “+” 符号然后双击创建原理图符号 (CreateSchematic Symbol)经过以上步骤, 名称为 “counter” 的图形化元件被放入到工程项库中创建一个新的顶层原理图 (Top-Level Schematic)1. 在工程项导航器 (Project Navigator) 菜单中, 选择 Project -> New Source2. 选择原理图 (Schematic) 为源类型3. 输入原理图名为 “top”4. 先点击 “Next”再点击 “Finish”此时原理图编辑器(ECS) 自动启动并在其原理图窗口中打开一张空图例化 VHDL 模块 (Instantiating VHDL Module)在原理图编辑器 (ECS) 中例化两个 VHDL 计数器模块 -- counter1. 在菜单中选择 Add -> Symbol或者在工具栏中点击 (Add Symbol) 图标2. 从元件符号列表 (在屏幕右侧) 中选择计数器 counter注意不要在类别(Categories) 窗口中作任何选择3. 点击左键可将计数器 counter 放置在光标所在的位置请在原理图中放置两个计数器 counter现在原理图应该如图 1-9 所示4. 按 ESC 键退出添加符号 (Add Symbol) 模式注可以通过放大缩小功能 (View -> Zoom -> In / out / To Box / Full View) 和拖动滚动条来调整视图大小及位置图 1-9 例化 VHDL 模块原理图中连线 (Wiring the Schematic)在连接元件符号时一些连线端可以悬空而另一些连线端需和元件符号相连1. 首先激活划线功能通过在菜单中选择 Add -> Wire或者在工具栏中点击 (AddWire) 图标2. 添加一根悬空线和延展连线a) 在计数器模块的某一管脚单击鼠标b) 将连线拉伸到需要的长度c) 在连线端点处双击鼠标按照如图 1-10 所示给计数器模块的每一管脚添加连线3. 添加两个元件符号之间的连线a) 在一个计数器模块的管脚处单击鼠标b) 在另一个计数器模块的对应管脚处双击鼠标结果如图 1-10 所示当完成连线后按 ESC 键退出添加连线(Add Wire)模式图 1-10 为模块相应管脚连线为连线添加网络名 (Add Net Name to wires)画好连线后你可为相应的连线添加网络名称1. 在菜单中选择 Add -> Net Name或者在工具栏中点击 (Add Net Name) 图标2. 创建网络名并放置到连线上的步骤如下a) 在工具栏右边的文本对话框中输入网络名 clock如图 1-11 所示注使用网络命名Name Branch和保持网络名Keep Name的默认值图 1-11 添加网络名b) 将鼠标移动到悬空连线的端点处此时光标处显示出网络名c) 点击鼠标左键注按照上面步骤添加其余 5 个网络名reset, ce, load, dir1 和 dir23 按 ESC 键退出添加网络名(Add Net Name)模式添加完 6 个网络名后原理图应该如图 1-12 所示图 1-12 为连线添加完网络名后的原理图为总线添加网络名按照同样的步骤为计数器模块的 din 和 count 管脚添加总线网络名并给总线宽度赋值1. 在菜单中选择 Add -> Net Name或者在工具栏中点击 (Add Net Name) 图标2. 创建总线网络名并放置到总线上的步骤如下a) 在工具栏右边的文本对话框中输入总线名和宽度如din1(3:0)注使用网络命名Name Branch和保持网络名Keep Name的默认值b) 将鼠标移动到悬空总线的端点此时光标处显示出总线名及宽度c) 点击鼠标左键注按照上面步骤添加其余3个总线名count1(3:0), count2(3:0) 和din2(3:0)3. 按 ESC 键退出添加网络名 (Add Net Name) 模式添加完总线名后原理图应该如图 1-13 所示图 1-13 为总线添加完网络名后的原理图添加输入/输出管脚标记 (Adding I/O Markers)根据各个输入/输出信号的方向添加相应的标记在本教程中我们要添加输入标记和双向信号标记最后结果应如图 1-14 所示1. 在菜单中选择 Add -> I/O Marker或在工具栏中点击(Add I/O Marker)图标2. 按如下步骤为 clock, reset, ce, load, dir1 和 dir2 添加输入标记同时为总线 din1(3:0) 和 din2(3:0) 添加输入标记a) 在工具栏右边的参数单选框中选择输入(Input)b) 将鼠标移动到输入信号线的端点此时光标处显示出输入标记的图形c) 点击鼠标左键输入标记会将网络名或总线名包含在标记图形的内部注一定要在信号线的端点处单击鼠标如果添加输入/输出标记不成功系统会弹出错误对话框3. 按如下步骤为 count 总线添加双向信号标记a) 在工具栏右边的参数单选框中选择双向(Bidirectional)b) 将鼠标移动到输出信号线的端点此时光标处显示出双向信号标记的图形c) 点击鼠标左键完成的原理图如图 1-14 所示图 1-14 完成的原理图4. 在菜单中选择 File -> Save, 保存原理图5. 退出原理图编辑器(ECS)设计实现在本教程中设计实现部分涵盖了两项任务在工程项导航器(Project Navigator)中运行设计实现Implement Design进程以及在资源分配器Floorplanner工具中查看设计在布局布线后的结果运行设计实现首先运行所有与这个计数器设计相关联的进程从综合到布局布线在原理图文件上启动设计实现Implement Design以完成操作1在Sources in Process窗口中选择top top.sch2在Processes for Current Source窗口中双击设计实现Implement Design这样就运行了所有相关的进程图1-15 设计实现过程在Process for Current Source窗口中打对勾的标记指示进程已经成功地运行感叹号标记表示进程已经运行但是包含有系统给出的警告有关警告的更多信息可以从副本Transcript窗口中获取在资源分配器Floorplanner中查看设计布局现在你可以在资源分配器Floorplanner中查看完成后的设计1在Source in Process窗口中选择top (top.sch)2在Process for Current Source窗口中点击Implement Design左边的+符号展开层次后再点击Place & Route左边的+符号3双击View/Edit Placed Design (Floorplanner)资源分配器 (Floorplanner)将自动运行并显示这个工程项中设计的布局情况通过显示和放大输入/输出信号可以更有针对性地查看设计实现后的结果1在top.fnf Design Hierarchy窗口中View -> Hierarchy选择最顶层top (22 IOBs, 13 FGs, 8 CYs, 8 DFFs, 1 BUFG) 在布局Placement窗口显示这些信号注也可以选择在布局Placement窗口的设计区域画一个矩形框来显示信号2在菜单中选择 View -> Zoom -> To Selected或者在资源分配器的工具条中点击Zoom to Selected图标工具条中右边的最后一个图标3将光标放置在每一个引脚上在资源分配器左下角可以读出该引脚的名称便于校验所有的输入输出注在top.fnf Design Hierarchy窗口的列表中单独选择一个信号可以在布局窗口中独立地观察这个信号在资源分配器Floorplanner中看见的布局情况如图 1-16 所示图1-16 资源分配器Floorplanner中输入输出信号的连接情况当完成了对设计实现布局的观察后点击 File -> Save保存资源分配器的设计视图并退出资源分配器对顶层文件进行仿真时序仿真接下来对在前面部分所创建的顶层设计进行时序仿真首先使用HDL Bencher为顶层设计创建一个测试矢量testbench波形然后用 ModelSim 对顶层设计进行仿真建立一个 testbench 波形源文件创建一个可以在HDL Bencher中修改的测试矢量testbench波形1在Project Navigator的Source in Project窗口中选择top top.sch2选择Project -> New Source3在New对话框中选择Test Bench Waveform作为源文件类型4键入文件名top_tbw”5选择Next6确认top是关联的源文件然后选择Next7选择FinishHDL Bencher自动启动8点击OK让测试矢量testbench波形使用默认的时序约束初始化计数器输入在HDL Bencher的波形窗口中按下面的步骤初始化计数器的输入与图1-17进行比较来检查你的输入注在每一个信号单元的蓝色区域加入输入激励1在clock周期3下面点击ce单元直至该信号被置高2在clock周期2下面点击dir1单元直至该信号被置高3在clock周期1下面点击dir2单元直至该信号被置高4在clock周期2下面点击dir2单元直至该信号被置低5在clock周期1下面点击reset单元直至该信号被置高6在clock周期2下面点击reset单元直至该信号被置低图1-17 HDL Bencher激励与响应的引入生成预期的输出响应生成预期的响应需在HDL Bencher波形中的黄色区域做出以下的操作1在clock周期2下面点击count1(3:0)的黄色单元2点击Pattern按钮启动模式向导Pattern Wizard3在Pattern Wizard的对话框中设置参数使得期望的计数输出值为0到7如下所示图1-18 Pattern Wizard设置4在Pattern Wizard的对话框中点击OK5在clock周期2下面点击count2(3:0)的黄色单元并键入06在clock周期3下面点击count2(3:0)的黄色单元7点击Pattern按钮启动模式向导Pattern Wizard8在Pattern Wizard的对话框中设置参数使得期望的计数输出值为15到9如图 1-19 所示9在Pattern Wizard的对话框中点击OK测试矢量波形如图 1-20 所示10在菜单中选择File -> Save或者在工具栏中点击 Save Waveform 图标保存测试矢量波形11退出HDL Bencher注在Project Navigator的Source in Project窗口中新的测试矢量testbench波形文件是顶层文件(top.sch)的一个子文件图1-19 Pattern Wizard设置图1-20 测试矢量波形布局布线后的仿真对顶层设计执行布局布线后的仿真1在Project Navigator的Source in Project窗口中选择top_tbw.tbw2在Processes for Current Source窗口中双击ModelSim Simulator层次结构中的Simulate Post-place and Route VHDL Model此时ModelSim自动启动同时引入了反标注后的设计文件3在 wave窗口中点击下拉菜单中的Zoom -> Zoom Full或者点击工具栏中的Zoom Full图标4点击下拉菜单中的Zoom -> Zoom In或者点击工具栏中的Zoom In图标并将滚动条拖到波形窗口的最左边看到的波形应该如图 1-21 所示图1-21 时序仿真波形5时序仿真结果显示有10ns的时钟延迟6分析完你的仿真结果以后通过关闭ModelSim的主窗口main window来退出ModelSim附录EDIF 设计方法本附录描述了如何在 ISE 环境中使用 EDIF 网表文件作为输入来实现一个设计当用户已有综合好的网表文件时可以使用此流程进行 FPGA 实现本附录包含如下两部分1设计输入2设计实现设计输入首先在工程项导航器Project Navigator中创建一个新的工程项然后加入 EDIF 源文件最后实现该设计创建一个新工程项1选择 File -> New Project2在新工程项对话框New Project dialog box中在工程项存放ProjectLocation区域键入希望的存放位置或者点击浏览钮browse来选择所需要的位置3在工程项名称Project Name处键入TutorialEDIF注当你在工程项名称处键入TutorialEDIF时一个名称为 TutorialEDIF 的子目录自动创建在你前面希望的位置例如你选择的目录是D:\My_Projects, 那么你创建的工程项将会存在D:\My_Projects\TutorialEDIF 目录下4在新工程项New Project对话框中使用下拉箭头为每个属性名PropertyName赋值结果如图 A-1 所示• 器件系列Virtex• 器件 xcv300-6bg352• 设计流程EDIF图 A-1 新工程项对话框5点击 OKISE 在工程项导航器中创建了一个子目录和一个新的工程项添加 EDIF 源文件现在添加一个 EDIF 源文件到这个新的工程项中本教程中使用的 EDIF 源文件包含在 ISE 安装完的子目录中按照如下步骤添加源文件1选择 Project -> Add Source2使用浏览Browse功能在 ISE 的安装目录下找到如下子目录/ISEexamples/edif_flow/3 选择文件mf.edn4 点击 Open 此时该文件加到了新工程项中注如果使用 Project -> Add Copy of Source 选项将会在新工程项子目录中添加一个源文件的备份文件设计实现下一步实现该设计同时使用 FPGA Editor 工具来察看该设计的布局及布线情况运行实现设计Implement Design按照如下步骤实现该设计1在 Sources in Project 窗口中选择网表文件mf.edn2在 Processes for Current Source 窗口中双击实现设计Implement Design所有的进程从 Translate 到 Place & Route将会运行图 A-2 实现设计进程在Process for Current Source窗口中打对勾的标记指示进程已经成功地运行感叹号标记表示进程已经运行但是包含有系统给出的警告有关警告的更多信息可以从副本Transcript窗口中获取在 FPGA Editor 中查看设计在 FPGA Editor 中按照如下步骤查看设计1当实现完成后在 Processes for Current Source 窗口中点击实现设计Implement Design 旁边的 + 符号然后再点击布局布线Place & Route旁边的 + 符号2双击 View/Edit Routed Design (FPGA Editor)布局布线后的设计 -- mf.ncd -- 自动显示在 FPGA Editor 中3在 List1 窗口中点击类型type列将会列出所有按照类型分类的元件调整表格及列宽到希望的位置可以清楚地看到各个名称请确认所有的 26个输入输出都已在类型列中注时钟输入/输出管脚将会列在 GCLK 类型中而不是在 IOB 类型中图 A-3 按照类型列出所有元件完成查看设计后退出 FPGA EditorXILINX 技术资源Software Manuals 软件手册/docsan/xilinx4/index.htm Tutorials 教程/support/techsup/tutorials/index.htmData Book 数据手册/partinfo/databook.htmApplication Notes 应用指南/apps/appsweb.htmAnswers Database 问题解答数据库/support/searchtd.htmTechnical Tips技术提示及设计技巧/support/techsup/journals/index.htm Xcell Journals Quarterly XILINX 季刊杂志/xcell/xcell.htm。
ISE详细步骤★ ISE详细步骤、作⽤及其理解:这⾥把仿真单独编号1)新建⼯程2)⽣成原⽂件⼿段CORE Generator ModuleLanguage Templates3) check syntax①Behavioral simulate我觉得从Synthesis and Simulation Design Guide⽂件看,应该先RTL Simulation (that is, Behavioral simulate )。
其实没有关系,综合和RTL仿真的顺序⽆所谓,这两个不⼀定要谁在前⼰见:注意跑⾏为仿真前是不需要综合的,仅是RTL代码仿真参考:[In-Depth Tutorial] Chapter 4 P914) Synthesis步骤:Entering Constraints (xcf格式) -> Entering Synthesis Options -> Synthsizing参考:[In-Depth Tutorial]P43-P50我觉得这⾥的constraints是 synthesis constraints:《cgd》p18已见:参《Xilinx ISE 9.X FPGA/CPLD设计指南(⼈民邮电)》P31综合是把HDL描述转化为使⽤基本门电路以及⼚家库提供的基本单元进⾏描述的⽹表(Netlist)的过程。
综合时需要附加⼀定的约束,指导综合过程的进⾏,最常⽤的约束有管脚位置约束和附加时序约束② Post- Synthesis Simulation这⾥以《夏宇闻》第17章的设计为例,前⾯⾏为仿真时可以直接仿真cputop模块(专为仿真写的,不可综合),但在synthesize时,必须把cpu模块Set as Top Module,因为cputop模块是不可综合的,然后点击Generate Post-Synthesis Simulation Model,可以注意到原⽂件夹下会⽣成netgen⽂件夹,打开会发现有synthsis⽂件夹,⾥⾯有cpu_synthesis.v ⽂件,这个⽂件是专门⽤来仿真的。
第二章ISE模块简介2.1 DEVICE主要特征:•运用CAD设计二维结构和三维结构及其工艺模拟•通过人机交互的图形用户界面把各阶段形象化。
•图形用户界面和ISE网格构划分。
•基于ACIS的固定几何模型内核。
•通过图形用户界面可记录和重复脚本。
DEVISE有三种独特的运算模式:二维结构设计,三维结构设计,以及三维工艺模拟。
几何和工艺模拟可以自由组合,对三维结构的设计提供更多的支持。
2维/3维器件编辑器通过图形用户界面,用简单的二维和三维图形建立二维和三维器件几何模型。
例如矩形,多边形,立方形,圆柱形以及球形。
圆形的边缘用角隅填密法,三维边缘混和以及切面处理形成。
在已经存在的和新的物体之间的交迭之处的线路可以通过明确的选择来解决,这要顾及到在结构形成中大量的弹性。
复杂结构是由简单的交叉元素构成。
(见图1)3D结构也可以由简单的二维突起结构或者二维平面构成。
几何结构的搭建是由ACIS几何内核来支持完成。
这个几何内核已经得到很好的测试,也已被好几种CAD软件所运用。
(不包括TCAD)设计提供了呈现每个阶段的图样结构,他们的设计以几何结构的形式显示出来。
强大的图形过滤功能使得可以观察到整个区域的一小子部分或清楚观察到区域。
(见图2)掺杂抛面和网格构建是交叉定义的。
布局和形状是半透明的盒子状的,方便查找。
所有的ISE浓度掺杂和网格构建选项都靠MESH和NOFFSET2D/3D支持。
网格构建引擎可以通过设计图形用户界面来访问。
网格和掺杂抛面的产生可以通过Tecplot-ISE工具自动显示出来。
所用交互式的操作被记录成一个文件,使用户可以运行日志脚本文件来重建器件几何图形。
设计图形用户界面具有命令行窗口的作用,脚本命令可以通过图形用户界面输入,同样命令也可以直接通过DOS命令行输入执行。
器件结构参数DEVISE输入的脚本文件运用的是类似于LISP的编程语言方案。
这使通过运用简单的变量或者其他变量定义的变量,例如if 或 do while模块以及循环,使得创建参数结构变的非常容易。
1、ISE的安装现以ISE 5.2i为例介绍Xilinx ISE Series的安装过程。
1)系统配置要求ISE 5.2i推荐的系统配置与设计时选用的芯片有关。
因为在综合与实现过程中运算量非常大,所以对系统配置要求很高。
为了提高综合、仿真、实现过程的速度,对于计算机的CPU的主频、主板和硬盘的工作速度,尤其是内存大小配置都有非常高的要求。
在ISE 5.2i支持的所有Xilinx的FPGA/CPLD中,要求最低的Spartan II和XC9500/XL/XV等系列需要的内存和虚拟内存推荐值均达到128MB,而对于Virtex-II XC2V8000来说,需要的内存和虚拟内存推荐值均高达3GB。
2)ISE 5.2i的安装以中文版Windows XP操作系统为例加以说明。
(1)启动Windows XP,插入ISE5.2i安装光盘,自动或选择执行Install.exe,安装界面如图4.25所示。
图4.25 ISE5.2i安装界面(2)单击此时安装界面上的操作选择“下一步”直到出现图示对话框,输入有效的Registration ID。
之后单击“下一步”选择安装路径;再之后点击“下一步”,会弹出图4.26的对话框,可以选择器件模型。
图4.26 器件模型选择对话框(3)点击“下一步”,如图4.27所示,可以选择器件种类。
图4.27 器件种类选择对话框通过以上步骤后,可根据具体情况来选择,继续“下一步”即可完成安装。
安装完成后,环境变量应作如下描述:若操作系统是Windows NT/2000/XP,选择开始->控制面板->系统->选项->系统->高级->环境变量,在环境变量中加入:变量名:Xilinx变量值:C:Xilinx(即安装路径)具体设置如图4.28所示。
图4.28 环境变量设置操作图3)安装第三方软件在PC上安装完ISE之后,还需要安装第三方仿真软件,如ModelSim等。
File->New Project 创建工程cnt_for_sim,操作如下图。
第二步:新建文件:Project->New Source 创建文件cnt_for_all.v,操作如下图。
完善cnt_for_all.v,如下:modulecnt_for_all( input clk, input rst_n, output [7:0] cnt_o ); reg[7:0] cnt; assign cnt_o = cnt; always@(posedgeclk or negedgerst_n) begin if(!rst_n) cnt<= 8'd0; else cnt<= cnt + 1'd1; end endmodule第四步:综合文件:双击Synthesize –XST,操作如下图。
第五步:生成verilog test bench 文件:右击要仿真的文件cnt_for_all.v,选择New Source,操作如下图。
第六步:完善tb.v文件:操作如下图:module tb; // Inputs regclk; regrst_n; // Outputs wire [7:0] cnt_o; // Instantiate the Unit Under Test (UUT) cnt_for_alluut ( .clk(clk), .rst_n(rst_n), .cnt_o(cnt_o) ); initial begin // Initialize Inputs clk = 0; rst_n = 0; // Wait 100 ns for global reset to finish #100; // Add stimulus here rst_n = 1'b1; end always #10 clk = ~clk; endmodule第七步:编译行为仿真库:双击Compile HDL Simulation Library,操作如下图。
1.启动ISE,出现以下对话框,点击OK。
出现ISE的主界面,在这里进行操作。
2.新建工程首先新建一个工程,如下图所示:File--New Project.以mux21为例,填写Project Name,并建立路径(默认路径即可),Top_Level Source Type 选择HDL(默认)。
点击Next。
下面要选择器件类型,大家可以观察一下板子的核心芯片,是XC9572XL,44个管脚,速度等级10,按以下选择器件,Family:XC9500XL CPLDS。
Device:XC9572XL。
Package:PC44。
Speed:-10。
选择好器件之后,点击Next,然后直接点击Next—Next—Finish。
3.新建文件(如果文件已经存在,则直接进行第4步添加文件)当我们建立了一个新的工程之后,下面就该编写V erilog文件了,如下图:File—New,然后选择Text File,点击OK。
在右边空白区域中编写代码,编写完毕之后,点击保存,默认路径即可。
4.向所建立工程中添加文件V erilog代码已经有了,但是还没有添加到工程中,下一步就是将文件添加到所建工程当中。
如下图,右击xc9572xl-10PC44,选择Add Source,点击要添加的文件,打开,在出现的对话框选择OK。
5.绑定管脚加入文件之后就可以进行绑定管脚了,如下图,先用鼠标点击左上侧红色框中的mux21.v,然后点开左下侧的User Constraints,右击Assign Package Pins,选择run,出现对话框,选择“yes”。
出现绑管脚的界面如下图,根据板子上的按键(输入)或者LED/数码管(输出)来填写下图左侧的红色区域(Loc)。
大家可以观察一下,当填完一个管脚后,点击其他地方,右侧芯片图上对应管脚会变成蓝色,表示该管脚已经被使用。
绑完管脚关闭即可。
6.综合、翻译到这一步,V erilog文件已经有了,管脚也已经绑定了,下面需要对它进行综合、翻译等操作,并检查有无错误。
4.1.1 ISE简要介绍Xilinx 是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的 IP (Intellectual Property)核,长期以来一直推动着FPGA技术的发展。
Xilinx 的开发工具也在不断地升级,由早期的Foundation系列逐步发展到目前的ISE 9.1i系列,集成了FPGA开发需要的所有功能,其主要特点有:∙包含了Xilinx新型SmartCompile技术,可以将实现时间缩减2.5倍,能在最短的时间内提供最高的性能,提供了一个功能强大的设计收敛环境;∙全面支持Virtex-5系列器件(业界首款65nm FPGA);∙集成式的时序收敛环境有助于快速、轻松地识别FPGA设计的瓶颈;∙可以节省一个或多个速度等级的成本,并可在逻辑设计中实现最低的总成本。
Foundation Series ISE具有界面友好、操作简单的特点,再加上Xilinx的FPGA 芯片占有很大的市场,使其成为非常通用的FPGA工具软件。
ISE作为高效的EDA 设计工具集合,与第三方软件扬长补短,使软件功能越来越强大,为用户提供了更加丰富的Xilinx平台。
4.1.2 ISE功能简介ISE的主要功能包括设计输入、综合、仿真、实现和下载,涵盖了FPGA开发的全过程,从功能上讲,其工作流程无需借助任何第三方EDA软件。
∙设计输入:ISE提供的设计输入工具包括用于HDL代码输入和查看报告的ISE文本编辑器(The ISE Text Editor),用于原理图编辑的工具ECS (The Engineering Capture System),用于生成IP Core的CoreGenerator,用于状态机设计的StateCAD以及用于约束文件编辑的Constraint Editor等。
∙综合:ISE的综合工具不但包含了Xilinx自身提供的综合工具XST,同时还可以内嵌Mentor Graphics公司的LeonardoSpectrum和Synplicity公司的Synplify,实现无缝链接。
ISE7.1i快速入门教程声明:本文档仅供内部学习交流,禁止传抄!电子科技大学VLSI设计中心2010年5月12日目录一、启动ISE软件 (1)二、创建项目工程(Project) (2)三、综合(Synthesize) (5)四、用户约束(User Constraints)——定义输入输出管脚约束 (7)五、设计实现(Implement Design) (8)六、下载配置 (9)说明:本教程针对下图所示的FPGA开发板。
一、启动ISE软件在已经正确安装Xilinx ISE7.1i软件工具之后,可以通过以下方式启动ISE软件。
方式1:双击桌面的快捷方式启动ISE7.1i。
方式2:通过“开始Æ程序ÆXilinx ISE7.1iÆProject Navigator”启动ISE。
ISE启动后,将进入下图所示的主界面。
二、创建项目工程(Project)1.选择“FileÆNew Project”启动项目工程的创建。
2.给Project命名,指定Project路径。
3.选择FPGA类型。
器件系列(Device Family):Spartan3 器件型号(Device):xc3s200封装(Package):pq208速度级别(Speed Grade):-44.项目工程创建完成后的主界面。
5.添加HDL源文件。
在“Sources in Project”子窗口中右击,选择Add Source…6.注意选择源文件类型(Design File或Test Bench File)。
三、综合(Synthesize)完成HDL源文件加载后,如下图所示。
选中需要综合的顶层文件,双击Synthesize – XST(或其它综合器)。
如果没什么问题,会出现下图中的绿色小勾,表示综合完成。
双击上图中的“View Synthesis Report”,可以查看综合结果。
双击上图中的“View RTL Schematic”,可以查看综合后的RTL原理图。
ISE教程第7章 Xilinx ISE6.1i简明教程在本章⾥介绍Xilinx公司FPGA/CPLD的集成开发环境——ISE(Xilinx Integrated Software Environment)6.1i软件的简单使⽤,该软件环境集成了FPGA的整个开发过程所⽤到的⼯具,不过仿真⼯具除外。
本章主要介绍了⽤VHDL、VerilogHDL、原理图以及EDIF ⽹表进⾏设计输⼊、⽤ModelSim仿真⼯具对设计进⾏功能仿真和时序仿真以及将数据流⽂件加载到FPGA等⽅⾯的内容。
本章给初学者演⽰了⼀个完整的实现FPGA设计的开发流程,没有涉及较深⼊的细节问题,阅读并练习本章介绍的各节,读者就有⾜够的信⼼去把精⼒放到设计本⾝,⽽不是放到掌握ISE软件上来。
如果你有HDL语⾔⽅⾯的基础,读完本章,也许你会发现,原来开发FPGA并不神秘,⽽且是如此容易上⼿。
关于较为深⼊的⽅⾯,可以参阅ISE⾼级设计⼯具⼀章。
7.1 设计准备7.1.1 ISE6.1i软件的安装ISE6.1i软件本⾝共有两张光盘,包括了ISE的各种⼯具。
如果读者需要对设计进⾏仿真,可以安装ModelSim,⼀般在购买ISE 时会有⼀张ModelSim的光盘,该光盘为ModelSim的Xilinx版本ModelSimXE(XilinxEdition)。
当然也可以直接购买ModelSim的其他版本,再将Xilinx的仿真库⽂件编译即可使⽤,与ISE6.1i对应的ModelSim版本为5.7版本,ISE软件和ModelSim软件的更新⾮常快,在写这本书的时候,ISE6.2和ModelSim5.8已经发布了,ModelSim的任何版本可以从该公司⽹站/doc/b54c46563c1ec5da50e27043.html /上免费下载,所谓的购买就是购买License⽂件,好了,关于ModelSim的介绍就先说到这⾥,在ModelSim使⽤⼀章中将详细再讲。
ISE整体开发流程:建工程→编写工程代码→检查语法错误→行为仿真→综合→管脚约束→实现→时序仿真→生成bit流文件→下载到板子上调试;实验是用ISE10.1做的,与ISE9.1不同的地方在文中也有相关说明。
一:建工程1.工程命名file→new projiect(如下图所示:在工程名处填:jishuqi 资源类型选:HDL)2.器件类型选择及仿真综合工具、硬件描述语言设置点击Next,出现如下图所示界面:图中设置的有:Family:virtex2P; Device :XC2VP30;Package:FF896;Speed:-7(这个是根据VIRTEX2P开发板设置的数据,不同的开发板设置的数据不一样)。
3.完成工程的建立.一直点击next,出现如下图界面后,点Finish完成工程的建立:二.编写HDL代码(工程此部分是在Implementation下完成的)1.在Sources区域点击右键选择new source,出现如下图所示的界面,按照如下图设置,然后一直点Next,一直到Finish完成代码文件界面:3.接下来开始HDL代码编写,这里是一个简单的十进制计数器的编写:代码编写好后,点击保存,然后检查看编写代码是否有错误,如上图所示,Check Syntax 点击检查后是绿色的勾,则代码没有语法错误,可以进行下一步功能仿真;module jishuqi(clk,rst,q);input clk,rst;output[3:0] q;reg[3:0] q;always@(posedge clk)beginif(rst==0)q<=4'b0;elsebeginif(q==4'b1010)q<=0;elseq<=q+1;endendendmodule三、行为(功能)仿真1.同样在Sources 区域右键添加New Source 如下图所示,添加图形仿真文件:2.一直点Next,最后finish掉到如下图所示的,时钟设置界面:如上图所示:1.选择Rising Edge 时钟上升沿有效;2.选择对应设计的时钟信号;3.设置clk的频率,高低电平持续时间;4.设置仿真时间为1000ns;3.点Finish进入波形编辑界面,如下图所示:(rst是要编辑的波形)编辑之后波形如下所示:点击保存;3.如下图选择:在Sources for 选择Behavioral Simulations4.依次点击1,2,然后双击,待运行后,最后出现如下图的仿真结果:到此时完成了行为仿真。
Xilinx ISE 快速入门详细教程1——青山紫木自己学习FPGA有些日子了,现在回过头来看看自己走过的路,有太多的曲折。
读过网络上一些文档,得到了很大的帮助。
现在自己入门了,就希望帮助别人。
为了帮助广大的FPGA爱好者们更快入门,于是自己写了这篇《Xilinx ISE 快速入门详细教程》。
既是一个总结,也是一个激励,在帮助他人的同时,更加提升自己的实力。
本文采用实例的方法介绍入门方法,相信只要跟着本文走,是一定可以快速掌握ISE的基本功能的。
当然,这篇文章只是基础。
当掌握了本文的内容后,还要多加练习,之后,还要读更多的文档以了解ISE 的更加高级的功能。
注意:本文是通过一个简单的工程实例——counter_bit8也就是一个8bit计数器,这个例子的编译、综合、实现整个过程来说明入门过程的。
编程,配置(下载)用的是另外一个工程实例——trychip。
我采用的是ISE的14.2版本,用的是verilog hdl 硬件描述语言。
假设你已经安装好了ISE 14.2.好了,废话少说,LET’ S GO!一、运行ISE。
双击图标(你懂的)打开界面如下图图一所示:图一 打开后界面观察图一,可以看见有一个小的对话框“tip ofthe day.”这是程序自带的,用于给用户提供一些有关verilog 或ISE的一些信息,关闭即可。
二、新建工程。
如图二红色区域所示,点击工具栏中file,选择New projiect.图二 新建工程1之后,会弹出图三所示对话框:图三 新建工程2在图三所示的Name一栏中填入工程名,用英文或阿拉伯数字。
在Location一栏中,选择工程的路径,路径中不要有中文。
其他都不用管。
我们这里工程名取为counter_bit8,路径自己定义。
完后,点击Next.会弹出如图四所示对话框:图四 新建工程3刚入门时,只需注意图四红色区域即可。
选择仿真工具与语言。
这里选的是modelsim-SE 版,语言为verilog hdl。
Xilinx ISE 14.3 简单教程本节以一个8位可逆计数器的FPGA开发过程为例介绍Xilinx ISE14.3 集成开发环境的使用。
启动ISE软件,进入如图1所示的ISE集成开发环境,选择菜单[File]的[New Project]功能,出现如图2的对话框。
“Name”用于指定项目的名称,“Location”用于指定项目设计数据的保存位置,默认是在ISE的安装目录下。
设计者可以自行更改项目存放的位置。
需要特别注意的是,由于ISE软件不支持中文字符,所以不论是“Name”还是“Location”中最好不包含有中文字符,否则会导致项目保存时发生错误。
在“Name”框内填上项目名称,例如“count8_updn”,ISE自动在当前保存路径“Location”的目录下创建名为“count8_updn”的目录,并将与“count8_updn”项目相关的文件都保存在该目录中。
“Top-Level Source Type”默认选择“HDL”。
图1 ISE集成开发环境图2 新项目的建立点击“Next”后,弹出如图3所示的芯片选择对话框,准备为“count8_updn”项目选择设计芯片。
这个步骤主要是选择FPGA芯片的类型、速度、封装,同时选择项目的主要输入方式、综合方式和模拟方式等信息。
图3中在“Family”中选择Spartan3E 系列芯片;在“Device”中指定采用“XC3S500E”芯片;芯片的封装形式“Package”是“PQ208”,即表面贴装208个管脚的芯片;芯片的速度“Speed”为“-4”;项目采用“HDL语言”作为主要输入形式;逻辑综合工具“Synthesis Tool”选用了“XST (VHDL/Verilog)”,即可以进行VHDL和Verilog两种语言形式源代码的编译和处理。
波形的模拟仿真工具“Simulator”选择“Modelsim-XE VHDL” 或者ISim(VHDL/Verilog)工具。
第十一章VHDL 的FPGA 实现能够完成逻辑综合的EDA 工具很多。
在此,我们基于实验室使用比较广泛的ISE 软件介绍综合流程,参见图11.1,基于ISE 的FPGA 设计一般分为九步:·电路功能设计·VHDL 的RTL 源程序输入·功能仿真(功能不正确,则修改设计)·综合(产生网表)·综合后仿真(综合后电路的门级仿真不通过,则需修改源程序)·实现与布局布线·时序仿真与验证(整体的时序分析(后仿)通不过,则需要重新布线)·板级仿真与验证(主要应用于高速电路设计)·芯片编程与调试(产生FPGA 目标文件,下载烧写FPGA )源代码设计RTL 级VHDL 代码设计功能仿真综合实现翻译、映射、布局布线烧录 FPGA 代码文件*.vhd网表文件*.ngc下载文件*.bit 电路功能设计模块划分功能不正确时序仿真时序不满足综合后仿真静态时序分析板级仿真验证电路验证设计验证图11.1 FPGA 设计流程在仿真模型中完全可以用VHDL来描述一项设计的时序特性,但在综合中,这些时序行为(如惯性或传输延迟)的描述都会被VHDL综合器忽略,而此设计的实际时序行为仅依赖于目标器件的物理结构和映射方式。
因此,若将设计模型从一个目标器件移植到另一个目标器件时,那些依赖于正确的延迟特性才能正常工作的VHDL模型,将不可能得到期望的综合结果和时序仿真效果。
仿真模型可以描述一些无限制的条件(如无穷循环或无范围限制的整型数),硬件却不能提供这些条件。
在某些情况下,如无穷循环或循环次数不确定的情况下,综合工具会产生错误并退出。
在其他的情况下,如无范围的整数,VHDL综合器会假设一个默认的表示方式,如以32bit二进制数表示无范围的整数。
尽管这是可综合的,但却无法生成所期望的电路。
11.2 VHDL的FPGA逻辑综合以下将以第七章例7.15交通信号灯监测电路的程序为例来说明如何对VHDL程序进行综合。
1、ISE的安装现以ISE 5.2i为例介绍Xilinx ISE Series的安装过程。
1)系统配置要求ISE 5.2i推荐的系统配置与设计时选用的芯片有关。
因为在综合与实现过程中运算量非常大,所以对系统配置要求很高。
为了提高综合、仿真、实现过程的速度,对于计算机的CPU的主频、主板和硬盘的工作速度,尤其是内存大小配置都有非常高的要求。
在ISE 5.2i支持的所有Xilinx的FPGA/CPLD中,要求最低的Spartan II和XC9500/XL/XV等系列需要的内存和虚拟内存推荐值均达到128MB,而对于Virtex-II XC2V8000来说,需要的内存和虚拟内存推荐值均高达3GB。
2)ISE 5.2i的安装以中文版Windows XP操作系统为例加以说明。
(1)启动Windows XP,插入ISE5.2i安装光盘,自动或选择执行Install.exe,安装界面如图4.25所示。
图4.25 ISE5.2i安装界面(2)单击此时安装界面上的操作选择“下一步”直到出现图示对话框,输入有效的Registration ID。
之后单击“下一步”选择安装路径;再之后点击“下一步”,会弹出图4.26的对话框,可以选择器件模型。
图4.26 器件模型选择对话框(3)点击“下一步”,如图4.27所示,可以选择器件种类。
图4.27 器件种类选择对话框通过以上步骤后,可根据具体情况来选择,继续“下一步”即可完成安装。
安装完成后,环境变量应作如下描述:若操作系统是Windows NT/2000/XP,选择开始->控制面板->系统->选项->系统->高级->环境变量,在环境变量中加入:变量名:Xilinx变量值:C:Xilinx(即安装路径)具体设置如图4.28所示。
图4.28 环境变量设置操作图3)安装第三方软件在PC上安装完ISE之后,还需要安装第三方仿真软件,如ModelSim等。
2 ISE工程设计流程下面主要概述ISE的基本开发流程以及在开发过程中的各个阶段需要用到的工具软件。
图4.29 说明了利用Xilinx公司的ISE开发设计软件的工程设计流程,具体分为五个步骤:即输入(Design Entry)、综合(Synthesis)、实现(Implementation)、验证(Verification)、下载(Download)。
图4.29 ISE的工程设计流程1)图形或文本输入(Design Entry)图形或文本输入包括原理图、状态机、波形图、硬件描述语言(HDL),是工程设计的第一步,ISE集成的设计工具主要包括HDL编辑器(HDL Editor)、状态机编辑器(StateCAD)、原理图编辑器(ECS)、IP核生成器(CoreGenerator)和测试激励生成器(HDL Bencher)等。
常用的设计输入方法是硬件描述语言(HDL)和原理图设计输入方法。
原理图输入是一种常用的基本的输入方法,其是利用元件库的图形符号和连接线在ISE软件的图形编辑器中作出设计原理图,ISE中设置了具有各种电路元件的元件库,包括各种门电路、触发器、锁存器、计数器、各种中规模电路、各种功能较强的宏功能块等用户只要点击这些器件就能调入图形编辑器中。
这种方法的优点是直观、便于理解、元件库资源丰富。
但是在大型设计中,这种方法的可维护性差,不利于模块建设与重用。
更主要的缺点是:当所选用芯片升级换代后,所有的原理图都要作相应的改动。
故在ISE软件中一般不利用此种方法。
为了克服原理图输入方法的缺点,目前在大型工程设计中,在ISE软件中常用的设计方法是HDL设计输入法,其中影响最为广泛的HDL语言是VHDL和Verilog HDL。
它们的共同优点是利于由顶向下设计,利于模块的划分与复用,可移植性好,通用性强,设计不因芯片的工艺和结构的变化而变化,更利于向ASIC的移植,故在ISE软件中推荐使用HDL设计输入法。
波形输入及状态机输入方法是两种最常用的辅助设计输入方法,使用波形输入法时,只要绘制出激励波形的输出波形,ISE软件就能自动地根据响应关系进行设计;而使用状态机输入时,只需设计者画出状态转移图,ISE软件就能生成相应的HDL代码或者原理图,使用十分方便。
其中ISE工具包中的 StateCAD 就能完成状态机输入的功能。
但是需要指出的是,后两种设计方法只能在某些特殊情况下缓解设计者的工作量,并不适合所有的设计。
2)综合(Synthesis)综合是将行为和功能层次表达的电子系统转化为低层次模块的组合。
一般来说,综合是针对VHDL来说的,即将VHDL描述的模型、算法、行为和功能描述转换为FPGA/CPLD基本结构相对应的网表文件,即构成对应的映射关系。
在Xilinx ISE中,综合工具主要有Synplicity公司的Synplify/Synplify Pro,Synopsys公司的FPGA Compiler II/ Express, Exemplar Logic公司的LeonardoSpectrum和Xilinx ISE 中的XST等,它们是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,寄存器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求优化所形成的逻辑连接,输出edf和edn等文件,供CPLD/FPGA厂家的布局布线器进行实现。
3)实现(Implementation)实现是根据所选的芯片的型号将综合输出的逻辑网表适配到具体器件上。
Xilinx ISE的实现过程分为:翻译(Translate)、映射(Map)、布局布线(Place & Route)等3个步骤。
ISE集成的实现工具主要有约束编辑器(Constraints Editor)、引脚与区域约束编辑器(PACE)、时序分析器(Timing Analyzer)、FPGA底层编辑器(FGPA Editor)、芯片观察窗(Chip Viewer)和布局规划器(Floorplanner)等。
4)验证(Verification)验证(Verification)包含综合后仿真和功能仿真(Simulation)等。
功能仿真就是对设计电路的逻辑功能进行模拟测试,看其是否满足设计要求,通常是通过波形图直观地显示输入信号与输出信号之间的关系。
综合后仿真在针对目标器件进行适配之后进行,综合后仿真接近真实器件的特性进行,能精确给出输入与输出之间的信号延时数据。
ISE可结合第三方软件进行仿真,常用的工具如Model Tech公司的仿真工具ModelSim和测试激励生成器HDL Bencher ,Synopsys公司的VCS等。
通过仿真能及时发现设计中的错误,加快设计中的错误,加快设计进度,提高设计的可靠性。
每个仿真步骤如果出现问题,就需要根据错误的定位返回到相应的步骤更改或者重新设计。
5)下载(Download)下载(Download)即编程(Program)设计开发的最后步骤就是将已经仿真实现的程序下载到开发板上,进行在线调试或者说将生成的配置文件写入芯片中进行测试。
在ISE中对应的工具是iMPACT。
3 VHDL设计操作指南首先进入ISE工程管理器(Project Navigator)界面,如图4.30所示。
Project Navigator是ISE所用集成工具的连接纽带,通过使用Project Navigator,设计者可以创建、组织和管理自己的设计。
图4.30 ISE工程管理器界面ISE提供了许多示例工程,这些工程都存放在ISE文件当中,可以通过File->Open Example来打开。
ISE为我们提供了一个很有特色的工具,那就是语言辅助模板(Language Templates)。
点击Edit->Language Templates,可以调用语言辅助模板,其界面如图4.31所示。
图4.31 ISE语言辅助模板示意图在语言模板中存放了很多HDL语言的通用语法结构和使用范例,特别是许多根据Xilinx器件IP核与硬件原语编写的实例化程序。
使用语言模板,可以方便地把这些语法结构和范例插入到设计者自己的代码文件中,大大方便了程序的编写,提高了工作效率。
语言模板按照ABEL、COREGEN、UCF、 Verilog和VHDL的顺序存放在模板视窗中。
其中COREGEN的UCF是ISE 5.x新增辅助模板。
COREGEN 模板由两个目录组成,分别存放当前工程中生成的IP核的Verilog和VHDL实例化文件,基内容与IP核生成器生成IP核时自动生成的实例化文件(.veo,.vho)相同。
UCF模板也分成两个目录,依次存放CPLD和FPGA的用户约束文件(.ucf)的约束范例。
这个模板使手工编辑UCF文件更加容易。
ABEL、Verilog和VHDL三大语言模板大致可以分为下列4个项目:(1)器件例化(Component Instantiation):该模板仅存在于Verilog和VHDL 中,给出了块RAM(Block RAM)、数字时钟延迟锁相环(Clock DLL)、数字时钟管理单元(DCM)、分布式RAM/ROM(Distributed RAM/ROM)、全局时钟缓冲(Global Clock Buffer)、查找表(LUT)、基于查找表的移位寄存组(SRLUT)、I/O器件、乘法器和选择器(MUX)等器件模块的实例化范例。
(2)语法模板(Language Templates):该模板给出了基本语法规则和应用范例。
(3)综合模板(Synthesis Templates):该模板给出了可综合实现的一些基本单元模块的范例,如乘法器、计数器和触发器等。
(4)用户模板(User Templates):该模板存放用户自己创建的特定结构,是语言模板的功能扩展。
4 ISE综合使用实例在NBA篮球比赛中有一个24秒进攻规则,即从获取球权到投篮击中篮板、篮框、命中或投篮被侵犯,其有效时间合计不能超过24秒,否则被判违例,将失去球权。
在此过程中,设置24秒、启动倒计时、暂停倒计时或者中途终止24秒(即球权归对方)均由裁判控制。
本实例就是设计一个用于篮球比赛的24秒倒计时器,并且为了模拟现场比赛情况,系统中设置了24秒预设键K1、倒计时启动键K2和倒计时暂停键K3,并将计时精度设置为0.1秒。
各按键具体功能如下:K1键按下,LED灯显示24秒;K2键按下,倒计时;K3键按下,计时停止。
1)新建一个工程(Project)选择File / New Project命令,在图4.32所示对话框中输入工程名和工程目录,并设置器件参数。
本设计使用的器件为Spartan2,xc2s100,tq144,-5。