首先:创建一个新的FPGA工程
1、选择菜单 [menus]File>>New>>FPGA Project,在工程栏中将会显示新建的FPGA工程名,选择菜单[menus]File>>Save Project,在对话框中修改工程名称,然后Save。在工程栏中选择File View选项,在工程中将会列出所有属于当前工程的文件。注:Structure Editor选项用于编辑工程中文件间的链接关系。
图1.1 工程栏----创建FPGA工程
2、FPGA工程可以支持原理图和VHDL文件两种源文件,采用混合编辑时,可以将VHDL生成图表符的形式。选择菜单[menus]File>>New>>Schematic;也可以在工程栏中选中FPGA工程名,然后点击鼠标,选择[popups]Add New to Project>>Schematic。保存原理图,重新命名为exercise.schdoc。
图1.2 工程栏----创建原理图
3、接下来在新加入的原理图中完成一个最简单的基于51内核的设计工程,实现LED闪亮的功能。在这个实例中,将会用到51的内核、RAM存储器、上电时序控制、异或门、Nexus协议接口等FPGA工程器件。Nexar2004的器件均可以在FPGA集成库中找到,在系统缺省设置下,在窗口右侧上方可以看到favorities/libraries/clipboard三个属性栏,单击libraries属性栏,窗口中弹出集成库窗口(见图1.3)。选定设计中需要的器件,并拖拽到原理图中。
器件名称
FPGA集成库
TSK51A_D
FPGA Processors.IntLib
RAMS_8x1K
FPGA Memories.IntLib
CLOCK_BOARD
FPGA NanoBoard Port-Plugin.IntLib
TEST_BUTTON
FPGA NanoBoard Port-Plugin.IntLib
LED
FPGA NanoBoard Port-Plugin.IntLib
NEXUS_JTAG_CONNECT
FPGA NanoBoard Port-Plugin.IntLib
NEXUS_JTAG_PORT
FPGA Generic.IntLib
OR2N1S
FPGA Generic.IntLib
FPGA_STARTUPx
FPGA Peripherals.IntLib
图1.3集成库----51内核
图1.4 设计实例-----原理图
1、按照系统设计的规则,将从集成库中拖拽出了器件连接构建一个完整的数字电路系统。然后选择[menu]Tools>>Annotate Quiet,系统将自动分配器件的标示,最后保存工程。特别应注意:
a.在Nexar2004中需要接入Nexus_JTAG_CONNECT和Nexus_JTAG_PORT这两个器件用于构建Nexus协议链;
b.所有的输入管脚均不能置空;否则编译中系统会错。
c. Bus Joiner(图示中用红色标识的部分),可以将不同总线宽度的端口连接在一起。原则:输出总线的宽度应不小于输入总线宽度。
第二步,创建嵌入式软件工程:
1、选择菜单 [menus]File>>New>>Embedded Project,在工程栏中将会显示新建的Embedded工程名,选择菜单[menus]File>>Save Project,在对话框中修改工程名称,然后Save。
图2.1嵌入式工程
2、在工程栏中,用鼠标点击嵌入式工程名称,然后选择右键弹出[popus]Add New to Project>>C File。重新命名c文件名称并保存;
3、在c文件中输入软件代码;
图2.2设计实例---- c源代码
第三步,设定嵌入式软件工程选项:
1、选择菜单[menu]Project>>Project Options,或者在工程栏,嵌入式工程名称上单击鼠标右键选择弹出菜单[popus]Project Options,系统将打开嵌入式工程的设置选项对话框(图3.1),在configuration下拉选项栏中按照设计中选择的微处理器的类型,选择相应的嵌入式系统环境。由于前面我们设计的实例选用8051的微处理器核,因此在该工程的软件设置重,如图3.1选择TASKING 8051。
图 3.1嵌入式工程环境设置——微处理器设置
2、在Build Options下,点击Processor并随后点击Startup Code。确认在Startup Code属性栏下Generate and use startup code<project>_cstart.c选项栏被选中。由于在该文件中定义了嵌入式软件工程的中断向量表,这对选择c编译器而言非常重要。
3、点击C Complier,选择Memory Model并且在Select a complier memery model属性栏中将下拉选择Small:variables in DATA,然后确定Allow reentrant functions属性未被选中。(图3.2)
图3.1嵌入式工程环境——C编译环境设置
4、选择Code Generation,选中Put strings in ROM only属性并选中中断向量属性及寄存器属性(图3.3),然后完成对嵌入式软件工程的环境设定。
图3.3嵌入式工程环境——代码发生器
第四步,设定微处理器的属性选项:
如何将嵌入式工程与FPGA工程建立起相关联的属性呢? 接下来将讲述具体的操作步骤;
1、打开FPGA工程下的原理图文件;
2、鼠标双击TSK51A_D Processor(U1),
3、在器件参数段中,在ChildCore1属性栏中将在原理图设计中与处理器核关联的RAM的标识输入,如图4.1中用红色标识的部分。在前面的设计实例中,外部RAM的标识为U4;
图4.1器件属性对话框
4、选择菜单[menu]Project>>Complier FPGA Project Exercises_FPGA.PrjFpg,在编译通过后保存;如图4.2在工程栏中选择Structure Editor属性,在工程栏窗口下将显示工程的结构层次关系,图中将显示出U1(TSK51A_D Processor)在设计中的位置关系;然后将嵌入式工程名称拖拽到U1上(如图4.2),从而在FPGA工程与嵌入式工程之间建立起相互关系;
图4.2工程栏——结构编辑
4、保存工程并选择[menu]Project>>Re-complier FPGA Project。
第五步,FPGA的配置:
在工程设计完成后,要将编译好的文件下载到系统板上验证,假定选用的目标器件为Altera公司的Cyclone EP1C12Q240型号的FPGA,则需要在FPGA器件配置中添加相应的约束文件(Constraint File),前面介绍过,约束文件是用来指定选用FPGA器件的型号及定义引脚属性的文件。FPGA配置的具体操作过程可以分以下几步完成:
1、选择菜单[menu]Project>>Configuration Manager,或则在工程栏中,点击FPGA工程名称然后鼠标右键,选择弹出菜单[popus]Configuration Manager;
2、在打开的配置管理器对话框中(图5.1),在对话框的左下角设置区,点击添加按钮,在弹出的对话框中输入配置文件名称;
图5.1FPGA工程配置管理器
3、在约束文件区,点击添加按钮,在弹出的文件打开对话框中,选择相应的约束文件名,点击打开,然后将配置管理器中,配置选项选中;(见图5.2)
图5.2FPGA工程配置管理器——配置约束文件
4、在工程栏中,可以发现设置属性下将新添一个约束文件,(如图5.3)选择菜单[menu]Project>>Recomplier FPGA Project,保存FPGA工程。
图5.3工程栏——约束文件
最后,在系统控制面板上完成工程设计的全过程:
选择菜单[menu]View>>Devices,或者点击图标 ,打开系统控制面板窗口(图6.1);窗口中的三条黑线自上而下分别表示系统板间的物理链路、FPGA器件的硬件链路、绑定于Nexus协议上的IP器件软链。在将系统开发板NanoBoard NB1上电前,应检查系统开发板上并口总线是否已经与PC并口用扁平电缆连接完好。然后,选中窗口左上方的Live选项,窗口中将出现图6.1中显示的界面。在FPGA图标的上方有四段工作流程,分别为编译、综合、装配,下载。编译用于检查设计中的链接及软件语法错误;综合用于系统产生一个EDIF网表文件;装配用于将EDIF文件翻译成目标FPGA可以认识的对象文件,完成在FPGA中的布局布线,进行时序分析,最终生成用于下载到目标FPGA中的二进制代码文件;下载用于完成将装配好的二进制代码文件下载到FPGA中的过程。当四个工作流程完成后,流程上的红色状态表识将变为绿色。如图6.2
图6.1 系统控制——编译前
图6.2系统控制——编译后
以上完成了从整个基于Altera Cyclone EP1C12型号FPGA项目工程的设计,通过将软硬件设计方案在NanoBoard NB1系统开发板上实际运行验证,再逐步优化,反复下载验证,最终完成项目的研发。
基本知识:
2、Free-IP 核:(free- Intellectual Property Core,免版税的器件内核)
在FPGA设计中越来越多的是一种基于IP的设计方法。所谓free-IP Core是指无需支付知识产权费用的、公开的器件设计文档。
3、虚拟仪器:(Virtual Instruments)
虚拟仪器是在PC技术的基础上发展起来的,所以完全“继承”了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,使您在数据导入磁盘的同时就能实时地进行复杂的分析。
4、Nexus协议:(Nexus Protocol)
Nexus协议即IEEE-ISTO5001 – 1999 Global Embedded Processor Debug Interface 标准。Nexus协议是完全构架于IEEE1149.1(JTAG协议)之上,通过协议中定义的寄存器、通讯等标准,提供了通用的嵌入式处理器调试接口。
5、Constraint File:
Constraint File是在FPGA设计中用于完成器件型号及管脚特性约束的描述性文件。所有的约束文件均保存在系统安装目录 \altium2004libraryFPGA中。