




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 FPGA 的 Nios II 系统的硬件设计 毕业设计 论文 说明书毕业设计 论文 说明书 课题名称 基于 FPGA 的 Nios II 系统的硬件开发基于 FPGA 的 Nios II 系统的硬件开发 1 基于 FPGA 的 Nios II 系统的硬件设计 1 绪论 1 绪论 1 1 Nios II 简介 1 1 Nios II 简介 随着大规模集成电路设计技术的进步和制造工艺水平的提高 以及单个芯片上的逻 辑门数的增加 嵌入式系统设计变得日益复杂 与此同时 上市时间的压力也越来越大 传统的嵌入式系统设计方法已不能适应当前嵌入式系统设计的需要 单个芯片上的逻辑 门数的增加在使设计任务复杂的同时 也为设计人员的开发设计开辟了新的天地 可以把整个系统集成到一个芯片上 这就是所谓的SOC技术 即片上系统 SystemOnChip SOC技术是当前嵌入式系统设计的一个研究热点 Altera是世界知名 的可编程逻辑器件公司 过去 Altera作为可编程逻辑器件供应商 他提供PLD器件 如今 Altera同时又是系统方案的供应商 他现在为客户提供的服务是如何把一个系统 所需要的嵌入式功能块 也就是IP核 放到可编程逻辑器件上组成系统 这就是 SOPC System OnPmgrammable Chip 技术 Altera推出的Nios II系列嵌入式处理器扩展了目前世界上最流行的软核嵌入式处理 器的性能 把Nios II嵌入到Altera的所有FPGA中 例如StratixII Stratix ycloneII Cyclone APEX ACEX和HardCopy系列器件中 用户可以获得超过200 DMIPS的性能 用户可以 从三种处理器以及超过60个的IP核中选择所需要的 Nios II系统为用户提供了最基本的 多功能性 设计师可以以此来创建一个最适合他们需求的嵌入式系统 Nios CPU是l6位或32位结构可配置并包含5级流水线的通用RISC微处理器 包括指 令系统 寄存器 高速缓存 中断处理 硬件加速 Nios CPU是通过Avalon总线与外设 进行数据交换 Avalon是一种协议较为简单的内部总线 提供完全的同步操作 占用 FPGA 现场可编程门阵列 资源少 并具有嵌入式地址译码 数据流处理 带延时的读写 操作等重要特性 Nios嵌入式处理器系统可以组合Altera公司提供的标准外围设备库 并允许用户自定义逻辑接口 Nios 核是用户可随意配置和构建的32位总线指令集和数据通道的嵌入式系统微处 理器IP核 采用Avalon总线结构通信借口 带有增强的内存 调试和软件功能 含有FS2 开发的基于JTAG的片内设备内核 OCI 此外 基于Quartus II平台的用户可编程的 Nios核含有许多可配置的接口模块核 包括 可配置高速缓存 包括由片内ESB 外部 SRAM 100MB以上单周期访问速度 模块 可配置RS232通信口 SDRAM控制器 标准以 太协议接口 DMA 定时器 协处理器等 在植入FPGA前 用户可根据设计要求 利用 Quartus II和SPOC Builder 对Nios 及其外围系统进行构建 使该嵌入式系统在硬件 结构 功能特点 资源占用等方面全面满足用户系统设计的要求 Nios核在同一FPGA中 植入的数量没有限制 只要FPGA的资源允许 2 基于 FPGA 的 Nios II 系统的硬件设计 1 2 Nios II处理器的优点特性 1 2 Nios II处理器的优点特性 1 2 1 可定制特性集可定制特性集 采用 Nios II 处理器 将不会局限于预先制造的处理器技术 而是根据自定的标准 处理器 按照需要选择合适的外设 存储器和接口 此外 还可以轻松集成自特有的功 能 使设计具有独特的竞争优势 1 2 2 配置系统性能配置系统性能 所需要的处理器 应该能够满足当前和今后的设计性能需求 由于今后发展具有不 确定性 因此 Nios II 设计人员必须能够更改其设计 加入多个 Nios II CPU 定制 指令集 硬件加速器 以达到新的性能目标 采用 Nios II 处理器 可以通过 AvalonTM 交换架构来调整系统性能 该架构是 Altera 的专有互联技术 支持多种并行数据通道 实现大吞吐量应用 1 2 3 低成本实现低成本实现 在选择处理器时 为了实现需要的功能 可能要购买比实际所需数量多的处理器 也可能为了节省成本 而不得不购买比实际需要数量少的处理器 低成本 可定制 Nios II 处理器能够帮助您解决这一难题 采用 Nios II 处理器 可以根据需要 设置功能 在 价格低至 35 美分的 CycloneTM II FPGA 等低成本 Altera 器件中实施 在单个 FPGA 中 实现处理器 外设 存储器和 I O 接口 可以降低系统总体成本 1 2 4 产品生存周期管理产品生存周期管理 为实现一个成功的产品 需要将其尽快推向市场 增强其功能特性以延长使用时间 避免出现处理器逐渐过时 可以在短时间内 将 Nios II 嵌入式处理器由最初概念设想 转为系统实现 这种基于 Nios II 处理器的系统具有永久免版税设计许可 完全经得起 时间考验 此外 由于在 FPGA 中实现软核处理器 因此可以方便实现现场硬件和软件 升级 产品能够符合最新的规范 具备最新特性 1 2 5 无与伦比的灵活性无与伦比的灵活性 Nios II 具有完全可定制和重新配置特性 所实现的产品可满足现在和今后的需求 1 2 6 定制指令定制指令 Nios II 处理器定制指令扩展了 CPU 指令集 提高对时间要求严格的软件运行速度 从而使开发人员能够提高系统性能 采用定制指令 可以实现传统处理器无法达到的最 佳系统性能 Nios II 系列处理器支持多达 256 条的定制指令 加速通常由软件实现的逻 辑和复杂数学算法 3 基于 FPGA 的 Nios II 系统的硬件设计 1 2 7 硬件加速硬件加速 专用硬件加速器 图 6 可以做为 FPGA 中的定制协处理器 协助 CPU 同时处理多 个数据块 如图 5 中的循环冗余编码实例 采用硬件加速器处理 64K 字节缓冲比软件速 度快 530 倍 SOPC Builder 含有一个输入向导 帮助开发人员将其加速逻辑和 DMA 通 道引入系统 1 3 Nios II的发展现状及趋势 1 3 Nios II的发展现状及趋势 随着低复杂度 FPGA 器件成本的不断下降 具有灵活性和及时面市优势的 FPGA 与 ASIC 相比更有竞争性 在数字消费市场上的应用也急剧增加 第一代的 Cyclone 系列迄 今发售了 3 百多万片 在全球拥有 3 000 多位客户 对大批量低成本数字消费市场有 着巨大的影响 该市场消纳了三分之一的器件 根据 Gartner Dataquest 调查 在 2004 年光消费电子市场对 FPGA 需求就达到 3 亿 9 千万美元 预计 2008 年可到达 11 亿 6 千 万美元 年复合增长率为 31 9 同时 Cyclone II 器件系列也在电信 计算机外设 工业和汽车市场上获得了巨大 的进步 Cyclone II 器件包含了许多新特性 如嵌入存储器 嵌入乘法器 PLL 和低成 本的封装 这些都为诸如视频显示 数字电视 机顶盒 DVD 播放器 DSL 调制解调器 家用网关和中低端路由器等批量应用进行了优化 消费类 HDTV 等离子体显示器 机顶盒 DVD 播放器 通信 宽带固定无线设备 中低端路由器 WLAN 接入点 DSL 路由器 汽车 软件无线接受器 远程信息处理 娱乐 网关控制器 计算机和存储器件 打印机 存储服务器 工业 工厂自动化 工艺控制 网络测试设备 4 基于 FPGA 的 Nios II 系统的硬件设计 2 Nios II的总体设计要求 2 Nios II的总体设计要求 2 1 功能需求 2 1 功能需求 嵌入式系统的构架可以分成四个部分 处理器 存储器 输入输出和软件 处理器 存储器 软件 输入 输入 图 2 1 嵌入式系统构架 首先 嵌入式系统最核心的部分就是嵌入式处理器了 目前 世界上具有嵌入式功 能特点的处理器已经超过了 1000 多种 30 多个系列 不同的处理器有其不同的功能和 优势 但是低成本 低功耗 高性能是嵌入式系统应用的特殊要求 目前主要的嵌入式 处理器类型有 PowerPC X86 MIPS ARM StrongARM 系列等 其次 存储器也是构建嵌入式系统的重要部分 本系统就需要 FLASH 和 SDRAMo 虽然存储器的选择依赖于处理器的选择 但是就功能需求来说 需要考虑容量大的 性 能稳定的存储器 就 FLASH 来说 还需要考虑 FLASH 的擦除等软件操作是否方便 再次 要结合实际情况和处理器的功能 确定系统外围设备 本系统是一个完整的 嵌入式系统 根据实际的应用需要以下通信接口 1 RS 232 串行接口 目前 RS 232 是陀机与通信工业中应用最广泛的一种串行接口 RS 232 被定义为一 种在低速率串行通信中增加通信距离的单端标准 系统需要通过该串口下载程序 或者 进行串行通信 2 以太网接口 在工飞速发展的今天 网络己经渗透到了方方面面 在嵌入式系统方面 和网络的 结合已经成为了嵌入式系统最新的研究方向 因此 在本系统中 以太网接口是必不可 少的 5 基于 FPGA 的 Nios II 系统的硬件设计 3 Can 总线接口 控制器局域网 Controller Area Network CAN 是国际上应用最广泛的国际标准现场 总线之一 已有许多大公司采用 CAN 总线技术 应用范围已不再局限于汽车行业 而 向过程控制 机械工业 机器人 数控机床 医疗器械及传感器等领域发展 4 键盘 鼠标和液晶屏 键盘和液晶屏是常用的输入输出设备 结合各具特色的嵌入式应用软件 可以把嵌 入式控制器的功能发挥更大 并且可以用于现场调试 2 2 主要器件选择 2 2 主要器件选择 中央芯片 FPGA 的芯片选用 Altera 公司的 Cyclone 系列 选用性价比较高的 ep1c6q240c8 也可以在稍稍改动下选用 ep1c12q240c8 协控制芯片 选用 Altera 公司的 Epm7128aetc100 7 Sram 选用 Integrated Device 公司的 Idt71v416s Flash 选用 AMD 公司的 Am29lv065d Mac 选用 Lan91c111 Can 选用 PHILIP 公司生产的 Sja1000 2 3 设计规划 2 3 设计规划 系统整体规划图 2 3 如下所示 6 基于 FPGA 的 Nios II 系统的硬件设计 EP1C6 12 Q240 7 图 2 3 基于 FPGA 的 Nios II 系统的硬件设计 3 Nios II系统模块分析 3 Nios II系统模块分析 3 1 设计方案的简介 3 1 设计方案的简介 做为一个开发实验应用平台 为了能到达 Nios 使用的最基本的要求 需要使用外 部 SRAM 和 FLASH 等 而做为控制类应用 本设计中加入了 CAN 总线接口 而考虑到未来 的发展趋势 网络应用 加入了网络模块 具体如图 2 3 系统时钟频率采用了 50Mhz 的有源晶振 保证能使系统得到很精确的时钟信号 总电源采用 9v 到 15v 输入 用 7805 转换成 5v 然后再使用 1117 芯片分别转换成 3 3v 和 1 5v 配置采用了多种方法 CPLD 的配置用 J5 口来实现 而 FPGA 的配置即可以采用 JTAG 口也可以采用 AS 模式来配置 JTAG 口是 J24 AS 模式口用的是 J28 使用了四个用户按键 还有一个硬件重启 P9 一个软件重启 P8 使用了 8 个发光二极管 LED0 到 LED7 还使用了两个 7 段数码管 串行配置器预留了 EPCS1 或 EPCS4 的接口 使用两个 RS232 接口 使用了两片 16 位的 SRAM 来组成一个 32 位的系统 共 1M 字节 一个 8M 字节的 FLASH 作为配置数据或存储文件用 3 2 Can模块的工作原理 3 2 Can模块的工作原理 3 2 1 概述概述 CAN 是 Control Area Network 的缩写 是控制器局域网的意思 它采用差分驱动 可在高噪声干扰环境下使用 加之检错能力强等方面优点 已被应用于很多领域并特别 适合于单片机的分布式控制系统 CAN 是全数字式现场控制设备互连总线 它能有效的支持分布式控制和实时控制 的串行通信网络 已成为一种国际标准 SIO11898 CAN 也由数据链路层及物理层构 成 数据链路层 LCC 与 MAC 可以由单片机的软件来实现 物理层可采用双绞线 从而 也很方便实现多个单片机的长距离的分布式控制 3 2 2 SJA1000 内部结构及引脚内部结构及引脚 8 基于 FPGA 的 Nios II 系统的硬件设计 9 SJA1000 的功能框图如图 3 2 2 a 所示 其引脚形式如图 3 2 2 b 管脚功能见 表 3 2 2 主要由接口管理逻辑 IML 信息缓冲器 含发送缓冲器 TXB 和接收缓冲器 RXFIFO 位流处理器 BSP 接收过滤器 ASP 位时序处理逻辑 BTL 错误管理逻辑 EML 内部振荡器及复位电路等构成 IML 接收来自 CPU 的命令 控制 CAN 寄存器的 寻址并向主控器提供中断信息及状态信息 CPU 的控制经 IML 把要发送的数据写入 TXB TXB 中的数据由 BSP 处理后经 BTL 输出到 CAN BUS BTL 始终监视 CAN BUS 当检测到有效的信息头 隐性电平 控制电平 的转换时启动接收过程 接收的信息首先 要由位流处理器 BSP 处理 并由 ASP 过滤 只有当接收的信息的识别码与 ASP 检验 相符时 接收信息才最终被写入 RXB 或 RXFIFO 中 RXFIFO 最多可以缓存 64 字节的 数据 该数据可被 CPU 读取 EML 负责传送层中调制器的错误管制 它接收 BSP 的 出错报告 使 BSP 和 IML 进行错误统计 图 3 2 2 SJA1000 的内部结构及引脚 表 3 2 2 引脚功能 符 号 引 脚 说 明 AD7 AD0 1 2 23 28 多路地址 数据总线 ALE AS 3 ALE 输入信号 INTEL 模式 AS 输入信号 MOTOROLA 模式 CS 4 片选输入 低电平允许访问 SJT1000 RD E 5 微控制器的 RD 信号 INTEL 模式 或 E 使能信号 MOTOROLA 模 式 WR 6 微控制器的 WR 信号 INTEL 模式 或 RD WR 信号 MOTOROLA 模式 CLKOUT 7 SJA1000 产生的提供给微控制器的时钟输出信号 时钟信号来源于内 部振荡器且通过 基于 FPGA 的 Nios II 系统的硬件设计 编程驱动 时钟控制寄存器的时钟关闭位可禁止该引脚 VSS1 8 接地 XTAL1 9 输入到振荡器放大电路 外部振荡信号由此输入 注 XTAL1 引脚必须通过 15pF 的电容连到 VSS1 XTAL2 10 振荡放大电路输出 使用外部振荡信号时左开路输出 注 XTAL2 引脚必须通过 15pF 的电容连到 VSS1 MODE 11 模式选择输入 1 INTEL 模式 0 MOTOROLA 模式 VDD3 12 输出驱动的 5V 电压源 TX0 13 从 CAN 输出驱动器 0 输出到物理线路上 TX1 14 从 CAN 输出驱动器 1 输出到物理线路上 VSS3 15 输出驱动器接地 INT 16 中断输出 用于中断微控制器 INT 在内部中断寄存器各位都被置位 时低电平有效 INT 是开漏输出 且与系统中的其它 INT 是线或的 此引脚上的低电 平可以把 IC 从睡眠模式中激活 RST 17 复位输入 用于复位 CAN 接口 低电平有效 把 RST 引脚通过电 容连到 VSS 通过电阻 连到 VDD 可自动上电复位 例如 C 1 F R 50k VDD2 18 输入比较器的 5V 电压源 RX0 RX1 19 20 从物理的 CAN 总线输入到 SJA1000 的输入比较器 支配 控制 电 平将会 唤醒 SJA1000 睡眠模式 如果 RX1 比 RX0 电平高就读支配 控制 电平 反 之读弱势电平 如果时钟分频寄存器的 CBP 见表 49 被置位就忽略 CAN 输入比较器以减少内部延时 此时连有外部收发 电路 这种情况下只有 RX0 是激活的 弱势电平被认为是高而支配电平被认为是低 VSS2 21 输入比较器的接地端 VDD1 22 逻辑电路的 5V 电压源 3 2 3 SJA1000 的寄存器结构及地址分配的寄存器结构及地址分配 CAN 控制器工作模式的设定 数据的发送和接收等都是通过这些寄存器来实现的 时钟分频寄存器 OCR 用于设定 SJA1000 工作于 BASIC CAN 还是 PeliCAN 还用于 CLKOUT 引脚输出时钟频率的设定 在上电初始化控制器时必须首先设定 在工作模 10 基于 FPGA 的 Nios II 系统的硬件设计 式下 控制寄存器 CR 用于控制 CAN 控制器的行为 可读可写 命令寄存器 CMR 只 能写 状态寄存器 SR 只能读 而 IR ACR AMR BTR0 BTR1 OCR 在工作模式 下读写无意义 通常 在系统初始化时 先使 CR 0 1 SJA1000 进入复位模式 在 此模式下 IR ACR AMR BTR0 BTR1 及 OCR 均可读可写 此时设置相应的初值 当退出复位模式时 SJA1000 即按复位时设定的相应情况工作于工作模式 除非再次 使芯片复位 否则上次设定的值不变 当需要发送信息时 若发送缓冲器空闲 由 CPU 控制信息写入 TXB 再由 CMR 控制发送 当接收缓冲器 RXFIFO 未满且接收信息通过 了 ASP 则接收到的信息被写入 RXFIFO 可通过两种方法读取接收到的信息 一种方 法是 在中断被使能的情况下 由 SJA1000 向 CPU 发中断信号 CPU 通过 SR 及 IR 可以识别该中断 并读取数据释放接收缓冲器 另一种方法是直接读取 SR 查询 RXFIFO 的状态 当有信息接收时 读取该信息并释放接收缓冲器 当接收缓冲器中有 多条信息时 当前的信息被读取后 接收缓冲器有效信号会再次有效 通过中断方式或 查询方式可以再次读取信息 直到 RXFIFO 中的信息被全部读出为止 当 RXFIFO 已 满 如还有信息被接收 此接收信息不被保存 且发出相应的缓冲器溢出信号供 CPU 读取处理 3 3 Mac模块的工作原理 3 3 Mac模块的工作原理 LAN91C111 是 SMSC 公司为嵌入式应用系统推出的第三代快速以太网控制器 LAN91C111 的芯片上集成了遵循 SMSC CD 协议的 MAC 媒体层 和 PHY 物理层 符合 IEEE802 3 802 U 100Base Tx 10Base T 规范 其系统结构如图 3 3 所示 EPROM 接口 总线 接口 模块 DMA 仲裁模块 内存管理模块 内部 RAM CSMA CD 介 质 无 关出口 10 100PHY 可 选 的 部 PHY 控制总线 地址总线 数据总线 RJ 45 图 3 3 LAN91C111 系统结构 该以太网控制器的主要功能如下 自适应地选传输速率 支持 10Mb s 100Mb s 11 基于 FPGA 的 Nios II 系统的硬件设计 充分支持全双工交换式以太网 支持突发数据传输 8k 字节的内部存储器用作接收发送的 FIFO 缓存 增强式能量管理功能 支持总线 8 位 16 位 32 位的 CPU 访问 提前发送和接收 LAN91C111 以太网控制器遵循 IEEE 颁布的 802 3 以太网传输协议 其 8 32 位数据 总线接口单元通过控制总线 地址总线和数据总线与外部的 CPU 相连 外部数据可以 8 位 16 位或 32 位的方式与 LAN91C111 进行交换 该电路还集成了 EEPROM 接口 自 举时再通过 EEOROM 接口输入到芯片中 从而实现自动初始化 总线仲裁器 Arbiter 用来监视以太网总线的数据交流情况 一旦发生阻塞 仲裁器一方面通过总线接口单元 与外部 CPU 联系 另一方面控制内存控制单元 MMU 实现总线数据协调 内存控 制单元可控制 8kB 动态 SRAM 的存储情况 实现与 DMA 控制器之间的数据联络 DMA 控制器与总线控制器一起控制 DMA 与以太网协议处理器 EPH 之间的数据交换 以 太网协议处理器 EPH 之间的数据交换 以太网协议处理器出来的数量最终经过 10Mb s 100Mb s 的物理层 PHY 直接到达以太网总线 3 4 SRAM模块的工作原理 3 4 SRAM模块的工作原理 由于 FPGA 片内的存储器的容量有限 在一般的 SOPC 系统应用中 外接的 SRAM 总是 必不可少的 一般情况下 在 Nios 系统中使用通用的异步 SRAM 静态随机存储器 Nios CPU 通过 Avalon 总线访问外部的异步 SRAM 由于 SRAM 的数据端口一般都设计成输入复 用 需要在系统中加入一个三态总线桥 来完成 SRAM 读写时序与内部 Avalon 同步总线 的衔接 在 Nios 系统工作时 外接的 SRAM 一般存放运行程序和数据 对 SRAM 的操作速度通 常是比较快的 一般的高速 SRAM 的读写速度在 10ns 左右 完全可以满足 Nios 系统工作 在 50Hz 的要求 现在的 SRAM 的数据接口的位宽一般为 16 位 可以使用两片 SRAM 构成 32 位的存储 器结构 以发挥 Nios32 位 CPU 的性能 可是 SRAM 是挥发型的存储器 在掉电后 在 SRAM 中存储的内容也随之消失 Nios 的程序不能在掉电的时候记忆在 SRAM 中 为了解决这个问题 一般还需要在系统中加入 掉电可保持数据的存储器 例如 Flash 这里采用的信片是 Idt71v416s 其引脚图如图 3 4 示 12 基于 FPGA 的 Nios II 系统的硬件设计 图 3 4 A0 A17 是地址输入信号引脚 CS n 是芯片选择引脚 在一个实际的系统中 一定具有很多片SRAM 芯片 所以需要选择究竟从那一片 SRAM 芯片中写入或者读取数据 WE n 是写入启用引脚 当SRAM 得到一个地址之后 它需要知道进行什么操作 究竟是写入还是读取 WE 就 是告诉SRAM 要写入数据 Vcc3 3 是供电引脚 D0 D15 是数据输入输出引脚 GND 是接地引脚 Output Enable OE n 这个引脚同WE 引脚的功能是相对的 它是让SRAM 知道要 进行读取操作而不是写入操作 SRAM 读取操作 1 通过地址总线把要读取的bit 的地址传送到相应的读取地址引脚 这个时候 WE 引脚 13 基于 FPGA 的 Nios II 系统的硬件设计 应 该没有激活 所以SRAM 知道它不应该执行写入操作 2 激活 CS 选择该SRAM 芯片 3 激活 OE 引脚让SRAM 知道是读取操作 第三步之后 要读取的数据就会从DOut 引脚传输到数据总线 SRAM 写入操作 1 通过地址总线确定要写入信息的位置 确定 OE 引脚没有被激活 2 通过数据总线将要写入的数据传输到Dout 引脚 3 激活 CS 引脚选择SRAM 芯片 4 激活 WE 引脚通知SRAM 知道要尽心写入操作 经过上面的四个步骤之后 需要写入的数据就已经放在了需要写入的地方 3 5 FLASH模块的工作原理 3 5 FLASH模块的工作原理 Flash 即闪速存储器 一般用于 SOPC 系统的程序存放和需要掉电保存的数据存放 但是 Flash 的读操作比 SRAM 慢 写速度更加缓慢 相对于 SRAM 而言 一般在 Nios 系统启动后 又 Nios 的 Boot 程序把存放在 Flash 中的程序复制到 SRAM 后 再运行 由于对于不同厂家的 Flash 的擦写时序往往是不一样的 Nios 只支持部分常用 Flash 对于不支持的 Flash 类型 就只能又 Nios 系统的设计者自己完成相关 Flash 擦 写子程序的编写 需要自己定义 Flash 组件 现在 大部分 Flash 支持 CFI 公共 Flash 接口 命令集 只要有个支持 CFI 的 Flash 组件 就可以支持大部分的 Flash 不需要再自己定制 Flash 组件了 一般情况下 Flash 与 SRAM 都挂接在同一个 Avalon 三态总线桥上 共用一条三态 总线 图 3 5 是选用的 AM29LV065D 的引脚 14 基于 FPGA 的 Nios II 系统的硬件设计 图 3 5 3 6 Nios CPU模块工作原理 3 6 1 Nios 处理器内部结构 3 6 Nios CPU模块工作原理 3 6 1 Nios 处理器内部结构 Nios CPU 采用五级流水线设计 采用了 Harvard 结构 使用指令和数据存储器分离 的存储结构 具有灵活的结构可修改性 可重勾性 可以支持自定制指令 Nios 通过 Avalon 总线与 CPU 外的设备打交道 Nios CPU 内部可以支持指令缓存和数据缓存 以提 高存储器效率 Nios CPU 具有灵活的用户可定制的中断控制功能 支持多种中断 并可以在生成 Nios CPU 时 关闭某些高级中断特性 Nios CPU 可以支持片上调试 通过 OIC 模块 片上 JTAG 调试接口模块 可以实现 指令单步 断点 连续运行等调试功能 以下是 Nios CPU 的内部结构图 3 6 1 15 基于 FPGA 的 Nios II 系统的硬件设计 16 图 3 6 1 Nios CPU 内部结构示意图 3 6 2 内部寄存器组织 3 6 2 内部寄存器组织 Nios32 寄存器由通用寄存器和控制寄存器两类寄存器构成 也可以称为寄存器 文件 很大 但 Nios 有一个依存器窗口的概念 在软件 上并 寄存器的寄存器窗口移动无关 它们总是可见的 控制寄存器 主要 表 3 6 2 10 9 4 1 0 D 指令 译码器 时钟 时能 中断 控制 通用寄存器文件 Opeiand fetch Q Q control 程序计数器 Nios32 结构中含有一个较大的通用寄存器堆 Register file 通用寄存器堆的大小是硬件上可变的 可以在 128 个 256 个 512 个中选择 每个寄存器都是一个字 即 32 位 虽然 Nios32 的通用寄存器容量 非 128 256 个或者 512 个通用寄存器都是可见的 可被访问的 只有处于当前寄 存窗口的 32 个寄存器才可见 而所谓在寄存器窗口外的通用寄存器不能被访问 这个 含有 32 个寄存器的寄存器窗口是可以移动的 每次移动 16 个寄存器 在这个寄存器窗 口中 32 个寄存器按照功能的不同被分配为 4 组 in 输入 local 局部 out 输 出 giobal 全局 而控制寄存器与通用 有下列寄存器 31 18 17 11 存器K 寄 PC 程序计数器 ct19 Set ie 义 任何的写操作都会设置STATUS中IE位为1 读操作返回结构未定 基于 FPGA 的 Nios II 系统的硬件设计 ct18 CLR IE 任何的写操作都会设置STATUS中IE位为0 读操作返回结构未定 义 ct17 DCACHE 数据缓存行失效 ct16 CPU ID CPU ID ct15 ICACHE 指令缓存行失效 ct14 保留 ct13 保留 ct12 WVALLD HI LIMIT LO LIMIT ct11 ISTATUS Saved status ct10 STATUS DCCWP N V Z CICIE IPRI 31 18 9 4 17161514 8 3 2 1 0 3 6 33 6 3 存储器组织 存储器组织 到 32 位 即可寻址 4GB 的地址空间 Nios32 支持位宽为 8 位 16 位 端模式进行数据访问 在 CPU 内部可以使用指令缓存和数据缓存以 提高 5 1 接寻址 简指令集架构 处理器 对于 Nios16 和 Nios32 这两种处理 器 很少涉及汇编语言程序设 计 3 7 协控制芯片模块工作原理 3 7 协控制芯片模块工作原理 MAX7128 模块 是一个供可编程逻辑设计者编程试验的功能模块 上面有一片 ALT Nios32 位地址可达 32 位数据位宽的存储器 对于位宽不为 32 位的存储器 或外设 在操作过程中会进 行动态地址对齐 Nios CPU 采用小 存储器操作效率和速度 但在进行外设数据操作时 可以饶过缓存进行 Nios 支持多种寻址方式 主要有 6 位立即数寻址 寄存器直接寻址 寄存器间接寻址 带偏移的寄存器间 3 6 4 Nios 指令集 3 6 4 Nios 指令集 Nios 是一个 RISC 精 它们的指令集是有差异的 需要不同的编译器的支持 Nios32 和 Nios16 都由 GND C C 进行 Nios 程序的开发 ERA 公司的 EPM7128SLC100 芯片 四个 LED 电源指示灯和一个 10 脚下载插头 与 EP1K30 器件相比 它器件容量较小 输出引脚少 但该器件是非易失性器件 下载 17 基于 FPGA 的 Nios II 系统的硬件设计 的程序掉电不丢失 它也可以完成许多逻辑设计功能 3 7 1 EPM7128器件简介 3 7 1 EPM7128器件简介 EPM7128是MAX7000系列器件 采用0 8 m CMos EPROM技术制造 是高密度 高性 能的CMOS EPLD 可擦除可编程的逻辑器件 器件 它分为8个逻辑阵列块 LAB 每一LAB 又分为16个宏单元 其宏单元由逻辑阵列 乘积项选择矩阵和可编程触发器三个功能块 组成 它共有2500个可用门 128个宏单元组成 100个外部引脚 8个逻辑阵列块通过 可编程连线阵列 PIA 与全局总线连在一起 全局总线由所有的专用输入 I O引脚和 宏单元馈给信号 EPM7128的4个专用输入 既可以作为通用输入 也可以作为每个宏单 元和I O引脚的高速 全局控制信号 如时钟 Clock 清除 Clear 和输出 Output Enable 等 逻辑阵列实现组合逻辑 给每个宏单元提供5个乘积项 乘积项选择矩阵 分配这些乘积项作为到 或 门和 异或 门的主要逻辑输入 以实现组合逻辑函数 或者把这些乘积项作为宏单元中触发器的辅助输入 比如 清除 置位 时钟和时钟使 能控制 每个宏单元的1个乘积项可以反相后回送到逻辑阵列 这个 可共享 的乘积 项能够连接到同一个LAB中任何其它乘积项上 根据设计的逻辑需要 MAx PLus l开发 系统将自动优化乘积项的分配 每个宏单元的触发器可以单独地编程为具有可编程时钟 控制的D触发器 T触发器 SR触发器或JK触发器 另外只要需要 也可将触发器旁路 实现组合逻辑工作方式 每个触发器也支持异步清零和异步置位功能 乘积项选择矩阵 分配乘积项来控制这些操作 MAX70OO中有可编程连线阵列 PIA IlO控制 并且编程 具有保密性 另外还增加了可编程速度 功率控制和电压摆率的控制 18 基于 FPGA 的 Nios II 系统的硬件设计 4 焊接与调试 4 1 元件焊接 4 1 元件焊接 4 1 1 焊接调试工序焊接调试工序 焊接之前先检测电路板 尽可能的多测量 比如电源与其他部分是否短路等 不需要的外围电路部分的元件尽量不要焊接 焊接完基本部分的电阻电容后 焊接电源部分 先调试电源 正确后再焊接其他元 件 先调试 Fpga 和 Sram 部分 测量硬件电路连通并无短路的情况下 在不加电源的情 况下对其进行检测 看电源部分与地等是否有短路的情况发生 之后加电测量电压 接 近 3 3v 的 1 5v 的是可调的 设置下载模式 Msel0 和msel1 这两个接到Gnd 用导线将其连接到Gnd或VCC3 3 对其进行下载测试 成功后 编写小程序 检测是否正确 之后焊接 CPLD 和 Flash 再进行检测 其他部分略 4 1 2 焊接调适过程发现的错误 焊接调适过程发现的错误 发现 Q3 的 1 脚未接 Gnd 电源电路有所改动 cycloneII 的芯片是用 1 2 伏内核 电压 可用 Fan1589 芯片 这个芯片使用时有技巧 Cs3 要接到 Vcc3 3 不是接到 Gnd PLD Reconfigreq n 没有连接 不过这个可以不用 并无大碍 还有很多其它的问题 是由于焊接问题引起的 在此不说了 注意 Vcc3 3 和 Gnd 之间的电阻为 330 欧姆左右 Vcc1 5 和 Gnd 之间的电阻为 150 欧 姆就得了 其他的没啥了 4 2 电源模块的调试 4 2 电源模块的调试 焊接过后的电路板 很可能存在短路 虚焊的情况 如果你此时直接通入电源的话 很可能造成主芯片的发热和烧毁 我已经出现这样的情况了 焊接好电路后 直接通入 电源 FLASH 就开始发热 直到烫手 这时一定不要轻举妄动 都花一点时间测试电源 部分的正确 电源模块需要最先调试 有一个稳定的电源才能保证系统的正常运行 最先调试是 保证输出稳定的电压 合理的电流 以免造成系统元件的损坏 由于买到的元件与原理图上的元件的不同 在使用时要注意管教的顺序和功能 在 19 基于 FPGA 的 Nios II 系统的硬件设计 本设计中选用的是 LM1085 的芯片 电路如原理图 但实际上 5 伏的电源由 7805 来提供 3 3 伏与 1 5 伏的电源使用的却是 1117 芯片 所以在使用的时候需要注意管教的顺序 在 FPGA 内核电压调试上 刚开始使用输出电压可调的芯片 但由于负载上仅有 100 多欧的电阻 所以使得电源不能保证输出在 1 5 伏上 因此使用了恒定输出 1 5 的电源 芯片 4 3 主芯片 FPGA 模块的调试 4 3 主芯片 FPGA 模块的调试 先验证 FPGA 配置数据下载的正确性 刚开始没有将跳线进行设置 而是将它悬空 所以数据得不到正确的下载 因此不能将跳线悬空 否则数据将得不到正确配置 对它进行简单的验证 八个 LED 的公共点是 GND 所以要点亮 LED 需要在管脚上输 出高电平 七段数码管在电路上是共阳极的 但只找到一个共阳极的七段数码管 另外 一个我使用了共阴极的数码管 将两个接地管脚悬空后用跳线的方式连接到 GND 上 因 此 在控制上 要输出低电平才能点亮那个共阳极的数码管 输出高电平点亮共阴极的 数码管 目前只调试了这些 作为正常的使用 还应该调试出 SRAM 但目前也可以使用 FPGA 内部的 SRAM 来做简单的应用 接下来要调试 SRAM 和 LED 20 基于 FPGA 的 Nios II 系统的硬件设计 5 Nios II系统设计初步 5 Nios II系统设计初步 5 1 SOPC设计用工具 5 1 SOPC设计用工具 SOPC设计包括以32位Nios软核处理器为核心的嵌入式系统的硬件配置 硬件设计 硬件仿真 软件设计 软件调试等 SOPC 系统设计的基本软件工具主要有 Quartus II 用于完成 Nios 系统的综合 硬件优化 适配 编程下载和硬件系统 测试 SOPC Builder 它是 Altear Nios 嵌入式处理器开发软件包 用于实现 Nios 系统 的配置 生成 Nios 系统相关监控和软件调试平台的生成 Matlab DSP Builder 可借助生成 Nios 系统的硬件加速器 进而为其定制新的指 令 ModelSim 用于对 SOPC Builder 生成的 Nios 的 HDL 描述进行系统功能仿真 Nios II IDE 软件开发调试环境 5 2 Nios系统硬件开发流程 5 2 Nios系统硬件开发流程 与传统嵌入式系统设计不同 Nios 系统的开发非硬件开发和软件开发两个流程 硬 件开发过程包括由用户定制系统硬件构成 然后由计算机完成系统硬件系统和对应的开 发软件系统生成 软件设计则与传统方式比较接近 图 5 2 1 所示的是 Nios 系统开发的流程图 概括了利用 SOPC 工具实现 Nios 应用 系统完整设计流程 Nios 系统开发的第一步是设计规则 需要根据产品电路系统的功能特点 性能指标 功耗成本等因素确定系统的软硬件结构与配置 Nios 系统的硬件结构及各个软件模块 完成的基于 Nios 的 SOPC 系统是一个软硬件复合的系统 在开发时可以分为硬件和 软件两个部分 在实际设计过程中 往往会遇到这样一种情形 所需要的功能既可用软 件的方式来实现 也可以用纯硬件逻辑来实现 若用硬件的方式来实现 显然需要占用 额外的硬件资源 但是可以保证系统工作速度不受影响 可以不增加硬件逻辑 但动态 扫描需要占用 CPU 的处理时间 增加了软件结构和编写的复杂度 若对系统的速度没有 特殊要求 则可考虑用软件承担更多的功能 在设计这一步 就要综合考虑确定哪些功 能用硬件哪些用软件实现 一般来说 用软件实现在设计上容易修改或者增删 查错也比较容易 又几乎不增 加占用的硬件资源 所以 在设计规则下 当需要的软硬件代价相当并保证性能的情况 21 基于 FPGA 的 Nios II 系统的硬件设计 下 软件实现是被优先考虑的 设计规划 自定义外设 指令 SOPC Builder Quarus etc 开发自定制硬件模 块的驱动或字程序 SOPC Builder 定义 Nios 系统模 块 定制 SDK SOPC Builder OS 移植 SOPC Builder SOPC Builder 图 5 2 1 确定好软硬件模块的划分 就可以开始具体的设计过程了 对于通常的嵌入式系统 开发 CPU 的硬件构成是不可更改的 因而外围设备的变动也受到了 CPU 的限制 甚至 整个嵌入式系统的硬件已经固定 难以更改 因而通常的嵌入式开发更多的是 PCB 设计 及软件开发 换言之 通常的嵌入式系统开发主要是软件开发 然而 Nios 系统开发则 不同 Nios 是一个可灵活定制的 CPU 它的外设是可选的 IP 核或自定制逻辑 可以根 据系统设计要求 通过 SOPC Builder 向导式的界面定制裁剪得当的 SOPC 系统 在设计 规划后 分为硬件开发与软件开发两个流程 Nios 的硬件设计流程就是为了定制合适的 CPU 和外设 然后在 SOPC Builder 和 生成系统模Nios 块 SOPC Builder 编写应用程序 SOPC Builder 锁定引脚 硬件编 辑 Quarus 硬件原型设计 Nio 开发版 编译 连接 调试 SOPC Builder 软件原型设计 开发版 Nio 基于的NiosSOPC 系统实现 22 基于 FPGA 的 Nios II 系统的硬件设计 Quartus II 中实现 由图 5 2 1 可知 硬件设计流程中 可以灵活定制 Nios CPU 的许 多特性甚至指令 可以使用 Alera 提供的 IP Core 来加快设计者开发 Nios 外设的速度 提高外设的性能 也可以使用第三方的 IP Core 或者使用 VHDL 来自己定制外设 外设定义完成后 即可对 Nios CPU 和各外设模块的特性 大小及在系统中地址分 配等进行设定 接下去是启动 SOPC Builder 使之生成用于综合的硬件语言描述 然 后锁定端口引脚 启动 Quartus II 对生成的 Nios 系统描述文件进行综合 适配和下 载 在 Nios 的硬件系统生成的同时 SOPC Builder 帮助开发者生成相应的 SDK 软件 开发包 在生成的 SDK 基础之上 开发者可以进入软件开发流程 在这个部分 开发 几乎与通常的嵌入式系统的开发没有区别 唯一的不同在于 设计者所面对的嵌入式系 统是自己定制的 裁剪过的 因此 可能受到硬件的局限会小些 开发者可以使用汇编 或者 C 语言来进行程序设计 使用 GNU 工具进行程序的编译连接以及调试 5 3 Nios系统软件开发流程 5 3 Nios系统软件开发流程 Nios 软件开发流程包含有 6 个主要步骤 如图 5 2 2 获取目标 Nios 系统 SDK 建立和编译应用软件 下载可执行代码到开发板 调试代码 转换代码为自启动代码 移植到目标硬件 图 5 2 2 Nios 软件开发流程 Nios CPU 之后 就会在其工作目录下生成该 Nios CPU 系统 发环境是一个用 Cygwin 模拟的 Unix 控制台环境 如果直 5 3 1 获取目标 Nios 系统 SDK 5 3 1 获取目标 Nios 系统 SDK 利用 SOPC Builder 创建完成 的 SDK 子目录 一般地 进行 Nios 软件开发都是在该 SDK 目录环境下进行开发的 SDK 中所包含的头文件和库文件 为软件开发人员省去了创建硬件映射表和编程底层硬 件子程序的基础性编程操作 5 3 2 建立和编译应用软件 5 3 2 建立和编译应用软件 Windows 下的 Nios 软件开 23 基于 FPGA 的 Nios II 系统的硬件设计 接在该控制台窗口下编写应用软件源程序 可以使用 Cygwin 自带的文本编辑器 对于 中小规模的软件项目 一般使用 nios build 批处理命令就足够编译软件源程序了 5 3 3 下载可执行代码到开发板 5 3 3 下载可执行代码到开发板 通过使用 nios run 批处理脚本 可以将第二步编译生成的可执行代码下载到开发 板上 并且立即执行该代码 Nios 开发包中的 GERMS 监控程序允许用户运行可执行代码 进行内存读写操作 装载大块代码到内存区 以及 Flash 内存擦写操作等 5 3 4 调试代码 5 3 4 调试代码 如果在源程序中使用了 printf 函数输出调试信息 那么该调试信息将被传送到 标准输入输出端口 STDIO 上 Nios 开发板一般将 STDIO 指向一个串口或 Nios OCI 调试器模块 并将 nios run 所在的控制台窗口作为消息显示终端 通过使用 Nios 开发 板自带的 GNU debugger GDB 调试器可以对 out 格式的可执行代码进行调试 如果调 试过程中发现问题 那么就要返回到第 2 步重新修改源程序 然后编译 再次调试 直 到程序调试通过 5 3 5 转换代码为自启动代码 5 3 5 转换代码为自启动代码 应用程序代码完全调试通过后 还可以将可执行代码存储到开发板上的 Flash 存储 器中 之后 每次 Nios CPU 复位重启后就会自动执行该可执行代码 在开发板上一般 使用片外或片内存储器来存储非易失性代码 如果程序代码比较小 那么就可以将其放入 Cyclone 芯片的片内存储器中 Nios 硬件开发人员在 SOPC Builder 环境下 通过为片内 RAM 或 ROM 指定初始化文件将程序 代码放进片内存储器中 在这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学音乐教学:校园植物主题歌曲创作与演唱指导论文
- 运动损伤知识普及对学生身体素质的促进论文
- 艺术插花室管理制度
- 花茶厂员工管理制度
- 茶叶审评室管理制度
- 陶瓷特价砖管理制度
- 财务会计课题申报书:《高职院校财务会计教学瓶颈与对策》课题申报材料
- 课题申报书:新质生产力驱动下职业教育专业结构优化与转型升级探索
- 建筑工程技术施工员专业介绍
- 大班社会收获果实少儿英语幼儿教育教育专区
- TB10092-2017 铁路桥涵混凝土结构设计规范
- 《脑室内出血》课件
- 长城招聘的心理测评答案
- 中小学食堂工作从业人员安全培训会议记录(40学时全)
- 酒店保洁服务投标方案(完整技术标)
- 中山市公安局三乡分局辅警招聘考试题库2023
- 穴位埋线疗法疗法
- 装饰装修工程售后服务具体措施
- 16J607-建筑节能门窗
- 小学二年级数学下册无纸化测试题
- 原材料安全库存管理制度
评论
0/150
提交评论