转载来自:http://blog.csdn.net/xiaoyangger/article/details/7970142
Zedboard是第一款面向开源社区的Zynq-7000系列开发板,而Zynq-7000系列FPGA,也称为完全可编程(All Programable)SoC,是Xilinx一个有重大意义的产品系列。
在FPGA里集成高性能的处理器内核一直是众多FPGA厂商以及客户的需求,Zynq-7000的面世标志着Xilinx在SoC集成度上的一个突破,实现了双核Cortex-A9 MPcore和最新的28nm 7系列可编程逻辑的紧密集成。
上图可以看出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接口,如下表:
管脚 |
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
Demo演示
Zedboard的附件中的4G SD卡预装了一个演示的Linux文件系统,而且板载的SPI FLASH上也有一个简单的Demo程序,下面我们来看看这些demo程序的功能,能够很快熟悉Zedboard的使用和板上的外设功能。
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启动模式,如下图所示:
接通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)。
上图看到跳线J6必须短接,MODE跳线选择SD启动。
该Linux文件系统没有图形界面或者控制台,所以必须通过串口或者ssh访问。如果没有安装过USB-UART驱动,可以先通电后安装USB串口驱动。安装好驱动后打开一个串口监视器,可以使用XP的超级终端或者其他的串口调试工具。
用putty来监视串口,串口参数设为波特率115200、数据位8、停止位1、校验无。
准备好以后,可以接通电源,从SD卡启动过程可以分为:
- 上电后,片上ROM程序执行,初始化后判断从SD卡启动。
- 从SD卡拷贝FSBL到片上RAM执行,FSBL配置FPGA,蓝色LED(LD12)变亮说明配置完成。
- 从SD读取SSBL,开始Uboot过程(启动Linux),启动过程中VGA输出了一个Demo演示图像。
- 串口监视程序会显示Linux启动过程(需要上电前打开putty窗口),启动完成后,板上OLED会显示一个Digilent demo图像。
Putty监视窗口如下,可以看到Linux系统已经启动了文件系统、telent终端、HTTP、FTP、SSH服务以及开始了OLED显示,而且Zedboard的网口IP固定为了192.168.1.10。
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。
2)OLED
系统启动时在OLED有一个默认的Digilent公司logo显示,可以通过脚本unload_oled和load_oled挂载和关闭OLED显示。
VGA显示一个默认的条纹码图像
HDMI输出也显示一个默认的小企鹅画面
3)网口
Linux系统启动是初始化了Zedboard上的网口,设定固定IP192.168.1.10。演示系统的网络参数不能修改,因此并不能真正连到互联网远程访问。输入ifconfig查看Zedboard此时网络设置:
可以通过网线连接一台主机,然后修改主机的网络设置:
设置好了,在主机浏览器输入192.168.1.10,可以看到一个Http页面:
前面我们看到Linux启动了ssh服务,这里也可以通过ssh访问Zedboard,打开putty:
确定后进入登陆窗口,用户root,密码root,这样我们就能够访问Zedboard上的Linux了。
现在和串口访问模式一样,也可以输入脚本控制Zedboard上的外设了。
在Linux下还有一些实验,可以参考Zedboard的入门手册。
小结
了解了Zynq芯片的配置启动过程,演示了从Quad-SPI FLASH启动和通过SD卡启动Zedboard过程,完成了在Linux下的一些演示实验。后续会介绍通过JTAG启动Zedboard以及用ISE开发程序流程。
Zedboard USB串口驱动安装
2012年09月10日
⁄ 教程
⁄ 被围观 58+
Zedboard上板载有一个USB转UART串口,采用了Cypress公司的USB-UART控制器CY7C64225。CY7C64225提供了一个非常简洁的USB串口方案,片内集成了USB2.0全速控制器、UART收发器、晶振以及EEPROM等各种功能,而只采用了28脚的SSOP封装。
Zedboard的USB驱动安装很简单,首先下载USB驱动程序,解压缩后会有3个子目录分别对应Windows XP、Windows Vista和Windows 7系统,根据自己的计算机系统选择。
Zedboard上的J14 USB口(有UART标识)作为USB-UART接口,连接Micro USB到计算机。
接通电源,系统会识别USB设备,这里我们需要安装两次驱动。首先识别设备Cypress-USB2UART-0123456,
安装驱动之后会产生一个USB设备Cypress Virtual Comm Port00,这里继续选择刚才的驱动程序位置
安装完成之后打开设备管理器可以看到USB串口端号。