当前位置:首页 >> 信息与通信 >>

基于fpga的nios ii硬件开发论文


基于 FPGA 的 Nios II 系统的硬件设计

毕业设计(论文)说明书

课题名称 基于 FPGA 的 Nios II 系统的硬件开发

-1-

基于 FPGA 的 Nios II 系统的硬件设计

1.
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 1.2.1

Nios II处理器的优点特性 可定制特性集

采用 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的发展现状及趋势

随着低复杂度 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.
2.1 功能需求

Nios II的总体设计要求

嵌入式系统的构架可以分成四个部分: 处理器、存储器、输入输出和软件。
软件

输入

处理器

输入

存储器

图 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

主要器件选择
中央芯片:FPGA 的芯片选用 Altera 公司的 Cyclone 系列,选用性价比较高的

ep1c6q240c8,也可以在稍稍改动下选用 ep1c12q240c8; 协控制芯片:选用 Altera 公司的 Epm7128aetc100-7; Sram: 选用 Integrated Device 公司的 Idt71v416s; Flash:选用 AMD 公司的 Am29lv065d; Mac:选用 Lan91c111; Can:选用 PHILIP 公司生产的 Sja1000;

2.3

设计规划
系统整体规划图 2.3 如下所示:

-6-

基于 FPGA 的 Nios II 系统的硬件设计

EP1C6 ( 12 ) Q240

图 2.3

-7-

基于 FPGA 的 Nios II 系统的硬件设计

3.
3.1 设计方案的简介

Nios II系统模块分析

做为一个开发实验应用平台,为了能到达 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 3.2.1

Can模块的工作原理 概述

CAN 是 Control Area Network 的缩写,是控制器局域网的意思。它采用差分驱动, 可在高噪声干扰环境下使用,加之检错能力强等方面优点,已被应用于很多领域并特别 适合于单片机的分布式控制系统。 CAN 是全数字式现场控制设备互连总线,它能有效的支持分布式控制和实时控制 的串行通信网络,已成为一种国际标准(SIO11898) 。CAN 也由数据链路层及物理层构 成。数据链路层 LCC 与 MAC 可以由单片机的软件来实现;物理层可采用双绞线,从而 也很方便实现多个单片机的长距离的分布式控制。

3.2.2

SJA1000 内部结构及引脚
-8-

