• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

FPGA數(shù)字信號處理頻率采樣問題

2024/09/29
2648
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡?!爸缶蒲詺g”進入IC技術(shù)圈,這里有近100個IC技術(shù)公眾號。

今天給大俠帶來在FPAG技術(shù)交流群里平時討論的問題答疑合集(二十一),以后還會多推出本系列,話不多說,上貨。

Q:FPGA數(shù)字信號處理問題,這樣處理可行嗎?在做項目的時候遇到一個問題,求大佬們解答一下。

要求對頻率范圍為5Hz到5000Hz的三路振動信號進行采集,打算用一塊AD復(fù)用三個通道來進行采集,采樣頻率打算用60KHz,那么每通道的實際采樣頻率是不是就是20KHz呢?這樣是不是就能滿足每通道采樣頻率為信號頻率的4倍呢?

對采集到的信號進行fft處理,以得到指定頻率點的幅度值,指定的頻率點都集中在200Hz以內(nèi),且都精確到了小數(shù)點后一位,也就是說頻率分辨率得是0.1才能將這些信號區(qū)分出來,這樣的話fft點數(shù)得是20K*2/0.1 ,達到了40萬以上(不知道我這樣算對不對),那么fpga是不是沒辦法做了呢,我看7系fpga的fft ip核最大點數(shù)也就到65536。

如果我將采集到的數(shù)據(jù)通過一個數(shù)字濾波器,將200Hz以上頻率的信號全部濾除,再做fft,這樣可處理可行嗎?

A:以下是對問題的分析以及給出的一些小建議,僅供參考:

一、關(guān)于采樣頻率分配

如果用一塊 AD 復(fù)用三個通道進行采集,采樣頻率為 60kHz,理論上平均分配給三個通道時,每通道的實際采樣頻率約為 20kHz。但在實際應(yīng)用中,由于復(fù)用的方式可能會引入一些不確定性,不能簡單地認為完全平均分配。對于頻率范圍為 5Hz 到 5000Hz 的信號,一般來說,采樣頻率為信號最高頻率的 2 倍以上就能較好地還原信號,但為了更好的效果通常取 4 倍及以上。在這種情況下,20kHz 的采樣頻率對于 5000Hz 的信號滿足了 4 倍的關(guān)系。

二、關(guān)于 FFT 點數(shù)計算

對于頻率分辨率的計算方法基本正確。如果要區(qū)分出精確到小數(shù)點后一位且集中在 200Hz 以內(nèi)的頻率點,頻率分辨率為 0.1Hz 時,根據(jù)采樣頻率和頻率分辨率的關(guān)系(采樣頻率/FFT 點數(shù) = 頻率分辨率),F(xiàn)FT 點數(shù)確實需要達到 20kHz/0.1 = 200000,遠超過一般 FPGA 的 FFT IP 核最大點數(shù)。

三、關(guān)于數(shù)字濾波后再做 FFT

這種方法在一定程度上是可行的。通過數(shù)字濾波器將 200Hz 以上頻率的信號濾除,可以降低數(shù)據(jù)量和處理復(fù)雜度。但需要注意以下幾點:

1. 數(shù)字濾波器的設(shè)計要合理,確保能夠有效地濾除不需要的頻率成分,同時對 200Hz 以內(nèi)的信號影響最小。

2. 濾波后的信號可能會出現(xiàn)一些失真或相位變化,需要評估這些影響對最終結(jié)果的準確性。

3. 即使經(jīng)過濾波,F(xiàn)FT 的點數(shù)仍然可能比較大,需要進一步優(yōu)化算法或考慮其他處理方式,比如分段處理再拼接結(jié)果等。

總之,這種處理方法有一定的可行性,但需要仔細設(shè)計和驗證各個環(huán)節(jié),以確保滿足項目的要求。

Q:IIC協(xié)議中如何校驗ACK?在學(xué)51單片機,使用到at24c02這塊EEPROM芯片存儲,iic與單片機通信。對于主機發(fā)數(shù)據(jù)給從機,從機應(yīng)答,SDA=0。主機怎么校驗這個應(yīng)答位呢?需要自己寫函數(shù)嗎?

還有,在主機作為接收器,接收數(shù)據(jù)后應(yīng)答從機又是怎么檢驗的呢?

A:在 IIC 協(xié)議中,校驗 ACK(應(yīng)答位)的方法如下:

一、主機發(fā)送數(shù)據(jù)后校驗從機應(yīng)答

1. 當主機發(fā)送完一個字節(jié)的數(shù)據(jù)后,會釋放 SDA 線(將其設(shè)置為輸入模式),并在 SCL 線上產(chǎn)生第 9 個時鐘脈沖。

