Scilab 中的數(shù)字信號處理:如何解碼 FSK 信號
出處:維庫電子市場網(wǎng) 發(fā)布于:2023-04-26 16:10:14
了解從解調(diào)頻移鍵控基帶信號中提取原始數(shù)字數(shù)據(jù)的 DSP 技術(shù)。
相關(guān)信息
- 數(shù)字調(diào)制:幅度和頻率(來自AAC的RF教材第4章)
- 如何解調(diào)數(shù)字相位調(diào)制
以前關(guān)于基于 Scilab 的數(shù)字信號處理的文章
- Scilab 正弦信號處理簡介
- 如何使用 Scilab 執(zhí)行頻域分析
- 如何使用 Scilab 分析調(diào)幅射頻信號
- 如何使用 Scilab 分析調(diào)頻射頻信號
- 如何對數(shù)字化音頻信號進行調(diào)頻
- Scilab 中的數(shù)字信號處理:如何使用音頻處理濾波器去除錄音中的噪聲
- Scilab 中的音頻處理:如何實現(xiàn)頻譜減法
用于在正弦波形中對二進制數(shù)據(jù)進行編碼的方法之一稱為頻移鍵控 (FSK)。這是一個簡單的概念:一個頻率代表零,不同的頻率代表一。例如:
低頻 FSK 信號(例如,幾十千赫茲)可以轉(zhuǎn)換為更高頻率,然后傳輸。這是創(chuàng)建實現(xiàn)數(shù)字數(shù)據(jù)無線傳輸?shù)?RF 系統(tǒng)的一種有效且相當直接的方法——假設(shè)我們有一個接收器可以將所有這些正弦波形轉(zhuǎn)換回 1 和 0。
從傳輸?shù)?FSK 信號中提取數(shù)字數(shù)據(jù)的過程可分為兩個一般任務(wù):首先,將高頻接收信號轉(zhuǎn)換為低頻基帶信號。我將此稱為“解調(diào)”。其次,必須將基帶波形轉(zhuǎn)換為 1 和 0。我不認為將這第二步稱為“解調(diào)”是不正確的,但為了避免混淆,當我談?wù)搶⒌皖l模擬波形轉(zhuǎn)換為數(shù)字位時,我將始終使用術(shù)語“解碼”。
軟件解碼
對于數(shù)據(jù)速率適中的系統(tǒng),將 FSK 基帶信號數(shù)字化并在軟件中進行解碼是完全可行的。(您可以查看我們對軟件定義無線電的介紹, 了解有關(guān)在軟件中實現(xiàn)重要信號處理任務(wù)的射頻系統(tǒng)的更多信息。)在我看來,這是一種極好的方法,因為它允許接收器受益于數(shù)字信號處理,它還提供了一種在測試過程中記錄和分析接收信號的便捷方式。
在本文中,我們將使用 Scilab 對 FSK 信號進行解碼,但所涉及的計算并不復雜,并且可以很容易地在數(shù)字信號處理器中以 C 代碼的形式實現(xiàn)。
要事:數(shù)學
我們解碼 FSK 的技術(shù)基于正弦信號的乘積。考慮以下三角恒等式:
sin(x)?sin(y)=12(cos(xy)?cos(x+y))
讓我們使用 ω 1 t 和 ω 2 t 代替 x 和 y,使其更符合工程界。
(請注意,我們忽略了相位差的影響;在本文中,我們假設(shè)所有信號都具有相同的相位。)我們可以將兩個正弦波或兩個余弦波相乘,結(jié)果由兩個余弦波組成,頻率為等于兩個原始頻率的和與差。這里的關(guān)鍵觀察是,如果兩個輸入波具有非常相似的頻率,則 cos((ω 1 –ω 2 )t) 波形將具有非常低的頻率。在理想化的數(shù)學領(lǐng)域,我們可以輸入兩個相同頻率和 cos((ω 1 –ω 2)t) 變?yōu)?cos(0t) = cos(0) = 1。因此,如果我們將兩個相同頻率的正弦波或兩個余弦波相乘,得到的波形將具有相對較大的直流偏移。
在解碼 FSK 的上下文中,我們可以這樣說:即使頻率相似而不是相同,仍然會有很大的直流偏移,因為 cos((ω 1 –ω 2 )t)波形將從1開始并且相對于一位周期下降得非常緩慢. 位周期是編碼一個數(shù)字位所需的時間量;在上圖中,位周期對應(yīng)二進制 0 頻率的一個周期(或二進制 1 頻率的三個周期)。一個比特周期中包含的模擬波形部分稱為符號。在本文中,我們使用二進制(即雙頻)FSK,因此一個符號對應(yīng)一個數(shù)字位。可以使用兩個以上的頻率,這樣一個符號可以傳輸多個比特。
逐步解碼 FSK
我們現(xiàn)在有了制定 FSK 解碼程序所需的信息:
- 將接收到的基帶信號數(shù)字化。
- 識別位周期的開始。這可以在訓練序列的幫助下完成;有關(guān)更多信息,請單擊此處并向下滾動到“數(shù)據(jù)包剖析”部分中的“序言”標題。對于本文,我們假設(shè)數(shù)據(jù)被編碼為正弦波(如上圖所示)而不是余弦波。
- 將每個符號乘以二進制 0 頻率的正弦波和二進制 1 頻率的正弦波。
- 計算每個符號的直流偏移。
- 選擇一個閾值并根據(jù)符號的直流偏移是高于還是低于閾值來決定二進制 0 和二進制 1。
Scilab 實施
我們將從以二進制 0 頻率 (10 kHz) 和二進制 1 頻率 (30 kHz) 生成單符號正弦波形開始。
零頻 = 10e3; OneFrequency = 30e3; 采樣頻率 = 300e3; Samples_per_Symbol = 采樣頻率/零頻率; n = 0:(Samples_per_Symbol-1); Symbol_Zero = sin(2*%pi*n / (SamplingFrequency/ZeroFrequency)); Symbol_One = sin(2*%pi*n / (SamplingFrequency/OneFrequency)); 繪圖(n,Symbol_Zero) 繪圖(n,Symbol_One)
現(xiàn)在讓我們創(chuàng)建接收到的基帶信號。我們可以通過連接Symbol_Zero和Symbol_One數(shù)組來做到這一點;我們將使用序列 0101:
ReceivedSignal = [Symbol_Zero Symbol_One Symbol_Zero Symbol_One]; 情節(jié)(接收信號)
接下來,我們將接收信號中的每個符號乘以二進制 0 符號的波形和二進制 1 符號的波形。我們根據(jù)接收信號中的符號數(shù)連接Symbol_Zero和Symbol_One數(shù)組,然后使用逐元素乘法來完成此步驟;有關(guān) Scilab(或 MATLAB)中逐元素乘法的更多信息,請參閱本文。
Decoding_Zero = ReceivedSignal .* [Symbol_Zero Symbol_Zero Symbol_Zero Symbol_Zero]; Decoding_One = ReceivedSignal .* [Symbol_One Symbol_One Symbol_One Symbol_One]; 情節(jié)(解碼_零)
情節(jié)(解碼_一)
不要被這些相當復雜的波形分心;我們感興趣的只是直流偏移,用數(shù)學術(shù)語來說就是平均值。如果我們要顯示每個交易品種對應(yīng)的DC偏移量,我們首先需要生成一些新的數(shù)組:
對于 k=1:(length(Decoding_Zero)/Samples_per_Symbol)
> SymbolOffsets_Zero(((k-1)*Samples_per_Symbol)+1:k*(Samples_per_Symbol)) = mean(Decoding_Zero(((k-1)*Samples_per_Symbol)+1:k*(Samples_per_Symbol)));
> 結(jié)束
對于 k=1:(length(Decoding_One)/Samples_per_Symbol)
> SymbolOffsets_One(((k-1)*Samples_per_Symbol)+1:k*(Samples_per_Symbol)) = mean(解碼_One(((k-1)*Samples_per_Symbol)+1:k*(Samples_per_Symbol)));
> 結(jié)束
您可能需要稍微思考一下這些命令才能準確理解我在做什么,但基本思想如下:for 循環(huán)用于通過 Decoding_Zero 和 Decoding_One 數(shù)組處理一個符號。在SymbolOffsets_Zero和SymbolOffsets_One數(shù)組中,一個符號對應(yīng)的所有數(shù)據(jù)點都填充了Decoding_Zero和Decoding_One數(shù)組中相關(guān)符號的均值。每個符號有 30 個樣本,因此個命令對數(shù)組值 1 到 30 進行操作,下一個命令對數(shù)組值 31 到 60 進行操作,依此類推。以下是結(jié)果:
情節(jié)(SymbolOffsets_Zero)
情節(jié)(SymbolOffsets_One)
SymbolOffsets_Zero數(shù)組顯示接收到的基帶符號與二進制 0 頻率相乘產(chǎn)生的 DC 偏移,SymbolOffsets_One數(shù)組顯示接收到的基帶符號與二進制 1 頻率相乘產(chǎn)生的 DC 偏移。我們知道,將兩個相似的頻率相乘會產(chǎn)生比較大的直流偏移。因此, SymbolOffsets_Zero數(shù)組中的值 0.5表示接收到的符號是二進制 0,而SymbolOffsets_One數(shù)組中的值 0.5表示接收到的符號是二進制 1。
結(jié)論
本文介紹了一種解碼 FSK 的數(shù)學方法。該過程是在 Scilab 中實現(xiàn)的,但是將 Scilab 命令轉(zhuǎn)換為編程語言(例如 C)并不困難。我們將在下一篇文章中繼續(xù)使用 FSK 解碼。
上一篇:數(shù)字信號處理的介紹
下一篇:使用信號平均來提高測量的準確性
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 探究 TVS 布局與靜電放電防護效果之間的內(nèi)在聯(lián)系2025/9/1 16:45:12
- 高扇出信號線優(yōu)化技巧(下)2025/8/28 16:10:19
- 高扇出信號線的優(yōu)化策略(上)2025/8/28 16:05:16
- 揭秘 PCI - SIG:PCIe 信號設(shè)計的關(guān)鍵指南與要點2025/8/26 16:09:23
- 揭秘模擬信號:采樣與 AD 轉(zhuǎn)換的核心原理2025/8/25 16:49:46