基于 FPGA 的 Nios II 系统的硬件设计

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 ALE/AS /CS /RD /E /WR CLKOUT 引 脚 1.2 23-28 3 4 5 6 7 多路地址/数据总线 ALE 输入信号(INTEL 模式),AS 输入信号(MOTOROLA 模式) 片选输入,低电平允许访问 SJT1000 微控制器的/RD 信号(INTEL 模式)或 E 使能信号(MOTOROLA 模 式) 微控制器的/WR 信号 (INTEL 模式) RD/ /WR) (MOTOROLA 或 ( 信号 模式) SJA1000 产生的提供给微控制器的时钟输出信号,时钟信号来源于内 部振荡器且通过
-9-

说 明

基于 FPGA 的 Nios II 系统的硬件设计

编程驱动,时钟控制寄存器的时钟关闭位可禁止该引脚。 VSS1 XTAL1 XTAL2 MODE VDD3 TX0 TX1 VSS3 8 9 10 接地 输入到振荡器放大电路;外部振荡信号由此输入 。 注:XTAL1 引脚必须通过 15pF 的电容连到 VSS1. 振荡放大电路输出:使用外部振荡信号时左开路输出 ; 注:XTAL2 引脚必须通过 15pF 的电容连到 VSS1.

11 模式选择输入:1-INTEL 模式 0-MOTOROLA 模式 12 输出驱动的 5V 电压源 13 从 CAN 输出驱动器 0 输出到物理线路上 14 从 CAN 输出驱动器 1 输出到物理线路上 15 输出驱动器接地 中断输出,用于中断微控制器:/INT 在内部中断寄存器各位都被置位 时低电平有效: /INT 是开漏输出,且与系统中的其它/INT 是线或的:此引脚上的低电 平可以把 IC 从睡眠模式中激活。 复位输入,用于复位 CAN 接口(低电平有效):把/RST 引脚通过电

/INT

16

/RST VDD2

17 容连到 VSS 通过电阻 连到 VDD 可自动上电复位(例如 C=1μF;R=50k) 18 输入比较器的 5V 电压源 从物理的 CAN 总线输入到 SJA1000 的输入比较器:支配(控制)电 平将会 唤醒 SJA1000 睡眠模式;如果 RX1 比 RX0 电平高就读支配(控制) 电平,反 之读弱势电平;如果时钟分频寄存器的 CBP(见表 49) 被置位就忽略 CAN 输入比较器以减少内部延时(此时连有外部收发 电路); 这种情况下只有 RX0 是激活的; 弱势电平被认为是高而支配电平被认为是低

RX0 RX1

19 20

VSS2 VDD1

21 输入比较器的接地端 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模块的工作原理
LAN91C111 是 SMSC 公司为嵌入式应用系统推出的第三代快速以太网控制器。

LAN91C111 的芯片上集成了遵循 SMSC/CD 协议的 MAC (媒体层)和 PHY(物理层), 符合 IEEE802.3/802.U-100Base-Tx/10Base-T 规范,其系统结构如图 3.3 所示

EPROM 接口 CSMA/CD 数据总线 地址总线 控制总线 总 线 接 口 模块 DMA 介质无 关出口 可选的 部 PHY

仲裁模块

内存管理模块 10/100PHY 内部 RAM 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模块的工作原理

由于 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模块的工作原理

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 处理器内部结构

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 系统的硬件设计

D

指令 译码器 程序计数器

Q

Q

时钟 时能

Opeiand fetch

中断 控制 通用寄存器文件

control

图 3.6.1

Nios CPU 内部结构示意图

3.6.2

内部寄存器组织

Nios32 寄存器由通用寄存器和控制寄存器两类寄存器构成。 Nios32 结构中含有一个较大的通用寄存器堆(Register file,也可以称为寄存器 文件) ,通用寄存器堆的大小是硬件上可变的,可以在 128 个、256 个、512 个中选择。 每个寄存器都是一个字,即 32 位。 虽然,Nios32 的通用寄存器容量很大,但 Nios 有一个依存器窗口的概念,在软件 上并非 128、256 个或者 512 个通用寄存器都是可见的(可被访问的) ,只有处于当前寄 存窗口的 32 个寄存器才可见。而所谓在寄存器窗口外的通用寄存器不能被访问。这个 含有 32 个寄存器的寄存器窗口是可以移动的,每次移动 16 个寄存器。在这个寄存器窗 口中 32 个寄存器按照功能的不同被分配为 4 组:in(输入) 、local(局部) 、out(输 出) 、giobal(全局) 。 而控制寄存器与通用寄存器的寄存器窗口移动无关,它们总是可见的,控制寄存器 主要有下列寄存器: 表 3.6.2 31 …18 17.. …11 10 9… 4… …1 0 K 寄存器 PC 程序计数器 %ct19 Set_ie 义
- 16 -

任何的写操作都会设置 STATUS 中 IE 位为 1,读操作返回结构未定

基于 FPGA 的 Nios II 系统的硬件设计

%ct18 CLR_IE 义 %ct17 DCACHE %ct16 CPU_ID %ct15 ICACHE %ct14 -%ct13 -%ct12 WVALLD %ct11 ISTATUS %ct10 STATUS 31

任何的写操作都会设置 STATUS 中 IE 位为 0,读操作返回结构未定 数据缓存行失效 CPU ID 指令缓存行失效 保留 保留 HI_LIMIT Saved status DC … 18 17 IC IE 16 15 IPRI 14… 9 CWP 8… 4 N 3 V 2 Z 1 C 0 LO_LIMIT

3.6.3 存储器组织
Nios32 位地址可达到 32 位,即可寻址 4GB 的地址空间,Nios32 支持位宽为 8 位,16 位,32 位数据位宽的存储器,对于位宽不为 32 位的存储器(或外设),在操作过程中会进 行动态地址对齐. Nios CPU 采用小端模式进行数据访问。在 CPU 内部可以使用指令缓存和数据缓存以 提高存储器操作效率和速度,但在进行外设数据操作时,可以饶过缓存进行。 Nios 支持多种寻址方式,主要有: 5/16 位立即数寻址 寄存器直接寻址 寄存器间接寻址 带偏移的寄存器间接寻址

3.6.4

Nios 指令集

Nios 是一个 RISC(精简指令集架构) 处理器。对于 Nios16 和 Nios32 这两种处理 器,它们的指令集是有差异的,需要不同的编译器的支持。 Nios32 和 Nios16 都由 GND C/C++进行 Nios 程序的开发,很少涉及汇编语言程序设 计。

3.7

协控制芯片模块工作原理
MAX7128 模块,是一个供可编程逻辑设计者编程试验的功能模块,上面有一片

ALTERA 公司的 EPM7128SLC100 芯片、四个 LED 电源指示灯和一个 10 脚下载插头。 与 EP1K30 器件相比,它器件容量较小、输出引脚少,但该器件是非易失性器件,下载
- 17 -

基于 FPGA 的 Nios II 系统的硬件设计

的程序掉电不丢失。它也可以完成许多逻辑设计功能。

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.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

电源模块的调试
焊接过后的电路板, 很可能存在短路﹑虚焊的情况, 如果你此时直接通入电源的话,

很可能造成主芯片的发热和烧毁,我已经出现这样的情况了,焊接好电路后,直接通入 电源,FLASH 就开始发热,直到烫手,这时一定不要轻举妄动,都花一点时间测试电源 部分的正确。 电源模块需要最先调试,有一个稳定的电源才能保证系统的正常运行;最先调试是 保证输出稳定的电压、合理的电流,以免造成系统元件的损坏。 由于买到的元件与原理图上的元件的不同,在使用时要注意管教的顺序和功能,在
- 19 -

基于 FPGA 的 Nios II 系统的硬件设计

本设计中选用的是 LM1085 的芯片, 电路如原理图, 但实际上 5 伏的电源由 7805 来提供, 3.3 伏与 1.5 伏的电源使用的却是 1117 芯片,所以在使用的时候需要注意管教的顺序。 在 FPGA 内核电压调试上, 刚开始使用输出电压可调的芯片, 但由于负载上仅有 100 多欧的电阻,所以使得电源不能保证输出在 1.5 伏上,因此使用了恒定输出 1.5 的电源 芯片。

4.3

主芯片(FPGA)模块的调试
先验证 FPGA 配置数据下载的正确性,刚开始没有将跳线进行设置,而是将它悬空,

所以数据得不到正确的下载,因此不能将跳线悬空,否则数据将得不到正确配置; 对它进行简单的验证:八个 LED 的公共点是 GND,所以要点亮 LED 需要在管脚上输 出高电平;七段数码管在电路上是共阳极的,但只找到一个共阳极的七段数码管,另外 一个我使用了共阴极的数码管,将两个接地管脚悬空后用跳线的方式连接到 GND 上;因 此,在控制上,要输出低电平才能点亮那个共阳极的数码管,输出高电平点亮共阴极的 数码管。 目前只调试了这些, 作为正常的使用, 还应该调试出 SRAM; 但目前也可以使用 FPGA 内部的 SRAM 来做简单的应用,接下来要调试 SRAM 和 LED。

- 20 -

基于 FPGA 的 Nios II 系统的硬件设计

5.
5.1 SOPC设计用工具

Nios II系统设计初步

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系统硬件开发流程
与传统嵌入式系统设计不同, Nios 系统的开发非硬件开发和软件开发两个流程, 硬 件开发过程包括由用户定制系统硬件构成, 然后由计算机完成系统硬件系统和对应的开 发软件系统生成;软件设计则与传统方式比较接近。 图 5.2.1 所示的是 Nios 系统开发的流程图,概括了利用 SOPC 工具实现 Nios 应用 系统完整设计流程。 Nios 系统开发的第一步是设计规则。 需要根据产品电路系统的功能特点、 性能指标、 功耗成本等因素确定系统的软硬件结构与配置,Nios 系统的硬件结构及各个软件模块。 完成的基于 Nios 的 SOPC 系统是一个软硬件复合的系统, 在开发时可以分为硬件和 软件两个部分。在实际设计过程中,往往会遇到这样一种情形:所需要的功能既可用软 件的方式来实现,也可以用纯硬件逻辑来实现。若用硬件的方式来实现,显然需要占用 额外的硬件资源,但是可以保证系统工作速度不受影响,可以不增加硬件逻辑,但动态 扫描需要占用 CPU 的处理时间,增加了软件结构和编写的复杂度,若对系统的速度没有 特殊要求,则可考虑用软件承担更多的功能。在设计这一步,就要综合考虑确定哪些功 能用硬件哪些用软件实现。 一般来说,用软件实现在设计上容易修改或者增删,查错也比较容易,又几乎不增 加占用的硬件资源。所以,在设计规则下,当需要的软硬件代价相当并保证性能的情况
- 21 -

基于 FPGA 的 Nios II 系统的硬件设计

下,软件实现是被优先考虑的。
设计规划

自定义外设,指令 (SOPC Builder &Quarus|| etc.)

定制 SDK (SOPC Builder)

开发自定制硬件模 块的驱动或字程序 (SOPC Builder)

定义 Nios 系统模 块 SOPC Builder) (

OS 移植 (SOPC Builder)

生成 Nios 系统模 块 (SOPC Builder)

编写应用程序 (SOPC Builder)

锁定引脚、硬件编 辑(Quarus||)

编译、连接、调试 (SOPC Builder)

硬件原型设计 (Nio 开发版)

软件原型设计 (Nio 开发版)

基于 Nios 的 SOPC 系统实现

图 5.2.1 确定好软硬件模块的划分,就可以开始具体的设计过程了,对于通常的嵌入式系统 开发,CPU 的硬件构成是不可更改的,因而外围设备的变动也受到了 CPU 的限制,甚至 整个嵌入式系统的硬件已经固定,难以更改,因而通常的嵌入式开发更多的是 PCB 设计 及软件开发,换言之,通常的嵌入式系统开发主要是软件开发。然而 Nios 系统开发则 不同,Nios 是一个可灵活定制的 CPU,它的外设是可选的 IP 核或自定制逻辑,可以根 据系统设计要求,通过 SOPC Builder 向导式的界面定制裁剪得当的 SOPC 系统,在设计 规划后,分为硬件开发与软件开发两个流程。 Nios 的硬件设计流程就是为了定制合适的 CPU 和外设,然后在 SOPC Builder 和
- 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系统软件开发流程
Nios 软件开发流程包含有 6 个主要步骤,如图 5.2.2:
获取目标 Nios 系统 SDK

建立和编译应用软件

下载可执行代码到开发板

调试代码

转换代码为自启动代码

移植到目标硬件

图 5.2.2 Nios 软件开发流程 5.3.1 获取目标 Nios 系统 SDK 利用 SOPC Builder 创建完成 Nios CPU 之后,就会在其工作目录下生成该 Nios CPU 系统的 SDK 子目录。一般地,进行 Nios 软件开发都是在该 SDK 目录环境下进行开发的。 SDK 中所包含的头文件和库文件,为软件开发人员省去了创建硬件映射表和编程底层硬 件子程序的基础性编程操作。 5.3.2 建立和编译应用软件 Windows 下的 Nios 软件开发环境是一个用 Cygwin 模拟的 Unix 控制台环境。 如果直
- 23 -

基于 FPGA 的 Nios II 系统的硬件设计

接在该控制台窗口下编写应用软件源程序,可以使用 Cygwin 自带的文本编辑器。对于 中小规模的软件项目,一般使用 nios-build 批处理命令就足够编译软件源程序了。 5.3.3 下载可执行代码到开发板 通过使用 nios-run 批处理脚本,可以将第二步编译生成的可执行代码下载到开发 板上, 并且立即执行该代码。 Nios 开发包中的 GERMS 监控程序允许用户运行可执行代码, 进行内存读写操作,装载大块代码到内存区,以及 Flash 内存擦写操作等。 5.3.4 调试代码 如果在源程序中使用了 printf()函数输出调试信息,那么该调试信息将被传送到 标准输入输出端口(STDIO)上。Nios 开发板一般将 STDIO 指向一个串口或 Nios OCI 调试器模块,并将 nios-run 所在的控制台窗口作为消息显示终端。通过使用 Nios 开发 板自带的 GNU debugger(GDB)调试器可以对.out 格式的可执行代码进行调试。如果调 试过程中发现问题,那么就要返回到第 2 步重新修改源程序,然后编译,再次调试,直 到程序调试通过。 5.3.5 转换代码为自启动代码 应用程序代码完全调试通过后, 还可以将可执行代码存储到开发板上的 Flash 存储 器中。之后,每次 Nios CPU 复位重启后就会自动执行该可执行代码。在开发板上一般 使用片外或片内存储器来存储非易失性代码。 如果程序代码比较小,那么就可以将其放入 Cyclone 芯片的片内存储器中。Nios 硬件开发人员在 SOPC Builder 环境下,通过为片内 RAM 或 ROM 指定初始化文件将程序 代码放进片内存储器中。 在这种情况下, Nios 开发者可以使用自己的自启动代码来完成 替代 GERMS Monitor 监控程序。 5.3.6 移植到目标硬件 最后,当准备将软件设计实现在目标硬件平台上时,可能还是需要用到上述几步中 提到的实用工具进行代码下载和调试。如果硬件结构与开发板相差太大,可能还需要对 软件代码进行修改、调试,然后还是要用到 nios-run 命令、Nios OIC 调试器控制台或 GERMS Monitor 监控程序等。 最后,就是基于 Nios 的 SOPC 系统在实际产品上的实现。

- 24 -

基于 FPGA 的 Nios II 系统的硬件设计

6、实用例程
6.1 熟悉Nios II开发环境

Nios II 的开发涉及到多个软件工具,由于文档需要面向最广泛的开发者,在这一篇 中以一般的开发流程, 图文并列的方式进行探讨, 首先要正确安装 Altera 公司的 Quartus II4.2 或更高版本、 Nios II Development Kit 1.2 或更高版本的软件, 对软件安装不再赘述。 Nios II 开发分硬件开发和软件开发两个流程,硬件开发过程主要由用户定制系统硬 件, 然后由 SOPC Builder 等工具完成系统硬件和对应的开发软件生成; 软件设计和传统 方式类似,接近于 unix/linux 系统开发,软件开发又可以细分为 HAL 驱动程序开发和应 用系统开发。 以一个简单的基于 Nios II 的系统开发过程来介绍 Nios II 系统的开发过程,该系统 具有四个按钮,8 个 LED 输出,SDRAM,FLASH 硬件,实现简单的流水灯。项目名: Nios_Star。 1) 建立开发目录,D:\Nios_Star 2) 启动 Quartus II 3) 新建设计项目 File->New Project Wizard 按 Next。

