轉載來自: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串列埠端號。