?

基于Zynq-7000的數據采集與顯示系統的設計

2020-09-15 05:16楊詩安王子成
儀表技術與傳感器 2020年8期
關鍵詞:小包字節內存

楊詩安,王子成

(1.中國科學院武漢物理與數學研究所,湖北武漢 430071;2.中國科學院大學,北京 100049;3.武漢中科創新技術股份有限公司,湖北武漢 430206)

0 引言

Zynq-7000是集成了ARM與FPGA的可擴展處理平臺。Zynq-7000 SoC系列集成 ARM處理器的軟件可編程性與 FPGA 的硬件可編程性,不僅可實現重要分析與硬件加速,同時還在單個器件上高度集成 CPU、DSP、ASSP 以及混合信號功能[1]。在SoC內部,芯片功能被劃分成PS和PL兩部分,PS 相當于ARM,具有固定的架構,承載了處理器和系統存儲區,而 PL 也就是FPGA,是完全靈活的,可以滿足設計。其中互聯是通過連接了PS和PL的AXI接口來實現[2]。相比于常用的AHB總線協議,AXI總線具有更好的性能和更高的帶寬,而且這種片內通信模式使數據通信更加可靠、高效,還可以降低功耗。

隨著數字系統越來越復雜,軟硬件協同設計越來越困難,FPGA加ARM這種低成本SoC解決方案是主要的發展方向,所以需要研究基于SoC可擴展平臺的應用解決方案。本文基于Zynq-7000平臺設計了一個具有數據采集和顯示功能的最小系統,通過對Zynq-7000 SoC芯片的應用,為滿足數據采集和顯示需求提供更多的解決方案。

1 系統的整體框架設計

整個最小系統由CPU、內存、Flash、ADC采集芯片等組成,SoC選用的處理器芯片是XC7Z020,SoC所掛內存為DDR3,再用一片SRAM作刷屏緩存,結合A/D轉換芯片,外接液晶顯示屏,則可以完成數據的采集、存儲以及顯示。系統整體設計框架如圖1所示[3-4]。

圖1 系統整體設計框架

由框架圖可以看到信號流向。一路模擬量輸入系統,經過AD芯片轉換成數字信號之后存入SoC芯片的PL部分,在PL部分設計DMA模塊使數據傳輸速率匹配從而將數據寫入內存,軟件處理后用于顯示的數據從內存中取出,通過PL部分寫入SRAM中緩存,在PL的控制下LCD可顯示SRAM中的數據。

2 數據采集模塊

數據采集使用AD9601芯片,這是一款10位單片采樣模數轉換器,具有低功耗、高性能的特點。該芯片使用1.8 V模擬和數字電源供電,可支持兩路同步采樣輸入,具有高達250 MSPS的轉化率,信噪比為59.4 dBFS,且正常工作時功耗為322 mW[5]。模數轉換電路圖如圖2所示。

設計中采用單通道采樣,DA0~DA9是10位數據輸出通道,DRVDD是1.8 V數字輸出電源,AVDD是1.8 V模擬電源,VIN+、VIN-是差分模擬輸入信號,CLK+、CLK-是差分時鐘輸入,DCO+/DCO-是數據時鐘輸出端口,SDIO/DCS、SCLK/DFC、CSB分別是串行數據、時鐘、片選接口,通過對這3個SPI端口的編程,可以配置AD9601芯片的采樣頻率和輸出時鐘,從而控制系統的采樣速率。

AD9601芯片的配置時序圖如圖3所示。當片選信號CSB為低電平時,在時鐘信號SCLK的上升沿開始傳輸數據,首先傳輸16 bit的指令,字節第1位表示讀命令或寫命令,W1和W0表示傳輸的是1個字節的

圖2 A/D轉換電路

圖3 AD9601配置時序

數據或是多個字節的數據,后面是13 bit的地址位,接著是8 bit數據位D7到D0。通過硬件編程可將AD9601的輸出時鐘配置為200 MHz,數據格式為偏移二進制。配置結果仿真圖如圖4所示。

圖4 AD9601配置時序仿真波形

3 數據傳輸模塊

3.1 AD9601數據上傳機制

本設計中AD9601為10 bit、200 MSPS的模數轉換,由于實際在存儲時為了處理方便,每個采樣點需要16 bit的空間來存儲,因此一路AD9601實際需要的最大上傳帶寬可計算得出:

200 MSPS×16 bit=3.2 Gbps

(1)

如此大的帶寬需要DMA來傳輸[6-7]。

本設計中,AD采集數據在PL內部先進fifo緩存,同時將數據按照規定的格式打包成數據包,單個數據包的大小可以通過配置寄存器來設置。DMA模塊接收到數據包,將其轉化完成后,PL發起一次AXI-HP主動對內存的寫操作,以上操作循環進行。

