国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種解碼方法及裝置的制造方法

      文檔序號:8545981閱讀:254來源:國知局
      一種解碼方法及裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本申請涉及電子信息領(lǐng)域,尤其涉及一種解碼方法及裝置。
      【背景技術(shù)】
      [0002]相比于使用解碼電路進行解碼的方式而言,使用處理器解碼的方式更為滿足低功耗的要求。
      [0003]現(xiàn)有的使用處理器進行解碼的方式,在檢測到電平的變化時,產(chǎn)生中斷,進行解碼。
      [0004]而對于工業(yè)總線型的應(yīng)用場景而言,在此情況下,處理器不可能支持處理頻繁的中斷解碼。例如,曼徹斯特碼在總線供電的應(yīng)用中經(jīng)常采用,如符合IEC61158-2標準的PROFIBUS-PA和FF-Hl現(xiàn)場智能設(shè)備。總線供電對處理器的功耗有較高要求,一般處理器的主頻不超過20MHz。曼徹斯特碼的頻率一般固定為31.25kHz,可見,現(xiàn)有的處理器解碼方式并不適用于主頻較低的處理器,因此,如何使用主頻較低的處理器進行解碼成為目前亟待解決的問題。
      [0005]申請內(nèi)容
      [0006]本申請?zhí)峁┝艘环N解碼方法及裝置,目的在于解決如何使用主頻較低的處理器進行解碼的問題。
      [0007]為了實現(xiàn)上述目的,本申請?zhí)峁┝艘韵录夹g(shù)方案:
      [0008]一種解碼方法,包括:
      [0009]對接收到的編碼進行采樣;
      [0010]將采樣得到的數(shù)據(jù)序列存儲到接收隊列;
      [0011]在所述接收隊列中的數(shù)據(jù)序列的幀數(shù)達到第一數(shù)值后,產(chǎn)生解碼中斷;
      [0012]在本次中斷周期,對所述接收隊列中的數(shù)據(jù)幀進行解碼。
      [0013]可選地,所述對所述接收隊列中的數(shù)據(jù)幀進行解碼包括:
      [0014]判斷所述接收隊列中的數(shù)據(jù)幀是否為全O或全1,如果否,則對所述數(shù)據(jù)幀進行解碼,如果所述本次解碼中斷周期中的先入先出接收隊列中的數(shù)據(jù)幀為全0,則記錄總線為空閑低電平狀態(tài),如果所述本次解碼中斷周期中的先入先出接收隊列中的數(shù)據(jù)幀為全1,則記錄總線為空閑高電平狀態(tài)。
      [0015]可選地,在所述編碼為曼徹斯特碼的情況下,所述對所述數(shù)據(jù)幀進行解碼包括:
      [0016]將所述接收隊列中的數(shù)據(jù)幀存儲到預(yù)設(shè)字節(jié)的存儲緩沖區(qū)中,其中,所述數(shù)據(jù)幀在所述存儲緩沖區(qū)中的存放順序與其在所述接收隊列中的存放順序相同;
      [0017]依據(jù)所述存儲緩沖區(qū)中的字節(jié),依次檢測前導碼起始位、前導碼、幀前界定碼、數(shù)據(jù)碼及幀結(jié)束碼。
      [0018]可選地,所述依據(jù)所述存儲緩沖區(qū)中的字節(jié),檢測所述前導碼起始位包括:
      [0019]檢測所述存儲緩沖區(qū)中的數(shù)據(jù)幀是否存在由高到低的跳變;
      [0020]若檢測到由高到低的跳變,且所述總線為空閑高電平狀態(tài),則確定從所述緩沖存儲區(qū)中的數(shù)據(jù)幀中檢測到編碼的前導碼起始位;
      [0021]若檢測到由高到低的跳變,且所述總線為空閑低電平狀態(tài),則判斷所述由高到低的跳變之前的高電平被采樣的次數(shù)是否達到第二數(shù)值,如果是,則確定從所述緩沖存儲區(qū)中的數(shù)據(jù)幀中檢測到前導碼起始位。
      [0022]可選地,所述存儲緩沖區(qū)為8個字節(jié);
      [0023]所述檢測所述存儲緩沖區(qū)中的數(shù)據(jù)幀是否存在由高到低的跳變至少包括以下一項:
      [0024]取上一中斷周期中存放在存儲緩沖區(qū)中的最后一個字節(jié)的后4位作為高4位,取本次中斷周期中存放在存儲緩沖區(qū)中的第一個字節(jié)的前4位作為低4位,組成新字節(jié),如果在所述新字節(jié)中出現(xiàn)以下任意一個預(yù)設(shè)數(shù)值,則確定存在由高到低的跳變,所述預(yù)設(shè)數(shù)值包括:0x80、0xC0、0xE0、0xF0、0xF8、0xFC、0xFE ;
      [0025]判斷本次中斷周期、所述存儲緩沖區(qū)中的第一個字節(jié),如果出現(xiàn)所述預(yù)設(shè)數(shù)值中的任意一個,則確定存在由高到低的跳變;
      [0026]遍歷所述存儲緩沖區(qū)中的所有字節(jié):取本次中斷周期、存儲緩沖區(qū)中的本次遍歷字節(jié)的后4位作為高4位,本次遍歷字節(jié)的后一個相鄰字節(jié)的前4位作為低4位,組成新字節(jié),如果所述新字節(jié)中出現(xiàn)所述預(yù)設(shè)數(shù)值中的任意一個,則確定存在由高到低的跳變;
      [0027]判斷本次中斷周期、存儲緩沖區(qū)中的第二個字節(jié),如果為所述預(yù)設(shè)數(shù)值中的任意一個,則確定存在由高到低的跳變。
      [0028]可選地,所述依據(jù)所述存儲緩沖區(qū)中的字節(jié),檢測所述前導碼包括:
      [0029]設(shè)置16位的全局變量A,所述A的最高位為I ;
      [0030]確定所述前導碼起始位在采樣得到的數(shù)據(jù)序列中的位置a ;
      [0031 ] 按照以下方式分別確定A的剩余位數(shù)的值:
      [0032]A:在本次中斷周期以及其之后的中斷周期、存儲緩沖區(qū)中的后續(xù)字節(jié)中查找由低到尚的跳變;
      [0033]B:記錄所述低到高的跳變在采樣得到的數(shù)據(jù)序列中的位置b ;
      [0034]C:如果不小于a,將b減去a的差值作為低電平的采樣次數(shù),如果b小于a,則將b減去a的差值與64之和作為低電平的采樣次數(shù);
      [0035]D:如果所述低電平的采樣次數(shù)在第三數(shù)值與第四數(shù)值之間,則確定所述A的次高位為O ;如果所述低電平的采樣次數(shù)在第五數(shù)值與第六數(shù)值之間,則確定所述A的次高位及所述次高位的前一位均為O ;如果所述低電平的采樣次數(shù)為其它數(shù)值,則確定解碼出錯;
      [0036]循環(huán)執(zhí)行A至D,直至得到A中全部位置的數(shù)值;
      [0037]如果所述A的值為1001100110011001,則確定檢測到前導碼,否則,則確定解碼出錯O
      [0038]可選地,所述依據(jù)所述存儲緩沖區(qū)中的字節(jié),檢測所述幀前界定碼包括:
      [0039]設(shè)置16位的全局變量A,所述A的最高位為I ;
      [0040]確定所述前導碼起始位在采樣得到的數(shù)據(jù)序列中的位置a ;
      [0041 ] 按照以下方式分別確定A的剩余位數(shù)的值:
      [0042]A:在本次中斷周期以及其之后的中斷周期、存儲緩沖區(qū)中的后續(xù)字節(jié)中查找由低到高的跳變;
      [0043]B:記錄所述低到高的跳變在采樣得到的數(shù)據(jù)序列中位置b ;
      [0044]C:如果不小于a,將b減去a的差值作為低電平的采樣次數(shù),如果b小于a,則將b減去a的差值與64之和作為低電平的采樣次數(shù);
      [0045]D:如果所述低電平的采樣次數(shù)在第三數(shù)值與第四數(shù)值之間,則確定所述A的次高位為0,如果所述低電平的采樣次數(shù)在第五數(shù)值與第六數(shù)值之間,則確定所述A的次高位及所述次高位的前一位均為O ;如果所述低電平的采樣次數(shù)為其它數(shù)值,則確定解碼出錯;
      [0046]循環(huán)執(zhí)行A至D,直至得到A中全部位置的數(shù)值;
      [0047]如果所述A的值為1011001001001101,則確定檢測到幀前定界碼,否則,則確定解碼出錯。
      [0048]可選地,所述依據(jù)所述存儲緩沖區(qū)中的字節(jié),檢測所述數(shù)據(jù)碼包括:
      [0049]設(shè)置16位的全局變量A,所述A的最高位為I ;
      [0050]確定所述前導碼起始位在采樣得到的數(shù)據(jù)序列中的位置a ;
      [0051 ] 按照以下方式分別確定A的剩余位數(shù)的值:
      [0052]A:在本次中斷周期以及其之后的中斷周期、存儲緩沖區(qū)中的后續(xù)字節(jié)中查找由低到尚的跳變;
      [0053]B:記錄所述低到高的跳變在采樣得到的數(shù)據(jù)序列中位置b ;
      [0054]C:如果不小于a,將b減去a的差值作為低電平的采樣次數(shù),如果b小于a,則將b減去a的差值與64之和作為低電平的采樣次數(shù);
      [0055]D:如果所述低電平的采樣次數(shù)在第三數(shù)值與第四數(shù)值之間,則確定所述A的次高位為0,如果所述低電平的采樣次數(shù)在第五數(shù)值與第六數(shù)值之間,則確定所述A的次高位及所述次高位的前一位均為O ;如果所述低電平的采樣次數(shù)為其它數(shù)值,則確定解碼出錯;
      [0056]循環(huán)執(zhí)行A至D,直至得到A中全部位置的數(shù)值;
      [0057]依據(jù)預(yù)設(shè)的規(guī)則,將A轉(zhuǎn)換為數(shù)據(jù)碼B,預(yù)設(shè)的規(guī)則可以為將A從高位到低位兩兩分成一組,每組對應(yīng)數(shù)據(jù)碼B中的一位,對于任意一組,第一類型組合對應(yīng)第一碼值,第二類型組合對應(yīng)第二碼值。
      [0058]可選地,所述依據(jù)所述存儲緩沖區(qū)中的字節(jié),檢測所述幀結(jié)束碼包括:
      [0059]設(shè)置16位的全局變量A,所述A的最高位為I ;
      [0060]確定所述前導碼起始位在采樣得到的數(shù)據(jù)序列中的位置a ;
      [0061 ] 按照以下方式分別確定A的剩余位數(shù)的值:
      [0062]A:在本次中斷周期以及其之后的中斷周期、存儲緩沖區(qū)中的后續(xù)字節(jié)中查找由低到尚的跳變;
      [0063]B:記錄所述低到高的跳變在采樣得到的數(shù)據(jù)序列中位置b ;
      [0064]C:如果不小于a,將b減去a的差值作為低電平的采樣次數(shù),如果b小于a,則將b減去a的差值與64之和作為低電平的采樣次數(shù);
      [0065]D:如果所述低電平的采樣次數(shù)在第三數(shù)值與第四數(shù)值之間,則確定所述A的次高位為0,如果所述低電平的采樣次數(shù)在第五數(shù)值與第六數(shù)值之間,則確定所述A的次高位及所述次高位的前一位均為O ;如果所述低電平的采樣次數(shù)為其它數(shù)值,則確定解碼出錯;
      [0066]循環(huán)執(zhí)行A至D,直至得到A中全部位置的數(shù)值;
      [0067]如果所述A的值為1011001100100110,則確定檢測到幀結(jié)束碼,否則,則確定解碼出錯。
      [0068]一種解碼裝置,包括:
      [0069]采樣模塊,用于對接收到的編碼進行采樣;
      [0070]存儲模塊,用于將采樣得到的數(shù)據(jù)序列存儲到接收隊列;
      [0071]中斷模塊,用于在所述接收隊列中的數(shù)據(jù)序列的幀數(shù)達到第一數(shù)值后,產(chǎn)生解碼中斷;
      [0072]解碼模塊,用于在本次中斷周期,對所述接收隊列中的數(shù)據(jù)幀進行解碼。
      [0073]可選地,所述解碼模塊用于對所述接收隊列中的數(shù)據(jù)幀進行解碼包括:
      [0074]所述解碼模塊具體用于,判斷所述接收隊列中的數(shù)據(jù)幀是否為全O或全1,如果否,則對所述數(shù)據(jù)幀進行解碼,如果所述本次解碼中斷周期中的先入先出接收隊列中的數(shù)據(jù)幀為全0,則記錄總線為空閑低電平狀態(tài),如果所述本次解碼中斷周期中的先入先出接收隊列中的數(shù)據(jù)幀為全1,則記錄總線為空閑高電平狀態(tài)。
      [0075]可選地,所述解碼模塊用于對所述數(shù)據(jù)幀進行解碼包括:
      [0076]所述解碼模塊具體用于,在所述編碼為曼徹斯特碼的情況下,將所述接收隊列中的數(shù)據(jù)幀存儲到預(yù)設(shè)字節(jié)的存儲緩沖區(qū)中,其中,所述數(shù)據(jù)幀在所述存儲緩沖區(qū)中的存放順序與其在所述接收隊列中的存放順序相同;依據(jù)所述存儲緩沖區(qū)中的字節(jié),依次檢測前導碼起始位、前導碼、幀前界定碼、數(shù)據(jù)碼及幀結(jié)束碼。
      [0077]可選地,所述解碼模塊用于依據(jù)所述存儲緩沖區(qū)中的字節(jié),檢測所述前導碼起始位包括:
      [0078]所述解碼模塊具體用于,檢測所述存儲緩沖區(qū)中的數(shù)據(jù)幀是否存在由高到低的跳變;若檢測到由高到低的跳變,且所述總線為空閑高電平狀態(tài),則確定從所述緩沖存儲區(qū)中的數(shù)據(jù)幀中檢測到編碼的前導碼起始位;若檢測到由高到低的跳變,且所述總線為空閑低電平狀態(tài),則判斷所述由高到低的跳變之前的高電平被采樣的次數(shù)是否達到第二數(shù)值,如果是,則確定從所述緩沖存儲區(qū)中的數(shù)據(jù)幀中檢測到前導碼起始位。
      [0079]可選地,所述解碼模塊用于檢測所述存儲緩沖區(qū)中的數(shù)據(jù)幀是否存在由高到低的跳變包括:
      [0080]所述解碼模塊具體用于,采用以下至少一項檢測所述存儲緩沖區(qū)中的數(shù)據(jù)幀是否存在由高到低的跳變:
      [0081]取上一中斷周期中存放在存儲緩沖區(qū)中的最后一個字節(jié)的后4位作為高4位,取本次中斷周期中存放在存儲緩沖區(qū)中的第一個字節(jié)的前4位作為低4位,組成新字節(jié),如果在所述新字節(jié)中出現(xiàn)以下任意一個預(yù)設(shè)數(shù)值,則確定存在由高到低的跳變,所述預(yù)設(shè)數(shù)值包括:0x80、0xC0、0xE0、0xF0、0xF8、0xFC、0xFE,所述存儲緩沖區(qū)為8個字節(jié);
      [0082]判斷本次中斷周期、所述存儲緩沖區(qū)中的
      當前第1頁1 2 3 4 5 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1