1 / 76

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

第 2 章 SOPC 硬件开发环境及流程. 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 开发板.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 II 8.0 SOPC Builder Nios II IDE • Quartus • 完成NiosII整个系统的设计、分析、综合、硬件优化和适配 • 配置文件编程下载、硬件系统测试 • SOPC Builder • NIOSII 系统硬件开发环境 • 实现Nios II系统配置和生成 • Nios II系统相关的监控和软件调试平台的生成 • IDE • 完成基于Nios II系统的软件开发和调试 • 将FPGA配置信息写入Flash或者EPCS Altera

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

  5. 名词解释- 与SOPC相关的名词 SOPC Builder ? 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 IDE下完成,包括编辑、编译和调试程序。 双击Nios II IDE图标 Nios II IDE 软件界面

  7. ModelSim:HDL仿真软件,对设计的硬件系统进行RTL级的仿真。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是以工程的方式对设计过程进行管理。在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。 • 在进行SOPC开发之前,首先必须确定系统的需求:如系统需求的性能、CPU软核类型(硬件乘法器?)外围器件和数量、需要的带宽和吞吐量、需求的接口类型以及DMA通道数量等。 分析系统需求 建立Quartus II工程, 建立顶层图*.bdf 打开SOPC Builder 定制指令&定 NiosII内核 定义和生成系统 制外设逻辑 &标准外设 • 在SOPC Builder中添加需要的功能模块(Nios II及其标准外设模块),完成后生成一个系统模块。 • 如果需要,用户可以定制指令和外设逻辑。(可参考第8章) 集成SOPC生 使用Nios II 硬件抽象层 用户C/C++应 成的系统到 Altera的 自定义的 IDE开发软件 (HAL)&外设 用程序代码 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的 自定义的 IDE开发软件 (HAL)&外设 用程序代码 Quartus II工程 LPM模块 功能模块 驱动程序 和定制的库 连接各 设置软件运行 硬件环境属性 功能模块 • 根据系统要求,设计自己的逻辑功能模块。并在顶层模块中使用; • 在Quartus II软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列); • 在顶层模块中,分别将SOPC Builder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中; • 然后将各个功能模块用连线连起来组成系统功能原理图。 编译软件 选择FPGA型号 生成可执 并进行管脚分配 行文件elf 在IDE中使用 进行编译 ISS运行/调试 选项设置 软件 编译硬件系统 生成配置文件sof 这个两过程类似传统电路设计中,将所有要使用的芯片焊接到电路板上,然后通过PCB上的连线将各个芯片连接起来,组成电路系统。 在目标板上 下载配置文件到 下载可执行 FPGA器件 软件到 Nios II系统 使用IDE编程工具 调试好的 在目标板上运 烧写配置文件和 硬件和软件 行/调试软件 软件代码 SOPC开发流程简图

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

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

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

  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. 目录、顶层实体名和工程名 注意2: 路径、工程名、顶层实体名均为英文 注意1: 工程名和顶层实体名字一致

  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 • Nios II 系统模块+其他片上逻辑+用户逻辑: 加入顶层实体

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

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

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

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

  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。 (3)若所使用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. 2.3.3分配IP模块的地址和中断号 • SOPC Builder为各个IP模块分配了一个默认的基地址,用户可以改变这些地址。如果分配的地址出现冲突,如下:

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

  47. 注意:!!

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

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

More Related