圖5顯示了DMA模塊的內部結構,這個模塊包含3個部分:

(1)dma_regfile:實現內部Localbus接口、SPI時序生成及中斷產生;

(2)dma_wr_cmd_gen:接收來自AD模塊的數據并將其轉化為“寫操作”包;識別包(大包)結尾并輸出信號(到dma_regfile模塊)用來觸發中斷;統計包長度并在整個包(大包)上傳完成后寫入消息和包長到對應內存位置;

(3)dma_fifo2amba_wr:將內部fifo時序轉換為AMBA-AXI4時序。

圖5 DMA模塊內部結構

本設計中設置單個包最大數據長度為1 024字節,一片數據(大包)在輸入到DMA模塊時,若其長度超過1 024字節,則需要分多個小包依次輸入。當大包被分為多個小包輸入時,只有最后一個小包的長度可以不為1 024字節,最后一個小包之前的所有小包長度必須為1 024字節。

3.2 數據上傳格式

每個數據包的幀頭和幀尾需要添加標識,以便區分。由fifo輸入到DMA的數據包(小包)格式如表1所示。

FLAG_B是大包標記,僅在每個小包的第1行(bit35~34)有效。FLAG_S是小包標記。

包的標記位FLAG_B定義如下:2’b10:SOP,首個小包;2’b00:MID,中間小包;2’b01:EOP,最后小包;2’b11:ONLY,只有1個小包。

表1 數據上傳格式表

4 LCD顯示模塊

本設計采用LVDS顯示屏,先要主動從CPU緩存中請求顯存數據,存在SRAM中,然后在PL的控制下實現LCD顯示[8],其設計結構如圖6所示。

圖6 數據顯示模塊設計框圖

顯卡功能的實現包括3個互相獨立的過程:

(1)PS申請一段固定連續的內存空間用于存儲顯卡數據,首地址為LCD_ADDR,將該首地址配置給lcd_display_req_top模塊。PS軟件生成的圖形/圖像被寫入內存的固定地址LCD_ADDR處;

(2)lcd_display_req_top模塊在PS的控制下將以配置的頻率(cfg_freq1)從內存中讀取顯卡數據,每次都會讀取一個完整屏幕的數據,讀取的數據會交給PL端的SRAM驅動模塊sram_is61wv102416,sram_is61wv102416模塊將顯卡數據按照順序寫入SRAM中存儲起來;

(3)lcd_1024x600_4lvds在PS的控制下以配置的頻率(cfg_freq2)通過sram_is61wv102416模塊從外部SRAM中讀取顯卡數據,讀返回數據則直接轉換為LVDS信號輸出。

以上3個過程互相獨立,過程(1)和過程(2)通過PS內存隔離,過程(2)和過程(3)通過外部SRAM隔離。

5 仿真實驗

5.1 數據傳輸仿真

可以通過軟件仿真來驗證數據傳輸模式是否設計正確,先在vivado中模擬數據累加,利用仿真界面觀察結果,然后與PC端串口調試界面的傳輸數據作對比。圖7為數據仿真波形,圖8為串口打印數據。

圖7 vivado數據仿真波形

圖8 串口打印數據

從圖7中最后一行數據可以看到,數據在依次累加,因為每次傳輸32 bit的數據,所以一次傳輸2個16 bit的數,然后在內存中順序緩存。對比圖8中串口打印的數據,可以驗證數據在通道中正確傳輸。

5.2 實驗測試

系統測試時將信號發生器的輸出信號作為系統輸入,調節輸入信號的頻率和振幅,使波形可以在LCD屏上正常顯示。圖9為信號發生器的輸出波形,圖10為此系統屏幕顯示的波形。

圖9 信號發生器輸出波形

圖10 LCD顯示波形

LCD顯示屏上橫軸方向每個格點代表的是時間信息,由顯示波形的周期可以計算得出顯示波形的頻率,與信號發生器輸出波形頻率對比,可以驗證顯示波形是正確的。

6 結論

該系統以Zynq-7000 SoC芯片為核心,結合存儲器件,數據采集芯片以及LCD顯示屏,搭建了一個可用于實時數據采集和顯示的平臺,設計中數據傳輸部分采用DMA傳輸機制,并且數據傳輸速率可用軟件配置。經實驗證明,整個系統可完成預期的功能。在后期開發應用中可將其作為一個模塊調用,節省開發時間。

猜你喜歡
小包字節內存
黑暗中努力
No.8 字節跳動將推出獨立出口電商APP
小包生活
筆記本內存已經在漲價了,但幅度不大,升級擴容無須等待
“春夏秋冬”的內存
花花小包
No.10 “字節跳動手機”要來了?
基于MSP430的四旋翼飛行器的S-BUS通信協議的設計與實現
小包哲學
內存搭配DDR4、DDR3L還是DDR3?
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合