本發(fā)明涉及數字信息傳輸領域,特別是一種基于脈寬等長機制的fsk解調方法。
背景技術:
fsk(frequency-shiftkeying,頻移鍵控)是利用載波頻率變化來傳遞數字信息的一種數字調制技術。具有實現容易,抗噪聲與抗衰減的性能好等特點。在電力載波通訊中到了廣泛的應用。如民用智能電表抄表系統(tǒng),電網中遠動信息收發(fā),礦井系統(tǒng)中的遙測遙控傳輸等。
fsk最常用的方法是將二進制數1和0,分別調制為f1與f2兩個頻率不同的雙頻fsk系統(tǒng)。被調制的頻率相對電網頻率高出許多。fsk系統(tǒng)中,“調制”相對簡單,“解調”比較復雜。
fsk信號的解調方式有模擬解調方式與數字解調方式。模擬解調方式中,有參考差分fsk解調和全差分fsk解調。參考差分fsk解調是將fsk載波信號控制偏置電流對電容充電,根據電容上充電電壓與參考電壓通過比較器判決數據是1還是0。全差分fsk解調是利用不同偏置電流對不同的電容進行充電,根據電容上充電電壓差值的大小通過比較器判決數據是1還是0。模擬解調電路容易漂移,是其主要缺點。數字解調方式通常有過零點檢測、正交相乘等,過零點檢測解調方式適用于非常低速率的應用,通訊速率較低。正交相乘解調方式較為復雜的乘法器以與高階數字濾波器,成本較高,電路也較復雜。另外fsk解調電路還可以采用鎖相環(huán)pll的方式實現,包括模擬pll和數字pll。這類解調電路同樣有諸多缺點,功耗較大,電路復雜,成本較高。
隨著智能電網概念的普及,“智能”電器越來越多。智能電器的首要特點是可通訊。因fsk通訊方式無需增設額外的通訊線路,逐成為智能電器可通訊之首選。且智能電網、智能電器相互之間的通訊速率往往較低。
現有的fsk調制與解調方式有多種方法,其中解調方式有相干解調方式和非相干解調等方式,但多不限定對“0”與“1”的調制寬度。這給以高速單片機或dsp為主要控制器件的智能電器的fsk通訊,帶了極大的不便,或增加了電路的復雜性,或降低了解碼的成功率。
技術實現要素:
針對現有技術中存在的問題,本發(fā)明的目的在于提供一種成本低、大幅度簡化了fsk的“硬件調制發(fā)送耦合”電路、避免了數字解調電路的復雜性,克服了模擬解調電路時漂的影響、同時提高了解調的快速性、具有極高的抗干擾能力的基于脈寬等長機制的fsk解調方法。
為了達到上述目的,本發(fā)明采用以下技術方案。
一種基于脈寬等長機制的fsk解調方法,步驟包括:
1)設置碼元個體脈沖最大寬度限定值,設置一楨,即一個字節(jié)的最小寬度時限、最大寬度時限,之后執(zhí)行步驟2);
2)設置下降沿捕獲中斷開啟,設置并清空二個數據緩沖區(qū),設置指向第一數據緩沖區(qū)的指針為數據緩沖區(qū)首地址,清零累加時間數據,之后執(zhí)行步驟3);
3)下降沿捕獲中斷后,將捕獲時間數據保存至指針指向的地址,指針加一,并累加時間數據,之后執(zhí)行步驟4);
4)當本次捕獲時間數據大于個體脈沖最大寬度限定值,則執(zhí)行步驟2),否則執(zhí)行步驟5);
5)當累加時間數據在一楨最小寬度時限與最大寬度時限之間,則建立完成接收一楨標志so,否則等待下一次中斷,之后執(zhí)行步驟6);
6)主程序檢測so標志,當so=1時,將第一數據緩沖區(qū)里的數據,轉移到二數據緩沖區(qū),并清空第一數據緩沖區(qū),之后執(zhí)行步驟7);
7)主程序對第二數據緩沖區(qū)以逐個t為單位進行計算,設置解碼字節(jié)ud=00h,解碼次數=8,設置指針指向從第二數據緩沖區(qū)首地址a0,之后執(zhí)行步驟8);
8)累加指針地址里的時間數據,直到等于大于t,此時的地址記號為a1,之后執(zhí)行步驟9);
9)在a0到a1地址中,設符合“0”碼元時限的個數n,符合“1”碼元時限的個數m,當n≥m,則解碼結果為“0”;否則,解碼結果為“1”,將解碼結果賦值ud的最高位后,ud循環(huán)右移一位,指針地址+1記號為a0,累加器清零,之后執(zhí)行步驟10);
10)當解碼次數減1不為零時,返回步驟8,當解碼次數減1為零時,完成一楨解碼。
采用上述技術方案后,本發(fā)明具有以下有益效果:
1、為了大幅度降低成本,在低速fsk通訊場合,常采用高速單片機、dsp為核心元件進行調制與解調,可大幅度簡化fsk調制發(fā)送電路與fsk信號接收電路。
2、調制方,高速單片機或dsp,采用定時中斷、查表等方式,對待調制字節(jié)采用t0脈沖n個數或t1脈沖m個數或不同的組合形式進行調制,直接通過端口發(fā)送,從而大幅度簡化了fsk的“硬件調制發(fā)送耦合”電路。
3、接收方,高速單片機或dsp,采用邊沿捕獲、外部觸發(fā)中斷等方式,直接獲取碼元寬度時間值及個數。fsk信號由程序進行解調還原,從而避免了數字解調電路的復雜性,克服了模擬解調電路時漂的影響。
4、fsk信號解調還原,依據脈寬等長機制,查找總寬度內最接近標稱值的碼元序列,在該序列中,只要有1個碼元與標稱值的碼元相吻合,即可解調出二進制位值,從而大大降低了解調的復雜性,同時提高了解調的快速性。
5、本方法具有極高的抗干擾能力。
6、作為智能電器的主控制器,高速單片機或dsp在完成主要監(jiān)控任務的同時,可兼顧fsk的調制與解調任務,大幅度降低總體成本。
綜上所述,本發(fā)明基于脈寬等長機制的的fsk調制與解調方法,調制方法簡單,解調可靠性高,抗干擾能力強,快速性好,可廣泛使用于智能電器等多種場合。
附圖說明
圖1是本發(fā)明基于脈寬等長機制的fsk調制方法原理圖。
圖2是本發(fā)明基于脈寬等長機制的fsk調制方法的流程圖。
圖3是本發(fā)明基于脈寬等長機制的fsk解調方法的流程圖。
圖4是本發(fā)明基于脈寬等長機制的fsk調制方法抗干擾原理圖解之一。
圖5是本發(fā)明基于脈寬等長機制的fsk調制方法抗干擾原理圖解之二。
具體實施方式
下面根據說明書附圖和具體實施例對本發(fā)明作進一步的解釋。
如圖1所示,對“0”進行調制,采用的碼元寬度t0=11.25us,碼元個數n=9,調制頻率f0約等于88.88khz,總的調制時間t等于101.25us;對“1”進行調制,采用的碼元寬度t0=10.125us,碼元個數m=10,調制頻率f0約等于98.76khz,總的調制時間t等于101.25us。調制中心頻率約為93.56khz。fsk有效數據速率可達9.8kbit/s。
一種基于脈寬等長機制的fsk調制方法,步驟包括:
1、定時器初始化
1)取出一個待調制發(fā)送的字節(jié),設置“字節(jié)循環(huán)次數a”為8位(次);
2)判斷待調制發(fā)送字節(jié)的最低位,當最低位為“0”時,設置定時器中斷“位循環(huán)次數b”為9次,定時中斷常數為11.25us;當最低位為“1”時,設置定時器中斷“位循環(huán)次數b”為10次,定時中斷常數為10.125us;
3)開放定時器中斷,輸出端口置高電平,啟動定時器定時。
2、定時中斷(如圖2所示)
1)將輸出端口取反,之后執(zhí)行步驟2);
2)位循環(huán)次數b減去1后判斷是否為零,如果不為零執(zhí)行步驟3);如果為零,建立ob標志,執(zhí)行步驟4);
3)重置定時常數,退出中斷;
4)字節(jié)循環(huán)次數a減去1后判斷是否為零,如果不為零執(zhí)行步驟5);如果為零執(zhí)行步驟6);
5)待調制的字節(jié)右移1位,之后執(zhí)行步驟7);
6)ov=1,建立調制字節(jié)發(fā)送完成標志,供主程序查詢。
7)判斷最高位是否為1,如果不是1執(zhí)行步驟8);是1執(zhí)行步驟9);
8)設置位循環(huán)次數b=9,定時器時間常數t=11.25us,之后執(zhí)行步驟10);
9)設置位循環(huán)次數b=10,定時器時間常數t=10.125us,之后執(zhí)行步驟10);
10)退出中斷。
一種基于脈寬等長機制的fsk解調方法,步驟包括:
1、數據捕獲
1)設置下降沿捕獲中斷開啟,設置向數據指針指向第一數據緩沖區(qū)的首地址,開啟一個定時器,清零累加時間數據;
2)下降沿捕獲中斷后捕獲定時器的當前時間值數據,減去上次的捕獲數據得到本次捕獲的真值,保存至第一數據緩沖區(qū),數據指針加1,捕獲時間累加和加上本次捕獲的真值。
3)判斷捕獲時間累加和,是否大于等于一個字節(jié)的時間寬度(如101.25us×8位)。小于時,等待下一次捕獲中斷,執(zhí)行步驟2);大于時,清零捕獲時間累加和,建立完成接收一楨標志so并進行數據備份。
2、數據備份
將第一數據緩沖區(qū)里的數據,備份至第二數據緩沖區(qū),同時清空第一數據緩沖區(qū)。
3、數據解調(如圖3所示,針對第二數據緩沖區(qū))
1)解調初始化包括:設置解碼次數q=8,默認解碼字節(jié)ud=00,指針指向數組首地址a0,時間數據累加和t清零,設置碼元“0”的寬度值,設置碼元“1”的寬度值,設置位寬度時間值t=101.25us,之后執(zhí)行步驟2);
2)逐個累加指針地址里的時間數據,直到等于大于t,此時的指針地址記號為a1,之后執(zhí)行步驟3);
3)令第二數據指針指向地址a0,在a0到a1地址段中,對碼元個體時間值進行計算準備,之后執(zhí)行步驟4);
4)計算碼元“0”的個數n,之后執(zhí)行步驟5);
5)計算碼元“1”的個數m,之后執(zhí)行步驟6);
6)判斷n是否大于等于m,大于等于是,執(zhí)行步驟8);否則執(zhí)行步驟7);
7)解碼結果為“1”,置位解碼字節(jié)最高位,之后執(zhí)行步驟8);
8)解碼字節(jié)左移1位,之后執(zhí)行步驟9);
9)將解碼次數q減去1后判斷是否為零。如果不為零,執(zhí)行步驟10);如果為零,執(zhí)行步驟11);
10)時間數據累加和t清零,數據指針地址更新a1為a0,執(zhí)行步驟2);
11)完成一楨解碼,解碼結束。
如圖4所示,盡管碼元個數不變,但碼元個體寬度時間值受到了嚴重干擾。在一個等長調制脈t0(t0=t)的寬度內,只要碼元p1或p2符合標稱值寬度,即可解調出“0”;在一個等長調制脈t1(t1=t)的寬度內,只要碼元p1符合標稱值寬度,即可解調出“1”。
如圖5所示,碼元個體寬度時間值受到嚴重干擾,碼元個數也方式了變化。但在t0(t0=t),的寬度內,碼元p1及p4符合“0”要求,故計數值n=2;碼元p5符合“1”要求,故計數值m=1。因n大于m,可解調出“0”。在t1(t1=t),的寬度內,碼元p1及p4符合“1”要求,故計數值m=2;碼元p5符合“0”要求,故計數值n=1。因n小于m,可解調出“1”。