2. 在這個時鐘脈沖期間,從機應(yīng)該將 SDA 線拉低以表示應(yīng)答(ACK),即 SDA = 0。如果從機拉低 SDA 線,主機可以讀取 SDA 線的狀態(tài)來判斷是否收到應(yīng)答。

3. 對于 51 單片機,可以通過編程設(shè)置相應(yīng)的 GPIO 口為輸入模式來讀取 SDA 線的狀態(tài)。如果讀取到的 SDA 值為 0,則表示從機應(yīng)答成功;如果為 1,則表示從機未應(yīng)答或出現(xiàn)錯誤。

在一些單片機的開發(fā)環(huán)境中,可能已經(jīng)提供了 IIC 通信的庫函數(shù),這些庫函數(shù)通常會自動處理 ACK 的校驗。但如果沒有現(xiàn)成的庫函數(shù),你可能需要自己編寫函數(shù)來實現(xiàn) ACK 的校驗。

二、主機作為接收器接收數(shù)據(jù)后應(yīng)答從機

1. 當主機作為接收器接收從機發(fā)送的數(shù)據(jù)時,在接收到每個字節(jié)后,主機需要在 SCL 線上產(chǎn)生一個應(yīng)答脈沖。

2. 如果主機希望繼續(xù)接收數(shù)據(jù),它應(yīng)該在第 9 個時鐘脈沖期間將 SDA 線拉低以表示應(yīng)答;如果主機希望結(jié)束通信,它應(yīng)該將 SDA 線保持為高電平以表示非應(yīng)答(NACK)。

3. 同樣,對于 51 單片機,可以通過編程設(shè)置相應(yīng)的 GPIO 口為輸出模式,并根據(jù)需要將 SDA 線設(shè)置為低電平(應(yīng)答)或高電平(非應(yīng)答)。

校驗 ACK 的過程需要仔細考慮時鐘同步、數(shù)據(jù)傳輸的時序以及 GPIO 口的設(shè)置和讀取操作,以確保通信的準確性和可靠性。

Q:這個Quartus軟件顯示問題怎么解決?我在Quartus上面進行Verilog仿真,全編譯后查看RTL視圖,正常顯示應(yīng)該如圖1,但是我的電腦屏幕上面顯示的如圖2,有些內(nèi)容顯示不完整,看著很難受,這種問題應(yīng)該怎么解決?

A:這種情況可以嘗試以下幾種方法來解決:

一、調(diào)整軟件顯示設(shè)置

1. 嘗試調(diào)整 Quartus 軟件的窗口大小。有時候窗口過小過大可能會導(dǎo)致部分內(nèi)容顯示不完整??梢允謩永齑翱谶吙颍词欠衲苁癸@示內(nèi)容完整呈現(xiàn)。

2. 檢查軟件的縮放設(shè)置。如果軟件支持縮放功能,可以嘗試調(diào)整縮放比例,看是否能改善顯示效果。通??梢栽谲浖摹耙晥D”或“設(shè)置”菜單中找到相關(guān)選項。

二、更新顯卡驅(qū)動

1. 過時的顯卡驅(qū)動可能會導(dǎo)致圖形顯示問題。訪問顯卡制造商的官方網(wǎng)站,下載并安裝最新版本的顯卡驅(qū)動程序

2. 安裝完成后,重新啟動計算機,然后再次打開 Quartus 軟件,查看 RTL 視圖是否正常顯示。

三、檢查系統(tǒng)分辨率設(shè)置

1. 確保你的計算機系統(tǒng)分辨率設(shè)置合理。過高或過低的分辨率可能會影響軟件的顯示效果。

2. 嘗試調(diào)整系統(tǒng)分辨率,看是否能使 Quartus 軟件的 RTL 視圖正常顯示??梢栽诓僮飨到y(tǒng)的“顯示設(shè)置”中進行分辨率調(diào)整。

四、重新安裝 Quartus 軟件

1. 如果以上方法都無法解決問題,可以考慮重新安裝 Quartus 軟件。

2. 在卸載軟件之前,確保備份好你的項目文件和設(shè)置。然后按照正確的步驟卸載 Quartus 軟件,并清理殘留文件。

3. 下載較新且穩(wěn)定的版本的 Quartus 軟件(如18.0版本,并進行安裝。安裝過程中,注意選擇正確的安裝選項和配置。安裝完成后,重新打開軟件,查看 RTL 視圖是否正常顯示。

如果多種方法嘗試都不行,卸載重裝最直接高效。

今天先整理三個問題答疑,后續(xù)還會持續(xù)推出本系列。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

任何技術(shù)的學(xué)習(xí)就好比一個江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。