加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

09/29 12:10
1109
閱讀需 9 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. 嘗試調(diào)整 Quartus 軟件的窗口大小。有時(shí)候窗口過小過大可能會(huì)導(dǎo)致部分內(nèi)容顯示不完整。可以手動(dòng)拉伸窗口邊框,看是否能使顯示內(nèi)容完整呈現(xiàn)。

2. 檢查軟件的縮放設(shè)置。如果軟件支持縮放功能,可以嘗試調(diào)整縮放比例,看是否能改善顯示效果。通常可以在軟件的“視圖”或“設(shè)置”菜單中找到相關(guān)選項(xiàng)。

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

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

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

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

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

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

四、重新安裝 Quartus 軟件

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

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

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

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

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

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

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