999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種用于頻率估算的USB3.0 高速數據傳輸系統*

2022-06-02 14:41:16郝艷陽蘇淑靖裴永浩馮成林
電子器件 2022年1期
關鍵詞:信號

郝艷陽,蘇淑靖,裴永浩,馮成林

(中北大學電子測試技術國家重點實驗室,山西 太原 030051)

頻率估算是信號處理的最基本問題之一,也是振動分析、陣列信號處理、電磁學等眾多領域的關鍵問題[1-3]。計算機或專用設備只能對有限多個樣本進行計算,因此需對信號進行截斷,由此導致在使用快速傅里葉變換(fast Fourier transform,FFT)對信號進行處理時會產生頻譜泄露等問題。基于此,提出了全相位快速傅里葉變換(all-phase fast Fourier transform,apFFT),其通過對數據進行預處理來減小信號的截斷誤差。同時apFFT 譜分析具有良好的抑制頻譜泄漏性能和水平相位特性等優良性質[4],無需借助任何校正方法即可從譜分析中獲得真實相位值,根據精確的相位來估算頻率。

在文獻[3]中用實驗驗證,在低噪聲場合下,全相位頻率估算的頻率校正誤差為(10-4~10-5)×Δω級別,Δω為頻率分辨率,其值為Δω=2π/N,N為樣本大小,由此可知,樣本點數越多,頻率估算精度越高。當采樣點數較多時,實時信號處理可操作難度大,需要先預存采集數據,以便后續數據分析處理,因此本設計先將時鐘信號數據傳送至PC 機進行存儲,再通過調用存儲文件進行頻率估算。本設計使用速度快且易擴展的USB3.0 進行數據傳輸,USB 3.0 外設控制器使用Cypress 旗下的EZ_USB FX3。該控制器有一個高度靈活的可編程接口——GPIF II接口,將其連接至外部FPGA,使之作為同步從設備FIFO(Slave FIFO)接口,完成從FPGA 至USB 至PC機的數據傳輸。在數據傳輸速率得到有效提升的同時,確保數據傳輸的可靠性與穩定性。

1 系統整體方案設計

本文設計的頻率估算系統由時鐘源、FPGA 控制單元、USB 傳輸單元及頻率估算單元組成。如圖1 所示,FPGA 控制A/D 轉換器將時鐘源產生的1 MHz 模擬信號轉換為16 位串行數據傳送至FPGA,并將讀取回的串行數據轉換為16 位并行數據通過數據緩存FIFO 傳輸至USB 芯片,進而傳輸至PC 機進行存儲。再由仿真軟件調用文件對接收到的數據進行apFFT 頻率估算。

圖1 系統結構框圖

2 FPGA 內部設計

FPGA 作為頻率估算系統的控制核心,利用A/D轉換器對時鐘源進行采樣,并控制USB3.0 將采集到的數據傳輸至PC 機。FPGA 采用Xillix 公司的Airtix-7 系列XC7A100T 芯片,適合高速數據通信和高速數據采集等應用,可以很好地滿足系統的控制需求。

當GPIF II 接口作為同步Slave FIFO 接口[5]時,FPGA 作為主控制器,可將EZ_USB FX3 看作FIFO存儲器(DMA 緩沖區,DMA buffer),通過編寫代碼,實現在FPGA 上執行一個與同步Slave FIFO 相兼容的主控接口,完成從FPGA 至USB 的數據傳輸。根據USB 同步Slave FIFO 接口控制框圖及接口時序圖對FPGA 的控制程序進行設計:FPGA 內部開辟一個大小為16 KB 的FIFO 緩沖單元,對從時鐘信號源采集到的數據進行緩存,當數據緩存至緩沖區半滿時,將Slave FIFO 接口寫入選通信號slwr 拉低,開始向FX3 的DMA buffer 內寫入數據。FPGA 內部執行一個計數機制,始終將與DMA buffer 大小(8 KB)相同的數據量寫入DMA buffer 內,當計數值超過DMA buffer 的大小時結束數據傳輸。該計數機制只通過監控滿/空標志FLAG_A 來決定數據傳輸開始的時間,避免了使用USB 局部標志FLAG_B 來決定結束傳輸的時間,免除了水印值的設置。

FPGA 狀態機包含兩個狀態:“等狀態”與“傳數狀態”,具體狀態轉換條件如圖2 所示。

圖2 狀態機跳轉及其條件轉換關系

如圖2 所示,系統啟動后進入狀態機“等狀態”,D 觸發器在flag_A 上升沿時觸發并鎖存“1”進去,此時等待FPGA 內部FIFO 被寫至半滿(8 KB,即寫入4 096 個點),半滿信號來臨與D 觸發器所存結果(信號1)進行“與”操作,其結果為“1”時跳轉至“傳數狀態”,與此同時,半滿信號觸發計數器執行計數,計數0~4 095 時,計數器輸出count_flag 標志信號,計至4 095 后自動將計數清零,并將標志count_flag 拉低,count_flag 信號同時送至FIFO 讀使能端作為讀使能信號rd_en,控制FIFO 在100 MHz讀時鐘驅動下往外讀數并送數據至EZ-USB FX3 的DMA buffer 內,FIFO 輸出數據的有效標志valid 信號取反后作為USB 的寫使能slwr。

3 USB 固件及上位機設計

3.1 數據傳輸架構的搭建

EZ_USB FX3 以同步從設備FIFO 方式工作,依靠芯片內部的多個FIFO 緩沖區來實現使用FX3 的DMA 運行機制工作[6],即通過套接字(Socket)、DMA 描述符(DMA descriptor)、DMA 緩沖區(DMA buffer)共同配合完成數據傳輸。根據FPGA 的邏輯設計,同時結合DMA 運行機制來搭建USB3.0 數據傳輸的架構。本設計創建一個從GPIF II 處理接口模塊(PIB 模塊)至USB 接口模塊(UIB 模塊)的DMA 通道,將之設置為AUTO 模式,使外部數據無需片內CPU 干預,便可以通過同步Slave FIFO 接口將數據連續寫入FX3,再傳輸至PC 機;在DMA 通道內設置4 個大小為8 KB 的DMA buffer,用于上傳數據的存儲;將USB 端點設置為塊傳輸模式,且端點的最大數據包大小為1 024 byte;數據傳輸構架如圖3 所示,PIB 模塊根據FPGA 發送來的0x00 地址信號,匹配內部的專用數據路徑GPIF 線程0,將外部數據引腳連接至默認映射的套接字0(PIB_SOCKET_0),使得套接字0 作為發送套接字,將數據寫入DMA 緩沖區內。使用UIB 模塊的套接字1(UIB_SOCKET_1)作為接收套接字,從DMA 緩沖區內讀取數據,將數據傳送至USB 輸入(IN)端點0x81,通過管道傳輸給PC 機。

圖3 FX3 數據傳輸架構

3.2 FX3 固件應用程序設計

FX3 上電后,需加載存儲于EEPROM 芯片(電可擦除可編程存儲非只讀芯片)中的設備“驅動軟件”——固件[7],驅動FX3 來完成預期的設備功能。FX3 固件應用程序主要由初始化程序和用戶定義程序兩部分組成[8-9]。初始化程序首先完成設備(FX3)的初始化,后進入RTOS(實時操作系統),調用CyFxApplicationDefine 函數創建并激活用戶自定義線程,進入用戶定義程序(從設備FIFO)部分。用戶定義程序先對GPIF II 模塊及USB 模塊進行初始化,后注冊回調函數,對各種請求和事務進行響應。當接收到USB_SET_CONFIGURATION 請求時調用CyFxSlFifoAppInStart()函數,根據需求配置USB 端點并創建GPIF 接口和USB 端點之間的DMA 通道。當檢測到USB 復位或斷開連接時調用CyFxSlFifoAppInStop()函數,禁用USB 端點并釋放DMA 通道。程序結構流程圖如圖4 所示。

圖4 固件程序結構流程圖

本設計的FX3 固件程序主要配置以下幾項內容:使用GPIF II Designer 工具對GPIF II 接口進行配置;使用Eclipse 開發環境進行固件開發,對USB端點進行配置,創建GPIF 接口和USB 端點之間的DMA 通道。

使用GPIF II Designer 將GPIF II 接口設置為同步Slave FIFO 接口,規定其并行數據總線寬度為16位,地址總線為2 位,設置信號FLAG_A 的工作模式為Tread_0_DMA_Ready,將該標志配置為線程0 的跟隨標志,用來監控DMA buffer 的滿空狀態。GPIF II Designer 根據設計需求生成狀態機,并在項目編譯后生成cyfxgpifconfig.h 文件,將此頭文件包含到Eclipse 項目,即可實現對GPIF II 接口的配置。

在Eclipse 開發環境中,根據搭建好的USB3.0 數據傳輸架構,在固件用戶自定義程序中對USB 端點進行配置并創建對應的DMA 通道。定義DMA buffer的個數為4,每個DMA buffer 的大小為8 KB;定義USB 端點1 為輸入端點,其地址為0x81(第7 位代表傳輸方向,1 為輸入,0 為輸出);定義生產者的發送套接字為PIB 模塊的套接字0,消費者的接收套接字為UIB 模塊的套接字1;功能實現代碼如下:

在CyFxSlFifoAppInStart(void)函數中進行端點的配置及DMA 通道的建立。先進行USB 端點的配置,將端點使能,設置其類型為CY_U3P_USB_EP_BULK,使USB 與PC 機的傳輸方式為塊傳輸;當檢測到連接的主機USB 接口為USB3.0 時,設置端點的最大數據包大小為1 024 byte(1 kbyte);將配置好的端點賦給端點1,功能實現代碼如下:

其次,創建PIB 模塊至UIB 模塊的DMA 通道。DMA 通道的類型為自動模式;其中DMA buffer 的個數,每個DMA buffer 的大小,發送套接字與接受套接字均按宏定義進行設置,其他設置按默認設置即可,功能實現代碼如下:

3.3 數據傳輸上位機的設計

Cypress 公司提供了完整的測速軟件程序,其核心控制類為CyAPI 控制函數類,該類為EZ_USB FX3 系列USB 接口芯片提供了精細的控制接口,通過插入CyAPI.h 頭文件和CyAPI.lib 庫文件于應用程序中,可便捷實現相應控制函數的調用[8-9]。該程序首先安排了用戶界面以及按鈕資源,并通過CCyUSBDevice 函數獲取USB 設備及輸入端點,其次建立了XferLoop 線程,在線程內開辟內存來存放來自USB 的數據,通過BeginDataXfer 函數與Finish-DataXfer 函數來開啟或關斷通過USB 端點的數據傳輸。該軟件用于對數據傳輸速率的測試,無法滿足存儲數據的應用需求,需添加寫文件功能。首先添加頭文件及命名空間:

其次在私有成員數據中添加靜態文件指針數據:

最后分別在XferLoop()函數與AbortXferLoop()函數中添加寫文件與關閉文件,將PC 機buffer塊中的數據以二進制形式寫入文件中,關鍵代碼分別如下:

實現將USB 上傳至PC 機的數據存儲至文件中。

4 apFFT 頻率估計算法

本文采用全相位時移相位差法校正法[10]來估算頻率精度,其區別于普通相位差法校正法在于對數據進行全相位FFT 譜分析(apFFT 譜分析)。

apFFT 譜分析的重心在于全相位數據預處理。數據預處理流程:先把兩個N階窗進行卷積運算得到長為2N-1 的卷積窗ωc,用卷積窗ωc與長為2N-1的數據向量進行數據加權,后將左邊各數據向右平移N個延時單元,再與位置重疊的另一個數據相加,形成N個數據y(i),i=0,1,…,N-1。對形成的N個數據作FFT(快速傅里葉變換),即為apFFT。最終可得到離散譜Y(k)。apFFT 譜分析結構框圖如圖5 所示。

圖5 全相位譜分析結構框圖

采連續兩段長為N的樣本并分別進行FFT,利用對應譜線的相位差值校正出譜峰處的準確頻率和相位是第一類傳統相位差校正法[11],該方法相比于傳統能量重心法具有更高的頻率估計精度,它是基于傳統FFT 譜分析的線性時不變性質而推出的。而全相位FFT 譜分析具有線性性質和相位不變性這兩個重要性質,充分利用這兩個性質并結合傳統第一類相位差法的算法構造思路,便形成了基于全相位FFT 譜分析的時移相位差校正法[12]。文獻[13]已證,對序列x(n)=Aej(ω0n+θ),n∈[-N+1,N-1]進行前、后雙窗均為f的雙窗apFFT,得到的離散譜為:

式中:A為幅值,ω0為數字角頻率,θ為初相,Fg(ω)為f對應的歸一化幅度譜。主譜線k*上的相位譜為

圖6 apFFT 時移相位差法的頻譜校正流程圖

式中:fs為采樣頻率。因漢寧窗可以有效抑制頻譜泄露且頻率分辨率較高,本文選用其作“雙窗apFFT”。根據以上算法流程,編寫MATLAB 程序,實現對頻率的估算。

5 測試結果分析

采用分步調試的方法對本系統進行測試。先對FPGA 時序邏輯的正確性以及數據傳輸狀態進行測試,再對頻率估計算法的準確性進行測試。

對于控制USB 3.0 進行數據傳輸的控制時序結果,使用FPGA 內嵌邏輯分析儀對USB3.0 從設備FIFO 的接口時鐘PCLK、USB 內監測DMA buffer 狀態的標志信號flag_A、FPGA 內16 KB FIFO 的半滿信號Half_full、flag_A 信號與Half_full 信號的與信號State_flag、計數器的輸出標志count_flag、FPGA 內16 KB FIFO 的讀使能信號rd_en 及數據有效標志信號valid、USB 寫使能信號進行測試。如圖8 所示,Waveform 窗口中顯示,PCLK 時鐘頻率100 MHz,每當USB內DMA buffer 由滿至空時,會使監測狀態標志信號flag_A 產生上升沿,當等待FPGA 內FIFO 半滿時,啟動計數同時開始向USB 內部傳輸數據,當傳輸數據量為8 KB 時,DMA buffer 被寫滿,falg_A 拉低,完成一次數據傳輸。FPGA 寫入USB 從機數據時序控制仿真結果如圖7 所示,時序狀態與設計一致,保證了高速數據傳輸的可靠性。

