《S0PC系统设计入门教程》 西北工业大学大学生创新中心内部培训教材 邵舒渊 卢选民编 2004年5月
《SOPC 系统设计入门教程》 西北工业大学大学生创新中心内部培训教材 邵舒渊 卢选民 编 2004 年 5 月
全国大学生电子设计竞赛“ALTERA杯”EDA/SOPC专项设计竞赛培训教材 《SOPC系统设计入门教程》 前言 目录 第一章概述 1.1SOPC的概念 1.2SOPC系统设计流程 1.2.1 SOPC Builder的设计流程 1.2.2 SOPC Builder的设计阶段 1.2.3SOPC系统开发流程 1.3SOPC系统开发环境 1.4本书中的系统配置 第二章SOPC系统构架 2.1系统模块框图 2.2 Nios CPU 2.2.1指令总线主端口 2.2.2数据总线主端口 2.2.3缓冲存储器 2.2.4移位单元 2.2.5乘法支持 2.2.6中断支持 2.2.7Nios片上调试模块 2.2.8开发环境 2.3 Avalon总线 2.3.1基本概念 2.3.2 Avalon总线传输 2.3.3 Avalon三态接▣ 2.3.4地址对齐 2.4外设P模块 2.4.1通用异步串行接口(UART) 2.4.2可编程并行输入/输出模块(PI0) 2.4.3定时器 2.4.4DMA控制器 第三章系统硬件开发 3.1硬件开发流程 3.2创建QuartusⅡ工程 3.3创建Nios系统模块 3.3.1开始使用SOPC Builder 3.3.2系统频率 3.3.3添加CPU和外设模块
全国大学生电子设计竞赛“ALTERA 杯”EDA/SOPC 专项设计竞赛培训教材 《SOPC 系统设计入门教程》 前言 目录 第一章 概述 1.1 SOPC 的概念 1.2 SOPC 系统设计流程 1.2.1 SOPC Builder 的设计流程 1.2.2 SOPC Builder 的设计阶段 1.2.3 SOPC 系统开发流程 1.3 SOPC 系统开发环境 1.4 本书中的系统配置 第二章 SOPC 系统构架 2. 1 系统模块框图 2. 2 Nios CPU 2.2.1 指令总线主端口 2.2.2 数据总线主端口 2.2.3 缓冲存储器 2.2.4 移位单元 2.2.5 乘法支持 2.2.6 中断支持 2.2.7 Nios 片上调试模块 2.2.8 开发环境 2. 3 Avalon 总线 2.3.1 基本概念 2.3.2 Avalon 总线传输 2.3.3 Avalon 三态接口 2.3.4 地址对齐 2. 4 外设 IP 模块 2.4.1 通用异步串行接口(UART) 2.4.2 可编程并行输入/输出模块(PIO) 2.4.3 定时器 2.4.4 DMA 控制器 第三章 系统硬件开发 3.1 硬件开发流程 3.2 创建 Quartus II 工程 3.3 创建 Nios 系统模块 3.3.1 开始使用 SOPC Builder 3.3.2 系统频率 3.3.3 添加 CPU 和外设模块
3.3.4指定基地址 3.3.5生成系统模块 3.3.6添加符号到BDF中 3.4编译设计(Compilation) 3.5编程(Programming) 3.5.1配置FPGA 3.5.2用户微控制器 3.5.3在Nios系统上运行软件 3.6下载设计到Flash存储器 第四章系统软件开发 4.1软件开发流程 4.2软件开发环境 4.3文件系统 4.4软件开发工具 4.4.1 GNUPro工具 4.4.2 Nios OCI调试模块 4.4.3 Nios OCI调试控制台 4.4.4 Nios SDK Shell 4.5可配置的处理器硬件属性 4.5.1乘法器 4.5.2数据和指令高速缓冲器 4.5.3用户指令 4.5.4同时执行的多主(ulti-Master)总线结构和DMA 4.5.5数据和指令高速缓冲器 4.5.6外设和存储器接口 4.6 Nios SDK 4.6.1inc日录 4.6.21ib目录 4.6.3src目录 4.7软件开发应用 4.7.1开始前的准备 4.7.2打开Nios SDK Shel1 4.7.3编译程序 4.7.4用insight下载、运行和调试程序 4.7.5用Nios0CI调制控制台下载、运行和调试程序 4.7.6重建(rebuild)软件 4.7.7下载软件到F1ash 4.7.8第三方开发和调试工具 4.8使用.hexout 4.9其它的开发板通信和调试方法 4.9.1 GERMS监视器 4.9.2 Insight:GNU调试器 4.9.3 Gprof:GNU Profiler 4.10 Nios SDK Shel1提示信息
3.3.4 指定基地址 3.3.5 生成系统模块 3.3.6 添加符号到 BDF 中 3.4 编译设计(Compilation) 3.5 编程(Programming) 3.5.1 配置 FPGA 3.5.2 用户微控制器 3.5.3 在 Nios 系统上运行软件 3.6 下载设计到 Flash 存储器 第四章 系统软件开发 4.1 软件开发流程 4.2 软件开发环境 4.3 文件系统 4.4 软件开发工具 4.4.1 GNUPro 工具 4.4.2 Nios OCI 调试模块 4.4.3 Nios OCI 调试控制台 4.4.4 Nios SDK Shell 4.5 可配置的处理器硬件属性 4.5.1 乘法器 4.5.2 数据和指令高速缓冲器 4.5.3 用户指令 4.5.4 同时执行的多主(Multi-Master)总线结构和 DMA 4.5.5 数据和指令高速缓冲器 4.5.6 外设和存储器接口 4.6 Nios SDK 4.6.1 inc 目录 4.6.2 lib 目录 4.6.3 src 目录 4.7 软件开发应用 4.7.1 开始前的准备 4.7.2 打开 Nios SDK Shell 4.7.3 编译程序 4.7.4 用 insight 下载、运行和调试程序 4.7.5 用 Nios OCI 调制控制台下载、运行和调试程序 4.7.6 重建(rebuild)软件 4.7.7 下载软件到 Flash 4.7.8 第三方开发和调试工具 4.8 使用.hexout 4.9 其它的开发板通信和调试方法 4.9.1 GERMS 监视器 4.9.2 Insight:GNU 调试器 4.9.3 Gprof:GNU Profiler 4.10 Nios SDK Shell 提示信息
4.11在Nios系统中实现中断服务程序(ISR) 4.12用户自定义指令 4.12.1用户自定义指令的概念 4.12.2加速效果 4.12.3用户自定义指令应用 第五章系统模拟与调试 5.1软件配置 5.2模拟设置 5.2.1存储器初始化 5.2.2UART外设模拟设置 5.2.3S0 PC Builder模拟设置 5.2.4通用系统模拟文件 5.3 ModelSim模拟 5.4模拟结果分析 5.4.1通过UART外设同GERMS监控程序交互 5.4.2执行PI0外设操作的C程序 5.5增加/删除波形图信号 5.6片外存储器模拟 5.6.1使用自动产生的存储器模块 5.6.2指定一个定制模块 5.6.3定义存储器模块内容 5.7调试 5.7.1使用SignalTap II逻辑分析器 5.7.2使用SignalProbe 5.7.3使用Chip Editor 第六章系统设计实例 6.1建立硬件需求 6.2创建一个基本的Nios设计 6.3GDB调试 6.4添加用户外设 6.5RTL仿真 6.6 Flash编程 6.7用户指令和DMA 6.8MP3播放器 附录1:N1os嵌入式处理器32位指令集 附录2:Nios嵌入式处理器开发板-APEX20K200E 附录3:Nios嵌入式处理器开发板-Cyclone_1C20 附录4:Nios嵌入式处理器开发板-Stratix.1S10 附录5:Nios嵌入式处理器开发板-Stratix.1S40 参考文献
4.11 在 Nios 系统中实现中断服务程序(ISR) 4.12 用户自定义指令 4.12.1 用户自定义指令的概念 4.12.2 加速效果 4.12.3 用户自定义指令应用 第五章 系统模拟与调试 5.1 软件配置 5.2 模拟设置 5.2.1 存储器初始化 5.2.2 UART 外设模拟设置 5.2.3 SOPC Builder 模拟设置 5.2.4 通用系统模拟文件 5.3 ModelSim 模拟 5.4 模拟结果分析 5.4.1 通过 UART 外设同 GERMS 监控程序交互 5.4.2 执行 PIO 外设操作的 C 程序 5.5 增加/删除波形图信号 5.6 片外存储器模拟 5.6.1 使用自动产生的存储器模块 5.6.2 指定一个定制模块 5.6.3 定义存储器模块内容 5.7 调试 5.7.1 使用 SignalTap II 逻辑分析器 5.7.2 使用 SignalProbe 5.7.3 使用 Chip Editor 第六章 系统设计实例 6.1 建立硬件需求 6.2 创建一个基本的 Nios 设计 6.3 GDB 调试 6.4 添加用户外设 6.5 RTL 仿真 6.6 Flash 编程 6.7 用户指令和 DMA 6.8 MP3 播放器 附录 1:Nios 嵌入式处理器 32 位指令集 附录 2:Nios 嵌入式处理器开发板-APEX 20K200E 附录 3:Nios 嵌入式处理器开发板-Cyclone_1C20 附录 4:Nios 嵌入式处理器开发板-Stratix_1S10 附录 5:Nios 嵌入式处理器开发板-Stratix_1S40 参考文献
第一章概述 1.1S0PC的概念 在二十世纪九十年代末,可编程逻辑器件(PLD)的复杂度已经能够在单个可编程器件 内实现整个系统,完整的单芯片系统(SOC)概念是指在一个芯片中实现用户定义的系统。 在一个S0C设计中,将涵盖到包括微处理器、DSP芯片、存储器件、I/0、控制逻辑、混合信 号模块(Mixed-Signal Blocks)等在内的许多部分。 在系统设计复杂度不断的提高及新产品市场周期不断缩短的压力下,把FPGA及微处理器 的核心内嵌在同一芯片上,构建成为一个可编程的$0C系统体系框架结构,建成所谓的可编 程芯片系统SOPC(System on a Programmable Chip),从而为系统设计者提供了又一灵活快 捷的设计方法与途径。 SOC是一种新的系统设计技术,也是一种新的软硬件综合设计技术。通过它,可以很 快地将硬件系统(包括微处理器,存储器,外设以及用户逻辑电路等)和软件设计都放在一 个可编程的芯片中,以达到系统的IC设计。这种设计方式,具有开发周期短以及系统可修 改等优点。设计完成的SOPC可以通过HARDCOPY转为ASIC芯片,从而可以实现快速量产。 在2000年,Altera发布了Nios软核RISC处理器,这是Altera Excalibur嵌入处理 器计划中第一个产品,它成为业界第一款为可编程逻辑优化的可配置处理器。A1tera把可 编程逻辑的固有的优势集成到嵌入处理器的开发流程中,一旦定义了处理器之后,设计者就 “具备”了体系结构,可以马上开始设计软件原型。CPU周边的专用硬件逻辑可以慢慢地集 成进去,在每个阶段软件都能够进行测试,解决遇到的问题。另外,软件组可以对结构方面 提出一些建议,改善代码效率和/或处理器性能,这些软件/硬件权衡可以在硬件设计过程中 间完成。 为了减轻设计者的负担,最佳的途径是把所有和处理器子系统相关的底层详细资料集中 到单个工具中。Altera提供了这样的工具SOPC Builder,它包括两方面的内容:第一,它 具有直观的图形用户接口(GUI),便于设计者准确地添加和配置系统所需的外设(包括存 储器,定制外设和IP模块)。第二,它会自动完成系统集成工作,这样设计者不必拘泥于 定义存储器映射,中断控制和总线控制这样的工作。 GUI以直观的方式允许设计者配置复杂的系统。除了提供软件和集成的OS之外,这还 包括定义具有多总线主设备,总线仲裁和DMA控制的系统。通过这样的“库一表接口”,它 能自动地把部件添加到系统中。用户从有效外设库中来选择,这个库在SOPC Builder窗口 的左边,如图1一1。然后,外设出现在当前系统的部件表中,这个表在S0 PC Builder窗口 的右边。每个外设可能会启动一个配置向导,指导用户为这个系统配置外设的功能。 部件表GUI允许用户输入每个外设基地址和中断优先级(SOPC Builder也可以自动进 行分配)。最后,通过窗口中部的“接插板”功能,设计者可以直观地连接总线体系,分配 从设备端的仲裁优先级。其中,垂直线代表主设备:水平线代表从设备。接插板让用户制定 主设备和从外设之间的连接,还可以为不同的主设备分配权重。这些权重定义了每个竞争主 设备如何访问从设备。 当用户点击“Generate”按钮时,SOPC Builder会生成每个硬件部件以及连接部件的 片内总线结构,仲裁和中断逻辑。SOPC Bui1dr也会产生系统可仿真的RTL描述,以及为 特定硬件配置设计的测试平台,能够(可选)把硬件系统综合到单个网表中。 拥有了这些合适的部件,自动硬件生成的过程基本就可以完成,但是还需要满足软件设 计者的要求。利用设计过程中采集的信息,SOPC Builder能够生成C和汇编头文件,这些 头文件定义了存储器映射,中断优先级和每个外设寄存器空间的数据结构。这样的自动生成
第一章 概述 1.1 SOPC 的概念 在二十世纪九十年代末,可编程逻辑器件(PLD)的复杂度已经能够在单个可编程器件 内实现整个系统,完整的单芯片系统(SOC)概念是指在一个芯片中实现用户定义的系统。 在一个SOC设计中,将涵盖到包括微处理器、DSP芯片、存储器件、I/O、控制逻辑、混合信 号模块(Mixed-Signal Blocks )等在内的许多部分。 在系统设计复杂度不断的提高及新产品市场周期不断缩短的压力下,把FPGA及微处理器 的核心内嵌在同一芯片上,构建成为一个可编程的SOC系统体系框架结构,建成所谓的可编 程芯片系统SOPC(System on a Programmable Chip),从而为系统设计者提供了又一灵活快 捷的设计方法与途径。 SOPC 是一种新的系统设计技术,也是一种新的软硬件综合设计技术。通过它,可以很 快地将硬件系统(包括微处理器,存储器,外设以及用户逻辑电路等)和软件设计都放在一 个可编程的芯片中,以达到系统的 IC 设计。这种设计方式,具有开发周期短以及系统可修 改等优点。设计完成的 SOPC 可以通过 HARDCOPY 转为 ASIC 芯片,从而可以实现快速量产。 在 2000 年,Altera 发布了 Nios 软核 RISC 处理器,这是 Altera Excalibur 嵌入处理 器计划中第一个产品,它成为业界第一款为可编程逻辑优化的可配置处理器。Altera 把可 编程逻辑的固有的优势集成到嵌入处理器的开发流程中,一旦定义了处理器之后,设计者就 “具备”了体系结构,可以马上开始设计软件原型。CPU 周边的专用硬件逻辑可以慢慢地集 成进去,在每个阶段软件都能够进行测试,解决遇到的问题。另外,软件组可以对结构方面 提出一些建议,改善代码效率和/或处理器性能,这些软件/硬件权衡可以在硬件设计过程中 间完成。 为了减轻设计者的负担,最佳的途径是把所有和处理器子系统相关的底层详细资料集中 到单个工具中。Altera 提供了这样的工具 SOPC Builder,它包括两方面的内容:第一,它 具有直观的图形用户接口(GUI),便于设计者准确地添加和配置系统所需的外设(包括存 储器,定制外设和 IP 模块)。第二,它会自动完成系统集成工作,这样设计者不必拘泥于 定义存储器映射,中断控制和总线控制这样的工作。 GUI 以直观的方式允许设计者配置复杂的系统。除了提供软件和集成的 OS 之外,这还 包括定义具有多总线主设备,总线仲裁和 DMA 控制的系统。通过这样的“库-表接口”,它 能自动地把部件添加到系统中。用户从有效外设库中来选择,这个库在 SOPC Builder 窗口 的左边,如图 1-1。然后,外设出现在当前系统的部件表中,这个表在 SOPC Builder 窗口 的右边。每个外设可能会启动一个配置向导,指导用户为这个系统配置外设的功能。 部件表 GUI 允许用户输入每个外设基地址和中断优先级(SOPC Builder 也可以自动进 行分配)。最后,通过窗口中部的“接插板”功能,设计者可以直观地连接总线体系,分配 从设备端的仲裁优先级。其中,垂直线代表主设备;水平线代表从设备。接插板让用户制定 主设备和从外设之间的连接,还可以为不同的主设备分配权重。这些权重定义了每个竞争主 设备如何访问从设备。 当用户点击“Generate”按钮时,SOPC Builder 会生成每个硬件部件以及连接部件的 片内总线结构,仲裁和中断逻辑。SOPC Builder 也会产生系统可仿真的 RTL 描述,以及为 特定硬件配置设计的测试平台,能够(可选)把硬件系统综合到单个网表中。 拥有了这些合适的部件,自动硬件生成的过程基本就可以完成,但是还需要满足软件设 计者的要求。利用设计过程中采集的信息,SOPC Builder 能够生成 C 和汇编头文件,这些 头文件定义了存储器映射,中断优先级和每个外设寄存器空间的数据结构。这样的自动生成
过程帮助软件设计者处理硬件潜在的变化性。如果硬件改变了,SOP℃Bui1der会自动更新 这些头文件。SOPC Builder也会为系统中现有的每个外设生成定制的C和汇编函数库。例 如,如果系统包括一个UART,然后SOPC Builder就会访问UART的寄存器定义一个C结构, 生成通过UART发送和接收数据的C和汇编例程。 Altera SOPC Builder-nios system 回 Fee yttem Module Vew Help Avalon Modules Syem Cnck F*mcy问西 ◆Arn20G ◆Uw0 efned aetnce 金与e 一a0者由14物vn) ◆UAT5222s0r 一tn磁tridge (avelon地】 MESsS ErhancedUAR CAN20 Ntwor Cortrol ■ Abers hloe 20 CPU esion On-ip Mnory 0AM on00401000 0x00801 ◆hn减teaC50 dma_controller om【1w0 -mCoS阿Cortiole n0o77 ●SDRAM Cer由ole ◆fhh格noy 于辅 U风5ap0h0OoCy1U U3522e8pMon时40041 DAA ◆p正wo Aters PO2 Nos Tarpet Move Lb Movs Dowe 42n物 图1-1S0 PC Builder GUI界面 为了满足第三方把自己的部件添加到S0 PC Builder列表中,从而把SOPC Builder作为 集成和重用自己专用模块的设计工具,Altera开放了SOPC Builder流程的硬件和软件接口, 允许第三方象A1 ltera一样有效地管理SOPC部件。围绕着开放可扩展标准设计的SOPC Builder能够生成和连接定制模块,称之为“部件”。在这个标准下,所定义的系统配置文 件格式称为System PTF文件。该文件是系统的配方,它定义了SOPC Builder生成完整系统 必需的详细信息。当创建一个新的系统时,SOPC Builder生成唯一的系统PTF文件。系统 PT℉文件的内容随着用户通过图形用户界面对系统的编辑而改变。另外,还定义了部件专用 信息的文件格式,称为Class PTF文件。Class PTF包含SOPC Builder配置和生成部件所 需的详细信息。每一个IP模块都有一个class.ptf文件,SOPC Builder中P(Intelligent Property)模块出现在SOPC Builder图形用户界面的左侧,它显示了所有可用的P模块。 如果用户要向SOPC Builder库里增加新的IP模块,则需要创建一个class.ptf文件。 系统PT℉文件类似于一个数据库文件,存储了系统的设计信息。每一个系统PT℉文件 都包含了以下信息: ·系统中所有的模块的列表 ·每一个模块的信息,如: 模块特定的总线接口信号 用户自定义参数设置(如果有的话) 用于综合和模拟模块的HDL文件列表
过程帮助软件设计者处理硬件潜在的变化性。如果硬件改变了,SOPC Builder 会自动更新 这些头文件。SOPC Builder 也会为系统中现有的每个外设生成定制的 C 和汇编函数库 。例 如,如果系统包括一个 UART,然后 SOPC Builder 就会访问 UART 的寄存器定义一个 C 结构, 生成通过 UART 发送和接收数据的 C 和汇编例程。 图 1-1 SOPC Builder GUI 界面 表中,从而把 SOPC Builder 作为 集成 义的系统配置文 格式称为 System PTF 文件。该文件是系统的配方,它定义了 SOPC Builder 生成完整系统 必需 PC Builder 生成唯一的系统 PTF 文件。系统 PTF 外,还定义了部件专用 息的文件格式,称为 Class PTF 文件。Class PTF 包含 SOPC Builder 配置和生成部件所 需的 信息: 为了满足第三方把自己的部件添加到 SOPC Builder 列 和重用自己专用模块的设计工具,Altera 开放了 SOPC Builder 流程的硬件和软件接口, 允许第三方象 Altera 一样有效地管理 SOPC 部件。围绕着开放可扩展标准设计的 SOPC Builder 能够生成和连接定制模块,称之为“部件”。在这个标准下,所定 件 的详细信息 。当创建一个新的系统时,SO 文件的内容随着用户通过图形用户界面对系统的编辑而改变。另 信 详细信息。每一个 IP 模块都有一个 class.ptf 文件,SOPC Builder 中 IP(Intelligent Property)模块出现在 SOPC Builder 图形用户界面的左侧,它显示了所有可用的 IP 模块。 如果用户要向 SOPC Builder 库里增加新的 IP 模块,则需要创建一个 class.ptf 文件。 系统 PTF 文件类似于一个数据库文件,存储了系统的设计信息。每一个系统 PTF 文件 都包含了以下 · 系统中所有的模块的列表 · 每一个模块的信息,如: - 模块特定的总线接口信号 - 用户自定义参数设置(如果有的话) - 用于综合和模拟模块的 HDL 文件列表
·其他任何用于SOPC Builder生成系统模块的信息 系统PTF文件总有一个SYSTEM的顶层部分。这部分的名称与系统PTF文件名以及设 计的系统模块名称相同。例如,设计的系统模块名为fan control processor,.则系统PTF文 件名为fan control processor..ptf,而该文件中有如下的顶层SYSTEM节: SYSTEM fan control processor (..design data specific to this system...} 系统生成程序能够仅根据PT℉文件中的系统信息,以及包含了系统所使用P模块的库 来生成系统。系统PTF文件不仅保存了用户定义的信息,而且也保存了SOPC Builder临时 的内部结果。例如,系统生成程序的开始部分会向系统PTF文件写入数据,这些数据可能 被系统生成程序的后续部分所使用。换句话说,系统PT℉文件中的数据不全是根据用户输 入产生的。 SOPC Builder图形用户界面启动时,会自动搜索已安装的IP模块。SOPC Builder主窗 口中的左侧模块池内显示了所有发现的IP模块列表。SOPC Builder通过在一个搜索路径中 的所有目录下搜索名为class.ptf的文件来获得IP模块列表。一般来说,和IP模块相关的所 有文件都放置在P模块的class.ptf文件所在的目录或其子目录下。 SOPC Builder对于搜索到的class.ptf文件,要确定其是否包含一个有效的、语法正确的 IP模块描述。class.ptf文件至少要包含足够的信息以便P模块能显示在图形用户界面的模 块池内,模块池内显示的P模块与搜索到的class.ptf文件是一一对应的。 class.ptf文件总有一个顶层的CLASS节,这一节的名称与IP模块的正式名称相同。所 谓的正式名称不一定和图形用户界面模块池内显示的字符相同。下面是一个描述UART模 块的class.ptf文件的略写: CLASS altera avalon uart { ASSOCIATED FILES 4.4 } MODULE DEFAULTS { class "altera avalon uart"; } CLASS节的名称要与CLASS/MODULE DEFAULTS中的class参数一致,通常这个名 称也是class..ptf文件所在的目录名。这个名称即为P模块的正式名称。所有搜索到的,且 语法正确有效的class.ptf文件集合,就构成了SOPC Builder的P模块数据库。SOPC Builder 从不修改任何class.ptf文件,class..ptf文件仅由IP模块的设计者来修改。 class.ptf文件描述SOPC Builder的P模块,而系统PTF文件保存用户的系统设计信息。 P开发者需要注意,有一些PTF参数会同时出现在class.ptf文件和系统PTF文件中。class.ptf 文件中的数据,通过一个简单的规则传输到系统PT℉文件中。数据的传输是单向的,即 class..ptf文件从不会被SOPC Builder工具所修改。系统PTF文件会为系统中P模块的每一 个实例建立一个MODULE节。 图1一2是SOPC Builder利用Component PTF文件和System PTF文件配置和生成系统
· 其他任何用于 SOPC Builder 生成系统模块的信息 系统 PTF 文件总有一个 SYSTEM 的顶层部分。这部分的名称与系统 PTF 文件名以及设 计的 sor .. design data specific to this system...} 系统生成程序能够仅根据 PTF 文件中的系统信息,以及包含了系统所使用 IP 模块的库 来生成系统。系统 PTF 文件不仅保存了用户定义的信息,而且也保存了 SOPC Builder 临时 的内部结果。例如,系统生成程序的开始部分会向系统 PTF 文件写入数据,这些数据可能 被系统生成程序的后续部分所使用。换句话说,系统 PTF 文件中的数据不全是根据用户输 入产生的。 SOP 动搜索已安装的 IP 模块。SOPC Builder 主窗 口中的左侧模块池内显示了所有发现的 IP 模块列表。SOPC Builder 通过在一个搜索路径中 的所有目录下搜索名为 class.ptf 的文件来获得 IP 模块列表。一般来说,和 IP 模块相关的所 有文 DULE_DEFAULTS 中的 class 参数一致,通常这个名 称也 class.ptf 文件和系统 PTF 文件中。class.ptf 件中的数据,通过一个简单的规则传输到系统 PTF 文件中。数据的传输是单向的,即 class.ptf 文件从不会被 SOPC Builder 工具所修改。系统 PTF 文件会为系统中 IP 模块的每一 个实例建立一个 MODULE 节。 图 1-2 是 SOPC Builder 利用 Component PTF 文件和 System PTF 文件配置和生成系统 系统模块名称相同。例如,设计的系统模块名为 fan_control_processor,则系统 PTF 文 件名为 fan_control_processor.ptf,而该文件中有如下的顶层 SYSTEM 节: SYSTEM fan_control_proces {. C Builder 图形用户界面启动时,会自 件都放置在 IP 模块的 class.ptf 文件所在的目录或其子目录下。 SOPC Builder 对于搜索到的 class.ptf 文件,要确定其是否包含一个有效的、语法正确的 IP 模块描述。class.ptf 文件至少要包含足够的信息以便 IP 模块能显示在图形用户界面的模 块池内,模块池内显示的 IP 模块与搜索到的 class.ptf 文件是一一对应的。 class.ptf 文件总有一个顶层的 CLASS 节,这一节的名称与 IP 模块的正式名称相同。所 谓的正式名称不一定和图形用户界面模块池内显示的字符相同。下面是一个描述 UART 模 块的 class.ptf 文件的略写: CLASS altera_avalon_uart { ASSOCIATED_FILES { ... } MODULE_DEFAULTS { class = "altera_avalon_uart"; } } CLASS 节的名称要与 CLASS/MO 是 class.ptf 文件所在的目录名。这个名称即为 IP 模块的正式名称。所有搜索到的,且 语法正确有效的 class.ptf 文件集合,就构成了 SOPC Builder 的 IP 模块数据库。SOPC Builder 从不修改任何 class.ptf 文件,class.ptf 文件仅由 IP 模块的设计者来修改。 class.ptf 文件描述 SOPC Builder 的 IP 模块,而系统 PTF 文件保存用户的系统设计信息。 IP 开发者需要注意,有一些 PTF 参数会同时出现在 文
的流程。S0 PC Builder设计流程有两个阶段:配置一框图左边所示,和生成一框图右边所 示。SOPC Builder GUI引导用户完成两部分的配置:分别配置每个部件,整体配置系统。 部件配置需要汇总参数,所以Class PT℉文件标准包括了为这一要求定义GUI的格式。当 需要时,SOPC Builder读取该格式,产生相应的部件向导(Component Wizard)收集所需 的用户数据。SOPC Builder然后把收集的参数值存放在System PTF文件中。 配置的另一部分是系统配置,用户提供的有关处理器配置,外设连接等数据写入System PTF中。当这两部分配置都完成后,SOPC Builder进入到生成阶段,生成设计的输出文件。 SOPC Builder查阅每个Class PTF文件,允许相关的部件生成程序,它们会正确地输出特 定系统配置的硬件和/或软件文件。 简单的部件生成程序可能每次都会输出相同的文件:更多的可配置部件根据用户输入会 生成完全不同的结构。例如,Nios处理器中包括的UART可以配置为软件控制波特率,以更 多门换取更大的灵活性。这种配置选项由用户在部件配置阶段进行设置,根据这个设计,UART 生成程序产生所需UART的硬件描述。在生成阶段的最后一步,SOPC Builder创建适合于系 统部件的总线结构,把所有的部件连接在一起。 Class SOPC Configuration PTF files SOPC Generation Component SOPC Builder Component System Wizards GU川 Generation Generation System PTFfile Output Files and Libraries User- Software Simulation defined Files Files Files 图1一2SOPC系统的配置和生成 SOPC Builder让IP制作者制定有关IP应该如何连接的细节,这样能够减轻用户为每 个设计项目重新再设计(或总线结构)的工作量。而且,通过追踪整个系统的配方,就能够 用SOPC Bui1der透明地调整相应的系统软件反映硬件配置的变化
的流程。SOPC Builder 设计流程有两个阶段:配置―框图左边所示,和生成―框图右边所 示。SOPC Builder GUI 引导用户完成两部分的配置:分别配置每个部件,整体配置系统。 部件配置需要汇总参数,所以 Class PTF 文件标准包括了为这一要求定义 GUI 的格式。 当 需要时,SOPC Builder 读取该格式,产生相应的部件向导(Component Wizard)收集所需 的用户数据。SOPC Builder 然后把收集的参数值存放在 System PTF 文件中。 配置的另一部分是系统配置,用户提供的有关处理器配置,外设连接等数据写入 System PTF 中。当这两部分配置都完成后,SOPC Builder 进入到生成阶段,生成设计的输出文件。 SOPC Builder 查阅每个 Class PTF 文件,允许相关的部件生成程序,它们会正确地输出特 定系统配置的硬件和/或软件文件。 简单的部件生成程序可能每次都会输出相同的文件;更多的可配置部件根据用户输入会 生成完全不同的结构。例如,Nios 处理器中包括的 UART 可以配置为软件控制波特率,以更 多门换取更大的灵活性。这种配置选项由用户在部件配置阶段进行设置,根据这个设计,UART 生成程序产生所需 UART 的硬件描述。在生成阶段的最后一步,SOPC Builder 创建适合于系 统部件的总线结构,把所有的部件连接在一起。 图 1-2 SOPC 系统的配置和生成 SOPC Builder 让 IP 制作者制定有关 IP 应该如何连接的细节,这样能够减轻用户为每 的工作量。而且,通过追踪整个系统的配方,就能够 SOPC Builder 透明地调整相应的系统软件反映硬件配置的变化。 个设计项目重新再设计(或总线结构) 用
在S0 PC Builder下,软件也认为是一个部件,支持便捷地添加OS(Operation System)。 例如,如果把RTOS(Real-Time OS)作为一个部件添加到系统中,RTOS部件的生成程序会 检测系统中硬件以太网接口,包括TPC/IP软件库。同样地,它会检测IDE接口,包括文件 系统库和IDE器件相应的驱动。最后生成器会编译RTOS内核。 SOPC Builder的概念触及到数字系统设计每一方面,从定义独立的硬件部件,到把它 们自动地智能地连接起来,到处理器上运行的软件。在PLD设计发展过程中,在PLD内实现 CPU是必由之路,但是让基于PLD处理器可视化的工具流程也促进了可编程单芯片系统的设 计。Altera推出的SOPC Builder工具,提出了PLD的最高度设计抽象,弥补了软件和硬件 同时集成的空白。现在,我们正处于SOPC即插即用时代的前沿,其间处理器,IP模块和软 件能够一起“工作”。 1.2SOPC系统设计流程 1.2.1S0 PC Bui1der的设计流程 SOPC Builder可看作是一个以IP模块为输入,集成的系统为输出的工具。SOPC Builder 设计过程有三个主要步骤,如图1-3所示。 SOPC Builder Component Authoring System Assembly System Generation 图1-3 SOPC Builder设计流程 (1)构件开发 SOPC Builder的IP模块是由IP开发人员提供的硬件(RTL、原理图或EDIF)和软件 (C源代码、头文件等)。高级P模块可能还会包含一个相关的图形用户界面,一个 Generator Program程序,和其他支持系统参数化生成的程序。一般情况下,把一个普通的 P模块添加到SOPC Builder的P模块库中,需要做的只是建立一个描述该P的class.ptf 文件。所有的P模块够都必须有一个class.ptf文件。 (2)系统集成 用户创建和编辑一个新的系统时,一般要从库中选择一些P模块,逐个地配置这些P 模块,以及设置整个系统的配置(如,指定地址映射和主/从端口连接等)。在这个过程中, 用户的设置都会保存在系统PTF文件中,一般不会有其他文件的产生或修改。 SOPC Builder内包括和安装了一些IP模块,其他一些P模块可以从Altera或第三方(如 AMPP)P提供商处获得,可能需要另外安装。 (3)系统生成 当用户在完成了SOPC Builder中的设计活动之后,最后按下Generate按钮,或从命令 行执行系统生成程序时,系统生成就开始了。系统生成的结果是一系列设计文件,如HDL
在 SOPC Builder 下,软件也认为是一个部件,支持便捷地添加 OS(Operation System)。 例如,如果把 RTOS(Real-Time OS)作为一个部件添加到系统中,RTOS 部件的生成程序会 检测系统中硬件以太网接口,包括 TPC/IP 软件库。同样地,它会检测 IDE 接口,包括文件 系统库和 IDE 器件相应的驱动。 SOPC Builder 的概念触及到数字系统设计每一方面,从定义独立的硬件部件,到把它 接起来,到处理器上运行的软件。在 PLD 设计发展过程中,在 PLD 内实现 CPU 1.2 SOPC 系统设计流程 1.2 PC Builder 设计 最后生成器会编译 RTOS 内核。 们自动地智能地连 是必由之路,但是让基于 PLD 处理器可视化的工具流程也促进了可编程单芯片系统的设 计。Altera 推出的 SOPC Builder 工具,提出了 PLD 的最高度设计抽象,弥补了软件和硬件 同时集成的空白。现在,我们正处于 SOPC 即插即用时代的前沿,其间处理器,IP 模块和软 件能够一起“工作”。 .1 SOPC Builder 的设计流程 SOPC Builder 可看作是一个以 IP 模块为输入,集成的系统为输出的工具。SO 过程有三个主要步骤,如图 1-3 所示。 图 1-3 SOPC Builder 设计流程 。一般情况下,把一个普通的 IP 模 编辑一个新的系统时,一般要从库中选择一些 IP 模块,逐个地配置这些 IP 模块,以及设置整个系统的配置(如,指定地址映射和主/从端口连接等)。在这个过程中, 用户的设置都会保存在系统 PTF 文件中,一般不会有其他文件的产生或修改。 SOPC Builder 内包括和安装了一些 IP 模块,其他一些 IP 模块可以从 Altera 或第三方(如 AMPP)IP 提供商处获得,可能需要另外安装。 (3)系统生成 当用户在完成了 SOPC Builder 中的设计活动之后,最后按下 Generate 按钮,或从命令 行执行系统生成程序时,系统生成就开始了。系统生成的结果是一系列设计文件,如 HDL (1)构件开发 SOPC Builder 的 IP 模块是由 IP 开发人员提供的硬件(RTL、原理图或 EDIF)和软件 (C 源代码、头文件等)。高级 IP 模块可能还会包含一个相关的图形用户界面,一个 Generator_Program 程序,和其他支持系统参数化生成的程序 块添加到 SOPC Builder 的 IP 模块库中,需要做的只是建立一个描述该 IP 的 class.ptf 文件。所有的 IP 模块够都必须有一个 class.ptf 文件。 (2)系统集成 用户创建和
文件,SDK(software-support)目录和模拟工程文件等等。 1.2.2S0 PC Bui1der的设计阶段 为了更好地理解三个步骤中的具体活动,图1-4把整个过程分成了若干个阶段。作为P 开发者,可以指定在哪些阶段,对P模块要做哪些操作。系统PT下文件中的特定内容在某 些阶段也需要设置或使用,每一个PTF节和PTF参数都在特定的阶段使用或设置。系统生 成步骤中的所有阶段,都以一个单向的固定顺序来执行。一旦开始系统生成,则所有的活动 会不间断地按顺序执行下去,除非产生错误或由用户中止。 系统集成步骤中的所有活动,顺序上没有严格的要求。一般的顺序是:添加、配置和集 成系统。但由于系统集成过程是一个交互的编辑过程,用户可能会不只一次地修改模块配置。 所以一般以添加模块到系统的阶段开始,其他的三个阶段活动(编辑、系统配置和绑定)会 按不确定的顺序进行。无论什么样的顺序,一旦用户按下了Generate按钮,则系统集成步 骤就开始了。 Development Step Phase Flow Component Authoring Authoring Add System Assembly Edit System Configuration Bind SDK for CPU 0 SDK Generation for CPU m System Generation Generator Program for Module 0 。 Generator Program for Module m Bus Generation Top Module Generation Project File Generation Done QUARTUS∥ (Synthesis) 图1-4 SOPC Builder的开发阶段 (1)构件开发阶段 P开发者经常会希望拿一个现成的具有微处理器总线接口的逻辑模块,然后转换成 SOPC Builder的IP模块。这需要如下的三个主要步骤: 1.建立一个名为clss.ptf的简单文本文件(通常这个过程可以简化,比如通过复制一个类 似P模块的class..ptf文件,然后修改其中的某些参数)
文件,SDK(software-support)目录和模拟工程文件等等。 1.2.2 SOPC Builder 的设计阶段 为了更好地理解三个步骤中的具体活动,图 1-4 把整个过程分成了若干个阶段。作为 IP 开发者,可以指定在哪些阶段,对 IP 模块要做哪些操作。系统 PTF 文件中的特定内容在某 些阶段也需要设置或使用,每一个 PTF 节和 PTF 参数都在特定的阶段使用或设置。系统生 成步骤中的所有阶段,都以一个单向的固定顺序来执行。一旦开始系统生成,则所有的活动 会不间断地按顺序执行下去,除非产生错误或由用户中止。 系统集成步骤中的所有活动,顺序上没有严格的要求。一般的顺序是:添加、配置和集 成系统。但由于系统集成过程是一个交互的编辑过程,用户可能会不只一次地修改模块配置。 所以一般以添加模块到系统的阶段开始,其他的三个阶段活动(编辑、系统配置和绑定)会 按不确定的顺序进行。无论什么样的顺序,一旦用户按下了 Generate 按钮,则系统集成步 骤就开始了。 图 1-4 SOPC Builder 的开发阶段 (1)构件开发阶段 IP 开发者经常会希望拿一个现成的具有微处理器总线接口的逻辑模块,然后转换成 SOPC Builder 的 IP 模块。这需要如下的三个主要步骤: 1. 建立一个名为 class.ptf 的简单文本文件(通常这个过程可以简化,比如通过复制一个类 似 IP 模块的 class.ptf 文件,然后修改其中的某些参数)