Zedboard是第一款面向開源社區(qū)的Zynq-7000系列開發(fā)板,而Zynq-7000系列FPGA,也稱為完全可編程(All Programable)SoC,是Xilinx一個(gè)有重大意義的產(chǎn)品系列。在FPGA里集成高性能的處理器內(nèi)核一直是眾多FPGA廠商以及客戶的需求,Zynq-7000的面世標(biāo)志著Xilinx在SoC集成度上的一個(gè)突破,實(shí)現(xiàn)了雙核Cortex-A9 MPcore和最新的28nm 7系列可編程邏輯的緊密集成。
Zedboard的一個(gè)簡單框圖,板上的外圍功能都是圍繞Zynq芯片Zynq芯片的配置因?yàn)槭亲钚碌男酒烷_發(fā)套件,資料還是比較少的,而且基本都是大部頭的英文。要用FPGA進(jìn)行開發(fā),首先要了解FPGA的配置過程。傳統(tǒng)的SRAM型FPGA都是通過JTAG接口、外置非易失性存儲器(PROM、FLASH)或者外部處理器一次性將程序下載到FPGA中配置。而Zynq芯片則不同,其內(nèi)部集成了處理器硬核和可編程邏輯,所以它的配置啟動(dòng)是分階段的。
Stage 0:bootROM過程,Zynq芯片PS部分有片上ROM和RAM,在芯片上電或者復(fù)位后,其中一個(gè)處理器會(huì)執(zhí)行片上ROM的代碼進(jìn)行初始化,判斷啟動(dòng)設(shè)備(boot device),將啟動(dòng)設(shè)備上的FSBL(first boot loader)代碼拷貝到片上RAM內(nèi)。
Stage 1:啟動(dòng)設(shè)備包括SPI FLASH、SD和JTAG,F(xiàn)SBL代碼是用戶自己定制的,拷貝到片上RAM后執(zhí)行。包括初始化PS部分配置、配置PL部分邏輯、加載和執(zhí)行SSBL(second boot loader)或應(yīng)用程序。
Stage 2:上一階段后硬件已經(jīng)配置完成。這一階段是可選的,完成Linux系統(tǒng)啟動(dòng)過程(U-BOOT)。
通過Zynq芯片的啟動(dòng)過程可以看到上電或者復(fù)位后片內(nèi)處理器首先啟動(dòng),然后根據(jù)MODE引腳判斷啟動(dòng)方式,Zedboard的啟動(dòng)可以通過Quad-SPI FLASH、SD卡或者JTAG接口,如下表:?管腳MIO6MIO5MIO4MIO3MIO2跳線JP11JP10JP9JP8JP7JTAG ModeCascade JTAG????0Independent JTAG????1Boot DeviceJTAG?000?Quad-SPI?100?SD card?110?PLL ModePLL used0????PLL bypass1????
接通Zedboard電源,程序啟動(dòng),因?yàn)槭且粋€(gè)非常簡單程序,所以啟動(dòng)配置過程非??欤{(lán)色LED(LD12)變亮說明Zynq芯片配置完成,程序執(zhí)行后按照(10101010)邏輯點(diǎn)亮用戶LED。
上圖看到跳線J6必須短接,MODE跳線選擇SD啟動(dòng)。
用putty來監(jiān)視串口,串口參數(shù)設(shè)為波特率115200、數(shù)據(jù)位8、停止位1、校驗(yàn)無。準(zhǔn)備好以后,可以接通電源,從SD卡啟動(dòng)過程可以分為:
上電后,片上ROM程序執(zhí)行,初始化后判斷從SD卡啟動(dòng)。
從SD卡拷貝FSBL到片上RAM執(zhí)行,F(xiàn)SBL配置FPGA,藍(lán)色LED(LD12)變亮說明配置完成。
從SD讀取SSBL,開始Uboot過程(啟動(dòng)Linux),啟動(dòng)過程中VGA輸出了一個(gè)Demo演示圖像。
串口監(jiān)視程序會(huì)顯示Linux啟動(dòng)過程(需要上電前打開putty窗口),啟動(dòng)完成后,板上OLED會(huì)顯示一個(gè)Digilent demo圖像。
?
?
Linux系統(tǒng)啟動(dòng)后,現(xiàn)在可以上面做一些演示的實(shí)驗(yàn)以體驗(yàn)下Zynq芯片的應(yīng)用。1)控制GPIO在/usr/bin目錄下有一些腳本文件用來控制或讀取一些外設(shè)的狀態(tài)。腳本read_sw用來讀取板上8個(gè)開關(guān)的狀態(tài),在命令行輸入read_sw會(huì)顯示輸出開關(guān)的狀態(tài)值(16位進(jìn)制和10進(jìn)制)。
腳本write_led用來控制板載8個(gè)用戶LED燈(LD0~LD7)的顯示,輸入write_led 后面加一個(gè)數(shù)值(可以是16位進(jìn)制或者10位進(jìn)制數(shù),最大255),例如write_led 0xFF與write_led 255效果一樣,都是點(diǎn)亮8個(gè)LED。
2)OLED系統(tǒng)啟動(dòng)時(shí)在OLED有一個(gè)默認(rèn)的Digilent公司logo顯示,可以通過腳本unload_oled和load_oled掛載和關(guān)閉OLED顯示。
VGA顯示一個(gè)默認(rèn)的條紋碼圖像
3)網(wǎng)口Linux系統(tǒng)啟動(dòng)是初始化了Zedboard上的網(wǎng)口,設(shè)定固定IP192.168.1.10。演示系統(tǒng)的網(wǎng)絡(luò)參數(shù)不能修改,因此并不能真正連到互聯(lián)網(wǎng)遠(yuǎn)程訪問。輸入ifconfig查看Zedboard此時(shí)網(wǎng)絡(luò)設(shè)置:
設(shè)置好了,在主機(jī)瀏覽器輸入192.168.1.10,可以看到一個(gè)Http頁面:
確定后進(jìn)入登陸窗口,用戶root,密碼root,這樣我們就能夠訪問Zedboard上的Linux了。
在Linux下還有一些實(shí)驗(yàn),可以參考Zedboard的入門手冊。小結(jié)了解了Zynq芯片的配置啟動(dòng)過程,演示了從Quad-SPI FLASH啟動(dòng)和通過SD卡啟動(dòng)Zedboard過程,完成了在Linux下的一些演示實(shí)驗(yàn)。后續(xù)會(huì)介紹通過JTAG啟動(dòng)Zedboard以及用ISE開發(fā)程序流程。
評論