zedboard的demo評測

CopperDong發表於2017-11-21

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

相關文章