ZYNQ-ZedBoard设置Quad-SPI启动和SD驱动

简介: ZYNQ-ZedBoard设置Quad-SPI启动和SD驱动

Zedboard是第一款面向开源社区的Zynq-7000系列开发板,而Zynq-7000系列FPGA,也称为完全可编程(All Programable)SoC,是Xilinx一个有重大意义的产品系列。

image.png

FPGA里集成高性能的处理器内核一直是众多FPGA厂商以及客户的需求,Zynq-7000的面世标志着Xilinx在SoC集成度上的一个突破,实现了双核Cortex-A9 MPcore和最新的28nm 7系列可编程逻辑的紧密集成。

image.png

上图可以看出Zynq芯片内部可以分为两部分PS(Processing System)和PL(Programmable Logic),其中PS部分有点像传统的处理器内部结构,包括CPU核、图形加速、浮点运算、存储控制器、各种通信接口外设以及GPIO外设,而PL部分就是传统的可编程逻辑和支持多种标准的IO,它们之间通过内部高速总线互联。这种架构既提高了系统性能(处理器和各种外设控制的”硬核“),又简化了系统的搭建(可编程的外设配置),同时提供了足够的灵活性(可编程逻辑)。

Zedboard的一个简单框图,板上的外围功能都是围绕Zynq芯片

Zynq芯片的配置


因为是最新的芯片和开发套件,资料还是比较少的,而且基本都是大部头的英文。要用FPGA进行开发,首先要了解FPGA的配置过程。传统的SRAM型FPGA都是通过JTAG接口、外置非易失性存储器(PROM、FLASH)或者外部处理器一次性将程序下载到FPGA中配置。而Zynq芯片则不同,其内部集成了处理器硬核和可编程逻辑,所以它的配置启动是分阶段的。

Stage 0:bootROM过程,Zynq芯片PS部分有片上ROM和RAM,在芯片上电或者复位后,其中一个处理器会执行片上ROM的代码进行初始化,判断启动设备(boot device),将启动设备上的FSBL(first boot loader)代码拷贝到片上RAM内。

Stage 1:启动设备包括SPI FLASH、SD和JTAG,FSBL代码是用户自己定制的,拷贝到片上RAM后执行。包括初始化PS部分配置、配置PL部分逻辑、加载和执行SSBL(second boot loader)或应用程序。

Stage 2:上一阶段后硬件已经配置完成。这一阶段是可选的,完成Linux系统启动过程(U-BOOT)。

通过Zynq芯片的启动过程可以看到上电或者复位后片内处理器首先启动,然后根据MODE引脚判断启动方式,Zedboard的启动可以通过Quad-SPI FLASH、SD卡或者JTAG接口,如下表:

image.png

Zedboard上有两个JTAG,一个可以接Xilinx编程电缆,一个是USB转JTAG

1. Quad-SPI启动


板载SPI FLASH中预置了一个非常简单的程序,SPI-FLASH启动过程可以分为:

上电后,片上ROM程序执行,初始化后判断从SPI FLASH启动。

从SPI FLASH拷贝FSBL到片上RAM执行

FSBL执行,处理器从SPI FLASH读取比特流(bitstream)配置Zynq的PL部分PL配置完成后执行,点亮LED

首先要MODE跳线选择在SPI FLASH启动模式,如下图所示:

image.png

接通Zedboard电源,程序启动,因为是一个非常简单程序,所以启动配置过程非常快,蓝色LED(LD12)变亮说明Zynq芯片配置完成,程序执行后按照(10101010)逻辑点亮用户LED。

image.png

2. SD驱动


随板附送的SD卡中有一个演示的Linux文件系统,而且在Linux系统下有一些脚本例程用来控制Zedboard板上各种外设的功能,这与之前的FPGA调试很不一样,显示了Zynq芯片软硬件开发的强大和灵活性。

image.png

首先搭好Zedboard平台,连接12V电源(J20)、USB-UART接口(J14)到计算机、插上SD卡(J12)、VGA(J19)或者HDMI(J9)。

image.png

上图看到跳线J6必须短接,MODE跳线选择SD启动。

目录
相关文章
|
5月前
|
异构计算 内存技术
FPGA进阶(1):基于SPI协议的Flash驱动控制(一)
FPGA进阶(1):基于SPI协议的Flash驱动控制(一)
216 0
|
5月前
|
异构计算 内存技术
FPGA进阶(1):基于SPI协议的Flash驱动控制(二)
FPGA进阶(1):基于SPI协议的Flash驱动控制
66 0
|
7月前
NUC980修改内核支持spi-nand
NUC980修改内核支持spi-nand
97 2
|
7月前
|
测试技术 Perl
【ZYNQ】ZYNQ7000 UART 控制器及驱动应用示例
【ZYNQ】ZYNQ7000 UART 控制器及驱动应用示例
297 0
|
7月前
|
Perl
【ZYNQ】SPI 简介及 EMIO 模拟 SPI 驱动示例
【ZYNQ】SPI 简介及 EMIO 模拟 SPI 驱动示例
684 0
|
7月前
|
安全 测试技术
【ZYNQ】ZYNQ7000 全局定时器及其驱动示例
【ZYNQ】ZYNQ7000 全局定时器及其驱动示例
187 0
|
7月前
|
传感器 开发工具 芯片
【ZYNQ】ZYNQ7000 XADC 及其驱动示例
【ZYNQ】ZYNQ7000 XADC 及其驱动示例
194 0
|
7月前
|
测试技术
【ZYNQ】ZYNQ7000 私有定时器及其驱动应用示例
【ZYNQ】ZYNQ7000 私有定时器及其驱动应用示例
161 0
|
存储 固态存储 Linux
E2000从eMMC或SD启动U-boot和系统
E2000从eMMC或SD启动U-boot和系统
999 0
E2000从eMMC或SD启动U-boot和系统
|
Linux
总线驱动--SPI驱动(下)
总线驱动--SPI驱动
202 0