在上图的输入表单中输入项目目录,项目名称和顶层模块名。 添加项目需要包含进来文件或非默认库,本例中使用默认设置。

- 25 -

基于 FPGA 的 Nios II 系统的硬件设计

上图中选择 FPGA 器件,本例中选 EP1C6Q240C8。 设定第三方综合、仿真、时间分析等 EDA 工具。本例选默认 按 Finish 生成项目 4) 建立顶层模块 File->New

选择 Block Diagram/Schematic File File->Save As 保存文件名为顶层模块名。 5) 建立系统模块
- 26 -

基于 FPGA 的 Nios II 系统的硬件设计

选择 Quartus II 菜单 Tools->SOPC Builder…,打开与 Quartus II 集成的 SOPC 开发工具 SOPC Builder。弹出下图:

输入系统名,本例中为:nios_star_cpu,HDL 选择 Verilog。 确认后进入 SOPC Builer 设计界面。在右上部分选择目标板和系统时钟,本例中目 标板选 FreeDev_board_cyclone_1c6,系统时钟默认 50M。

6) 加入 Nios CPU Core(必需)
- 27 -

基于 FPGA 的 Nios II 系统的硬件设计

首先加入的是 CPU 核,选择组件栏中的 Avalon Modules ->Nios II Processor 右键点 击,选择 Add New Nios II Processor Altera Corporation…,打开配置对话框如下图:

NiNIos II 提供三个选项,最小、标准、快速的 CPU 核,本例我们选最小核。 其他选项表单中都默认,点击 Finish 完成。 7) 加入 on_chip_memory 使用 FPGA 内部 RAM 资源,可以构成 RAM 或 ROM,速度快,特别在调试时因为 很少受外部连线等因素的限制很有用。组件栏中选择 Legacy Components->On-Chip Memory 打开界面,如下图:

本例中我们定义了 4k 字节的 RAM。
- 28 -

基于 FPGA 的 Nios II 系统的硬件设计

8)加入 JTAG_UART JTAG UART 在调试中非常有用,在调试中只要配置了 CPU、On-Chip Memory 和 JTAG UART 就可以完成一个最小系统了,这些硬件资源都在 FPGA 器件的上,涉及的 电路较少,比较容易正常工作,在调试时特别是自制开发板调试时很有效。在组件栏中 选择 Communication->JTAG UART,弹出 JTAG UART 。 9)加入 UART UART 就是通用异步收发器,NIOS II 系统可以通过串口和其他设备通讯,也可用于 仿真调试。波特率、数据位数、停止位数和校验方式按需要设置,本例选择默认配置, 只用到 RXD、TXD、GND 三根线。 在组件选择栏中选择 Communication->UART(RS232 series port)配置 UART,界面 如下:

10) 加入 Timer 在嵌入式系统应用中, 定时器是必不可少的, SOPC Builder 提供了一个定时器组件。 在组件拦中双击选择 Other->Interval timer 进入配置界面,我们选用 Full feature,1ms 一 次溢出事件。 11) 加入 Button_pio 在组件拦中双击选择 Other->PIO 进入配置界面,选 4 位,对应 4 个按钮。对于 PIO 有 4 种模式:输入(Input ports only) ;输出(Output ports only) ;三态(Tri-state ports) ; 双向口输入、输出(Both input and output ports) 在此选 Input ports only。在 Input Options 选项单我们配置了上升沿触发,生成中断 请求的模式。配置完成后右键单击 SOPC Builder 右半部分列表中的 pio_0,Rename 更 名为 button_pio.
- 29 -

基于 FPGA 的 Nios II 系统的硬件设计

12)

加入 Led_pio
- 30 -

基于 FPGA 的 Nios II 系统的硬件设计

发光二极管 LED PIO 设置和 button_pio 类似,只是模式是 Output ports only, 不再需 要中断生成,本例中配置了 8 位的 LED 输出。在组件拦中双击选择 Other->PIO 进入配 置界面。 配置完成后右键单击 SOPC Builder 右半部分列表中的 pio_0, Rename 更名为 led_pio。

