0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

對于一款新的Zynq板卡來說,如何開掛啟動程序

YCqV_FPGA_EETre ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-01-17 09:08 ? 次閱讀

答案是:Digital Discovery

口袋式高速邏輯分析儀

當新入手一款Zynq開發(fā)板后,一般新手在串口輸出一個hello world,實現(xiàn)功能就可以了。而對于一些對于Zynq有一定了解的老手而言,往往則會去嘗試了解板上硬件的特性和時序,探究hello world輸出背后整個系統(tǒng)是如何運作的。

事實上,對于一款新的Zynq板卡來說,在啟動序列中QSPI傳輸?shù)乃俣炔皇且粋€明顯的規(guī)范,本文教程就將教你如何使用Digital Discovery口袋式高速邏輯分析儀來快速分析啟動序列并確定時序。

01

硬件清單

  • Digital Discovery口袋式高速邏輯分析儀

  • 帶有flash的Zynq開發(fā)板(本文中使用Digilent Zybo作為被測對象)

  • SOIC測試夾(若有最佳)

  • 杜邦線

注:事實上,除了Digital Discovery之外,當然你也可以用經典的Digilent Analog Discovery 2來操作,后者同樣帶有邏輯分析儀功能。這里更為推薦使用Digital Discovery,有兩個原因:一是由于QSPI時鐘頻率很高,超過100MHz,因此所選的儀器需要具有足夠的采樣率。二是Digital Discovery具有512 MB的DDR,可以完成大規(guī)模數(shù)據(jù)存儲的要求。

02

連接Digital Discovery

連接關系如下:

QSPI 信號

QSPI/測試夾引腳

DigitalDiscovery引腳

cs

7

DIO0

clk

16

DIO1

d0

15

DIO2

d1

8

DIO3

d2

9

DIO4

d3

1

DIO5

gnd

10

Gnd

在使用如上圖所示的杜邦線進行連接時,要注意保證信號完整性,避免串擾。在某些時候,需要將某個信號和地線進行纏繞,如圖中的藍色cs信號就使用了接了地的黑線進行了纏繞。

03

QSPI腳本

為了將QSPI的信號轉換成數(shù)據(jù),在邏輯分析儀的WaveForm軟件中增添了一個“定制”通道,并使用js語言編寫了一個“解釋器”。代碼如下:

// rgData: input, raw digital sample array// rgValue: output, decoded data array// rgFlag: output, decoded flag arrayvar c = rgData.length // c = number of raw samplesvar pClock = false; // previous cock signal levelvar iStart = 0;   // used to keep track on word start indexvar cByte = 0;   // byte count per transmissionvar cBits = 0;   // bit countervar bValue = 0;   // value variablevar fCmd = true;for(var i = 0; i < c; i++){ // for each sample? ? var s = rgData[i]; // current sample? ? var fSelect = 1&(s>>0); // pin0 is the select signal    var fClock = 1&(s>>1); // pin1 is the clock signal  var fData = 1&(s>>2); // pin2 is the data signal  var fData4 = 0xF&(s>>2); // DIN 2-5 DQ 0-3    if(fSelect != 0){ // select active low    // while select inactive reset our counters/variables    iStart = i+1; // select might become active with next sample    cByte = 0;    cBits = 0;    bValue = 0;    pClock = false;    fCmd = true;    continue;  }  if(pClock == 0 && fClock != 0){ // sample on clock rising edge       bValue <<= 4; // serial data bit, MSBit first? ? ?? ? ? bValue |= fData4;? ? ??? ? ?? ? ? ? ? ?? ? ? cBits++;? ? ?? ? ? if(cBits==2){ // when got the 8th bit of the word store it? ? ?? ? ?  ? cByte++;? ? ?? ? ?  ? // store rgValue/Flag from word start index to current sample position? ? ?? ? ?  ? for(var j = iStart; j < i; j++){? ? ?? ? ?  ? ? ? // Flag change will be visible on plot even when data remains constant.? ? ?? ? ?  ? ? ? // This is useful in case we get more consecutive equal values.? ? ?? ? ?  ? ? ? rgFlag[j] = cByte;? ? ?? ? ?  ? ? ? rgValue[j] = bValue;? ? ?? ? ?  ? ?}? ? ?? ? ?  ? ?iStart = i+1; // next word might start after this sample? ? ?? ? ?  ? ?cBits = 0; ?// reset bit count for the next byte? ? ?? ? ?  ? ?bValue = 0; // reset value variable? ? ?? ? ?  }? ? ??}? ? ??pClock = fClock; // previous clock level}

除了使用定制的“解釋器”外,我們還可以使用標準的SPI來分析那些沒有通過QSPI發(fā)送到指令,例如第一條讀取指令。

04

觸發(fā)與采樣

雖然QSPI的最高時鐘頻率是100MHz,但在啟動過程中的最高頻率僅為25MHz。此外,整個啟動過程大概需要700ms。因此對于同時滿足大量樣本和高速采樣率,這也正是選擇Digital Discovery的原因——200MHz的采樣速度可以在1.3s內采樣268M的樣本數(shù)據(jù)。

采樣本身是十分浪費資源的,這個過程需要使用16GB的電腦內存,并且需要很長的時間來完成數(shù)據(jù)的處理。

觸發(fā)設置在CS信號的下降沿。

下圖是Waveforms中整個QSPI的傳輸過程。注意圖中采樣信號的短暫中斷,從這個時候起時鐘頻率由5.4MHz變?yōu)榱?5MHz。

05

啟動傳輸

想要明白所傳輸?shù)臄?shù)據(jù)含義需要閱讀兩個文檔,一是Zynq技術參考手冊(www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf),另一個是flash memory的數(shù)據(jù)手冊(www.cypress.com/file/177966/download)。

Zynq與flash之間使用SPI協(xié)議進行通信,Zynq發(fā)送通過D0向flash發(fā)送指令。所發(fā)送的第一條指令是0x03 0x00 0x00 0x20,含義是SPI讀,讀起始地址是0x20。Flash通過D1接收0x66 0x55 0x99 0xaa。Flash讀指令的含義在flash memeory的第85頁做了解釋。

(點擊可查看大圖)

在Zynq技術參考手冊的第170到179頁解釋了所回復指令的含義,簡單說這組字節(jié)告訴了Zynq內存是支持QSPI的。還需要注意到,此時的SPI時鐘是5.405MHz,是一個比較低的速度。

從這點上看,確定了Zynq的內存支持QSPI,并且所有的交互都將在這4條數(shù)據(jù)線上完成。例如,下一條指令是0x6b,跟在一個3個字節(jié)的地址的后面。0x6b表示一個quad讀指令,在8個時鐘周期后的QSPI解釋器上看到響應,這是虛擬字節(jié)。

(點擊可查看大圖)

在本例中,地址是0x1d,讀取7個字節(jié)。這些字節(jié)來自地址0x1d、0x1e、0x1f,它是中斷表的一部分,然后從地址0x20開始讀取4個字節(jié),這是在第一個SPI讀取時讀取的相同字節(jié)。

Znqy將繼續(xù)讀取字節(jié),地址逐漸增加,直到0x45,這是bootROM Header的結尾。

但是,由于我們無法訪問BootROM的代碼,其余的引導序列就不那么透明了。在某個時候,F(xiàn)SBL(第一階段引導加載程序)將開始運行,最有可能的是當SPI時鐘頻率變化到25 MHz的時候,如下所示,也就是在引導過程開始后的84毫秒。

(點擊可查看大圖)

然后,F(xiàn)SBL將讀取引導映像文件并分析它包含的不同分區(qū),包括配置Zynq PL部分的bit文件,在ARM中運行的elf文件。

關于引導鏡像和啟動過程可以閱讀這一用戶手冊(www.xilinx.com/support/documentation/user_guides/ug821-zynq-7000-swdev.pdf)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21786

    瀏覽量

    605064
  • 賽靈思
    +關注

    關注

    32

    文章

    1794

    瀏覽量

    131422
  • Zynq板卡
    +關注

    關注

    0

    文章

    1

    瀏覽量

    2076

