一種基于脈寬等長機制的fsk調(diào)制與解調(diào)方法
【專利摘要】本發(fā)明公開了一種基于脈寬等長機制的FSK調(diào)制與解調(diào)方法。包括對“0”調(diào)制頻率為f0、周期為t0的n個脈沖,對“1”調(diào)制頻率為f1、周期為t1的m個脈沖,使得“0”的總調(diào)制寬度T0與“1”的總調(diào)制寬度T1相等。本發(fā)明在低速載波通訊領域,以高速單片機、DSP等為主控器件直接調(diào)制與解調(diào)、顯著降低成本的前提下,能有效提高解調(diào)識別的成功率。
【專利說明】-種基于脈寬等長機制的FSK調(diào)制與解調(diào)方法
【技術領域】
[0001] 本發(fā)明涉及數(shù)字信息傳輸領域,特別是一種基于脈寬等長機制的FSK調(diào)制與解調(diào) 方法。
【背景技術】
[0002] FSK (Frequency-Shift Keying,頻移鍵控)是利用載波頻率變化來傳遞數(shù)字信息 的一種數(shù)字調(diào)制技術。具有實現(xiàn)容易,抗噪聲與抗衰減的性能好等特點。在電力載波通訊 中到了廣泛的應用。如民用智能電表抄表系統(tǒng),電網(wǎng)中遠動信息收發(fā),礦井系統(tǒng)中的遙測遙 控傳輸?shù)取?br>
[0003] FSK最常用的方法是將二進制數(shù)1和0,分別調(diào)制為與f2兩個頻率不同的雙頻 FSK系統(tǒng)。被調(diào)制的頻率相對電網(wǎng)頻率高出許多。FSK系統(tǒng)中,"調(diào)制"相對簡單,"解調(diào)" t匕 較復雜。
[0004] FSK信號的解調(diào)方式有模擬解調(diào)方式與數(shù)字解調(diào)方式。模擬解調(diào)方式中,有參考差 分FSK解調(diào)和全差分FSK解調(diào)。參考差分FSK解調(diào)是將FSK載波信號控制偏置電流對電容 充電,根據(jù)電容上充電電壓與參考電壓通過比較器判決數(shù)據(jù)是1還是〇。全差分FSK解調(diào)是 利用不同偏置電流對不同的電容進行充電,根據(jù)電容上充電電壓差值的大小通過比較器判 決數(shù)據(jù)是1還是0。模擬解調(diào)電路容易漂移,是其主要缺點。數(shù)字解調(diào)方式通常有過零點檢 測、正交相乘等,過零點檢測解調(diào)方式適用于非常低速率的應用,通訊速率較低。正交相乘 解調(diào)方式較為復雜的乘法器以與高階數(shù)字濾波器,成本較高,電路也較復雜。另外FSK解調(diào) 電路還可以采用鎖相環(huán)PLL的方式實現(xiàn),包括模擬PLL和數(shù)字PLL。這類解調(diào)電路同樣有諸 多缺點,功耗較大,電路復雜,成本較高。
[0005] 隨著智能電網(wǎng)概念的普及,"智能"電器越來越多。智能電器的首要特點是可通訊。 因 FSK通訊方式無需增設額外的通訊線路,逐成為智能電器可通訊之首選。且智能電網(wǎng)、智 能電器相互之間的通訊速率往往較低。
[0006] 現(xiàn)有的FSK調(diào)制與解調(diào)方式有多種方法,其中解調(diào)方式有相干解調(diào)方式和非相干 解調(diào)等方式,但多不限定對"〇"與"1"的調(diào)制寬度。這給以高速單片機或DSP為主要控制 器件的智能電器的FSK通訊,帶了極大的不便,或增加了電路的復雜性,或降低了解碼的成 功率。
【發(fā)明內(nèi)容】
[0007] 針對現(xiàn)有技術中存在的問題,本發(fā)明的目的在于提供一種成本低、大幅度簡化了 FSK的"硬件調(diào)制發(fā)送耦合"電路、避免了數(shù)字解調(diào)電路的復雜性,克服了模擬解調(diào)電路時漂 的影響、同時提高了解調(diào)的快速性、具有極高的抗干擾能力的基于脈寬等長機制的FSK調(diào) 制與解調(diào)方法。
[0008] 為了達到上述目的,本發(fā)明采用以下技術方案。
[0009] 一種基于脈寬等長機制的FSK調(diào)制方法,步驟包括:
[0010] 1)取出一個待調(diào)制發(fā)送的字節(jié),設置"字節(jié)循環(huán)次數(shù)A"為8位/次,之后執(zhí)行步 驟2);
[0011] 2)當最低位為"0"時,設置定時器中斷"位循環(huán)次數(shù)B"為9次,設置定時中斷常 數(shù)為11. 25US ;當最低位為"1"時,設置定時器中斷"循環(huán)位次數(shù)"為10次,設置定時中斷常 數(shù)為10. 125US,之后執(zhí)行步驟3);
[0012] 3)將發(fā)送端口置高電平后,啟動定時器,之后執(zhí)行步驟4);
[0013] 4)定時器中斷后取反電平信號,將"位循環(huán)次數(shù)B"減1,并判斷當B = 0時,建立 0B標志,所述的0B標志表示一個"位"調(diào)制發(fā)送完成,否則當B尹0時,重新啟動定時器定 時,并逐個脈沖碼元發(fā)送,之后執(zhí)行步驟5);
[0014] 5)主程序判斷到OB = 1時,將"字節(jié)循環(huán)次數(shù)A"減1,并判斷當A尹0時,將待調(diào) 制發(fā)送的字節(jié)循環(huán)右移一次,返回到步驟2),當A = 0時,關閉定時器,完成一個字節(jié)的調(diào)制 發(fā)送。
[0015] 一種基于脈寬等長機制的FSK解調(diào)方法,步驟包括:
[0016] 1)設置碼元個體脈沖最大寬度限定值,設置一楨,即一個字節(jié)的最小寬度時限、最 大寬度時限,之后執(zhí)行步驟2);
[0017] 2)設置下降沿捕獲中斷開啟,設置并清空二個數(shù)據(jù)緩沖區(qū),設置指向第一數(shù)據(jù)緩 沖區(qū)的指針為數(shù)據(jù)緩沖區(qū)首地址,清零累加時間數(shù)據(jù),之后執(zhí)行步驟3);
[0018] 3)下降沿捕獲中斷后,將捕獲時間數(shù)據(jù)保存至指針指向的地址,指針加一,并累加 時間數(shù)據(jù),之后執(zhí)行步驟4);
[0019] 4)當本次捕獲時間數(shù)據(jù)大于個體脈沖最大寬度限定值,則執(zhí)行步驟2),否則執(zhí)行 步驟5);
[0020] 5)當累加時間數(shù)據(jù)在一楨最小寬度時限與最大寬度時限之間,則建立完成接收一 楨標志S0,否則等待下一次中斷,之后執(zhí)行步驟6);
[0021] 6)主程序檢測S0標志,當SO = 1時,將第一數(shù)據(jù)緩沖區(qū)里的數(shù)據(jù),轉(zhuǎn)移到二數(shù)據(jù) 緩沖區(qū),并清空第一數(shù)據(jù)緩沖區(qū),之后執(zhí)行步驟7);
[0022] 7)主程序?qū)Φ诙?shù)據(jù)緩沖區(qū)以逐個T為單位進行計算,設置解碼字節(jié)UD = 00H, 解碼次數(shù)=8,設置指針指向從第二數(shù)據(jù)緩沖區(qū)首地址A0,之后執(zhí)行步驟8);
[0023] 8)累加指針地址里的時間數(shù)據(jù),直到等于大于T,此時的地址記號為A1,之后執(zhí)行 步驟9);
[0024] 9)在A0到A1地址中,設符合"0"碼元時限的個數(shù)n,符合"1"碼元時限的個數(shù)m, 當η彡m,則解碼結果為"0" ;否則,解碼結果為" 1",將解碼結果賦值UD的最高位后,UD循 環(huán)右移一位,指針地址+1記號為A0,累加器清零,之后執(zhí)行步驟10);
[0025] 10)當解碼次數(shù)減1不為零時,返回步驟8,當解碼次數(shù)減1為零時,完成一楨解 碼。
[0026] 采用上述技術方案后,本發(fā)明具有以下有益效果:
[0027] 1、為了大幅度降低成本,在低速FSK通訊場合,常采用高速單片機、DSP為核心元 件進行調(diào)制與解調(diào),可大幅度簡化FSK調(diào)制發(fā)送電路與FSK信號接收電路。
[0028] 2、調(diào)制方,高速單片機或DSP,采用定時中斷、查表等方式,對待調(diào)制字節(jié)采用、脈 沖η個數(shù)或^脈沖m個數(shù)或不同的組合形式進行調(diào)制,直接通過端口發(fā)送,從而大幅度簡 化了 FSK的"硬件調(diào)制發(fā)送耦合"電路。
[0029] 3、接收方,高速單片機或DSP,采用邊沿捕獲、外部觸發(fā)中斷等方式,直接獲取碼元 寬度時間值及個數(shù)。FSK信號由程序進行解調(diào)還原,從而避免了數(shù)字解調(diào)電路的復雜性,克 服了模擬解調(diào)電路時漂的影響。
[0030] 4、FSK信號解調(diào)還原,依據(jù)脈寬等長機制,查找總寬度內(nèi)最接近標稱值的碼元序 列,在該序列中,只要有1個碼元與標稱值的碼元相吻合,即可解調(diào)出二進制位值,從而大 大降低了解調(diào)的復雜性,同時提高了解調(diào)的快速性。
[0031] 5、本方法具有極高的抗干擾能力。
[0032] 6、作為智能電器的主控制器,高速單片機或DSP在完成主要監(jiān)控任務的同時,可 兼顧FSK的調(diào)制與解調(diào)任務,大幅度降低總體成本。
[0033] 綜上所述,本發(fā)明基于脈寬等長機制的的FSK調(diào)制與解調(diào)方法,調(diào)制方法簡單,解 調(diào)可靠性高,抗干擾能力強,快速性好,可廣泛使用于智能電器等多種場合。
【專利附圖】
【附圖說明】
[0034] 圖1是本發(fā)明基于脈寬等長機制的FSK調(diào)制與解調(diào)方法原理圖。
[0035] 圖2是本發(fā)明基于脈寬等長機制的FSK調(diào)制方法的流程圖。
[0036] 圖3是本發(fā)明基于脈寬等長機制的FSK解調(diào)方法的流程圖。
[0037] 圖4是本發(fā)明基于脈寬等長機制的FSK調(diào)制與解調(diào)方法抗干擾原理圖解之一。
[0038] 圖5是本發(fā)明基于脈寬等長機制的FSK調(diào)制與解調(diào)方法抗干擾原理圖解之二。
【具體實施方式】
[0039] 下面根據(jù)說明書附圖和具體實施例對本發(fā)明作進一步的解釋。
[0040] 如圖1所示,對"0"進行調(diào)制,采用的碼元寬度td = 11. 25us,碼元個數(shù)η = 9,調(diào) 制頻率&約等于88. 88ΚΗζ,總的調(diào)制時間Τ等于101. 25us ;對"1"進行調(diào)制,采用的碼元 寬度h = 10. 125us,碼元個數(shù)m = 10,調(diào)制頻率&約等于98. 76KHz,總的調(diào)制時間T等于 10L25us。調(diào)制中心頻率約為93.56KHz。FSK有效數(shù)據(jù)速率可達9.8Kbit/s。
[0041] 一種基于脈寬等長機制的FSK調(diào)制方法,步驟包括:
[0042] 1、定時器初始化
[0043] 1)取出一個待調(diào)制發(fā)送的字節(jié),設置"字節(jié)循環(huán)次數(shù)A"為8位(次);
[0044] 2)判斷待調(diào)制發(fā)送字節(jié)的最高位,當最高位為"0"時,設置定時器中斷"位循環(huán)次 數(shù)B"為9次,定時中斷常數(shù)為11. 25us ;當最高位為" 1"時,設置定時器中斷"位循環(huán)次數(shù) B"為10次,定時中斷常數(shù)為10. 125us ;
[0045] 3)開放定時器中斷,輸出端口置高電平,啟動定時器定時。
[0046] 2、定時中斷(如圖2所示)
[0047] 1)將輸出端口取反,之后執(zhí)行步驟2);
[0048] 2)位循環(huán)次數(shù)B減去1后判斷是否為零,如果不為零執(zhí)行步驟3);如果為零執(zhí)行 步驟4);
[0049] 3)重置定時常數(shù),退出中斷;
[0050] 4)字節(jié)循環(huán)次數(shù)A減去1后判斷是否為零,如果不為零執(zhí)行步驟5);如果為零執(zhí) 行步驟6);
[0051] 5)待調(diào)制的字節(jié)左移1位,之后執(zhí)行步驟7);
[0052] 6) 0B = 1,建立調(diào)制字節(jié)發(fā)送完成標志,供主程序查詢。
[0053] 7)判斷最高位是否為1,如果不是1執(zhí)行步驟8);是1執(zhí)行步驟9);
[0054] 8)設置位循環(huán)次數(shù)B = 9,定時器時間常數(shù)t= 11.25US,之后執(zhí)行步驟10);
[0055] 9)設置位循環(huán)次數(shù)B= 10,定時器時間常數(shù)t= 10.125US,之后執(zhí)行步驟10);
[0056] 10)退出中斷。
[0057] -種基于脈寬等長機制的FSK解調(diào)方法,步驟包括:
[0058] 1、數(shù)據(jù)捕獲
[0059] 1)設置下降沿捕獲中斷開啟,設置向數(shù)據(jù)指針指向第一數(shù)據(jù)緩沖區(qū)的首地址,開 啟一個定時器,清零累加時間數(shù)據(jù);
[0060] 2)下降沿捕獲中斷后捕獲定時器的當前時間值數(shù)據(jù),減去上次的捕獲數(shù)據(jù)得到本 次捕獲的真值,保存至第一數(shù)據(jù)緩沖區(qū),數(shù)據(jù)指針加1,捕獲時間累加和加上本次捕獲的真 值。
[0061] 3)判斷捕獲時間累加和,是否大于等于一個字節(jié)的時間寬度(如101. 25USX8 位)。小于時,等待下一次捕獲中斷,執(zhí)行步驟2);大于時,清零捕獲時間累加和,建立完成 接收一楨標志S0并進行數(shù)據(jù)備份。
[0062] 2、數(shù)據(jù)備份
[0063] 將第一數(shù)據(jù)緩沖區(qū)里的數(shù)據(jù),備份至第二數(shù)據(jù)緩沖區(qū),同時清空第一數(shù)據(jù)緩沖區(qū)。
[0064] 3、數(shù)據(jù)解調(diào)(如圖3所示,針對第二數(shù)據(jù)緩沖區(qū))
[0065] 1)解調(diào)初始化包括:設置解碼次數(shù)q = 8,默認解碼字節(jié)UD = 00,指針指向數(shù)組 首地址A0,時間數(shù)據(jù)累加和t清零,設置碼元"0"的寬度值,設置碼元" 1"的寬度值,設置位 寬度時間值T = 101. 25us,之后執(zhí)行步驟2);
[0066] 2)逐個累加指針地址里的時間數(shù)據(jù),直到等于大于T,此時的指針地址記號為A1, 之后執(zhí)行步驟3);
[0067] 3)令第二數(shù)據(jù)指針指向地址A0,在A0到A1地址段中,對碼元個體時間值進行計 算準備,之后執(zhí)行步驟4);
[0068] 4)計算碼元"0"的個數(shù)n,之后執(zhí)行步驟5);
[0069] 5)計算碼元" 1"的個數(shù)m,之后執(zhí)行步驟6);
[0070] 6)判斷η是否大于等于m,大于等于是,執(zhí)行步驟8);否則執(zhí)行步驟7);
[0071] 7)解碼結果為"1",置位解碼字節(jié)最高位,之后執(zhí)行步驟8);
[0072] 8)解碼字節(jié)左移1位,之后執(zhí)行步驟9);
[0073] 9)將解碼次數(shù)q減去1后判斷是否為零。如果不為零,執(zhí)行步驟10);如果為零, 執(zhí)行步驟11);
[0074] 10)時間數(shù)據(jù)累加和t清零,數(shù)據(jù)指針地址更新A1為A0,執(zhí)行步驟2);
[0075] 11)完成一楨解碼,解碼結束。
[0076] 如圖4所示,盡管碼元個數(shù)不變,但碼元個體寬度時間值受到了嚴重干擾。在一個 等長調(diào)制脈?; (?; = T)的寬度內(nèi),只要碼元Pi或P2符合標稱值寬度,即可解調(diào)出"0";在一 個等長調(diào)制脈?\ (?\ = T)的寬度內(nèi),只要碼元Pi符合標稱值寬度,即可解調(diào)出" 1"。
[0077] 如圖5所示,碼元個體寬度時間值受到嚴重干擾,碼元個數(shù)也方式了變化。但在 τ〇(TQ = τ),的寬度內(nèi),碼元Pi及p4符合"〇"要求,故計數(shù)值Π = 2;碼元p5符合" 1 "要求, 故計數(shù)值m=l。因 η大于m,可解調(diào)出"0"。的寬度內(nèi),碼元Pi&P4符合 " 1"要求,故計數(shù)值m = 2 ;碼元P5符合"0"要求,故計數(shù)值η = 1。因 η小于m,可解調(diào)出 "1"。
【權利要求】
1. 一種基于脈寬等長機制的FSK調(diào)制方法,其特征在于步驟包括: 1) 取出一個待調(diào)制發(fā)送的字節(jié),設置"字節(jié)循環(huán)次數(shù)A"為8位/次,之后執(zhí)行步驟2); 2) 當最低位為"0"時,設置定時器中斷"位循環(huán)次數(shù)B"為9次,設置定時中斷常數(shù)為 11. 25us ;當最低位為" 1"時,設置定時器中斷"循環(huán)位次數(shù)"為10次,設置定時中斷常數(shù)為 10. 125us,之后執(zhí)行步驟3); 3) 將發(fā)送端口置高電平后,啟動定時器,之后執(zhí)行步驟4); 4) 定時器中斷后取反電平信號,將"位循環(huán)次數(shù)B"減1,并判斷當B = 0時,建立OB標 志,所述的OB標志表示一個"位"調(diào)制發(fā)送完成,否則當B尹0時,重新啟動定時器定時,并 逐個脈沖碼元發(fā)送,之后執(zhí)行步驟5); 5) 主程序判斷到OB = 1時,將"字節(jié)循環(huán)次數(shù)A"減1,并判斷當A尹0時,將待調(diào)制發(fā) 送的字節(jié)循環(huán)右移一次,返回到步驟2),當A = 0時,關閉定時器,完成一個字節(jié)的調(diào)制發(fā) 送。
2. -種基于脈寬等長機制的FSK解調(diào)方法,其特征在于步驟包括: 1) 設置碼元個體脈沖最大寬度限定值,設置一楨,即一個字節(jié)的最小寬度時限、最大寬 度時限,之后執(zhí)行步驟2); 2) 設置下降沿捕獲中斷開啟,設置并清空二個數(shù)據(jù)緩沖區(qū),設置指向第一數(shù)據(jù)緩沖區(qū) 的指針為數(shù)據(jù)緩沖區(qū)首地址,清零累加時間數(shù)據(jù),之后執(zhí)行步驟3); 3) 下降沿捕獲中斷后,將捕獲時間數(shù)據(jù)保存至指針指向的地址,指針加一,并累加時間 數(shù)據(jù),之后執(zhí)行步驟4); 4) 當本次捕獲時間數(shù)據(jù)大于個體脈沖最大寬度限定值,則執(zhí)行步驟2),否則執(zhí)行步驟 5); 5) 當累加時間數(shù)據(jù)在一楨最小寬度時限與最大寬度時限之間,則建立完成接收一楨標 志SO,否則等待下一次中斷,之后執(zhí)行步驟6); 6) 主程序檢測SO標志,當SO = 1時,將第一數(shù)據(jù)緩沖區(qū)里的數(shù)據(jù),轉(zhuǎn)移到二數(shù)據(jù)緩沖 區(qū),并清空第一數(shù)據(jù)緩沖區(qū),之后執(zhí)行步驟7); 7) 主程序?qū)Φ诙?shù)據(jù)緩沖區(qū)以逐個T為單位進行計算,設置解碼字節(jié)UD = 00H,解碼 次數(shù)=8,設置指針指向從第二數(shù)據(jù)緩沖區(qū)首地址A0,之后執(zhí)行步驟8); 8) 累加指針地址里的時間數(shù)據(jù),直到等于大于T,此時的地址記號為A1,之后執(zhí)行步驟 9) ;9)在A0到A1地址中,設符合"0"碼元時限的個數(shù)n,符合"1"碼元時限的個數(shù)m,當 η彡m,則解碼結果為"0";否則,解碼結果為"1",將解碼結果賦值UD的最高位后,UD循環(huán) 右移一位,指針地址+1記號為A0,累加器清零,之后執(zhí)行步驟10); 10)當解碼次數(shù)減1不為零時,返回步驟8,當解碼次數(shù)減1為零時,完成一楨解碼。
【文檔編號】H04L27/10GK104158779SQ201410416079
【公開日】2014年11月19日 申請日期:2014年8月21日 優(yōu)先權日:2014年8月21日
【發(fā)明者】吳志祥, 高波, 杜玉華, 黃亮 申請人:常州工學院