Presentation is loading. Please wait.

Presentation is loading. Please wait.

第2章 SOPC硬件开发环境及流程.

Similar presentations


Presentation on theme: "第2章 SOPC硬件开发环境及流程."— Presentation transcript:

1 第2章 SOPC硬件开发环境及流程

2 2.1 SOPC开发流程和开发工具 SOPC设计包括硬件和软件两部分。 开发环境:
硬件设计:基于Quartus II和SOPC Builder 软件设计:基于Nios II IDE 仿真: ModelSim DSP的开发: Matlab和DSP Builder 开发环境: Quartus II 6.0 (8.0) SOPC Builder 6.0 (8.0) Nios II IDE 6.0 (8.0) 基于Cyclone II 的SOPC开发板

3 Quartus 完成NiosII整个系统的设计、分析、综合、硬件优化和适配 配置文件编程下载、硬件系统测试 SOPC Builder
IDE 完成基于Nios II系统的软件开发和调试 将FPGA配置信息写入Flash或者EPCS Quartus II 8.0 SOPC Builder Nios II IDE Altera

4 名词解释- 与SOPC相关的名词 II ? Quartus Quartus II:
Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入到器件编程的全部功能。 双击Quartus II图标 Quartus II 5.0 软件界面

5 SOPC Builder包含在Quartus II软件中
SOPC Builder:功能强大的基于图形界面的片上系统定义和定制工具。SOPC Builder库中包括处理器和大量的IP核及外设。 启动: Quartus II → Tools → SOPC Builder SOPC Builder包含在Quartus II软件中

6 名词解释- 与SOPC相关的名词 Nios II:
IDE ? Nios II Nios II: Nios II系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以Nios II IDE下完成,包括编辑、编译和调试程序。 双击Nios II IDE图标 Nios II IDE 软件界面

7 ModelSim:HDL仿真软件,对设计的硬件系统进行RTL级的仿真。
DSP Builder:Altera公司的数字信号处理软件,实现算法和硬件的无缝过渡,可以在Matlab的Simulink中完成算法的仿真、验证,后通过SignalCompiler将模型文件转换成硬件描述语言。

8 2.1 SOPC开发流程和开发工具 采用NIOS II处理器设计嵌入式系统的流程: 1. 分析系统需求说明,包括功能需求和性能要求等;
2. 建立Quartus II工程,建立顶层实体; 3. SOPC Builder生成用户定制的系统模块(NIOS II+?) 4. 将NIOS II系统模块集成到硬件工程中,添加一些模块,可以是 Altera公司提供的LPM (logic programmable module)宏功能块或用户自己定制的模块; 5. 在顶层实体中,将NIOS II系统模块、Altera的LPM或用户自定 义的逻辑模块连接起来;

9 6. 分配引脚(Tcl脚本语言)和编译工程,编译生成系统的硬件配置文件.sof和.pof文件;(二者区别:SRAM\EEPROM)
7. 下载工程,将配置文件下载到开发板上进行验证;(可选) 8.使用IDE开发环境进行软件开发 9. 编译软件工程,生成可执行文件.elf; 10. 调试程序,将硬件配置文件下载到开发板,将可执行文件 下载到RAM,软硬件协同工作。

