760 likes | 993 Views
第 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 开发板.
E N D
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开发板
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
名词解释- 与SOPC相关的名词 Quartus II ? Quartus II: Altera公司的第四代可编程逻辑器件集成开发环境,提供从设计输入到器件编程的全部功能。 双击Quartus II图标 Quartus II 5.0 软件界面
名词解释- 与SOPC相关的名词 SOPC Builder ? SOPC Builder:功能强大的基于图形界面的片上系统定义和定制工具。SOPC Builder库中包括处理器和大量的IP核及外设。 启动: Quartus II → Tools → SOPC Builder SOPC Builder包含在Quartus II软件中
名词解释- 与SOPC相关的名词 Nios II IDE ? Nios II: Nios II系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以Nios II IDE下完成,包括编辑、编译和调试程序。 双击Nios II IDE图标 Nios II IDE 软件界面
ModelSim:HDL仿真软件,对设计的硬件系统进行RTL级的仿真。ModelSim:HDL仿真软件,对设计的硬件系统进行RTL级的仿真。 • DSP Builder:Altera公司的数字信号处理软件,实现算法和硬件的无缝过渡,可以在Matlab的Simulink中完成算法的仿真、验证,后通过SignalCompiler将模型文件转换成硬件描述语言。
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或用户自定 义的逻辑模块连接起来;
6. 分配引脚(Tcl脚本语言)和编译工程,编译生成系统的硬件配置文件.sof和.pof文件;(二者区别:SRAM\EEPROM) 7. 下载工程,将配置文件下载到开发板上进行验证;(可选) 8.使用IDE开发环境进行软件开发 9. 编译软件工程,生成可执行文件.elf; 10. 调试程序,将硬件配置文件下载到开发板,将可执行文件 下载到RAM,软硬件协同工作。
每个开发过程开始时都应建立一个工程,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开发流程简图
分析系统需求 建立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开发流程简图
分析系统需求 建立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开发流程简图
软件开发也可以在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编程工具 调试好的 在目标板上运 烧写配置文件和 硬件和软件 行/调试软件 软件代码
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编程工具 调试好的 在目标板上运 烧写配置文件和 硬件和软件 行/调试软件 软件代码
SOPC硬件开发流程 • 从开发套件提供的外设列表 中选取合适的CPU、存储器及外围器件,定制和配置其功能; • 分配外设地址及中断号; • 设定复位地址; • 添加用户自身定制指令逻辑 • 到NiosII内核加速CPU性能 • 添加用户自己设计的IP模块。 • 生成系统。 • 编译,综合,布局布线,从 • HDL源文件综合成一个适合 • 目标器件网表,生成FPGA • 配置文件(.sof); • 用下载电缆将配置文件下载 • 到目标板。调试完成后,将 • 硬件配置文件下载到目标板 • 的非易失存储器(如flash)。
2.2 SOPC硬件开发实例 • 电子钟的设计 • 第一步是要进行需求分析,建立系统 在液晶屏上显示日期、时间; 可以设置日期、时间; • 根据系统要求,设计要用到的外围器件 LCD:电子钟显示屏幕; 按键:电子钟设置功能键; Flash存储器:存储软、硬件程序; SRAM存储器:程序运行时将其导入SRAM。 • 根据所用到的外设、功能以及开发板的配置,在SOPC Builder中建立系统要添加的模块包括 Nios II CPU、定时器、按键PIO、LCD控制器、AVALON三态桥、外部RAM接口、外部Flash接口。
2.2 SOPC硬件开发实例 2.2.1 创建工程 • 进行完需求分析之后,进行硬件系统的创建。 • 首先必须建立一个Quartus II 的工程, • 步骤如下: 1.启动Quartus II软件; 2. 选择File菜单New Project Wizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。
2.2.1 创建工程 • 3. 目录、顶层实体名和工程名 注意2: 路径、工程名、顶层实体名均为英文 注意1: 工程名和顶层实体名字一致
2.2.1 创建工程 • 4.可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的路径。
2.2.1 创建工程 5. 指定目标器件,根据开发板使用的器件来选择。 注意3: 器件型号 CycloneII EP2C35F672C8
2.2.1 创建工程 6. 指定在Quartus II 之外的用于设计输入、综合、仿真、时序分析的第三方EDA工具。(Precision Synthesis\Synplify等)
7. 新工程的信息。在设计的过程中,还可以通过菜单assignmentSettings来对这些配置进行修改。
8. 点击Finish按钮,Quartus II自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。
2.3 创建Nios II 系统模块 • 创建顶层实体 • 创建Nios II系统模块:NIOS II 嵌入式处理器,添加、配置系统的外设IP • Nios II 系统模块+其他片上逻辑+用户逻辑: 加入顶层实体
2.3.1 创建顶层实体 (1)选择FileNew;在Device Design File页中,选择Block Diagram/Schematic File,即原理图文件(也可以选择硬件描述语言的文件形式), 单击OK。
2.3.1 创建顶层实体 (2) 选择FileSave As,显示的目录为之前设置的工程目录,文件名为之前设置的顶层实体名.
SOPC Builder 2.3.2 创建Nios II系统模块 • 使用工具:SOPC Builder • Nios II系统模块:Nios II处理器 和相关的系统外设。 • 创建系统模块的流程:先创建一个系统,然后添加Nios II CPU和外设IP,生成实例或者模块,加入到工程的顶层实体。
2.3.2 创建Nios II系统模块 一、创建系统 启动SOPC Builder(ToolsSOPC Builder) 注意4: 系统名称
二 、设置系统主频和指定目标FPGA • 设置系统的时钟频率 • 版本6.0:在Target栏中的Board部分指定核心开发板——Cyclone II (EP2C35)。(IDE: flash 器件编程) • 版本8.0:在Device Family选择Cyclone II。(注意5!)
三、加入Nios II CPU和 IP模块 首先加入Nios II软核 • 1. Avalon Components 下面选择Nios II Processor; • 2. 双击或者右键 Add,出现Nios II CPU的配置向导
根据需要选择Nios II核 • Hardware Multiply选择none,不选择Hardware Divide 注意6: Embedded Multipliers:使用专门的内嵌硬件乘法单元(乘法速度最快)。 ②Logic Elements,使用逻辑单元也就是FPGA中的查找表(速度较慢)。③None:只能通过软件模拟乘法,速度最慢。
点击Next,进入缓存设置窗口; • 可设Instruction Cache为4Kbytes,Data Cache 2Kbytes
Advanced Features设置 • 不选择Include cpu_resetrequest and cpu_resettaken signals(注意7:resetrequest—该复位信号仅复位处理器。处理器在收到该信号后,先执行完 流水线的所有指令,然后进入复位状态。处理器在复位完成后会使cpu_resettaken信号生效一个时钟周期) • 点击Next进入MMU and MPU设置。(Quartus 8.0) (注意8:存储器管理单元 MMU和存储器保护单元 MPU)
JTAG调试级别选择 • 选择Level1:该级别支持软件的断点调试。 • JTAG调试模块要占用较多的逻辑资源,系统调试完毕了可以选用No Debugger
自定义指令的设置,不作任何的设置。点击Finish完成NIOS II处理器的添加 • 处理器的编辑和修改
添加其它外设IP模块 除了Nios II CPU,电子钟设计需要添加的IP模块包括: • Timer • Button PIO • LCD控制器 • External SRAM 总线 • External Flash 总线 • External SRAM 接口 • External Flash 接口
(2)配置定时器,点Finish,完成定时器的添加。可重命名。(2)配置定时器,点Finish,完成定时器的添加。可重命名。 1. 添加定时器 (1)如图选Interval Timer并双击,向导窗口出现;(注意9)
2. 添加Button PIO (1)在Basic Settings,设width?direction? (2)在Input Options,Edge Capture Register选中 Synchronously Capture,选择Either Edge; (3)点击Finish完成,重命名
3. 添加LCD控制器 (1)如图选Character LCD(Optrex 16027),双击。(注意10) (2)Module Name下出现,lcd_16027_0; (3)将其重命名lcd_display。
4.添加外部RAM接口 (1)如图单击Add,出现SSRAM (Cypress CY7C1380C)向导 (2)设置Read Latency和Memory Size (3)Finish完成,重命名为ext-ssram。
5. 添加外部闪存接口 (1)前图双击,外部flash接口; (2)在Attributes中,Presets列表中选择相应的flash。 (3)若所使用Flash没有在列表中:自定义宽度和时序
6. 添加外部RAM和flash总线(Avalon三态总线桥) Nios II 系统与外部存储器通信,要在Avalon总线和外部存储器之间加入Avalon三态桥。 (1) 如图选择Avalon Tri-State Bridge,点击Add,出现向导; (2) Registered选项默认为选中;重命名为ext_ssram_bus; (3) 再添加一个Avalon三态总线桥,重命名为ext_flash_bus.
7. Nios II系统的连接 (注意11) • 所有添加的IP连接是系统自动完成的。对于三态桥和外部存储器接口的连接,系统的自动连接可能和用户的开发板不匹配,用户需要进行手动的更改。 • 主要是外部RAM接口要和RAM的三态桥连接,外部的Flash接口要和flash的三态桥连接。 • 针对用的开发板的情况进行的设置,实验用的开发板SRAM和flash没有使用共用的数据线和地址线。 所以必须为它们分别添加一个三态桥。
2.3.3分配IP模块的地址和中断号 • SOPC Builder为各个IP模块分配了一个默认的基地址,用户可以改变这些地址。如果分配的地址出现冲突,如下:
(1)自动分配地址:System菜单的Auto Assign Base Address (2)手动分配地址:Flash外设的Base栏,将地址改为0x0,如果 冲突SOPC Builder会出现错误的提示。 (3)锁定地址:选择Module菜单中的Lock Base Address (4)手动修改外设的中断号:号越小,优先级越高 (5)自动分配中断号:选择System菜单中的Auto Assign IRQs。 建议采用手动的分配。
2.3.4 配置NIOS II 系统 • Reset Address:选择存放Boot Loader的存储器和设置Boot Loader在存储器中的偏移。选择ext_flash,偏移选择默认; • Exception Address:选择存放异常向量表存放的存储器和异常向量表在存储器偏移,选择ext_ssram,偏移选择默认;
2.3.5 生成NIOS II并加入到工程中 • 单击System Generation • 若选中 Simulation,生成用于仿真的相应的文件。 • 点 Generate,SOPC Builder提示生成系统的进程,需3-4分钟