• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      標(biāo)量網(wǎng)絡(luò)分析儀下位機(jī)程序算法實(shí)現(xiàn)

      2023-08-30 00:31:34陳玉
      企業(yè)科技與發(fā)展 2023年5期
      關(guān)鍵詞:解碼移位編碼

      摘要:標(biāo)量網(wǎng)絡(luò)分析儀在進(jìn)行器件測試時(shí)對測試周期時(shí)間和數(shù)據(jù)準(zhǔn)確度有較高要求,為提升標(biāo)量網(wǎng)絡(luò)分析儀下位機(jī)運(yùn)行效率及降低硬件功耗,下位機(jī)固件程序采用了匯編語言。文章提出下位機(jī)固件程序中2種重要的算法:一種是壓縮BCD(二進(jìn)制編碼十進(jìn)制,Binary-Coded Decimal)碼的編碼與解碼算法,算法規(guī)避了下位機(jī)接收上位機(jī)數(shù)據(jù)的邏輯錯(cuò)誤;另一種是直接數(shù)字頻率合成器頻率字的改進(jìn)移位除法算法,解決了被除數(shù)小于除數(shù)的運(yùn)算限制。固件程序運(yùn)行結(jié)果顯示,標(biāo)量網(wǎng)絡(luò)分析儀測試速度、準(zhǔn)確度及功耗滿足測試需求。

      關(guān)鍵詞:標(biāo)量網(wǎng)絡(luò)分析儀;下位機(jī)程序;編碼;解碼;移位

      中圖分類號:TP31 文獻(xiàn)標(biāo)識(shí)碼:A? ?文章編號:1674-0688(2023)05-0024-04

      0 引言

      標(biāo)量網(wǎng)絡(luò)分析儀是一種便捷且分析結(jié)果顯示直觀的幅頻特性測試設(shè)備,可對射頻放大器、天線、耦合器、濾波器等器件進(jìn)行傳輸特性和反射特性進(jìn)行實(shí)時(shí)測量調(diào)試。商品化的標(biāo)量網(wǎng)絡(luò)分析儀體積龐大,因此在戶外或一些移動(dòng)測試作業(yè)場景上使用受到限制。構(gòu)建一個(gè)便攜、性能穩(wěn)定的標(biāo)量網(wǎng)絡(luò)分析儀測試系統(tǒng)可以使標(biāo)量網(wǎng)絡(luò)分析儀在體積上適于手持使用,同時(shí)能配合個(gè)人電腦系統(tǒng)進(jìn)行精細(xì)化操作。便攜標(biāo)量網(wǎng)絡(luò)分析儀整體結(jié)構(gòu)分為上位機(jī)和下位機(jī)2個(gè)部分,上位機(jī)利用開源軟件WinNWT作為測試控制前端,下位機(jī)主要由閉環(huán)硬件架構(gòu)和高效固件程序組成,上位機(jī)和下位機(jī)通過特殊定義的串口進(jìn)行通信并完成各類測試任務(wù)。由于標(biāo)量網(wǎng)絡(luò)分析儀對測試實(shí)時(shí)響應(yīng)的要求較高,所以下位機(jī)固件程序的算法效率直接影響整個(gè)標(biāo)量網(wǎng)絡(luò)分析儀的工作性能。為有效提升下位機(jī)數(shù)據(jù)處理效率,本研究采用壓縮BCD編解碼算法,同時(shí)基于計(jì)算直接數(shù)字頻率合成器頻率字的方法,提出改進(jìn)移位除法算法。

      1 運(yùn)行原理

      1.1 硬件運(yùn)行原理

      標(biāo)量網(wǎng)絡(luò)分析儀的工作流程如圖1所示,上位機(jī)程序和單片機(jī)通過串口協(xié)議連接,單片機(jī)通過上位機(jī)發(fā)送的協(xié)議命令解析并執(zhí)行網(wǎng)絡(luò)分析儀的相應(yīng)測試功能。被測器件(Device Under Test,DUT)執(zhí)行幅頻特性測試時(shí),單片機(jī)根據(jù)上位機(jī)發(fā)送的頻率范圍及頻率步進(jìn)值控制直接數(shù)字頻率合成器(Direct Digital Synthesizer,DDS),輸出一系列掃頻信號,掃頻信號通過寬帶放大電路產(chǎn)生足夠的測試功率,放大后的掃頻信號輸入DUT的輸入端并從DUT的輸出端輸出,輸出信號進(jìn)入對數(shù)放大電路后轉(zhuǎn)換成直流信號,單片機(jī)的模數(shù)采樣端對直流信號進(jìn)行模數(shù)采樣并轉(zhuǎn)發(fā)給上位機(jī),由此進(jìn)行正確的測量顯示[1]。

      1.2 軟件運(yùn)行原理

      上位機(jī)軟件WinNWT通過自定的串口協(xié)議規(guī)則和下位機(jī)通信,控制下位機(jī)完成標(biāo)量網(wǎng)絡(luò)分析儀的主要測試任務(wù),如點(diǎn)頻率輸出、掃頻及功率測量等。網(wǎng)絡(luò)分析儀在掃頻測量時(shí),不僅要求頻率分辨率高,而且對掃頻速度也有很高的要求,因此下位機(jī)軟件程序需要有足夠快的執(zhí)行和響應(yīng)速度。為此,標(biāo)量網(wǎng)絡(luò)分析儀采用了匯編語言編寫下位機(jī)微控制器的軟件程序,下位機(jī)微控制器采用PIC系列單片機(jī)[2]。

      WinNWT上位機(jī)軟件和下位單片機(jī)通信時(shí)執(zhí)行的串口協(xié)議,其規(guī)則在軟件的官方文檔中有具體的描述[3]。協(xié)議中指出:每條協(xié)議命令以十六進(jìn)制的8 F為開始字符,緊接8 F后的是具體的命令字符,例如對數(shù)掃頻會(huì)在8 F字節(jié)后發(fā)送22個(gè)ASCII字符“x001000000000140002000”,每個(gè)字符占用1個(gè)字節(jié),即相當(dāng)于22個(gè)字節(jié);其中,“x”表示對數(shù)掃頻,第2至第10個(gè)字節(jié)表示起始頻率,第11至第18個(gè)字節(jié)表示掃頻步進(jìn)頻率值,第19至第22個(gè)字節(jié)表示掃頻采樣點(diǎn)數(shù)。網(wǎng)絡(luò)分析儀的其他命令格式也相同,唯一的區(qū)別是每個(gè)命令字節(jié)的長短不同。

      2 協(xié)議解析

      2.1 下位機(jī)選擇

      由于標(biāo)量網(wǎng)絡(luò)分析儀和上位機(jī)軟件分工聯(lián)動(dòng)工作,因此可以極大地減輕下位機(jī)單片機(jī)的負(fù)荷,同時(shí)降低單片機(jī)的編程量。標(biāo)量網(wǎng)絡(luò)分析儀中的單片機(jī)負(fù)責(zé)控制直接數(shù)字頻率合成芯片,生成上位機(jī)所需的頻率,同時(shí)在掃頻時(shí)負(fù)責(zé)對數(shù)放大芯片的電壓數(shù)據(jù)進(jìn)行采樣,并將采樣數(shù)據(jù)通過串口協(xié)議回傳給上位機(jī)進(jìn)行處理;上位機(jī)對單片機(jī)回傳的數(shù)據(jù)進(jìn)行處理后顯示正確的測量結(jié)果。因?yàn)镈DS生成的頻率的幅度不一致,所以上位機(jī)軟件需要在網(wǎng)絡(luò)分析儀測量前進(jìn)行測量數(shù)據(jù)校準(zhǔn),并將校準(zhǔn)數(shù)據(jù)存儲(chǔ)在上位機(jī)中?;赑C平臺(tái)的上位機(jī)軟件可以更準(zhǔn)確、詳細(xì)地顯示大量測量數(shù)據(jù)。

      網(wǎng)絡(luò)分析儀下位機(jī)和上位機(jī)軟件WinNWT通信時(shí)也需要滿足相應(yīng)的串口協(xié)議,為此下位機(jī)微控制器選用PIC16F876單片機(jī)。PIC16F876單片機(jī)只有35條指令,時(shí)鐘頻率可以在低功耗狀態(tài)下達(dá)到20 MHz,其芯片內(nèi)部自帶USART串行通信模塊,從而方便與上位機(jī)軟件通信,減少編程量。由于網(wǎng)絡(luò)分析儀對測試的實(shí)時(shí)性和速度有較高要求,因此采用MPASM匯編語言進(jìn)行單片機(jī)編程。MPASM是美國微芯科技公司的原廠免費(fèi)匯編系統(tǒng),其編譯的程序更穩(wěn)定、可靠;匯編語言程序具有占用空間小、執(zhí)行效率高的優(yōu)勢,而且硬件功耗低。

      2.2 協(xié)議解析算法

      以下簡化程序段為下位機(jī)對上位機(jī)串口命令的解析子程序,子程序通過分析上位機(jī)串口發(fā)送的ASCII協(xié)議字符命名,控制下位機(jī)單片機(jī)執(zhí)行相應(yīng)的操作任務(wù)。例如,程序段中先判斷接收的第一個(gè)字符是否為“x”;如果是,再判斷命令長度是否為22個(gè)字符;如果是,則執(zhí)行對數(shù)掃頻;否則再判斷是否是其他命令;最后通過循環(huán)控制,不斷解析上位機(jī)串口發(fā)送的命令。

      ParseCommand:

      MES_WAIT:

      CALL sub_174;讀1個(gè)字節(jié)

      BTFSS STATUS,C

      GOTO MES_WAIT;為空

      XORLW 'x';AD8307掃頻

      BTFSS STATUS,Z

      GOTO TRY_COM_F;去點(diǎn)頻設(shè)置

      XORLW .22;是否22個(gè)字符

      BTFSS STATUS,Z

      GOTO TRY_COM_F;去點(diǎn)頻設(shè)置

      CALL Sweep;調(diào)用掃頻程序

      TRY_COM_F:

      XORLW 'f';點(diǎn)頻設(shè)置

      BTFSS STATUS,Z

      GOTO MES_WAIT

      XORLW .10

      BTFSS STATUS,Z

      GOTO MES_WAIT

      CALL Set_VFO;調(diào)用點(diǎn)頻程序

      RETURN

      3 核心算法

      3.1 壓縮BCD碼算法

      在上位機(jī)軟件WinNWT發(fā)送的命令數(shù)據(jù)中,這些數(shù)據(jù)的主體部分都是ASCII形式十進(jìn)制數(shù),每一位十進(jìn)制數(shù)需要占用1個(gè)字節(jié),例如上位機(jī)發(fā)送的對數(shù)掃頻命令A(yù)SCII碼為“x001000000000140002000”,22個(gè)字符需要占用22個(gè)字節(jié)長度,這種長度增加了下位機(jī)數(shù)據(jù)處理的負(fù)擔(dān),為此本文在下位機(jī)中采用壓縮BCD算法,壓縮BCD算法可以將串口協(xié)議碼的空間占用減少到原來的一半[4]。

      用4位二進(jìn)制數(shù)來表示1位十進(jìn)制數(shù)有16種組合,從中選出10種表示十進(jìn)制數(shù)的10個(gè)數(shù)碼有很多種方法,較常用的是壓縮BCD碼,即4位二進(jìn)制數(shù)的“權(quán)”由左至右分別是8、4、2、1,因此也稱為“8421碼”,用1個(gè)字節(jié)表示的2位BCD碼稱為壓縮型BCD碼。例如ASCII碼“10”用2個(gè)壓縮BCD碼表示為“00010000”,其中“0001”為ASCII碼的“1”,“0000”為ASCII碼的“0”,具體匯編程序代碼如下。

      sub_2DD:

      SWAPF 0x61,W ;高低4位互換

      ANDLW 0xF0;取高4位

      MOVWF 0x3F;填充高4位

      MOVF 0x62,W

      ANDLW 0xF ;取低4位

      IORWF 0x3F,F(xiàn);填充低4位

      RETURN

      以上子程序?yàn)閴嚎sBCD碼算法,例如ASCII碼“12”的“1”和“2”分別存放在0x61(00000001)、0x62(00000010)中,通過上述壓縮編碼子程序處理后,分別將0x61低4位存放在0x3F的高4位,0x62的低4位存放在0x3F的低4位,這樣ASCII碼“12”就以壓縮BCD碼(00010010)存放在0X3F中。

      3.2 BCD解碼算法

      如果將上述壓縮BCD碼算法處理后的數(shù)據(jù)直接送至下位機(jī)單片機(jī)中使用,會(huì)產(chǎn)生嚴(yán)重的邏輯錯(cuò)誤。具體原因可通過數(shù)據(jù)實(shí)例分析,例如上位機(jī)串口傳來的數(shù)據(jù)為10,壓縮BCD碼表示為00010000,如果單片機(jī)直接對該8位壓縮BCD碼進(jìn)行運(yùn)算處理,則會(huì)認(rèn)為是16,這與上位機(jī)發(fā)送數(shù)據(jù)意圖不一致,因此需要采用BCD解碼算法,具體程序如下。

      sub_220:

      MOVLW 0x8;8位

      MOVWF 0x2C

      loc_233:

      BCF STATUS,C ;清零

      RRF 0x52,F(xiàn)

      RRF 0x57,F(xiàn) ;輔助空間

      BTFSS 0x52,7;判斷第7位

      GOTO loc_246;不為1

      MOVLW 0x30 ;為1

      SUBWF 0x52,F(xiàn);減0x30

      loc_246:

      BTFSS 0x52,0x3 ;判斷第3位

      GOTO loc_24A ;不為1

      MOVLW 0x3;為1

      SUBWF 0x52,F(xiàn) ;減0x3

      loc_24A:

      DECFSZ 0x2C,F(xiàn)

      GOTO loc_233 ;循環(huán)

      RETURN

      上述程序采用循環(huán)右移算法,其中0x52中存放待處理的8位壓縮BCD碼,0x57中存放解碼結(jié)果,0x52的最低位數(shù)據(jù)每次右移進(jìn)入0x57的最高位,由于狀態(tài)標(biāo)志寄存器的c位每次循環(huán)移位前都要清零,所以不予考慮;0x52的7位和3位如果為1,則需分別減去0x30和0x3,程序中0x52和0x57分別進(jìn)行8次循環(huán)右移,最后0x57中存放的結(jié)果正好是0x52壓縮碼的解碼結(jié)果。具體解碼流程見表1。

      從表1中可見,0x52的初始值為00010000(ASCII碼為10),通過8次循環(huán)右移,0x57中的值為00001010,而該值正好是十進(jìn)制的10或十六進(jìn)制的A。該解碼程序?qū)SCII碼“10”進(jìn)行了正確解碼,使下位機(jī)可以正確處理后續(xù)數(shù)據(jù)。

      3.3 頻率控制字算法

      直接數(shù)字頻率合成芯片的頻率輸出是網(wǎng)絡(luò)分析儀的核心功能,是掃頻輸出各項(xiàng)指標(biāo)正確與否的關(guān)鍵。頻率控制字決定著直接數(shù)字頻率合成芯片的輸出頻率,其具體計(jì)算公式如下:

      [k = foutfc2n]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)

      公式(1)中,k表示頻率控制字,fout表示輸出頻率,fc表示時(shí)鐘頻率;由于式中的輸出頻率小于時(shí)鐘頻率,即被除數(shù)小于除數(shù),因此不能按計(jì)算機(jī)中常規(guī)的除法運(yùn)算規(guī)則計(jì)算,本文采用改進(jìn)的除法運(yùn)算規(guī)則,具體直接數(shù)字頻率合成芯片的程序算法如下[5]。

      sub_260:

      MOVF 0x2E,W

      MOVWF 0x58

      MOVLW .8;8位計(jì)數(shù)

      MOVWF 0x56

      loc_26C:;循環(huán)

      CLRF 0x60

      BCF STATUS,C

      RRF 0x52,F(xiàn);右移

      BTFSS STATUS,C

      GOTO loc_291;無溢出

      MOVF 0x58,W

      ADDWF 0x60,F(xiàn) ;求和

      loc_291:

      BCF STATUS,C ;清零

      RLF 0x58,F(xiàn)

      RLF 0x59,F(xiàn)

      DECFSZ 0x56,F(xiàn) ;更新計(jì)數(shù)

      GOTO loc_26C

      RETURN

      為使代碼描述方便、直觀,對其進(jìn)行一定程度的數(shù)據(jù)量簡化,假設(shè)0x58中存放的是系統(tǒng)時(shí)鐘值2(00000010),0x52中存放的是系統(tǒng)輸出頻率值4(00000100),n為8,那么按照公式(1)計(jì)算k等于8。將上述值代入程序驗(yàn)證,表2為程序的直觀數(shù)據(jù)處理過程[6]。從表2可以看到,0x52中的數(shù)值先進(jìn)行一次右移,如果沒有溢出,則0x58中的數(shù)值進(jìn)行一次左移;0x52第2次右移,此時(shí)產(chǎn)生了溢出,為此將0x52中的數(shù)值和0x58中的數(shù)值相加,并將結(jié)果賦給0x60,從程序代碼可以看出,運(yùn)算結(jié)果正好是8,與公式(1)的運(yùn)算結(jié)果保持一致。當(dāng)然,程序代碼中的0x52本應(yīng)該右移8次,相應(yīng)的0x58左移8次(相當(dāng)于28),但為了示例直觀,在數(shù)據(jù)和程序上進(jìn)行了一定的簡化。

      4 試驗(yàn)測試

      為驗(yàn)證上述算法的正確性,標(biāo)量網(wǎng)絡(luò)分析儀首先在上位機(jī)軟件WinNWT校準(zhǔn)狀態(tài)下,對中心頻率為8.998 MHz的晶體濾波器進(jìn)行幅頻特性測試;然后使用標(biāo)準(zhǔn)設(shè)備“安捷倫”8714ET網(wǎng)絡(luò)分析儀對該濾波器進(jìn)行相同參數(shù)的測試。表3為標(biāo)量網(wǎng)絡(luò)分析儀和“安捷倫”8714ET網(wǎng)絡(luò)分析儀主要測量數(shù)據(jù)的對比結(jié)果,從表3中可看出,標(biāo)量網(wǎng)絡(luò)分析儀WinNWT的測試數(shù)據(jù)在誤差范圍內(nèi),說明下位機(jī)算法是正確且可行的,尤其掃頻測試涉及數(shù)據(jù)量大時(shí),能更有效驗(yàn)證算法的正確性。表3對比的兩者中心頻率有50 Hz的誤差,主要是由標(biāo)量網(wǎng)絡(luò)分析儀硬件電路中的時(shí)鐘晶振引起的。

      5 結(jié)論

      (1)通過WinNWT上位機(jī)軟件串口協(xié)議編寫下位機(jī)軟件的具體程序,不僅很好地利用了上位機(jī)軟件的豐富功能,還減少了網(wǎng)絡(luò)分析儀的開發(fā)工作量。

      (2)下位機(jī)使用匯編語言極大地提高了對上位機(jī)的響應(yīng)速度。

      (3)網(wǎng)絡(luò)分析儀在程序開發(fā)過程中使用壓縮BCD編碼方法,該方法能有效降低數(shù)據(jù)的空間占用量;采用BCD解碼程序?qū)嚎sBCD碼進(jìn)行解碼處理,從而使下位機(jī)得到正確的處理結(jié)果。

      (4)直接數(shù)字頻率合成芯片的頻率控制字按常規(guī)算法編程不可行,進(jìn)行相應(yīng)的算法改進(jìn)后,直接數(shù)字頻率合成芯片的頻率控制字可以正確生成。

      通過對上述程序算法進(jìn)行改進(jìn)和創(chuàng)新,標(biāo)量網(wǎng)絡(luò)分析儀各項(xiàng)測試功能的可靠性得到了有效保障。經(jīng)試驗(yàn)測試,標(biāo)量網(wǎng)絡(luò)分析儀運(yùn)行穩(wěn)定且可靠,能夠直觀、準(zhǔn)確地測試射頻類器件的幅頻特性,其速度、準(zhǔn)確度及功耗均滿足工程實(shí)踐的測試需求。后續(xù)可通過提升軟件功能為標(biāo)量網(wǎng)絡(luò)分析儀添加更多實(shí)用測試功能。

      6 參考文獻(xiàn)

      [1]陳玉.TDC-GP22時(shí)間數(shù)字芯片關(guān)鍵編程算法研究與實(shí)現(xiàn)[J].軟件工程,2018,21(8):4-6.

      [2]Microchip Technology Inc.PIC16F87XA Datasheet[EB/OL].(2012-12-29)[2023-05-01].https://www.microchip.com/en-us/product/PIC16F877A.

      [3]黃克亞,余雷,李曉旭.STM32與PC機(jī)USART通信教學(xué)實(shí)驗(yàn)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2022,45(10):21-25.

      [4]劉昆.一種基于壓縮感知的快速圖像處理算法研究[J].軟件工程,2016,19(10):18-21.

      [5]陳沈理,郭廣建,李敏毅.一種基于DDS的三頻點(diǎn)標(biāo)準(zhǔn)超聲功率源的設(shè)計(jì)[J].計(jì)量學(xué)報(bào),2021,42(11):1488-1493.

      [6]蔣林,田璞,鄧軍勇.一種模式可配置的單精度浮點(diǎn)乘法器設(shè)計(jì)[J].西安郵電大學(xué)學(xué)報(bào),2020,25(6):63-66,81.

      *山西省教育科學(xué)“十四五”規(guī)劃2022年度課題“虛擬仿真技術(shù)在高等職業(yè)實(shí)踐教學(xué)中的研究與實(shí)踐”(GH-220443);2022年度山西工程科技職業(yè)大學(xué)校級科研基金計(jì)劃項(xiàng)目“DDS型標(biāo)量網(wǎng)絡(luò)分析儀設(shè)計(jì)”(KJ202222)。

      【作者簡介】陳玉,男,山西大同人,碩士,任職于山西工程科技職業(yè)大學(xué)信息工程學(xué)院,高級實(shí)驗(yàn)師,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)、嵌入式開發(fā)。

      【引用本文】陳玉.標(biāo)量網(wǎng)絡(luò)分析儀下位機(jī)程序算法實(shí)現(xiàn)[J].企業(yè)科技與發(fā)展,2023(5):24-27.

      猜你喜歡
      解碼移位編碼
      《解碼萬噸站》
      基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
      《全元詩》未編碼疑難字考辨十五則
      再生核移位勒讓德基函數(shù)法求解分?jǐn)?shù)階微分方程
      子帶編碼在圖像壓縮編碼中的應(yīng)用
      電子制作(2019年22期)2020-01-14 03:16:24
      解碼eUCP2.0
      中國外匯(2019年19期)2019-11-26 00:57:32
      大型總段船塢建造、移位、定位工藝技術(shù)
      NAD C368解碼/放大器一體機(jī)
      Quad(國都)Vena解碼/放大器一體機(jī)
      Genome and healthcare
      怀柔区| 永丰县| 嫩江县| 乌什县| 固阳县| 邹城市| 鹤庆县| 宁津县| 合阳县| 阿勒泰市| 久治县| 日土县| 比如县| 麦盖提县| 平安县| 永宁县| 夏河县| 翁源县| 双柏县| 绥江县| 大渡口区| 禹州市| 信宜市| 宜州市| 蓬溪县| 原阳县| 邵阳县| 博白县| 防城港市| 宁南县| 克东县| 麦盖提县| 余姚市| 阿合奇县| 揭西县| 宜阳县| 保靖县| 太和县| 施甸县| 长顺县| 奉化市|