Chinaunix首页 | 论坛 | 博客
  • 博客访问: 242698
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 730
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-30 14:04
文章分类

全部博文(36)

文章存档

2014年(36)

我的朋友

分类: 嵌入式

2014-08-12 11:17:20

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

 

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接口,如下表:

 管脚

MIO6

MIO5

MIO4

MIO3

MIO2

跳线

JP11

JP10

JP9

JP8

JP7

JTAG Mode

Cascade JTAG

 

 

 

 

0

Independent JTAG

 

 

 

 

1

Boot Device

JTAG

 

0

0

0

 

Quad-SPI

 

1

0

0

 

SD card

 

1

1

0

 

PLL Mode

PLL used

0

 

 

 

 

PLL bypass

1

 

 

 

 

 

 

Zedboard上有两个JTAG,一个可以接Xilinx编程电缆,一个是USB转JTAG,我们使用的是usb转JTAG,在zedboard--单独PL实验(四)中仅仅使用了pl来完成实验,MIO【6:2】是全部接地的,使用的JTAG配置,这里的Demo有两种情况,从Quad-SPI FLASH启动和从SD卡启动。

 

1.       从Quad-SPI FLASH启动

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

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

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

FSBL执行,处理器从SPIFLASH读取比特流(bitstream)配置Zynq的PL部分

PL配置完成后执行,点亮LED

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

 

 

2. SD启动

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

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

该Linux文件系统没有图形界面或者控制台,所以必须通过串口或者ssh访问。如果没有安装过USB-UART驱动,可以先通电后安装USB串口驱动。安装好驱动后打开一个串口监视器,可以使用XP的超级终端或者其他的串口调试工具。

安装usb-uart串口驱动

zedboard使用的是Cypress的uart转usb芯片

https://secure.cypress.com/?mpn=CY7C64225-28PVXC

找到TechnicalDocuments and 下载the“Microsoft Certified USB UART Driver”不过要注册了才能下载,解压后有几个文件夹。


然后就是安装了,记住可能要安装两次就可以了,如果有人没有驱动可以给我留言,发到你邮箱。


安装成功后,打开SecureCTR,选择正确的com口,串口参数设为波特率115200、数据位8、停止位1、校验无。可以看到如下


可以输入命令了,如ls


 

从SD卡启动过程可以分为:

  • 上电后,片上ROM程序执行,初始化后判断从SD卡启动。
  • 从SD卡拷贝FSBL到片上RAM执行,FSBL配置FPGA,蓝色LED(LD12)变亮说明配置完成。
  • 从SD读取SSBL,开始Uboot过程(启动Linux),启动过程中VGA输出了一个Demo演示图像。
  • 串口监视程序会显示Linux启动过程(需要上电前打开putty窗口),启动完成后,板上OLED会显示一个Digilent demo图像。

Linux系统启动后,现在可以上面做一些演示的实验以体验下Zynq芯片的应用。

1)控制GPIO

在/usr/bin目录下有一些脚本文件用来控制或读取一些外设的状态。

脚本read_sw用来读取板上8个开关的状态,在命令行输入read_sw会显示输出开关的状态值(16位进制和10进制)。


 

 

脚本write_led用来控制板载8个用户LED灯(LD0~LD7)的显示,输入write_led 后面加一个数值(可以是16位进制或者10位进制数,最大255),例如write_led 0xFF与write_led 255效果一样,都是点亮8个LED。


注意使用的命令的格式,我开始输错了两次。详细信息可以参考Zedboard 评测(一)——Demo演示

 

本次学习的总结:

       1:fpga配置完成后D12就是亮。

       2:usb-uart驱动的安装。

       3:zynq的启动引脚设置和启动过程。

       4:两个Demo程序的运行。(SD卡已经有Demo了)

阅读(2153) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~