13) 加入 Avalon 三态总线桥 异步 SRAM 和 Flash 的数据总线是三态的,Nios II CPU 和 SRAM、Flash 相接需要 Avalon 三态总线桥。 在组件栏中双击 Bridge->Avalon Tri-State Bridge,加入 Avalon 三态总线桥。

14)

加入 FLASH
- 31 -

基于 FPGA 的 Nios II 系统的硬件设计

在组件栏中双击 Memory->Flash Memory(common Flash Interface)进入配置。因根据 实际器件的地址和数据线宽度配置,其他参数本例中选默认值。

- 32 -

基于 FPGA 的 Nios II 系统的硬件设计

15) 锁定或调整存储器地址 选择 SOPC Builder 菜单 System->Auto-Assign Base Addresses 自动分配存储器地址。 选择 SOPC Builder 菜单 System->Auto-Assign IRQs 自动分配中断向量。 16)设置系统地址 单击 SOPC Builder 的 Next 按钮,进行 SOPC 系统地址分配的配置。

主要是配置 启动程序以及中断矢量表的内存位置。本例中选默认值。 17)生成系统 SOPC Builder 中单击 Generate 启动系统生成生成。

生成完成以后单击 EXIT 退出 SOPC Builder。
- 33 -

基于 FPGA 的 Nios II 系统的硬件设计

18)在 Nios_Star.bdf 文件上绘制顶层图。 双击 BDF 文件窗口, 出现 Symbol 对话框。 在对话框中点击 Project 目录。 Project 在 下选择 Nios_Star,会出现代表前面建立的 Nios 系统的大图标。

点击 OK,将其放入 BDF 文件中。将 Nios_Start 与输入输出接口连接,完成系统硬件设 计。下图中仅联接了系统 CLK、RESET、BUTTOM、UART 等。

19)引脚锁定 选择 assignments->pins 弹出引脚配置表单,根据 PCB 硬件连线设定内部信号和外
- 34 -

基于 FPGA 的 Nios II 系统的硬件设计