圖7 FPGA 寫入從機數據時序控制測試圖

單次數據傳輸完畢,將傳輸至PC 機的數據保存至文件內,為后續apFFT 頻率估計算法提供充足的、精確的數據源。數據傳輸界面如圖8 所示。

圖8 數據傳輸界面

在MATLAB 環境下,通過高精度頻率估計算法對多次上傳數據進行apFFT 頻率估算,設置頻率估算數據量s=49 151,采樣率fs=40 650 406、apFFT長度N=16 384、時延L=16 384。,多次估算結果如表1 所示,源信號頻率理論值為1 MHz,平均頻率值為1 000 000.000 010 68 Hz,精度可達小數點后5 位。

表1 頻率估計算法估算結果表 單位:Hz

6 總結

本設計提出的用于apFFT 頻率估算的USB3.0 高速數據傳輸系統,采用A/D 轉換器將時鐘源產生的高穩定度模擬信號轉換為16 位并行數據傳送主控器至FPGA,同時設計FPGA 執行計數機制,通過控制一次性寫入USB DMA buffer 的數據量,來免除對USB局部標志的使用,實現了高速數據傳輸。設計的基于apFFT 的高精度頻率估計算法對回傳數據的頻率測算精度達小數點后5 位,證明該系統在高速高精度傳輸及測試環境下具有極高的工程應用價值。

猜你喜歡
信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
7個信號,警惕寶寶要感冒
媽媽寶寶(2019年10期)2019-10-26 02:45:34
孩子停止長個的信號
《鐵道通信信號》訂閱單
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
基于Arduino的聯鎖信號控制接口研究
《鐵道通信信號》訂閱單
基于LabVIEW的力加載信號采集與PID控制
Kisspeptin/GPR54信號通路促使性早熟形成的作用觀察
主站蜘蛛池模板: 国产高清不卡| 国产熟睡乱子伦视频网站| 国产精品免费电影| 香蕉国产精品视频| 91精品网站| 国产一区二区三区视频| 国产91视频免费观看| 亚洲区一区| 亚洲水蜜桃久久综合网站| 国产女人爽到高潮的免费视频 | 亚洲成人精品在线| 亚洲水蜜桃久久综合网站| 毛片a级毛片免费观看免下载| av尤物免费在线观看| 欧美性爱精品一区二区三区 | 亚洲中文字幕国产av| 日韩无码一二三区| 尤物亚洲最大AV无码网站| 亚洲欧洲免费视频| av无码久久精品| 精品人妻一区二区三区蜜桃AⅤ| 久久www视频| a毛片在线免费观看| 日韩视频免费| 天天色天天综合网| 欧美黄网在线| 国产一二视频| 日本不卡免费高清视频| 制服丝袜 91视频| 国产精品成人AⅤ在线一二三四| 国产在线视频福利资源站| 伊人狠狠丁香婷婷综合色| 欧美另类图片视频无弹跳第一页| 日韩av在线直播| 欧美成人一级| 2024av在线无码中文最新| 精品无码一区二区三区电影| 999国产精品| 99精品视频在线观看免费播放| 欧美 国产 人人视频| a级毛片免费看| 国产理论精品| 亚洲一区精品视频在线| 久青草网站| 在线观看国产小视频| 先锋资源久久| 久久久久青草大香线综合精品| 国产一区二区精品高清在线观看| 天天色天天综合| 黄色a一级视频| 欧美成人综合视频| 狼友av永久网站免费观看| 国产jizzjizz视频| 91网在线| 国产精品嫩草影院av| 亚洲综合经典在线一区二区| 国产午夜人做人免费视频| 欧美日韩第三页| 国产精品自拍合集| 成人av专区精品无码国产| 青青热久麻豆精品视频在线观看| 91在线丝袜| 8090午夜无码专区| 日韩精品一区二区深田咏美| 日本人妻丰满熟妇区| 性欧美精品xxxx| 人妻一区二区三区无码精品一区| 性视频一区| 国产女人在线观看| 国产91特黄特色A级毛片| 久99久热只有精品国产15| 黄色不卡视频| 久久青草热| 99热国产这里只有精品无卡顿"| 久久综合九色综合97婷婷| 丝袜高跟美脚国产1区| 久久伊人操| 欧美一级夜夜爽www| 日韩国产精品无码一区二区三区| 无码国产伊人| 亚洲不卡影院| 精品伊人久久久香线蕉|