揭開Zynq Z-7000 SoC從flash啟動的秘密
背景
各位在開發FPGA產品的時候,不僅需要熟知板子上的硬體,還要在硬體上運行代碼,想要觀測硬體上代碼的運行是可以通過邏輯分析儀這種硬體調試儀器來進行的。內置有Xilinx Spartan-6 FPGA的Digital Discovery提供了高速的邏輯分析功能,能夠讓開發者觀察和分析板子上的信號流,同時,今天給各位介紹另外一款Xilinx公司晶元的產品Zynq Z-7000 SoC,我們一起來揭開它從SPI介面掛載的flash啟動的神秘面紗。
Zynq板從SPI埠的flash啟動的過程,使用的儀器是Digilent公司的Digital Discovery。使用Digital Discovery而不是邏輯分析儀的原因有兩個,首先,QSPI傳輸是在較高的時鐘頻率下進行的,在此案例中很可能就超過了100MHz,所以需要較高的採樣率;其次,Digital Discovery有著512 MB的DDR,能夠存儲更多的採集過來的信號樣本。那麼,說了這麼多的理論,各位是不是已經想知道怎麼才能使Digital Discovery和Zynq連接到一起呢?具體的連接方式如圖.1所示,將Digital Discovery的邏輯採樣埠接到Zynq的falsh晶元的相應的引腳上,然後將Digital Discovery通過USB跟PC機相連接,用上位機Waveforms來進行信號的採集和處理。
圖.1 用Digital Discovery邏輯分析儀捕獲Zynq Z-7000 SoC的啟動信號的連接方法
最大的QSPI時鐘頻率大約是100MHz,當啟動的時候,整體的啟動時間大約是700ms,這就需要很大的採樣率,Digital Discovery能支持這樣的頻率,268萬條指令在200MHz的傳輸條件下需要1.3秒的時間。設置在CS信號的下降沿觸發採樣,數據的採樣需要佔用大量的計算機內存,而且處理數據的時間也是相對較長的。圖.2展示了整體的QSPI的傳輸波形圖。注意在所獲得波形的最左邊時鐘的頻率從5.4MHz變到了25MHz。
圖.2 Digilent公司的Digital Discovery邏輯分析儀捕獲Zynq Z-7000啟動的全過程
如果想要去理解數據傳輸所代表的意思,可以參考Zynq TRM和對應flash的數據手冊。指令從Zynq傳輸到flash通常是通過SPI的D0引腳,第一個指令發送的是0x03 0x00 0x00 0x20(圖.3的紅色框框部分),此指令的意思是SPI READ,讀的地址是0x20;相應的,收到的回複信號是經過SPI的D1引腳獲得的,收到的信號為0x66 0x55 0x99 0xaa(圖.3的藍色框框部分所示),在Zynq TRM的170頁到179頁解釋了收到的信號的意思是flash告訴Zynq此flash是支持QSPI的,通過觀察發現,在讀指令的地方SPI的時鐘頻率是5.405MHz,這個時鐘的頻率相對較低。在讀指令之後,flash支持QSPI,所有的傳輸都會在四根QSPI數據線上進行。下一個指令是0x6b,緊跟著的是3byte的物理地址,如圖.4紅色框內所示,0x6b代表的是四次讀寫指令,flash回應的數據在8個時鐘周期之後(圖.4中綠色框內所示)能在QSPI信號線上被觀察到,如圖.4藍色框內所示。
圖.3 Zynq發送給flash的第一個讀信號指令以及flash的反饋信號波形
圖.4 Zynq的四次讀寫指令以及QSPI信號的相應
Zynq-7000 AP SoC集成了ARM處理器核和硬體可編程的FPGA於一身,集成了CPU,DSP,ASSP,混合信號處理裝置等在一個晶元上,能夠用於主要的數據分析和硬體加速上,有著很好的性能價格比。而Digital Discovery裡面使用了Xilinx公司的Spartan-6 FPGA,有著較高的logic-to-pin比率,內置MicroBlaze軟核,支持800Mb/s的DDR3,支持豐富的I/O協議,所以在性能上能夠勝任邏輯分析儀的工作。
用邏輯分析儀來捕獲處理器啟動時候的信號波形不足為怪,但是在這個例子中是使用了Digital Discovery的邏輯分析儀功能,突出的地方就是Xilinx公司的兩款晶元的交互,演繹了本次的啟動信號揭秘之旅。Digital Discovery和Zynq SoC都是很出色的產品,一個是硬體開發者的攜帶型調試神奇,一個是硬體開發者的高性能開發板,是不是想自己親手試一試了呢?
TAG:電子創新設計 |