部引脚连线。在 SCH 和 PCB 设计时确定这些资源的连接。

20)编译系统 选择菜单 Tools->Compile Tool 启动编译

21)下载编程
- 35 -

基于 FPGA 的 Nios II 系统的硬件设计

选择 Tool->Programmer 启动下载并配置 FPGA。下载文件是 Nios_Star.sof

6.2 软件设计实例
在 Alter SOPC Builder 中,点击 Run Nios II IDE,启动 Nios II IDE,如下图:

在 Nios II IDE 中,选择 File -> New -> Project,开启 New Project 对话框。 选择 C/C++ Application,如下图。然后选择 Next,进入下一步。

- 36 -

基于 FPGA 的 Nios II 系统的硬件设计

填写 Project Name,比如 hello_led_1;在 Select Project Template 中,选择 Hello LED,然后选择 Next,进入下一步。 选择 Create a new system library named:,最后点击 Finish,创建项目。打开项 目中的文件: hello_led.c,进行适当的修改。 然后选择 Project->Build All,编译整个项目。 如果无误,可以看到以下信息:Build completed.然后,在 QuartusII 中,选择 Processing -> Star Compilation,开始编译整个项目。最后,选择 Tools ->Programmer,下载整个配置到 FPGA 中,如下图。下载成功后,可以看到 LED 的有规律的变化。

- 37 -

基于 FPGA 的 Nios II 系统的硬件设计

结束语

本设计经过前期的资料查找,方案论证、设计画图、模块调试等几个工作流程,大 体实现了本设计目标。由本次设计过程和综合调查研究可知,此设计具有广阔的市场前 景。 经过三个月设计,在吴老师的帮助下,以及自己的不懈努力,最终顺利完成了设计 任务。可以说这次设计任务是对我大学四年所学知识的一次大检阅。我深深地体会到搞 设计一定要有坚实的理论基础和实践基础, 立足于国情和市场要求, 以科学的理论依据, 运用理论联系实际的思想,充分论证其可行性,经济性,着重开发其先进性,新颖性。 经过这次毕业设计,我巩固了所学的各种专业知识,提高了独立分析实际问题和解 决问题的能力,增强了通过查阅、借鉴各种科技书籍来解决实际问题的能力,同时也提 高了自己的动手能力。

- 38 -



相关文章:
...航天大学金城学院大学生创新项目申报书(FPGA平台下基于Nios II...
位软核处理器 Nios II,定制整个软硬件系统,发挥 了 MCU 和 FPGA 的各自的...2、有条件的话,在相关期刊上发表 1 篇论文。 八、经费预算 1、项目开发套件...
基于fpga的嵌入式系统设计——复习题
基于fpga的嵌入式系统设计——复习题 - 《基于 fpga 的嵌入式系统设计》复习题 1、 名词概念解释: (1) ASIC,FPGA,SOC,SOPC,NIOS II,I/O ,IP ;(...
基于FPGA的数字存储示波器的设计_图文
示波器的硬件也成为了一个高速数据 采样的开发平台。...The FPGA built-in to NiosII as the core as ...把这些收 获做一个总结也是作为论文的一个总结。 ...
FPGA实验——基于Nios II软核处理器的设计流程
FPGA实验——基于Nios II软核处理器的设计流程_电子/电路_工程科技_专业资料。哈尔滨...Nios II IDE 10.0、 开发板 DE2-115 1、 3 实验内容 按照书上介绍的方...
基于FPGA软核,定制你的SoC
基于FPGA软核,定制你的SoC_计算机硬件及网络_IT/计算机_专业资料。原创的基于NIOS-II的手把手的操作。基于FPGA 软核,定制你的 SoC Date: 2016 12.29 Author: ...
基于CPLDFPGA的NOSII处理器设计
Nios II 是一个用户可配置的通用 RISC 嵌入式处理...(物理硬件中,我只用了一个 LED,观察 到 LED 是...基于FPGA的CPU设计 40页 免费 毕业论文——浅谈盗号...
FPGA 中基于nios ii 的LCD1602显示代码
FPGA 中基于nios ii 的LCD1602显示代码_信息与通信_工程科技_专业资料。FPGA ...基于fpga的nios ii硬件开... 38页 免费 第6章(2)_LCD1602显示原... 35页...
更多相关标签: