1)实验平台:正点原子开拓者FPGA 开发板
2)摘自《开拓者 Nios II开发指南》关注官方微信号公众号,获取更多资料:正点原子
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/index.html
![99337044edc23a650ce4536b30217b56.png](https://i-blog.csdnimg.cn/blog_migrate/4413cca894d89eeea11ee43fbb137ec7.jpeg)
第八章EPCS IP核
Altera 公司的 FPGA 芯片大多采用 EPCS 系列存储器作为配置数据的存储空间,带 Avalon
接口的 EPCS IP 核允许 Nios II 系统访问 EPCS 串行配置器件。Altera 提供集成到 Nios II 硬件
抽象层(HAL)系统库的驱动程序,允许用户使用 HAL 应用程序接口(API)来读写 EPCS 器
件。本章我们通过对 EPCS 的读写操作来学习 EPCS IP 核的使用。
本章包括以下几个部分:
8.1 简介
8.2 实验任务
8.3 硬件设计
8.4 软件设计
8.5 下载验证
简介
我们的开拓者开发板使用的 Flash 为采用 SPI 协议的串行 Flash,大小为 16Mbit。内部分
为 32 个扇区(sector),每个扇区有 256 页(page),每页有 256 个字节。该 Flash 兼容 EPCS,
可以使用 EPCS IP 核,通过 Nios II 系统对 Flash 执行以下操作:
(1) 在 Flash 器件中存储程序代码。EPCS 控制器自带 Boot-Loader 代码,因此 Nios II 系统
允许用户在 Flash 器件中存储程序代码。
(2) 存储非易失性数据,例如串行号、NIC 号和其他需要长久储存的数据。
(3) 管理 FPGA 配置数据。Flash 可存储 FPGA 的配置数据,并在上电时自动完成对 FPGA
的配置。具有网络接口的嵌入式系统可从网络上接收新的 FPGA 配置数据,并通过 EPCS 控制
器将新的配置数据下载到 EPCS 串行配置器件中。下面我们先来看一下 EPCS IP 核和 EPCS 芯
片的连接框图,如下图所示:
![91cf2131782779957c75131d6e925966.png](https://i-blog.csdnimg.cn/blog_migrate/3481143814a88b01392687bd6f1153f6.jpeg)
图 8.1.1 EPCS控制器IP核连接到外部EPCS芯片的结构框图
从上面的这个结构框图中,我们可以看到 EPCS Flash 器件的存储空间被分成了两个独立
的区域:配置存储空间和通用存储空间。配置存储空间主要用于存储 FPGA 配置数据,如果
FPGA 配置数据没有填满整个 EPCS 器件,那么剩下空间可以存储用户非易失性数据即通用存
储空间。
EPCS 控制器包含一个用于存储 Bootloader 程序的片上 ROM 存储器,当 EPCS 控制器与
Cyclone 和 Cyclone II 器件一起使用时,EPCS 控制器需要 512 字节的 Bootloader 的 ROM 存储
空间。当 EPCS 控制器与 Cyclone III、Cyclone IV、Stratix II 等器件一起使用时,EPCS 控制器
需要 1024 字节(也就是 1KB)的 Bootloader 的 ROM 存储空间。如果把 Nios II 处理器的复位
地址放在 EPCS 控制器 IP 核的基址处,可以让 Nios II 处理器从 EPCS 控制器 IP 核开始引导,
在这种情况下,复位后 CPU 首先执行引导 EPCS 控制器的 Bootloader ROM 中的代码,把存储
在 EPCS 中通用内存区域的数据复制到指定的 RAM 存储器,然后把系统控制权转移给存储在
RAM 中的程序。实现这些操作的程序代码无需用户编写,由 Nios II SBT for Eclipse 软件自动
生成。Nios II SBT for Eclipse 软件提供了编程 EPCS 的工具并编译产生用于存储在 EPCS 中文
件的程序代码。
EPCS 控制器有一个 Avalon-MM 从接口,这个接口提供访问 Bootloader 代码和控制寄存
器的能力。下表给出了 EPCS IP 核的寄存器描述。
![5ca130a91b7c35b32ff2a075cb5af6ee.png](https://i-blog.csdnimg.cn/blog_migrate/e7de9234d8b198cad459c0d85f532de2.jpeg)
图 8.1.2 EPCS IP核的寄存器描述
从 EPCS IP 核的寄