10 每个开发过程开始时都应建立一个工程,Quartus II是以工程的方式对设计过程进行管理。在工程中建立顶层模块文件
每个开发过程开始时都应建立一个工程,Quartus II是以工程的方式对设计过程进行管理。在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。 在进行SOPC开发之前,首先必须确定系统的需求:如系统需求的性能、CPU软核类型(硬件乘法器?)外围器件和数量、需要的带宽和吞吐量、需求的接口类型以及DMA通道数量等。 分析系统需求 建立Quartus II工程, 建立顶层图*.bdf 打开SOPC Builder NiosII内核 定义和生成系统 定制指令&定 &标准外设 制外设逻辑 在SOPC Builder中添加需要的功能模块(Nios II及其标准外设模块),完成后生成一个系统模块。 如果需要,用户可以定制指令和外设逻辑。(可参考第8章) 集成SOPC生 硬件抽象层 使用Nios II 成的系统到 用户C/C++应 自定义的 Altera的 (HAL)&外设 IDE开发软件 Quartus II工程 用程序代码 功能模块 LPM模块 驱动程序 和定制的库 连接各 设置软件运行 功能模块 硬件环境属性 选择FPGA型号 编译软件 生成可执 并进行管脚分配 行文件elf 进行编译 在IDE中使用 ISS运行/调试 选项设置 软件 编译硬件系统 生成配置文件sof 在目标板上 下载配置文件到 下载可执行 FPGA器件 软件到 Nios II系统 使用IDE编程工具 调试好的 在目标板上运 烧写配置文件和 硬件和软件 行/调试软件 软件代码 SOPC开发流程简图

11 分析系统需求 建立Quartus II工程, 建立顶层图*.bdf 打开SOPC Builder NiosII内核 定义和生成系统 定制指令&定 &标准外设 制外设逻辑 集成SOPC生 成的系统到 硬件抽象层 使用Nios II 用户C/C++应 自定义的 Altera的 (HAL)&外设 IDE开发软件 Quartus II工程 用程序代码 功能模块 LPM模块 驱动程序 和定制的库 连接各 设置软件运行 根据系统要求,设计自己的逻辑功能模块。并在顶层模块中使用; 功能模块 在Quartus II软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列); 硬件环境属性 在顶层模块中,分别将SOPC Builder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中; 然后将各个功能模块用连线连起来组成系统功能原理图。 选择FPGA型号 编译软件 生成可执 并进行管脚分配 行文件elf 进行编译 在IDE中使用 ISS运行/调试 选项设置 软件 编译硬件系统 生成配置文件sof 这个两过程类似传统电路设计中,将所有要使用的芯片焊接到电路板上,然后通过PCB上的连线将各个芯片连接起来,组成电路系统。 在目标板上 下载配置文件到 下载可执行 FPGA器件 软件到 Nios II系统 使用IDE编程工具 调试好的 在目标板上运 烧写配置文件和 硬件和软件 行/调试软件 软件代码 SOPC开发流程简图

12 SOPC开发流程简图 为系统原理图,选择载体并为各个输入输出信号分配管脚; 设置编译选项,从而让编译器按照用户设定来进行编译;
分析系统需求 建立Quartus II工程, 建立顶层图*.bdf 打开SOPC Builder NiosII内核 定义和生成系统 定制指令&定 &标准外设 制外设逻辑 集成SOPC生 硬件抽象层 使用Nios II 用户C/C++应 自定义的 成的系统到 Altera的 IDE开发软件 功能模块 Quartus II工程 (HAL)&外设 用程序代码 LPM模块 驱动程序 和定制的库 连接各 设置软件运行 功能模块 硬件环境属性 选择FPGA型号 编译软件 生成可执 并进行管脚分配 行文件elf 为系统原理图,选择载体并为各个输入输出信号分配管脚; 进行编译 在IDE中使用 ISS运行/调试 选项设置 设置编译选项,从而让编译器按照用户设定来进行编译; 软件 编译系统生成硬件系统的配置文件*.sof和*.pof。编译系统是一个非常复杂的过程,包括优化逻辑的组合、综合逻辑、适配FPGA、布线以及时序分析等步骤。 编译硬件系统 生成配置文件sof 在目标板上 下载配置文件到 下载可执行 FPGA器件 软件到 Nios II系统 使用IDE编程工具 烧写配置文件和 调试好的 在目标板上运 硬件和软件 行/调试软件 软件代码 SOPC开发流程简图

13 软件开发也可以在SOPC Builder 生成系统模块后立即进行!(。PTF文件:硬件系统配置)与传统软件开发类似,唯一不同在于系统是自己定制的,所受局限小!
分析系统需求 建立Quartus II工程, 建立顶层图*.bdf 打开SOPC Builder NiosII内核 定义和生成系统 定制指令&定 &标准外设 制外设逻辑 集成SOPC生 成的系统到 硬件抽象层 使用Nios II 用户C/C++应 自定义的 Altera的 IDE开发软件 功能模块 Quartus II工程 (HAL)&外设 用程序代码 LPM模块 驱动程序 和定制的库 连接各 设置软件运行 功能模块 硬件环境属性 选择FPGA型号 编译软件 生成可执 并进行管脚分配 行文件elf 进行编译 在IDE中使用 ISS运行/调试 选项设置 软件 编译硬件系统 生成配置文件sof 在目标板上 下载配置文件到 下载可执行 FPGA器件 软件到 Nios II系统 使用IDE编程工具 烧写配置文件和 调试好的 在目标板上运 硬件和软件 行/调试软件 软件代码 SOPC开发流程简图

14 SOPC开发流程简图 设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。 对用户程序进行编译,生成可执行文件*.elf。
分析系统需求 建立Quartus II工程, 建立顶层图*.bdf 打开SOPC Builder NiosII内核 定义和生成系统 定制指令&定 &标准外设 制外设逻辑 集成SOPC生 成的系统到 硬件抽象层 使用Nios II 用户C/C++应 自定义的 Altera的 (HAL)&外设 IDE开发软件 用程序代码 功能模块 Quartus II工程 LPM模块 驱动程序 和定制的库 连接各 设置软件运行 功能模块 硬件环境属性 设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。 选择FPGA型号 编译软件 生成可执 并进行管脚分配 行文件elf 对用户程序进行编译,生成可执行文件*.elf。 进行编译 将配置文件.sof下载到FPGA,将可执行文件.elf下载到RAM。 在IDE中使用 ISS运行/调试 选项设置 软件 直到硬件和软件设计都达到设计要求。 在IDE的指令集仿真器(ISS)上仿真软件和运行/调试软件。 (可选) 编译硬件系统 生成配置文件sof 最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash,将可执行文件*.elf编程到Flash中 在目标板上 下载配置文件到 下载可执行 FPGA器件 软件到 Nios II系统 在目标板上反复调试软件。 使用IDE编程工具 调试好的 在目标板上运 烧写配置文件和 硬件和软件 行/调试软件 软件代码 SOPC开发流程简图

15 SOPC硬件开发流程 从开发套件提供的外设列表 中选取合适的CPU、存储器及外围器件,定制和配置其功能; 分配外设地址及中断号;
设定复位地址; 添加用户自身定制指令逻辑 到NiosII内核加速CPU性能 添加用户自己设计的IP模块。 生成系统。 编译,综合,布局布线,从 HDL源文件综合成一个适合 目标器件网表,生成FPGA 配置文件(.sof); 用下载电缆将配置文件下载 到目标板。调试完成后,将 硬件配置文件下载到目标板 的非易失存储器(如flash)。

16 2.2 SOPC硬件开发实例 电子钟的设计 第一步是要进行需求分析,建立系统 在液晶屏上显示日期、时间; 可以设置日期、时间;
根据系统要求,设计要用到的外围器件 LCD:电子钟显示屏幕; 按键:电子钟设置功能键; Flash存储器:存储软、硬件程序; SRAM存储器:程序运行时将其导入SRAM。 根据所用到的外设、功能以及开发板的配置,在SOPC Builder中建立系统要添加的模块包括 Nios II CPU、定时器、按键PIO、LCD控制器、AVALON三态桥、外部RAM接口、外部Flash接口。

17 2.2 SOPC硬件开发实例 2.2.1 创建工程 进行完需求分析之后,进行硬件系统的创建。 首先必须建立一个Quartus II 的工程,
步骤如下: 1.启动Quartus II软件; 2. 选择File菜单New Project Wizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。

18 2.2.1 创建工程

19 2.2.1 创建工程 3. 目录、顶层实体名和工程名 注意1: 工程名和顶层实体名字一致 注意2: 路径、工程名、顶层实体名均为英文

20 2.2.1 创建工程 4.可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的路径。

21 2.2.1 创建工程 5. 指定目标器件,根据开发板使用的器件来选择。 注意3: 器件型号 CycloneII EP2C35F672C8

22 2.2.1 创建工程 6. 指定在Quartus II 之外的用于设计输入、综合、仿真、时序分析的第三方EDA工具。(Precision Synthesis\Synplify等)

23 7. 新工程的信息。在设计的过程中,还可以通过菜单assignmentSettings来对这些配置进行修改。

24 8. 点击Finish按钮,Quartus II自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。

25 2.3 创建Nios II 系统模块 创建顶层实体 创建Nios II系统模块:NIOS II 嵌入式处理器,添加、配置系统的外设IP

26 2.3.1 创建顶层实体 (1)选择FileNew;在Device Design File页中,选择Block Diagram/Schematic File,即原理图文件(也可以选择硬件描述语言的文件形式), 单击OK。

27 2.3.1 创建顶层实体 (2) 选择FileSave As,显示的目录为之前设置的工程目录,文件名为之前设置的顶层实体名.

28 2.3.2 创建Nios II系统模块 使用工具:SOPC Builder Nios II系统模块:Nios II处理器 和相关的系统外设。
创建系统模块的流程:先创建一个系统,然后添加Nios II CPU和外设IP,生成实例或者模块,加入到工程的顶层实体。 SOPC Builder

29 2.3.2 创建Nios II系统模块 一、创建系统 启动SOPC Builder(ToolsSOPC Builder) 注意4:
系统名称

30 二 、设置系统主频和指定目标FPGA 设置系统的时钟频率
版本6.0:在Target栏中的Board部分指定核心开发板——Cyclone II (EP2C35)。(IDE: flash 器件编程) 版本8.0:在Device Family选择Cyclone II。(注意5!)

31 三、加入Nios II CPU和 IP模块 首先加入Nios II软核 1. Avalon Components 下面选择Nios II Processor; 2. 双击或者右键 Add,出现Nios II CPU的配置向导

32 根据需要选择Nios II核 Hardware Multiply选择none,不选择Hardware Divide 注意6: Embedded Multipliers:使用专门的内嵌硬件乘法单元(乘法速度最快)。 ②Logic Elements,使用逻辑单元也就是FPGA中的查找表(速度较慢)。③None:只能通过软件模拟乘法,速度最慢。

33 点击Next,进入缓存设置窗口; 可设Instruction Cache为4Kbytes,Data Cache 2Kbytes

34 Advanced Features设置 不选择Include cpu_resetrequest and cpu_resettaken signals(注意7:resetrequest—该复位信号仅复位处理器。处理器在收到该信号后,先执行完 流水线的所有指令,然后进入复位状态。处理器在复位完成后会使cpu_resettaken信号生效一个时钟周期) 点击Next进入MMU and MPU设置。(Quartus 8.0) (注意8:存储器管理单元 MMU和存储器保护单元 MPU)

35 JTAG调试级别选择 选择Level1:该级别支持软件的断点调试。 JTAG调试模块要占用较多的逻辑资源,系统调试完毕了可以选用No Debugger

36 自定义指令的设置,不作任何的设置。点击Finish完成NIOS II处理器的添加
处理器的编辑和修改

37 添加其它外设IP模块 除了Nios II CPU,电子钟设计需要添加的IP模块包括: Timer Button PIO LCD控制器
External SRAM 总线 External Flash 总线 External SRAM 接口 External Flash 接口

38 1. 添加定时器 (2)配置定时器,点Finish,完成定时器的添加。可重命名。
(1)如图选Interval Timer并双击,向导窗口出现;(注意9) (2)配置定时器,点Finish,完成定时器的添加。可重命名。

39 2. 添加Button PIO (1)在Basic Settings,设width?direction?
(2)在Input Options,Edge Capture Register选中 Synchronously Capture,选择Either Edge; (3)点击Finish完成,重命名

40 3. 添加LCD控制器 (1)如图选Character LCD(Optrex 16027),双击。(注意10)
(2)Module Name下出现,lcd_16027_0; (3)将其重命名lcd_display。

41 4.添加外部RAM接口 (1)如图单击Add,出现SSRAM (Cypress CY7C1380C)向导
(2)设置Read Latency和Memory Size (3)Finish完成,重命名为ext-ssram。

42 5. 添加外部闪存接口 (1)前图双击,外部flash接口; (2)在Attributes中,Presets列表中选择相应的flash。

43 6. 添加外部RAM和flash总线(Avalon三态总线桥)
Nios II 系统与外部存储器通信,要在Avalon总线和外部存储器之间加入Avalon三态桥。 (1) 如图选择Avalon Tri-State Bridge,点击Add,出现向导; (2) Registered选项默认为选中;重命名为ext_ssram_bus; (3) 再添加一个Avalon三态总线桥,重命名为ext_flash_bus.

44 7. Nios II系统的连接 (注意11) 所有添加的IP连接是系统自动完成的。对于三态桥和外部存储器接口的连接,系统的自动连接可能和用户的开发板不匹配,用户需要进行手动的更改。 主要是外部RAM接口要和RAM的三态桥连接,外部的Flash接口要和flash的三态桥连接。 针对用的开发板的情况进行的设置,实验用的开发板SRAM和flash没有使用共用的数据线和地址线。 所以必须为它们分别添加一个三态桥。

45

46 2.3.3分配IP模块的地址和中断号 SOPC Builder为各个IP模块分配了一个默认的基地址,用户可以改变这些地址。如果分配的地址出现冲突,如下:

47 (1)自动分配地址:System菜单的Auto Assign Base Address
(2)手动分配地址:Flash外设的Base栏,将地址改为0x0,如果 冲突SOPC Builder会出现错误的提示。 (3)锁定地址:选择Module菜单中的Lock Base Address (4)手动修改外设的中断号:号越小,优先级越高 (5)自动分配中断号:选择System菜单中的Auto Assign IRQs。 建议采用手动的分配。

48 注意:!!

49 2.3.4 配置NIOS II 系统 Reset Address:选择存放Boot Loader的存储器和设置Boot Loader在存储器中的偏移。选择ext_flash,偏移选择默认; Exception Address:选择存放异常向量表存放的存储器和异常向量表在存储器偏移,选择ext_ssram,偏移选择默认;

50 2.3.5 生成NIOS II并加入到工程中 单击System Generation
若选中 Simulation,生成用于仿真的相应的文件。 点 Generate,SOPC Builder提示生成系统的进程,需3-4分钟

51 系统生成完成后,SOPC Builder为这个定制的NIOS II系统模块创建了一个符号,Nios II系统再加入到工程中:
(1)打开顶层实体(BDF),任意处双击,出现 Symbol对话框 (2)在Symbol对话框中单击Project来展开工程目录,其下出现 NIOS2,选中它,右侧出现了系统的符号表示; (3)点OK,NIOS2出现在BDF窗口中,创建的系统加入到工程

52 2.3.6 加入引脚和嵌入式锁相环 嵌入式锁相环有两个时钟输出,一个输出SSRAM提供时钟,另一个时钟的输出为NIOS II CPU提供时钟. 加嵌入式锁相环步骤如下: (1) 点击ToolsMegaWizard Plug-In Manager,出现MegaWizard Plug-In Manager向导窗口,点击next

53 IO下面选择ALTPLL,器件选择Cyclone II,输出文件类型选择VHDL,文件名为ssram_pll

54

55

56 引脚添加 (1)顶层实体的bdf窗口的空白处双击鼠标,出现Symbol添加窗口,选择pin,选择相应类型的引脚,点击OK。
(3)重复上面的步骤添加为各个端口添加相应类型的引脚。 (4)命名引脚方法:双击引脚的“pin_name“,对其编辑。对于总线型的引脚,引脚名称+总线位数:如ddr_a[12..0]

57 将嵌入式锁相环和系统模块等连接起来,将引脚连接到相应的端口上。

58 2.4设计优化 设计优化:节省占用FPGA的面积和提高系统速度。 “面积” ;
“速度”是指设计的系统在目标芯片上稳定运行时能够达到的最高频率

59 1. 面积与速度的优化 选择Assignment菜单下的Settings命令 在Analysis & Synthesis Settings: Optimization Techniques栏中,有Speed、Balanced和Area3种优化选择,Balanced是软件缺省的优化选择。

60 2. 时序约束与设置 选择Settings下面的Timing Analysis Settings 选择Classic Timing Analyzer Settings。 可以根据目标芯片的特性及PCB板走线的实际情况,给出设计需要满足的时钟频率、建立时间、保持时间和传输延迟时间等参数。 简单应用,不需要!

61 2.5 编译 Quartus II编译器由一系列处理模块组成 包括:分析与综合、适配、汇编和时序分析等。
编译设置:合理编译的设置可以提高工程编译的速度,优化器件的资源利用,甚至降低系统的功耗! !编译之前须对未使用的引脚做设置:将未使用的引脚设置成As inputs,tri-stated。

62 步骤(注意):(1) 在Settings对话框中的Device中,单击Device and Pin Options,出现Device and Pin Options。
(2)单击Unused Pins,在Reserve all unused pins下选择,As inputs,tri-stated。

63 2.5.1 引脚分配 引脚分配:使编译器能把设计的信号分配到目标器件上的特定引脚上。 两种引脚分配方法: 第一种:使用Assignments Editor或pins 或 pin planner 第二种:使用TCL脚本一次性分配所有的引脚

64 1. Assignments Editor (1)选Assignments菜单中的 pins 或 pin planner或
(2)在Node Name下输入引脚名称,在Location选择 相应的引脚。 (3)选择FileSave保存分配。 这种分配方法效率较低,适合较少管脚的分配。

65 2. TCL脚本文件分配引脚 (1) 选择project下的generate Tcl file for project.
名字:pin.tcl (2) 打开标准工程(.\80\.),下的standard.tcl文件 (3) 把standard.tcl文件中带set_location_assignment指令, 并且-to后面的参数与现有工程中使用的管脚名相同的语句 拷贝到pin.tcl文件的下面位置 (最后一条set_global_assignment语句后),后保存。

66 (4)Tools菜单下,选TCL scripts…,出现下图
(5)选择建立的引脚分配文件pin.tcl,点RUN即可完成引脚分配。 (6)如何查看分配结果呢?

67 注意: 如果管脚名字与standard工程的对应管脚名字不同,不能使用该方法,或者需修改脚本。 该方法在有参照工程管脚定义的情况下,节省定义管脚的时间。

68 2.5.2 编译用户设计 选择Processing菜单中的Start Compilation
To:

69 编译成功之后,出现Compile Report.
点击相关内容查看相应的编译信息,如Analysis & synthesis、Fitter、Timing Analyzer等。

70 注意:NIOS系统发生改动后需重新编译 To:

71 注意:NIOS系统有变化后需重新编译 To:

72 2.6 编程下载 编译成功之后,Quartus II 编译器生成配置 两个文件: .sof和.pof
.sof文件一般在调试时下载到FPGA的SRAM中 .pof文件是用于EPCS的编程文件。 实验平台采用的下载线为USB Blaster。

73 2.6.1下载 如何将生成的.sof文件下载到FPGA中: (1)同过USB Blaster电缆将目标板和计算机相连,接通目标板的电源。
(2)在Quartus II软件中选择ToolsProgrammer,打开编程器的窗口,可以看到配置文件clock.sof。

74 (4)选中Program/Configure,然后点击start开始按钮,开始下载,可以从Progress栏看到下载进度。
说明:USB驱动的安装方法(补充文件)

75 2.6.2验证 硬件下载到FPGA芯片后,可编程测试系统的功能。

76 2.6.3 启动软件开发环境


Download ppt "第2章 SOPC硬件开发环境及流程."

Similar presentations


Ads by Google