




已阅读5页,还剩237页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章Nios 嵌入式处理器设计 5 1Nios 嵌入式处理器简介5 2Nios 嵌入式处理器软 硬件开发流程简介5 3Nios 嵌入式处理器系统的开发5 4Nios 处理器外围接口5 5HAL系统库5 6应用示例 电子钟思考题 5 1Nios 嵌入式处理器简介 5 1 1第一代Nios嵌入式处理器20世纪90年代末 可编程逻辑器件 PLD 的复杂度已经能够在单个可编程器件内实现整个系统 即在一个芯片中实现用户定义的系统 它通常包括片内存储器和外设的微处理器 2000年 Altera发布了Nios处理器 这是AlteraExcalibur嵌入式处理器计划中的第一个产品 是第一款用于可编程逻辑器件的可配置的软核处理器 Altera公司的Nios是基于RISC技术的通用嵌入式处理器芯片软内核 它特别为可编程逻辑进行了优化设计 也为可编程单芯片系统 SOPC 设计了一套综合解决方案 第一代Nios嵌入式处理器性能高达50MIPs 采用16位指令集 16 32位数据通道 5级流水线技术 可在一个时钟周期内完成一条指令的处理 它可以与各种各样的外设 定制指令和硬件加速单元相结合 构成一个定制的SOPC Nios处理器还具有一种基于JTAG的OCI 片上仪器 芯核 使软件开发人员在实时调试方面具有更明显的优势 该处理器的软件支持可扩展到对APR IP ICMP TCP UDP和以太网的网络协议支持 在Nios之后 Altera公司于2003年3月又推出了Nios的升级版Nios3 0版 它有16位和32位两个版本 两个版本均使用16位的RISC指令集 其差别主要在于系统总线带宽 它能在高性能的Stratix或低成本的Cyclone芯片上实现 Nios3 0的主要特性有 1 更多的可配置的寄存器 用户根据需要可自行配置的内部寄存器数目多达512个 编译器可利用这些内部寄存器加快对子程序的调用和对变量的寻址 2 极大的灵活性和可扩展性 用户可在FPGA容量允许范围内自由配置处理器的Cache大小 指令集ROM大小 片内RAM和ROM大小 I O引脚数目和类型 中断引脚数目 定时器数目 通用串口数目 扩展地址和数据引脚等处理器的性能指标 此外 用户还可以在处理器ALU中直接加入自定义的数字逻辑 并添加自定义的处理器指令 3 功能强大的开发工具 使用SOPCBuilder开发工具 开发者可以快速开发出满足设计需要的处理器 该开发工具支持C C 语言 并提供了常用的功能类库 开发者可以直接使用C C 语言进行系统软件开发 然后在线调试自行设计的Nios处理器和软件 当软件达到设计要求时 可通过该工具将执行代码转换成Flash文件格式或HEX文件下载到Flash或FPGA器件中 使所设计的系统独立运行 第一代的Nios已经体现出了嵌入式软核的强大优势 但是还不够完善 它没有提供软件开发的集成环境 用户需要在NiosSDKShell中以命令行的形式执行软件的编译 运行 调试 程序的编辑 编译 调试都是分离的 而且还不支持对项目的编译 这对用户来说不够方便 还需要功能更为强大的软核处理器和开发环境 5 1 2第二代Nios嵌入式处理器2004年6月 Altera公司在继全球范围内推出Cyclone 和Stratix 器件系列后又推出了支持这些新款FPGA系列的Nios 嵌入式处理器 Nios 嵌入式处理器和Cyclone FPGA组合 在器件中只占用0 35美元的逻辑资源 Nios 嵌入式处理器在Cyclone FPGA中也具有超过100DMIP的性能 允许设计者在很短的时间内构建一个完整的可编程芯片系统 风险和成本比中小规模的ASIC小 它与2000年上市的原产品Nios相比 最大处理性能提高3倍 CPU内核部分的面积最大可缩小1 2 Nios 系列嵌入式处理器使用32位的指令集结构 ISA 完全与二进制代码兼容 它是建立在第一代16位Nios处理器的基础上的 定位于广泛的嵌入式应用 Nios 处理器系列包括了三种内核 快速的 Nios f 经济的 Nios e 和标准的 Nios s 内核 每种都针对不同的性能范围和成本 使用Altera的Quartus 软件 SOPCBuilder工具以及Nios 集成开发环境 IDE 用户可以轻松地将Nios 处理器嵌入到他们的系统中 表5 1 表5 2和表5 3分别列出了Nios 处理器的特性 Nios 系列成员 Nios 嵌入式处理器支持的FPGA 表5 1Nios 嵌入式处理器的特性 表5 2Nios 系列处理器成员 表5 3Nios 嵌入式处理器支持的FPGA 5 1 3可配置的软核嵌入式处理器的优势1 合理的性能组合使用AlteraNios 处理器和FPGA 用户可以实现在处理器 外设 存储器和I O接口方面的合理组合 1 三种处理器内核 Nios 开发人员可以选择一个或任意以下三种内核的组合 快速的内核 Nios f 具备高性能 经济的内核 Nios e 具备低成本 标准的内核 Nios s 用于性能和尺寸的平衡 2 超过60种SOPCBuilder配备的内核 用户可以创建一组适合于自己应用的外设 存储器和I O接口 现成的嵌入式处理器可以快速嵌入Altera的FPGA中 3 无限的DMA通道组合 直接存储器存取 DMA 可以连接到任何外设从而提高系统的性能 4 可配置的硬件及软件调试特性 软件开发人员具有多个调试选择 包括基本的JTAG的运行控制 运行 停止 单步 存储器等 硬件断点 数据触发 片内和片外跟踪 嵌入式逻辑分析仪 这些调试工具可以在开发阶段使用 一旦调试通过后就可以去掉 2 提升系统的性能设计人员通常都会选择一个比实际所需的性能要高的处理器 意味着更高的成本 从而为设计保留一个安全的性能上的余量 Nios 系统的性能是可以根据应用来裁减的 与固定的处理器相比 在较低的时钟速率下具备更高的性能 Nios 的以下特性可以提升系统的性能 1 多CPU内核 开发者可以选择最快的Nios 内核 Nios f 以获得高性能 还可以通过添加多个处理器来获得所需的系统性能 2 FPGA系列支持 Nios 处理器可以工作在所有近来Altera推出的FPGA系列上 尤其是在Stratix 器件上 Nios f内核超过200DMIPS的性能仅占用1800个逻辑单元 在更大的器件上 诸如Stratix EP2S180器件 一个Nios 的内核只占用了1 的可用逻辑资源 这些微量的资源仅在Quratus 设计软件资源使用的波动范围之内 可以说用户几乎是免费得到了一个200DMIPS性能的处理器 3 多处理器系统 许多开发人员使用Nios来扩充外部的处理器 为保持系统的性能并分担处理任务 另外 设计者也可以在一片FPGA内部实现多个处理器内核 通过将多个Nios f内核集成到单个器件内以获得较高的性能 而不用重新设计印刷电路板 PCB Nios 的IDE也可以支持这种多处理器在单一FPGA上的开发 或多个FPGA共享一条JTAG链 4 定制指令 用户定制指令是一个扩展处理器指令的方法 最多可以定制256个用户指令 见图5 1 定制指令处理器还是处理复杂的算术运算和加速逻辑的最佳途径 例如 将一个在64K字的缓冲区实现的循环冗余码校验 CRC 的逻辑块作为一个定制的指令 要比用软件实现快27倍 图5 1Nios 的定制指令 5 硬件加速 通过将专用的硬件加速器 见图5 2 添加到FPGA中作为CPU的协处理器 CPU就可以并发地处理大块的数据 例如上面提到的CRC例子 通过专用的硬件加速器处理一个64K字的缓冲区 比用软件快530倍 SOPCBuilder设计工具中包含一个引入向导 用户可以用这个向导将加速逻辑和DMA通道添加到系统中 3 降低系统成本嵌入式系统设计人员总是坚持不懈地寻找降低系统成本的方法 然而 选择一款处理器 在性能和特性上总是与成本存在着冲突 最终结果总是以增加系统成本为代价的 利用Nios 处理器可以通过以下途径来降低成本 1 更大规模的系统集成 将一个或更多的Nios 处理器组合 选择合适的外设 存储器 I O接口 利用这种方法可以减少电路板的成本 复杂程度以及功耗 2 优化FPGA CPU的选择 经济型的内核 Nios e 只占用不到35美分的Cyclone器件资源 保留了更多的逻辑资源给其他片外的器件 并仅仅占用600个逻辑单元 这样就可将软核处理器应用于低成本的 需要低处理性能的系统中 小的CPU还使得在单个的FPGA芯片上嵌入多个处理器成为可能 3 更好的库存管理 嵌入式系统通常包含了来自多个生产商的多种处理器 以应付多变的系统任务 当某种处理器短缺时 管理这些处理器的库存也是个问题 但是使用标准化的Nios 软核处理器 库存的管理将会大大简化 因为通过将处理器实现在标准的FPGA器件上减少了对处理器种类的需求 4 应付产品的生命周期开发人员希望快速将他们的产品推向市场 并保持一个较长的产品生命周期 基于Nios 的系统在以下几个方面可以帮助用户实现此目标 1 加快产品的上市时间 FPGA可编程的特性使其具有更快的产品上市时间 许多的设计向导通过简单的修改都可以被快速地实现到FPGA设计上 Nios 系统的灵活性源于Altera所提供的完整的开发套件 众多的参考设计 强大的硬件开发工具 SOPCBuilder 和软件开发工具 Nios IDE 由于将Nios 处理器放置于FPGA内部就可以验证外部的存储器和I O组件 因而电路板设计速度得以显著增加 2 建立有竞争性的优势 维持一个基于通用硬件平台的产品的竞争优势是非常困难的 而带有一个或多个Nios 处理器的SOPC系统则具备了硬件加速 定制指令 定制且可裁减的外设等配置 从而在竞争中占有一定的优势 3 延长了产品的生存时间 使用Nios 处理器的SOPC产品的一个独特优势就是能够对硬件进行升级 即使产品已经交付给客户 软件也可以定期升级 这些特性可以解决以下问题 延长产品的生存时间 随着时间的增加 可以不断有新的特性添加到硬件中 减少由于标准的制定和改变而带来的硬件上的风险 简化了对硬件设计的修复和对错误的排除 避免处理器的过时 嵌入式处理器供应商通常提供一个很宽的配置选择范围以适应不同的客户群 不可避免的是 某个或多个处理器有可能会因为生产计划等原因而停止供应或很难寻找 设计人员可以拥有在AlteraFPGA上使用和配置基于Nios设计的永久授权 一个基于Nios的设计可以很容易地移植到新系列的FPGA器件中 从而保护了对应用软件的投资 4 在产品产量增加的情况下减少成本 一旦一个FPGA的设计被选定 并且打算大批量生产 就可以选择将它移植到Altera的HardCopy 一种结构化的ASIC系列 中 从而减少成本并提升性能 Altera还可以提供Nios 处理器的ASIC制造许可 可以将包含Nios 处理器 外设 Avalon交换式总线的设计移植到基于单元的ASIC中 5 2Nios 嵌入式处理器软 硬件开发流程简介 Nios 和Nios的开发流程是一样的 只是在软件开发上Nios使用NiosSDKShell对程序进行编译 下载 而Nios 使用Nios IDE集成开发环境来完成整个软件工程的编辑 编译 调试和下载 大大提高了软件开发效率 图5 3所示为创建一个完整的Nios 系统的全部开发流程 图中包括创建一个工作系统的软 硬件的各项设计任务 图5 3Nios 系统软 硬件开发流程 在流程图中指示出了硬件和软件设计流程的交汇点 了解软件和硬件之间的相互关系对于完成一个完整的工作系统是非常重要的 开发流程图从 初期工作 开始 图5 3中的步骤 这些工作需要软 硬件工作人员的共同参与 它包括了对系统需求的分析 例如 对所设计的系统运行性能有什么要求 系统要处理的带宽有多大 基于对这些问题的回答 用户可以确定具体的系统需求 例如 CPU是否需要一个硬件加速乘法器 设计中所需要的外围器件及其数量 是否需要DMA通道来释放CPU在进行数据拷贝时所占用的资源 5 2 1硬件开发流程系统设计所需的具体硬件设计工作如下 1 用SOPCBuilder系统综合软件来选取合适的CPU 存储器以及外围器件 如片内存储器 PIO UART和片外存储器接口 并定制它们的功能 参见图5 3中的步骤 2 使用Quartus 软件来选取具体的Altera可编程器件系列 并对SOPCBuilder生成的HDL设计文件进行布局布线 再使用Quartus 软件选取目标器件并对Nios 系统上的各种I O口分配管脚 另外还要根据要求进行硬件编译选项或时序约束的设置 参见图5 3中的步骤 在编译的过程中 Quartus 从HDL源文件综合生成一个适合目标器件的网表 最后 生成配置文件 3 使用Quartus 编程器和Altera下载电缆 将配置文件 用户定制的Nios 处理器系统的硬件设计 下载到开发板上 参见图5 3中的步骤 当校验完当前硬件设计后 还可再次将新的配置文件下载到开发板上的非易失存储器里 下载完硬件配置文件后 软件开发者就可以把此开发板作为软件开发的初期硬件平台进行软件功能的开发验证了 5 2 2软件设计流程系统设计所需的具体软件设计工作如下 1 在用SOPCBuilder系统集成软件进行硬件设计的同时 就可以开始编写独立于器件的C C 软件 比如算法或控制程序 参见图5 3中的步骤S 用户可以使用现成的软件库和开放的操作系统内核来加快开发进程 2 在NIOS IDE中建立新的软件工程时 IDE会根据SOPCBuilder对系统的硬件配置自动生成一个定制HAL 硬件抽象层 系统库 这个库能为程序和底层硬件的通信提供接口驱动程序 它类似于创建Nios系统时SOPCBuilder生成的SDK 3 使用NIOS IDE对软件工程进行编译 调试 参见图5 3中的步骤S 4 将硬件设计下载到开发板上后 就可以将软件下载到开发板上并在硬件上运行 参见图5 3中的步骤S 5 3Nios 嵌入式处理器系统的开发 5 3 1开发工具及开发板简介1 开发工具开发Nios 嵌入式处理器系统所需的软 硬件开发工具有 WindosNT 2000 XP操作系统 SOPCBuilder软件 Quartus 4 0或更高版本 Nios IDE集成开发环境以及Nios开发板 2 开发板简介本书中的设计都是在NiosCyclone开发板上进行设计开发的 图5 4所示即为NiosCyclone开发板 图5 4NiosCyclone开发板 1 开发板系统组成NiosCyclone开发板包括以下组成部分 一片CycloneEP1C20F400C7器件 8MBFlash存储器 1MB静态RAM 16MBSDRAM 一片EMP7128 EPCS4串行配置器件 以太网MAC PHY控制器 两个扩展接头 每个有41个引脚与Cyclone器件的IO引脚连接 最高输入电压5V CF卡接口 软 硬件调试连接器 两个RS 232DB9串口 四个连接CycloneIO引脚的按钮 八个LED连接CycloneIO引脚的按钮 两个七段数码管 JTAG接口 50M晶振和电源复位电路 NiosCyclone开发板为基于AlteraCyclone器件的嵌入式系统开发提供了一个开发平台 开发板上已经带有了一个32bitNios处理器的参考设计 软 硬件开发人员可以参照这个设计中的软 硬件 尽快开始设计自己的软 硬件 系统上电后 板子上的配置逻辑会引导CycloneFPGA使用存储在Flash中的硬件配置 当器件配置好后 在FPGA中设计的Nios处理器就执行从Flash存储器中导入的程序代码 参考设计为下载新的由用户定义的软 硬件配置数据提供了方便的下载工具 下载可以通过串口 JTAG下载电缆或以太网线进行 2 器件配置 1 配置控制器 板子上的AlteraEPM7128AE是配置控制器 它里面已经存在的逻辑被用来管理板子的复位并引导Flash存储器 EPCS4串行配置器件中的数据来配置Cyclone器件 当板子加电或复位时 复位控制器会按照以下顺序读取存储器来配置Cyclone器件 EPCS4串行配置器件 Flash存储器中的用户配置 Flash存储器中的安全配置 首先 CycloneFPGA读取来自EPCS4的配置数据 如果配置成功 就停止继续配置 否则 配置控制器控制CycloneFPGA转入被动串行模式 读取Flash存储器中的用户配置 如果还不成功 就下载Flash存储器中的安全配置 开发板上的参考设计中就有Flash存储器的安全配置区 因此在用户没有加载其他设计的情况下 板子始终运行在安全模式下 运行参考程序代码 一般用户是不需要重新对配置控制器编程的 如果改变了EPM7128的逻辑 则要恢复到原来状态 可以在altera kids nios examples EPM7128 flash config controller中找到原程序文件config controller pof 将此文件通过JTAG J5接口 重新下载到EPM7128器件中即可 2 配置数据 Quartus 可以生成hexout配置文件 这个文件可以作为配置数据直接下载并存储在Flash中 CycloneEP1C20的配置文件小于1MB 占用1 8的Flash存储单元 在Flash存储器中有两个配置 分别是用户配置和安全配置 这两个配置存储在Flash存储器中固定的位置 表5 4所示为Flash存储器的分配情况 表5 4Flash存储器的分配 用户新设计的软 硬件程序应烧写在用户配置数据段中 板子在上电或复位情况下 对于Flash首先就从0 x60000处读取配置数据 成功后不再读取安全配置数据 建议用户一般情况下不要擦除安全配置数据 在有用户配置数据的情况下 如果要使板子使用安全配置数据 就按SW9按键 系统会自动转入读取安全配置数据 在开发板上有4个指示配置情况的指示灯 它们与EPM7128相连 如图5 5所示 从指示灯上可以看出当前的配置情况 如果有新的配置从JTAG J24接口 向Cyclone器件下载 则所有的指示灯都会灭掉 用户在使用开发板开发时应该注意这几个指示灯的状态 表5 5是这几个指示灯的说明 图5 5开发板上的配置指示灯 表5 5配置指示灯 3 重新写入安全配置 当原先的安全配置被擦除 要恢复安全配置时 应执行以下步骤 配置CycloneFPGA 使用Quartus 的Programmer选项 将Nios开发工具包中的example目录下的recover configuration cyclone 1c20 sof下载到Cyclone中 配置结束后按下SW0按钮 再按下SW8按钮并放开 最后再放开SW0按钮 重新下载程序到Flash 将ConsoleRS 232和计算机相连 打开NiosSDKShell 开始 菜单 程序 NiosDevelopmentKit NiosSDKShell 执行如下命令 nios run x r pcom1default board image cyclone 1c20 flash 回车 下载的过程要持续10 20分钟 在这个过程中不要按复位键 完成后按ForceSafe SW9 按钮 就可进入到原来的安全配置模式了 3 将开发板升级到Nios NiosCyclone开发板上已有的配置是第一代Nios处理器 如果用户要进行Nios 的嵌入式系统开发 则首先要将开发板升级到Nios 处理器 升级要执行的步骤如下 1 下载flash程序 将JTAG电缆接到开发板的J24接口上连接开发板和PC机 并给板子加电 选择开始 程序 Altera Nios DevelopmentKit Nios SDKShell 打开Nios SDKShell窗口 默认情况下Nios SDKShell指向 altera kits nios2 examples 目录 将目录改为factory recovery 输入下面的命令 cdfactory recovery Nios cyclone 1c20 回车 运行Flash修复文件 输入下面的命令 restore my flash 回车 按照提示信息完成Flash程序的下载 见图5 6 图5 6运行Flash修复文件 2 向EPM7128配置控制器下载程序 将JTAG电缆接到J5接口 注意J5接口和J24接口方向相反 连接时将下载电缆转向180 启动Quartus 选择tools菜单下的Programmer选项 将 altera kids nios2 examples factory recovery nios cyclone lc20目录下的config controller pof文件下载到EPM7128中 按下开发板上的ForceSafe SW9 按钮 可以看到Safe灯点亮和LED从D0到D7连续点亮 这说明Nios 处理器及其参考程序设计已经成功配置到开发板上了 5 3 2Nios 集成开发环境 IDE 简介1 工程管理器Nios IDE提供多个工程管理任务 加快了嵌入式应用程序的开发进度 1 新工程向导 Nios IDE推出了一个新工程向导 如图5 7所示 用于自动建立C C 应用程序工程和系统库工程 采用新工程向导 能够轻松地在Nios IDE中创建新工程 图5 7Nios IDE新工程向导 2 软件工程模板 除了新工程向导 Nios IDE还以工程模板的形式提供了软件代码实例 帮助用户尽可能快速地推出可运行的系统 每个模板包括一系列软件文件和工程设置 通过覆盖工程目录下的代码或者导入工程文件的方式 开发人员能够将他们自己的源代码添加到工程中 图5 8描述了一些可用的软件工程模板 图5 8软件工程模板 3 软件组件 Nios IDE使开发人员通过使用软件组件能够快速定制系统 软件组件 或者称为系统软件 为开发人员提供了一个简单的方式 可以轻松地为特定目标硬件配置其系统 这些组件包括 Nios 运行库 或者称为硬件抽象层 HAL 轻量级IPTCP IP库 MicroC OS 实时操作系统 RTOS 和Altera压缩文件系统 2 编辑器和编译器Nios IDE提供了一个全功能的源代码编辑器和C C 编译器 1 文本编辑器Nios IDE文本编辑器是一个成熟的全功能源文件编辑器 其功能包括 语法高亮显示C C 程序代码 代码辅助 代码协助完成 全面的搜索工具 文件管理 广泛的在线帮助主题和教程 引入辅助 快速定位及自动纠错 内置调试功能 图5 9显示的是Nios IDE文本编辑器高亮显示C源代码 图5 9高亮显示C源代码 2 C C 编译器Nios IDE为GCC编译器提供了一个图形化用户界面 Nios IDE编译环境使设计Altera的Nios 处理器软件更容易 它提供了一个易用的按钮式流程 同时允许开发人员手工设置高级编译选项 Nios IDE编译环境自动生成一个基于用户特定系统配置 SOPCBuilder生成的PTF文件 的makefile Nios IDE中编译 链接设置的任何改变都会自动映射到这个自动生成的makefile中 这些设置可包括生成存储器初始化文件 MIF 的选项 闪存内容 仿真器初始化文件 DAT HEX 以及profile总结文件的相关选项 3 调试器TheNios IDE包含一个强大的 在GNU调试器基础之上的软件调试器 GDB 该调试器提供许多基本调试功能以及一些在低成本处理器开发套件中不会经常用到的高级调试功能 1 基本调试功能Nios IDE调试器包含如下基本调试功能 运行控制 调用堆栈查看 软件断点 反汇编代码查看 调试信息查看 指令集仿真器 图5 10是Nios IDE调试器软件断点的屏幕抓图 图5 10Nios IDE调试器断点 2 高级调试功能除了上述基本调试功能之外 Nios IDE调试器还支持以下高级调试功能 硬件断点调试ROM或闪存中的代码 数据触发以及指令跟踪 Nios IDE调试器通过JTAG调试模块和目标硬件相连 另外 Nios IDE调试器支持片外跟踪功能 便于和第三方跟踪探测工具结合使用 如FS2公司提供的用于Nios 处理器的in target系统分析仪 ISA NIOS 3 调试信息查看调试信息查看使用户可以访问本地变量 寄存器 存储器 断点以及表达式赋值函数 图5 11是调试信息查看的一个实例 显示的是一个寄存器应用实例 图5 11调试信息查看 寄存器显示 4 目标Nios IDE调试器能够连接多种目标 表5 6列出了Nios IDE中可用的目标连接 表5 6Nios IDE调试器目标 4 闪存编程器许多使用Nios 处理器的设计都在单板上采用了闪存 可以用来存储FPGA配置数据和 或Nios 编程数据 Nios IDE提供了一个方便的闪存编程方法 任何连接到FPGA的兼容通用闪存接口 CFI 的闪存器件都可以通过Nios IDE闪存编程器来烧结 除CFI闪存之外 Nios IDE闪存编程器能够对连接到FPGA的任何Altera串行配置器件进行编程 闪存编程器管理多种数据 编程到内存中的通用内容类型见表5 7 表5 7编程到闪存中的通用内容类型 Nios IDE闪存编程器具有易用的接口 如图5 12所示 图5 12闪存编程器接口 5 3 3设计实例1 硬件部分设计1 创建一个Quartus 工程在Quartus 软件中 根据所用开发板的类型打开Altera kids nios2 tutorials Nios2 HW Tutorial目录下的一个建立好的工程文件 这里选取的是1C20中的nios2 quartus2 project qpf工程文件 在此工程的 bdf文件中已经加入了开发板上Cyclone器件要输入 输出的管脚 如图5 13所示 图5 13打开nios2 quartus2 project bdf工程文件 2 创建Nios系统模块 1 启动SOPCBuilder 在Quartus 中选择SOPCBuilder Tools菜单中 之后会出现CreateNewSystem设置向导 如图5 14所示 在设置向导的SystemName中输入系统名first nios2 system 并选择Verilog或VHDL硬件描述语言 点击OK按钮 显示出AlteraSOPCBuilderfirst nios2 system窗口和系统元件表 图5 14CreateNewSystem设置向导 在SOPCBuilder中的TargetDeviceFamily对话框中选取Cyclone器件 在SystemClockFrequency中填入50 2 添加CPU和外围器件 建立当前要设计的nios2 quartus2 project项目 需从SOPCBuilder的元件池中选择以下元件加入到当前设计的系统中 Nios 32bitCPU 定时器 按键PIO LCDPIO LEDPIO 七段数码管PIO 外部RAM总线 Avalon三态桥 外部RAM接口 外部Flash接口和新配置请求PIO 添加Nios 32bitCPU 在Avalon模块下选择Nios Processor AlteraConfidential 点击Add 会出现Nios 的设置向导 名为AlteraNios cpu 0 在Nios Core栏中选择Nios s选项 在InstructionCacheSize中选择4Kbytes 如图5 15所示 图5 15Nios Core项目栏 图5 16JTAGDebugModule项目栏 点击Finish按钮返回SOPCBuilder窗口 将cpu 0重新命名为cpu 见图5 17 图5 17在SOPCBuilder中添加cpu 名字最前面应该使用英文 能使用的字符只有英文字母 数字和 不能连续使用 符号 在名字的最后也不能使用 添加JTAGUARTInterface JTAGUART是Nios 系统嵌入式处理器新添加的接口元件 通过内嵌在AlteraFPGA内部的联合测试行动组 JTAG 电路 在PC主机和SOPCBuilder系统之间进行串行字符流通信 图5 18JTAGUART设置向导 选择Communication JTAGUART并点击Add 会出现JTAGUATT jtag uart 0的设置向导 如图5 18所示 保持系统默认的选项 点击Finish 返回SOPCBuilder窗口 将jtag uart 0重命名为jtag uart 添加定时器 定时器对于HAL系统库中的器件驱动非常有用 比如JTAGUART驱动使用定时器来实现10秒钟的暂停 添加定时器的步骤如下 在元件池中选择Other项下的Intervaltimer并点击Add 会出现AvalonTimer timer 0设置向导 在此设置向导的InitialPeriod选项中选择1msec 在PresetConfigurations选项中选择Full featured v1 0 compatible 如图5 19所示 图5 19定时器设置向导 点击Finish按钮 返回SOPCBuilder窗口 将timer 0重命名为system timer 添加外部Flash存储器接口的步骤如下 在元件池中选取memory项下的FlashMemory CommonFlashInterface 点击Add 会出现FlashMemory CommonFlashInterface cfi flash 0设置向导 根据所使用的开发板在Presets项中选择相应的Flash器件 本例中选择AMD29LV065D 120R 在AddressWidth中选择23bits选项 在DataWidth中选择8bits选项 如图5 20所示 图5 20外部Flash设置向导 点击Finish按钮 返回AlteraSOPCBuilder nios32窗口 将cfi flash 0重命名为ext flash 添加外部RAM接口的步骤如下 根据开发板类型在元件池中选择相应的SRAM 在本例中因使用的开发板为Cyclone EP1C20 故选择EP1C20项下的IDT71V416SRAM 点击Add 会出现SRAM twoIDT71V416chips sram 0设置向导 在Attributes栏中 确定存储器大小为1024KB 如图5 21所示 点击Finish按钮返回AlteraSOPCBuilder nios32窗口 将sram 0重命名为ext ram 图5 21添加SRAM设置向导 添加外部RAM总线 AvalonTri StateBridge SOPCBuilder是使用Avalon接口来连接片上元件和Avalon主从端口的 在Nios开发板上 要实现Nios系统与FPGA片外存储器通信 用户就必须在Avalon总线和连接外部存储器的总线之间添加一个桥 添加AvalonTri StateBridge的步骤如下 选取Bridge项下的AvalonTri StateBridge并点击Add 会出现AvalonTri StateBridge tri state bridge 0设置向导 如图5 22所示 默认情况下Registered选项是选中的 点击Finish按钮 返回AlteraSOPCBuilder nios32窗口 将tri state bridge 0重命名为ext ram Bus 添加ButtonPIO的步骤如下 选择Other项下的PIO ParallelI O 点击Add 会出现AvalonPIO pio 0的设置向导 确定以下选项 如图5 23所示 Width为4bits Direction选中Inputportsonly 选择了Inputportsonly选项 就使能了InputOptions栏 点击InputOptions栏 在EdgeCaptureRegister下选取Synchronouslycapture 选择EitherEdge 在Interrupt下选取GenerateIRQ 选择Edge 返回AlteraSOPCBuilder nios32窗口 将pio 0重命名为button pio 图5 23按键PIO属性设置 添加重新配置请求PIO 重新配置请求PIO可使器件根据其他外围设备的输入自动进行重新配置 添加此PIO的过程同添加其他PIO的过程一样 其属性设置见图5 24 Width设为1bit 在Direction中选择Bidirectional tir state ports选项 并将AvalonPIO pio 0重命名为reconfig request pio 图5 24重新配置请求PIO设置向导 添加其他PIO的步骤与添加按键PIO相同 各个PIO属性设置如下 LCDPIO 如图5 25所示 Width设为11bits Direction选择Bidirectional tir state ports选项 图5 25LCDPIO设置向导 LEDPIO 如图5 26所示 Width设为8bits Direction选择Outputportsonly选项 七段数码管PIO Width设为16bits Direction选择Outputportsonly选项 最后 将pio 0分别重命名为lcd pio led pio seven seg pio 图5 26LEDPIO设置向导 3 指定基地址 SOPCBuilder会给用户的Nios 系统模块分配默认的基地址 用户也可以更改这些默认值 本例中将Flash的基地址设置为0 x0000 以便于说明软 硬件在Flash存储器中存储的地址而不用考虑偏移地址值 设置Flash基地址的步骤如下 在SOPCBuilder的模块表中点击Flash 8Mbyte的Base 输入0 x0并回车 此时会在SOPCBuilder的信息栏中出现新的Flash基地址与另外一个外围器件的基地址冲突的错误 选择Module菜单中的LockBaseAddress 会在Flash的基地址旁边出现一个锁子的图标 选择System菜单中的AutoAssignBaseAdderss AutoAssignBaseAddress可以使SOPCBuilder给其他没有锁定的地址重新分配地址 从而解决地址映射冲突问题 刚才出现的错误就会消失 图5 27显示了完整的系统配置及其地址映射 图5 27最终的Nios 系统配置及其地址映射 4 系统设置 选择More cpu Settings选项 按照图5 28所示的系统设置对系统进行进一步设置 图5 28系统设置 5 生成系统模块的步骤如下 选择SystemGeneration栏 如图5 29所示 在SystemGeneration中选中HDL选项 如果安装了ModelSim软件并需要仿真此设计 可以选择Simulation选项 图5 29SOPCBuilder生成页 点击Generate生成页 SOPCBuilder根据用户设定的选项不同 在生成的过程中所执行的操作不同 系统生成完成后点击Exit退出SOPCBuilder 3 将图标添加到BDF文件中在生成的过程中 SOPCBuilder会生成用户系统模块的图标 Symbol 可以将该图标像添加其他Quartus 图标一样添加到当前项目的BDF文件中 在本例中就可将生成的first nios2 system图标添加到BDF文件中 其步骤如下 1 双击BDF文件窗口 出现Symbol对话框 如图5 30所示 图5 30Symbol对话框 2 在对话框中点击Project目录 3 在Project下选择first nios2 system 会出现一个代表所建立的Nios系统的大图标 4 点击OK按钮 将其放入BDF文件中 5 将first nios2 system与输入输出接口相连 完成系统的硬件设计 如图5 31所示 图5 31系统最终的BDF文件 4 编译Quartus 的工程设计文件选择Processing StartCompilation命令对工程设计文件进行编译 5 配置FPGA配置FPGA并将nios system module sof程序下载到目标板上 2 软件部分设计本例将对Nios IDE提供的一个简单的程序进行编译 下载和调试运行 1 启动Nios IDE在AlterSOPCBuilderfirst nios2 system窗口中的SystemGeneration栏中点击RunNios IDE按钮 如图5 32所示 2 建立新的软件工程 1 选择IDE软件中的File New C C Application命令 如图5 33所示 2 在出现的对话框中确定以下选项 如图5 34所示 在name栏填入新建项目的项目名 本例中在SelectProjectTemplate栏中选择CountBinary 文件名会自动变为count binary 0 确定选中UseDefaultLocation栏 确定SelectTargetHardware指向当前硬件设计系统 图5 32启动Nios IDE 图5 33开始建立新的工程 图5 34新建C C 工程 这个设置向导中的SelectProjectTemplates一栏中是已经做好的软件工程设计 用户可以选择其中的一个 把它当作模板来创建自己的工程 当然也可以选择BlankProject 空白工程 完全由用户来写所有的代码 本例中选取了CountBinary 用户可以根据自己的需要 在其基础上更改程序 一般情况下这比从空白工程做起要更加容易 也方便得多 3 点击Finish按钮后 新建的工程就会添加到工作区中 同时Nios IDE会创建一个系统库项目 syslib 如count binary 2 syslib 图5 35所示为创建工程后的Nios IDE工作界面 Nios IDE中每个工作界面都包括一个或多个窗口 每个窗口都有其特定的功能 在工作界面中包括的主要窗口有编辑器窗口和一个或多个浏览器 编辑器可使用户打开并编辑一个工程 浏览器是用来对编辑器提供各种支持的 可由用户根据自己的需要进行选择 图5 35中的C C 工程浏览器向用户提供有关工程目录的信息 图5 35创建工程后的Nios IDE工作界面 用户可以同时打开多个编辑器 但在同一时刻只能有一个编辑器处于激活状态 在工作界面上的主菜单和工具条上的各种操作只对处于激活状态的编辑器起作用 在编辑区中的各个标签上是当前被打开的文件名 带有 号的标签表示这个编辑器中的内容还没有被保存 要打开浏览器 可以点击工作窗最左边的浏览器标题栏选择要打开的浏览器 如图5 36所示 或在Windows菜单中进行选择 如图5 37所示 有些浏览器还有它们自己的工具条 每个浏览器可以单独显示 也可以和其他浏览器叠加在一起 以标签的形式显示出来 图5 36浏览器标题栏 图5 37从Window菜单中选择要打开的浏览器 3 编译工程用鼠标右键点击工程名count binary 0 在弹出的菜单中选择BuildProject 如图5 38所示 或选择Project菜单中的BuildAll选项 在编译开始后 Nios IDE会首先编译系统库工程以及其他相关的工程 然后再编译主工程 并把源代码编译到 elf文件中 编译完成后会在Tasks浏览器中显示警告和错误信息 图5 39所示为编译过程的界面 图5 38选择BuildProject编译工程 图5 39Nios IDE编译过程 在C C Projects中的工程文件上点击鼠标右键 用户还可以选择其他一些工程配置选项 1 Properties 配置目标硬件和其他工程的属性 2 SystemLibraryProperties 配置硬件的具体设置 如通信器件和存储器划分 3 RebuildProject 重新编译工程 4 Runas 在硬件上或指令仿真运行程序 5 DebugAs 在硬件上或是仿真模式下对程序进行调试 4 运行程序编译成功后 就可以运行程序了 如果编译出现错误 根据错误提示信息改正程序或项目设置错误 重新编译直到成功为止 1 在Nios IDE主窗口中选择Run Run命令 出现运行开始对话框 如图5 40所示 图5 40运行开始对话框 2 在Configurations栏中 双击Nios Hardware RAM 出现运行设置对话框 如图5 41所示 如果连接了多条JTAG电缆 就需要从JTAG电缆的下拉菜单中选择和目标板相连的电缆 图5 41运行设置对话框 3 设置好对话框后 点击Run 就开始了程序下载 复位处理器和运行程序的过程 如图5 42所示 图5 42使程序在开发板上运行 4 如果运行过程中没有问题 程序就会在目标板上运行 这个程序是一个计数程序 选择开发板上的按钮就可以选择由哪个外围输出设备显示计数结果 所用开发板上几个按钮的功能分别是 SW0 只在LED上显示 SW1 只在七段数码管上显示 SW2 只在LCD上显示 SW3 在以上三个外围设备上都显示 注意 如果在LCD上看不到输出 请把开发板上的Flash卡取出 再运行count binary程序 这有可能是因为LCD和Flash冲突造成的 第一次将运行设置设置好后 以后要重新运行程序 可以用右键点击要运行的程序 从弹出的右键菜单中选择RunAs命令 如图5 43所示 并确定在什么模式下运行 目标板上或仿真环境下 图5 43选择运行程序 5 调试程序启动调试程序和启动运行程序类似 在本例中选择在仿真模式下调试程序 用右键点击C C Projects中要调试的项目 选择DebugAs Nios InstructionSetSimulator选项 如图5 44所示 这样启动调试就进入到调试界面 用户可以通过点击界面按钮来转换显示调试界面和C C 程序开发界面 调试开始后 调试器首先会下载程序 在main 处设置断点并准备开始执行程序 用户可以选取以下通用的调试控制来跟踪程序 StepInto 单步跟踪时进入子程序 StepOver 单步跟踪时执行子程序 但不进入子程序 Resume 从当前代码处继续运行 Terminate 停止调试 图5 44启动在仿真模式下调试程序 要在某代码处设置断点 可以在该代码左边空白处双击或点击右键选择AddBreakpoint Nios IDE还提供了多种调试浏览器 用户在调试的过程中可以查看变量 表达式 寄存器和存储器的值 图5 45中就标明了寄存器浏览窗 图5 45查看寄存器 6 将程序下载到Flash中许多Nios 处理器系统都使用外部Flash存储器来存储以下一些数据 程序代码 程序数据 FPGA的配置数据和文件系统 Nios IDE提供了一个名为FlashProgrammer 闪存编程器 的功能单元 可帮助用户对Flash存储器进行管理和编程 选择Tools FlashProgrammer启动编程器 在Project中填入要下载软件的工程名 如count binary 0 在Nios ELFExecutable中填入 elf文件名 如count binary 0 elf 在TargetHardware中填入要下载的硬件配置程序文件 如first nios2 system sof 这样对各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025榆林能源集团有限公司招聘工作人员(473人)笔试参考题库附带答案详解
- 2025广东清远市广佛产业园区运营管理有限公司招聘2人笔试参考题库附带答案详解
- 2025年湖南高速养护工程有限公司第二批招聘46人笔试参考题库附带答案详解
- 2025年江苏东信人力资源有限公司招聘笔试参考题库附带答案详解
- 2025年国网浙江省电力有限公司高校毕业生招聘(第二批)笔试参考题库附带答案详解
- 2025年合肥市浩悦环境工程有限公司招聘5人笔试参考题库附带答案详解
- 2025年中国东方食品投资有限公司校园招聘若干人笔试参考题库附带答案详解
- 2025山东烟台市蓬莱区城市建设投资集团有限公司招聘22人笔试参考题库附带答案详解
- 2025内蒙古土地资源收储投资(集团)招聘94名专业人员(第十一批)笔试参考题库附带答案详解
- 地铁培训安全知识课件
- 结肠癌肝转移护理查房课件
- 口腔预防保健课件
- 手机行业售后管理制度
- 肇庆端州正西社区评估报告
- 朝天椒栽培技术课件
- 科研伦理与学术规范-课后作业答案
- -首次执行衔接问题-行政
- 斯蒂芬金英语介绍
- 秋天的雨 省赛获奖
- JJF 1015-2014计量器具型式评价通用规范
- GB/T 8332-2008泡沫塑料燃烧性能试验方法水平燃烧法
评论
0/150
提交评论