原文標題:如何以開掛的方式來查看Zynq啟動順序?

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    文搞懂軟核的固化、啟動和MultiBoot實現(xiàn)

    這也是《FPGA實現(xiàn)串口升級及MultiBoot》系列中的篇文章,作為個專題單獨出來說明。 本篇文章分為三個主題:固化、啟動和MultiBoot實現(xiàn)。 固化分為SPI和BPI FL
    的頭像 發(fā)表于 12-07 11:23 ?628次閱讀
    <b class='flag-5'>一</b>文搞懂軟核的固化、<b class='flag-5'>啟動</b>和MultiBoot實現(xiàn)

    冷機啟動板卡時,LMX2572鎖定時間在2分鐘以上,為什么?

    冷機啟動板卡時,LMX2572鎖定時間在2分鐘以上。當LMX2572鎖定后重新啟動,鎖定時間在1-3秒內。
    發(fā)表于 11-11 08:09

    如果設計一款桌面的機器玩具,最吸引人的外觀與功能要有哪些?

    初步設想制作如下其中一款,有感興趣的朋友可以幫提提意見。 A一款圓敦敦的音響狀的“個人日程助手”,具備番茄鬧鐘、音樂播放、減壓交互、語言對話、工作日報生成。 B一款迷你瓦利機器人,有
    發(fā)表于 10-19 18:25

    51單片機(一款國產8位高性能Flash的接近感應單片機XD08M3232體驗感)

    給大家推薦一款在淘寶上發(fā)現(xiàn)的國產A/D型具有增強型1T8051內核8位高性能Flash的接近感應單片機XD08M3232,測試下來總體的感覺還是比較強大的,以下是本人試用后總結下來比較滿意的幾個點
    發(fā)表于 09-25 15:15

    如何在服務器上調試本地FPGA板卡

    的編程和調試 現(xiàn)在 Vivado 已遠程運行,最后步是對 FPGA 板卡進行編程和調試。Vivado 的硬件服務器應用程序必須按照上述說明在本地PC上運行。FPGA 還應通過其 JTAG
    發(fā)表于 07-31 17:36

    如何設計一款50HZ陷波電路?

    如何設計一款50HZ陷波電路,有現(xiàn)成的參考電路設計嗎
    發(fā)表于 07-30 06:12

    如何挑選一款合適的X射線相機

    X射線被廣泛應用于元素辨析,納米結構,醫(yī)學分析,半導體加工等領域,例如:相干X射線衍射成像,X射線顯微鏡,X射線等離診斷,深紫外刻蝕技術。 一款合適的X射線相機對于高質量的成像和實驗數(shù)據(jù)分析尤為關鍵
    的頭像 發(fā)表于 07-12 06:30 ?340次閱讀
    如何挑選<b class='flag-5'>一款</b>合適的X射線相機

    NI數(shù)據(jù)采集板卡如何連接使用?

    NI(National Instruments)數(shù)據(jù)采集板卡種常用的工業(yè)級數(shù)據(jù)采集設備,廣泛應用于科學研究、工程測試、自動化控制等領域。本文將介紹如何連接產品并使用NI數(shù)據(jù)采集板卡進行
    的頭像 發(fā)表于 07-11 10:05 ?1076次閱讀

    精準時刻,掌控未來:解鎖新代PCIe時鐘板卡

    了先進的技術和卓越的性能,為各類應用場景提供了可靠的時間解決方案。 ? 、銣原子時鐘板卡 TS-ART是一款在PCle板卡上使用銣振蕩器作為本振的時鐘
    的頭像 發(fā)表于 06-24 11:12 ?491次閱讀
    精準時刻,掌控未來:解鎖新<b class='flag-5'>一</b>代PCIe時鐘<b class='flag-5'>板卡</b>!

    人工智能模型公司Anthropic近日推出了一款Claude移動端App

    制造Claude 3人工智能模型公司Anthropic近日推出了一款iOS應用程序,并為群組共享模型訪問添加第二個付費層。
    的頭像 發(fā)表于 05-08 09:55 ?734次閱讀

    Xilinx ZYNQ 動手實操演練

    通道,可支持高速片外連接的中端Kintex-7系列。所有四產品均采用基于2個12位1MspsADC(模數(shù)轉換器)模塊的新型模擬混合信號模塊。 Zynq些概念 ZYNQ,總的
    發(fā)表于 05-03 19:28

    如何挑選一款性價比高的家用路由器

    家庭網(wǎng)絡已經成為人們生活中不可或缺的部分。而選擇一款性價比高的家用路由器對于保障網(wǎng)絡連接質量、提升網(wǎng)絡體驗至關重要。本文將從性能、覆蓋范圍、安全性、易用性和價格等方面,為您介紹如何挑選一款
    的頭像 發(fā)表于 04-16 15:14 ?596次閱讀

    如何設計一款四輪智能小車

    如何設計一款四輪智能小車 此部分共分為五個小節(jié),通過這個 Part 的學習,我們將了解機器人的概念和組成,對機器人的整體設計有個明確的思路,然后通過機械結構、驅動系統(tǒng)、傳感系統(tǒng)、控制系統(tǒng)四大
    的頭像 發(fā)表于 03-26 10:58 ?861次閱讀
    如何設計<b class='flag-5'>一款</b>四輪智能小車

    板卡控制與plc控制的區(qū)別

    板卡控制與PLC(Programmable Logic Controller,可編程邏輯控制器)控制是兩種常見的工業(yè)自動化控制方式。雖然在某些方面存在些相似之處,但它們在很多方面有著顯著的區(qū)別
    的頭像 發(fā)表于 02-05 14:31 ?8609次閱讀

    NVIC_SystemReset()導致系統(tǒng)死怎么解決?

    我用的芯片是psoc6,基于psoc creator4.4,基于CE217633這個示例,在M4 的main函數(shù)加入NVIC SystemReset(), 實現(xiàn)系統(tǒng)每隔5秒重新啟動,但系統(tǒng)有10
    發(fā)表于 02-01 07:38