單片機(jī)實(shí)現(xiàn)(74)漢明碼的編碼畢業(yè)設(shè)計(jì)_第1頁(yè)
單片機(jī)實(shí)現(xiàn)(74)漢明碼的編碼畢業(yè)設(shè)計(jì)_第2頁(yè)
單片機(jī)實(shí)現(xiàn)(74)漢明碼的編碼畢業(yè)設(shè)計(jì)_第3頁(yè)
單片機(jī)實(shí)現(xiàn)(74)漢明碼的編碼畢業(yè)設(shè)計(jì)_第4頁(yè)
單片機(jī)實(shí)現(xiàn)(74)漢明碼的編碼畢業(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)實(shí)現(xiàn)(7,4)漢明碼的編碼摘 要在當(dāng)今和未來(lái)的信息化社會(huì)中,數(shù)字通信已成為信息傳輸?shù)闹匾侄危驍?shù)字化已成為當(dāng)今世界的主要潮流。但是,數(shù)字信號(hào)在傳輸過(guò)程中,加性噪聲,碼間串?dāng)_等都會(huì)產(chǎn)生誤碼,因此需要用信道編碼來(lái)降低誤碼率,提高數(shù)字通信的可靠性。隨著差錯(cuò)控制編碼技術(shù)的蓬勃發(fā)展,作為信道傳輸過(guò)程抗干擾的有效手段,其中較為成熟的編碼方法如漢明碼、奇偶校驗(yàn)碼、循環(huán)冗余碼等編碼技術(shù),被廣泛應(yīng)用于計(jì)算機(jī)、電子通信、控制等領(lǐng)域。其中漢明碼是一種能夠糾正一位錯(cuò)誤且編碼效率較高的線性分組碼。由于它的編譯碼在工程上較易實(shí)現(xiàn),所以應(yīng)用廣泛。與其他的錯(cuò)誤校驗(yàn)碼類似,漢明碼也利用了奇偶校驗(yàn)位的概念,通過(guò)在數(shù)據(jù)位

2、后面增加一些比特,可以驗(yàn)證數(shù)據(jù)的有效性。利用一個(gè)以上的校驗(yàn)位,漢明碼不僅可以驗(yàn)證數(shù)據(jù)是否有效,還能在數(shù)據(jù)出錯(cuò)的情況下指明錯(cuò)誤位置。在接受端通過(guò)糾錯(cuò)譯碼自動(dòng)糾正傳輸中的差錯(cuò)來(lái)實(shí)現(xiàn)碼糾錯(cuò)功能,稱為前向糾錯(cuò)fec。在數(shù)據(jù)鏈路中存在大量噪音時(shí),fec可以增加數(shù)據(jù)吞吐量。通過(guò)在傳輸碼列中加入冗余位(也稱糾錯(cuò)位)可以實(shí)現(xiàn)前向糾錯(cuò)。但這種方法比簡(jiǎn)單重傳協(xié)議的成本要高。漢明碼利用奇偶?jí)K機(jī)制降低了前向糾錯(cuò)的成本。軟件實(shí)現(xiàn)下面給出基于最常用的mcs-51單片機(jī)匯編語(yǔ)言的漢明碼測(cè)試程序。它的有效信息占到了總編碼長(zhǎng)度的70%,測(cè)試程序中自動(dòng)生成11個(gè)字節(jié)的原始數(shù)據(jù)。原始數(shù)據(jù)塊的長(zhǎng)度、存放地址可根據(jù)實(shí)際情況由用戶自己確

3、定,只要將本測(cè)試程序的漢明碼編碼、解碼子程序嵌入用戶應(yīng)用程序中,就可直接使用。本課題就是研究利用c8051f系列單片機(jī)來(lái)實(shí)現(xiàn)(7,4)漢明碼的編碼。關(guān)鍵詞:?jiǎn)纹瑱C(jī);線性分組碼;(7,4)漢明碼c8051f series mcu(7,4)hamming code encodingabstractin todays and future information society, digital communication has become an important means of information transmission, the global digital has become

4、a major trend in todays world. however, the digital signal in the transmission process, the additive noise, intersymbol interference, and this will result in error, channel coding, therefore need to reduce the error rate and improve the reliability of digital communications. with the error control c

5、oding techniques flourished as the transmission channel interference and effective means by which the more mature coding methods, such as hamming codes, parity bits, cyclic redundancy code and other coding techniques are widely used in computers, electronics communication, control and other fields.

6、hamming code which is able to correct a mistake and the code more efficient linear block codes. encoding and decoding in the project because of its easier to achieve, so widely used. with other similar error check code, hamming code parity bit also use the concept, followed by an increase in the num

7、ber of bits of data bits, the validity of data can be verified. use more than one parity bit, hamming codes can not only verify the data is valid, but also in the case of data error location specified in the error. by error correction decoding in a receiver automatically correct the transmission err

8、ors to achieve error correction code, known as forward error correction fec. there are a lot of data-link noise, fec can increase data throughput. transmission code in the column by adding redundant bits (also known as error correction bits) can be achieved fec. however, this method than a simple re

9、transmission protocol to the high cost. hamming code parity block mechanism reduces the use of forward error correction costs. software are given below based on the most popular mcs-51 microcontroller hamming code assembly language test program. it accounts for effective information length of 70% of

10、 the total coding and testing program automatically generates 11 bytes of raw data. the length of the original data block, or hold the actual situation according to the user to determine if the hamming code of the test program encoding and decoding routines embedded in user applications, can be used

11、 directly. this topic is to study the use of c8051f mcu to achieve (7,4) hamming code encoding.keywords:mcu; linear block codes; (7,4) hamming code目 錄第1章 緒論1第2章 實(shí)驗(yàn)的軟硬件環(huán)境22.1 vhdl語(yǔ)言的概述22.1.1 vhdl語(yǔ)言的發(fā)展歷史22.1.2 vhdl語(yǔ)言的特點(diǎn)22.1.3 vhdl語(yǔ)言的開(kāi)發(fā)流程42.1.4 vhdl的程序結(jié)構(gòu)62.1.5 邏輯芯片的分類72.2 max+plus的使用10第3章 基于cpld的pcm解碼電

12、路的設(shè)計(jì)163.1 pcm的概述163.2 解調(diào)pcm碼的基本原理173.2.1 位同步的實(shí)現(xiàn)183.2.2 幀同步的實(shí)現(xiàn)213.2.3 字同步及pcm碼串并轉(zhuǎn)換233.2.4 模塊綜合273.3 分析與總結(jié)30總結(jié)32致謝33參考文獻(xiàn)34第1章 緒論在簡(jiǎn)要介紹漢明碼編碼原理的基礎(chǔ)上,詳細(xì)分析干擾對(duì)漢明碼糾錯(cuò)的影響;通過(guò)對(duì)漢明碼重新組織排列,在不增加代碼冗余的前提下,提高漢明碼抗突發(fā)干擾的能力,為漢明碼在實(shí)際中的應(yīng)用提供新的思路;給出基于單片機(jī)的匯編語(yǔ)言漢明碼測(cè)試程序。糾錯(cuò)引言漢明碼是在原編碼的基礎(chǔ)上附加一部分代碼,使其滿足糾錯(cuò)碼的條件。它屬于線性分組碼,由于線性碼的編碼和譯碼容易實(shí)現(xiàn),至今仍

13、是應(yīng)用最廣泛的一類碼。在實(shí)際應(yīng)用中常常存在各種突發(fā)干擾,使連續(xù)多位數(shù)據(jù)發(fā)生差錯(cuò)。為了糾正3個(gè)以上的差錯(cuò),就要加大碼距,使代碼冗余度大大增加,通信效率下降。本文所介紹的方法,就可以在不加大碼距的同時(shí),提高漢明碼對(duì)突發(fā)干擾所產(chǎn)生差錯(cuò)的糾錯(cuò)能力,糾正多位連續(xù)的差錯(cuò)。用漢明碼對(duì)連續(xù)多位差錯(cuò)糾正的實(shí)現(xiàn)要想在不加大碼距的前提下,糾正連續(xù)多位差錯(cuò),提高抵抗突發(fā)干擾的能力,可根據(jù)校驗(yàn)矩陣得出的漢明碼重新進(jìn)行組織排列。通信中,一般可分為異步、同步兩種方式。在異步傳輸中起始位和停止位是由硬件電路產(chǎn)生的,如果干擾使起始位或停止位發(fā)生了改變,那么即使程序有跨字節(jié)糾錯(cuò)的能力也是無(wú)用的。對(duì)于同步方式則是可行的,因?yàn)樵诎l(fā)送

14、接收雙方取得同步后,數(shù)據(jù)塊的每個(gè)字符間取消了起始位和停止位。常用的串口通信一般采用異步傳輸方式,能保證糾正連續(xù)1個(gè)字節(jié)的差錯(cuò)就可以了。我們也要看到,這樣處理后提高了漢明碼對(duì)突發(fā)干擾差錯(cuò)的糾錯(cuò)能力,卻犧牲了對(duì)隨機(jī)干擾糾錯(cuò)能力。因?yàn)檫@樣對(duì)漢明碼重新排序后,原來(lái)1個(gè)漢明碼的各個(gè)位分布在不同位置的字節(jié)里,當(dāng)有多個(gè)隨機(jī)干擾出現(xiàn)時(shí),可能使原來(lái)這個(gè)被拆開(kāi)的1個(gè)漢明碼多位出現(xiàn)差錯(cuò)。因此采用多少位的漢明碼,如何對(duì)漢明碼重新組織排列,要根據(jù)信道的特點(diǎn)來(lái)決定。軟件實(shí)現(xiàn)下面給出基于最常用的mcs-51單片機(jī)匯編語(yǔ)言的漢明碼測(cè)試程序。它的有效信息占到了總編碼長(zhǎng)度的70%,測(cè)試程序中自動(dòng)生成11個(gè)字節(jié)的原始數(shù)據(jù)。原始數(shù)據(jù)

15、塊的長(zhǎng)度、存放地址可根據(jù)實(shí)際情況由用戶自己確定,只要將本測(cè)試程序的漢明碼編碼、解碼子程序嵌入用戶應(yīng)用程序中,就可直接使用。第2章 實(shí)驗(yàn)的軟硬件環(huán)境2.1 keil c51語(yǔ)言的概述2.1.1 8051開(kāi)發(fā)工具 keil c51標(biāo)準(zhǔn)c編譯器為8051微控制器的軟件開(kāi)發(fā)提供了c語(yǔ)言環(huán)境,同時(shí)保留了匯編代碼高效,快速的特點(diǎn)。c51編譯器的功能不斷增強(qiáng), 使你可以更加貼近c(diǎn)pu本身,及其它的衍生產(chǎn)品。c51已被完全集成到uvision3的集成開(kāi)發(fā)環(huán)境中,這個(gè)集成開(kāi)發(fā)環(huán)境包含:編譯器,匯編 器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uvision3 ide可為它們提供單一而靈活的開(kāi)發(fā)環(huán)境。 c51 v7版本

16、是目前最高效、靈活的8051開(kāi)發(fā)平臺(tái)。它可以支持所有8051的衍生產(chǎn)品,也可以支持所有兼容的仿真器,同時(shí)支持其它第三 方開(kāi)發(fā)工具。因此,c51 v7版本無(wú)疑是8051開(kāi)發(fā)用戶的最佳選擇。 2.1.2 uvision3集成開(kāi)發(fā)環(huán)境一、項(xiàng)目管理 工程(project)是由源文件、開(kāi)發(fā)工具選項(xiàng)以及編程說(shuō)明三部分組成的。 一個(gè)單一的uvision3工程能夠產(chǎn)生一個(gè)或多個(gè)目標(biāo)程序。產(chǎn)生目標(biāo)程序的源文件構(gòu)成“組”。開(kāi)發(fā)工具選項(xiàng)可以對(duì)應(yīng)目標(biāo),組或單個(gè)文件。 uvision3包含一個(gè)器件數(shù)據(jù)庫(kù)(device database),可以自動(dòng)設(shè)置匯編器、編譯器、連接定位器及調(diào)試器選項(xiàng),來(lái)滿足用戶充分利用特定 微控制

17、器的要求。此數(shù)據(jù)庫(kù)包含:片上存儲(chǔ)器和外圍設(shè)備的信息,擴(kuò)展數(shù)據(jù)指針(extra data pointer)或者加速(mathaccelerator)的特性。 uvision3可以為片外存儲(chǔ)器產(chǎn)生必要的連接選項(xiàng):確定起始地址和規(guī)模。 二、集成功能 uvision3的強(qiáng)大功能有助于用戶按期完工。 1.集成源極瀏覽器利用符號(hào)數(shù)據(jù)庫(kù)使用戶可以快速瀏覽源文件。用詳細(xì)的符號(hào)信息來(lái)優(yōu)化用戶變數(shù)存儲(chǔ)器。 2.文件尋找功能:在特定文件中執(zhí)行全局文件搜索。 3.工具菜單:允許在v2集成開(kāi)發(fā)環(huán)境下啟動(dòng)用戶功能。 4.可配置svcs接口:提供對(duì)版本控制系統(tǒng)的入口。 5.pclint接口:對(duì)應(yīng)用程序代碼進(jìn)行深層語(yǔ)法分析。

18、 6.infineon的easycase接口:集成塊集代碼產(chǎn)生。 7.infineon的dave功能:協(xié)助用戶的cpu和外部程序。dave工程可被直接輸入uvision32.1.3編輯器和調(diào)試器一、源代碼編輯器 uvision3編輯器包含了所有用戶熟悉的特性。彩色語(yǔ)法顯像和文件辯識(shí)都對(duì)c源代碼進(jìn)行和優(yōu)化??梢栽诰庉嬈鲀?nèi)調(diào)試程序,它能提供一種自然的調(diào)試環(huán)境,使你更快速地檢查和修改程序。 二、斷點(diǎn) uvision3允許用戶在編輯時(shí)設(shè)置程序斷點(diǎn)(甚至在源代碼未經(jīng)編譯和匯編之前)。用戶啟動(dòng)v2調(diào)試器之后,斷點(diǎn)即被激活。斷點(diǎn)可設(shè)置 為條件表達(dá)式,變量或存儲(chǔ)器訪問(wèn),斷點(diǎn)被觸發(fā)后,調(diào)試器命令或調(diào)試功能即可執(zhí)

19、行。 在屬性框(attributes column)中可以快速瀏覽斷點(diǎn)設(shè)置情況和源程序行的位置。代碼覆蓋率信息可以讓你區(qū)分程序中已執(zhí)行和未執(zhí)行的部分。 三、調(diào)試函數(shù)語(yǔ)言 uvision3中,你可以編寫(xiě)或使用類似c的數(shù)語(yǔ)言進(jìn)行調(diào)試。 1.內(nèi)部函數(shù):如printf, memset, rand及其它功能的函數(shù)。 2.信號(hào)函數(shù):模擬產(chǎn)生cpu的模擬信號(hào)和脈沖信號(hào)(simulate analog and digital inputs to cpu)。 3.用戶函數(shù):擴(kuò)展指令范圍,合并重復(fù)動(dòng)作。 四、變量和存儲(chǔ)器 用戶可以在編輯器中選中變呈來(lái)觀察其取值。雙層窗口顯示,可進(jìn)行以下調(diào)整: 1.當(dāng)前函數(shù)的局部變

20、量 2.用戶在兩個(gè)不同watch窗口頁(yè)面上的自定義變量 3.堆棧調(diào)用(call stack)頁(yè)面上的調(diào)用記錄(樹(shù))(call tree) 4.不同格式的四個(gè)存儲(chǔ)區(qū) 2.1.4 c51編譯器keil c51編譯器在遵循ansi標(biāo)準(zhǔn)的同時(shí),為8051微控制器系列特別設(shè)計(jì)。語(yǔ)言上的擴(kuò)展能讓用戶使用應(yīng)用中的所有資源。 一、存儲(chǔ)器和特殊功能寄存器的存取 c51編譯器可以實(shí)現(xiàn)對(duì)8051系列所有資源的操作。sfr的存取由sfr和sbit兩個(gè)關(guān)鍵字來(lái)提供。變量可旋轉(zhuǎn)到任一個(gè)地址空間。用關(guān)鍵字at還能把變量放入固定的存儲(chǔ)器存儲(chǔ)模式(大,中,?。Q定了變量的存儲(chǔ)類型。連接定位器支持的代碼區(qū)可達(dá)32個(gè),這就允許用戶

21、在原有64krom的8015基礎(chǔ)上擴(kuò)展程序。在v2的編譯器和許多高性能仿真器中,可以支持應(yīng)用程序的調(diào)試。 二、中斷功能 c51允許用戶使用c語(yǔ)言編寫(xiě)中斷服務(wù)程序,快速進(jìn)、出代碼和寄存器區(qū)的轉(zhuǎn)換功能使c語(yǔ)言中斷功能更加高效。可再入功能是用關(guān)鍵字來(lái)定義的。多任務(wù),中斷或非中斷的代碼要求必須具備可再入功能。 三、靈活的指針 c51提供了靈活高效的指針。 通用指針用3個(gè)字節(jié)來(lái)存儲(chǔ)存儲(chǔ)器類型及目標(biāo)地址,可以在8051的任意存儲(chǔ)區(qū)內(nèi)存取任何變量。特殊指針在聲明的同時(shí)已指定了存儲(chǔ)器類型,指向某一特定的存儲(chǔ)區(qū)域。由于地址的存儲(chǔ)只需12字節(jié),因此,指針存取非常迅速。 2.1.5代碼優(yōu)化一、通用代碼優(yōu)化 1.常量

22、重疊(constant folding)6.寄存器間參數(shù)傳遞(parameter passing in register)2.通用子表達(dá)式刪除(common subexpression elimination)7.循環(huán)(loop rotation)3.長(zhǎng)度縮減速(reduction)8.死碼刪除(dead code elimination)4.控制流優(yōu)化(control flow optimization)9.通用tail merging5.寄存器變量使用(register variable usage)10.通用子程序塊打包(block subroutine packing)二、8051特殊

23、優(yōu)化 1.孔頸優(yōu)化(peephole optimization)4.數(shù)字覆蓋(overlaying)2.跳轉(zhuǎn)分支優(yōu)化(switch-case optimization)5.擴(kuò)展入口優(yōu)化(extended access optimization)3.中斷函數(shù)優(yōu)化(interrupt function optimization)三、寄存器優(yōu)化 c51為函數(shù)參數(shù)和局域變量分配了9個(gè)cpu寄存器。寄存器間最多可傳遞三個(gè)參數(shù)。p全局寄存器優(yōu)化可刪除不必要代碼,優(yōu)化cpu寄存器設(shè)備。 四、c語(yǔ)言實(shí)時(shí)庫(kù) c51實(shí)時(shí)庫(kù)含100多種功能,其中大多數(shù)是可再入的。庫(kù)支持所有的ansi c的程序,與嵌入式應(yīng)用程序的限

24、制相符。 固有程序?yàn)橛布峁┨厥庵噶?如:nop, testbit, rol, ror。 五,a51宏匯編 a51宏匯編支持標(biāo)準(zhǔn)宏和mpl宏。要實(shí)現(xiàn)快速產(chǎn)生匯編程序shell,就直接使用c51編譯器的src。 在新的a51 v7版本中,允許用戶c包含的頭文件來(lái)定義常量和sfr。如今,一個(gè)單一頭文件可被應(yīng)用到x程序和匯編程序中。 2.1.6 rtx51實(shí)時(shí)核模塊 rtx51多任務(wù)實(shí)時(shí)內(nèi)核可以簡(jiǎn)化那些過(guò)程復(fù)雜,時(shí)間緊迫的軟件項(xiàng)目。rtx51是無(wú)版稅的,完全集成到keil c51工具鏈上,支持c語(yǔ)言和匯 編語(yǔ)言程序,也完全支持代碼區(qū)的應(yīng)用程序。rtx51完全支持: .標(biāo)準(zhǔn)任務(wù)(用一個(gè)共享寄存器區(qū))

25、.快速任務(wù)(用一個(gè)專用寄存器區(qū)) .can .郵箱(為內(nèi)部任務(wù)通信) .存儲(chǔ)池(memory pools) rtx51 tiny是簡(jiǎn)化后的內(nèi)核,適于單片機(jī)系統(tǒng)。 rtx51和rtx51 tiny都可使用戶創(chuàng)建和撤消任務(wù),發(fā)送和接收信號(hào),也可執(zhí)行其它操作系統(tǒng)管理。 一、上下文切換(任務(wù)切換) .輪詢方式:(round-robin)每個(gè)任務(wù)在一個(gè)規(guī)定的時(shí)間段內(nèi)運(yùn)行,當(dāng)一個(gè)任務(wù)的時(shí)間段結(jié)束時(shí),另一個(gè)任務(wù)隨之開(kāi)始。 .搶占方式(preemptive):優(yōu)先級(jí)最高的任務(wù)最先執(zhí)行,直到被一個(gè)具有更高優(yōu)先級(jí)的任務(wù)打斷,或是為等待某個(gè)事件而主動(dòng)放棄控制權(quán)。 二、事件與中斷 rtx 51支持下列事件 rtx51

26、同時(shí)支持中斷功能,可以向任務(wù)中發(fā)送或從任務(wù)中接收信號(hào)和信息。1.timeouts: 延遲到特定定時(shí)點(diǎn)4.messages: 在任務(wù)間互傳信息2.intervals: 延遲一段時(shí)間間隔5.interrupts: 處理硬件中斷3.signals: 協(xié)調(diào)內(nèi)部任務(wù)操作6.semaphores: 共享有限資源2.1.5測(cè)試程序uvision2調(diào)試器具備所有常規(guī)源極調(diào)試,符號(hào)調(diào)試特性以及歷史跟蹤,代碼覆蓋,復(fù)雜斷點(diǎn)等功能dde界面和shift語(yǔ)言支持自動(dòng)程序測(cè)試 一、和外設(shè)模擬裝置 uvision3為8051及衍生產(chǎn)品提供了高速模擬功能和片上擴(kuò)展口在對(duì)話框內(nèi)可直接觀察和修改值,也可以用預(yù)裝的c-like宏

27、指令書(shū)寫(xiě)符號(hào)函數(shù)來(lái)提供動(dòng)態(tài)輸入。 二、目標(biāo)監(jiān)控器 uvision3含一個(gè)可配置的監(jiān)控器,可測(cè)試目標(biāo)器件上的軟件體。監(jiān)控器用uvision2的調(diào)試器直接工作,可支持代碼區(qū)。它要求目標(biāo)系統(tǒng)具備6字節(jié)堆??臻g,6kb的代碼和256字節(jié)xdata ram。 三、mcb517/251啟動(dòng)工具包 在開(kāi)始一項(xiàng)8051工程時(shí),mcb啟動(dòng)工具會(huì)對(duì)你有很大幫助。每一個(gè)啟動(dòng)工具包括一套2k字節(jié)的開(kāi)發(fā)工具和許多可快速運(yùn)行的舉例程序。用戶可在檢測(cè)8051性能的同時(shí),查看開(kāi)發(fā)工具的可行性。 mcb517ac板含高性能infineonc517a單片機(jī),它提供標(biāo)準(zhǔn)8052外圍設(shè)備和a/d轉(zhuǎn)換器,pwm,搜索比較,8位數(shù)據(jù)指針

28、,一個(gè)高速運(yùn)算單元。同時(shí)包含對(duì)81c90can控制器和代碼區(qū)的支持。 2.1.5 c51 v7版增強(qiáng)功能介紹c51 v7版提供了很多新的和增強(qiáng)的功能,使開(kāi)發(fā)8051嵌入式應(yīng)用比以前更加簡(jiǎn)單。c51 v7版新功能包括:新版編譯器和連接器更加優(yōu)化,可以縮短程序的大小; 能完全模擬支持的器件更多,如philips 80c51mx, dallas 80c390和analog devices microconverters;新的 isd51系統(tǒng)內(nèi)調(diào)試器,允許在不變的目標(biāo)硬件上調(diào)試程序;可更好地支持philips 51mx的24位地址; rtx51 tiny增加了新功能,它比以前更小,但提供的功能更多。2

29、.2 c8051f單片機(jī)簡(jiǎn)介單片機(jī)自20世紀(jì)70年代末誕生至今,經(jīng)歷了單片微型計(jì)算機(jī)scm、微控制器mcu及片上系統(tǒng)soc三大階段,前兩個(gè)階段分別以mcs-51和80c51為代表。隨著在嵌入式領(lǐng)域中對(duì)單片機(jī)的性能和功能要求越來(lái)越高,以往的單片機(jī)無(wú)論是運(yùn)行速度還是系統(tǒng)集成度等多方面都不能滿足新的設(shè)計(jì)需要,這時(shí)siliconlabs 公司推出了c8051f系列單片機(jī),成為soc的典型代表。 c8051f具有上手快(全兼容8051指令集)、研發(fā)快(開(kāi)發(fā)工具易用,可縮短研發(fā)周期)和見(jiàn)效快(調(diào)試手段靈活)的特點(diǎn),其性能優(yōu)勢(shì)具體體現(xiàn)在以下方面:基于增強(qiáng)的cip-51內(nèi)核,其指令集與mcs-51完全兼容,具

30、有標(biāo)準(zhǔn)8051的組織架構(gòu),可以使用標(biāo)準(zhǔn)的803x/805x匯編器和編譯器進(jìn)行軟件開(kāi)發(fā)。cip-51采用流水線結(jié)構(gòu),70%的的指令執(zhí)行時(shí)間為1或2個(gè)系統(tǒng)時(shí)鐘周期,是標(biāo)準(zhǔn)8051指令執(zhí)行速度的12倍;其峰值執(zhí)行速度可達(dá)100mips(c8051f120等),是目前世界上速度最快的8位單片機(jī)。增加了中斷源。標(biāo)準(zhǔn)的8051只有7個(gè)中斷源siliconlabs 公司 c8051f系列單片機(jī)擴(kuò)展了中斷處理這對(duì)于時(shí)實(shí)多任務(wù)系統(tǒng)的處理是很重要的擴(kuò)展的中斷系統(tǒng)向cip-51提供22個(gè)中斷源允許大量的模擬和數(shù)字外設(shè)中斷一個(gè)中斷處理需要較少的cpu干預(yù)卻有更高的執(zhí)行效率。集成了豐富的模擬資源,絕大部分的c8051f

31、系列單片機(jī)都集成了單個(gè)或兩個(gè)adc,在片內(nèi)模擬開(kāi)關(guān)的作用下可實(shí)現(xiàn)對(duì)多路模擬信號(hào)的采集轉(zhuǎn)換;片內(nèi)adc的采樣精度最高可達(dá)24bit,采樣速率最高可達(dá)500ksps,部分型號(hào)還集成了單個(gè)或兩個(gè)獨(dú)立的高分辨率dac,可滿足絕大多數(shù)混合信號(hào)系統(tǒng)的應(yīng)用并實(shí)現(xiàn)與模擬電子系統(tǒng)的無(wú)縫接口;片內(nèi)溫度傳感器則可以迅速而精確的監(jiān)測(cè)環(huán)境溫度并通過(guò)程序作出相應(yīng)處理,提高了系統(tǒng)運(yùn)行的可靠性。集成了豐富的外部設(shè)備接口。具有兩路uart和最多可達(dá)5個(gè)定時(shí)器及6個(gè)pca模塊,此外還根據(jù)不同的需要集成了smbus、spi、usb、can、lin等接口,以及rtc部件。外設(shè)接口在不使用時(shí)可以分別禁止以降低系統(tǒng)功耗。與其他類型的單片

32、機(jī)實(shí)現(xiàn)相同的功能需要多個(gè)芯片的組合才能完成相比,c8051單片機(jī)不僅減少了系統(tǒng)成本,更大大降低了功耗。增強(qiáng)了在信號(hào)處理方面的性能,部分型號(hào)具有16x16 mac以及dma功能,可對(duì)所采集信號(hào)進(jìn)行實(shí)時(shí)有效的算法處理并提高了數(shù)據(jù)傳送能力。具有獨(dú)立的片內(nèi)時(shí)鐘源(精度最高可達(dá)0.5%),設(shè)計(jì)人員既可選擇外接時(shí)鐘,也可直接應(yīng)用片內(nèi)時(shí)鐘,同時(shí)可以在內(nèi)外時(shí)鐘源之間自如切換。片內(nèi)時(shí)鐘源降低了系統(tǒng)設(shè)計(jì)的復(fù)雜度,提高了系統(tǒng)可靠性,而時(shí)鐘切換功能則有利于系統(tǒng)整體功耗的降低。提供空閑模式及停機(jī)模式等多種電源管理方式來(lái)降低系統(tǒng)功耗實(shí)現(xiàn)了i/o從固定方式到交叉開(kāi)關(guān)配置。固定方式的i/o端口,既占用引腳多,配置又不夠靈活。

33、在c8051f中,則采用開(kāi)關(guān)網(wǎng)絡(luò)以硬件方式實(shí)現(xiàn)i/o端口的靈活配置,外設(shè)電路單元通過(guò)相應(yīng)的配置寄存器控制的交叉開(kāi)關(guān)配置到所選擇的端口上。復(fù)位方式多樣化,c8051f把80c51單一的外部復(fù)位發(fā)展成多源復(fù)位,提供了上電復(fù)位、掉電復(fù)位、外部引腳復(fù)位、軟件復(fù)位、時(shí)鐘檢測(cè)復(fù)位、比較器0復(fù)位、wdt復(fù)位和引腳配置復(fù)位。眾多的復(fù)位源為保障系統(tǒng)的安全、操作的靈活性以及零功耗系統(tǒng)設(shè)計(jì)帶來(lái)極大的好處。從傳統(tǒng)的仿真調(diào)試到基于jtag接口的在系統(tǒng)調(diào)試。c8051f在8位單片機(jī)中率先配置了標(biāo)準(zhǔn)的jtag接口(ieee1149.1)。c8051f的jtag接口不僅支持flash rom的讀/寫(xiě)操作及非侵入式在系統(tǒng)調(diào)試,

34、它的jtag邏輯還為在系統(tǒng)測(cè)試提供邊界掃描功能。通過(guò)邊界寄存器的編程控制,可對(duì)所有器件引腳、sfr總線和i/o口弱上拉功能實(shí)現(xiàn)觀察和控制?;谏鲜鎏攸c(diǎn),siliconlabs 公司c8051f系列單片機(jī)作為soc芯片的杰出代表能夠滿足絕大部分場(chǎng)合的復(fù)雜功能要求,并在嵌入式領(lǐng)域的各個(gè)場(chǎng)合都得到了廣泛的應(yīng)用:在工業(yè)控制領(lǐng)域,其豐富的模擬資源可用于工業(yè)現(xiàn)場(chǎng)多種物理量的監(jiān)測(cè)、分析及控制和顯示;在便攜式儀器領(lǐng)域,其低功耗和強(qiáng)大的外設(shè)接口也非常適合各種信號(hào)的采集、存儲(chǔ)和傳輸;此外,新型的c8051f5xx系列單片機(jī)也在汽車電子行業(yè)中嶄露頭角。正是這些優(yōu)勢(shì),使得c8051單片機(jī)在進(jìn)入中國(guó)市場(chǎng)的短短幾年內(nèi)就迅

35、速風(fēng)靡,相信隨著新型號(hào)的不斷推出以及推廣力度的不斷加大,c8051系列單片機(jī)將迎來(lái)日益廣闊的發(fā)展空間,成為嵌入式領(lǐng)域的時(shí)代寵兒此系列單片機(jī)完全兼容mcs-51指令集,容易上手,開(kāi)發(fā)周期短,大大節(jié)約了開(kāi)發(fā)成本。c8051f系統(tǒng)集成度高,總線時(shí)鐘可達(dá)25m。 第3章 c8051f系列單片機(jī)實(shí)現(xiàn)(7,4)漢明碼的編碼漢明碼是漢明(hamming)于1950年提出的能糾正一位錯(cuò)的線性分組碼。漢明碼有許多很好的性質(zhì),是一種完備碼,它可以用一種簡(jiǎn)潔有效的方法進(jìn)行譯碼。由于他的編、譯碼簡(jiǎn)單,且教容易實(shí)現(xiàn),因此被廣泛采用,尤其在計(jì)算機(jī)存儲(chǔ)與運(yùn)算系統(tǒng)中被廣泛運(yùn)用。漢明碼的抗干擾能力較強(qiáng),但付出的代介也很大,比如

36、8比特漢明碼有效信息只有總編碼長(zhǎng)度的一半,可以糾正1個(gè)差錯(cuò)發(fā)現(xiàn)2個(gè)差錯(cuò)。在實(shí)際應(yīng)用中常常存在各種突發(fā)干擾,使連續(xù)多位數(shù)據(jù)發(fā)生差錯(cuò)。為了糾正3個(gè)以上的差錯(cuò),就要加大碼距,使代碼冗余度大大增加,通信效率下降。本文所介紹的方法,就可以在不加大碼距的同時(shí),提高漢明碼對(duì)突發(fā)干擾所產(chǎn)生差錯(cuò)的糾錯(cuò)能力,糾正多位連續(xù)的差錯(cuò)。1 漢明碼糾錯(cuò)原理及設(shè)計(jì)設(shè)原代碼的碼長(zhǎng)為k比特,附加糾錯(cuò)編碼部分為r比特,則合成后的糾錯(cuò)碼為n=k+r比特。如果這種糾錯(cuò)碼的糾錯(cuò)能力為糾正1個(gè)差錯(cuò),則應(yīng)滿足如下基本條件:2rk+r+1當(dāng)上式取等號(hào)時(shí)則稱漢明碼(hamming code)。干擾不僅使原代碼的每一位(k比特(可能出錯(cuò),而且附加

37、糾錯(cuò)位(r比特)也可能出錯(cuò),故“一個(gè)差錯(cuò)”的情況共有k+r種,加上“正?!睜顟B(tài)共有k+r+1種狀態(tài),而r比特的附加糾錯(cuò)位要能分辨這k+r+1種狀態(tài)。漢明碼是線性分組碼,n,k線性分組碼的編碼設(shè)計(jì)就是在滿足給定條件(如碼距)下,如何從已知的k個(gè)信息元中求同r=n-k個(gè)校驗(yàn)元。要計(jì)算出校驗(yàn)元,就要先求出漢明碼校驗(yàn)矩陣。我們可以從線性空間的角度去分析,推出一致校驗(yàn)矩陣。這里給出構(gòu)造“糾正1個(gè)差錯(cuò)發(fā)現(xiàn)2個(gè)差錯(cuò)”漢明碼校驗(yàn)矩陣的簡(jiǎn)便方法。以實(shí)際應(yīng)用中經(jīng)常使用的16位比特漢明碼為例來(lái)說(shuō)明。15比特漢明碼由11位信息位、4位校驗(yàn)位組成,因此,編碼長(zhǎng)度為n=k+r=11+4=15。我們把1,2,3,15化為二

38、進(jìn)制數(shù),然后把它們作為矩陣的縱列,可得到的矩陣為:將包含單個(gè)1的4個(gè)縱列移到右邊,在最后加1列全0的縱列,在第1行上面加1行全1的橫行。這樣就得到了16,11,4可糾正1位錯(cuò)誤發(fā)現(xiàn)2位錯(cuò)誤的增廣漢明碼校驗(yàn)矩陣??梢愿鶕?jù)編程要求組織信息位和校驗(yàn)位的位置,最后得到矩陣如下:d1、d2、d4、d8是校驗(yàn)位,d16是全字節(jié)偶校驗(yàn)位,其余11位是信息位。校驗(yàn)碼分別是c0=0ab61h,c1=0cda2h,c2=0f1c4h,c3=0fe08h,c4=0ffffh。2 用漢明碼對(duì)連續(xù)多位差錯(cuò)糾正的實(shí)現(xiàn)要想在不加大碼距的前提下,糾正連續(xù)多位差錯(cuò),提高抵抗突發(fā)干擾的能力,可根據(jù)校驗(yàn)矩陣得出的漢明碼重新進(jìn)行組織

39、排列。以16比特的漢明碼為例,把11個(gè)字節(jié)的數(shù)據(jù)編碼為16個(gè)字節(jié)的漢明碼后再按高低字節(jié)分成兩組。我們把每組字節(jié)8個(gè)漢明碼的第1位分別取出,組成第1個(gè)字節(jié)。然后,再把這8個(gè)字節(jié)漢明碼的第2位取出,組成第2個(gè)字節(jié)。依此類推,將這組8個(gè)字節(jié)漢明碼處理完畢,得到新的8個(gè)字節(jié)編碼,兩組一共16字節(jié)。我們可以看到這們排序后,每個(gè)字節(jié)包括原來(lái)8個(gè)漢明碼的其中1位。這樣,如果一次突發(fā)干擾使某一編碼字節(jié)連續(xù)8位都發(fā)生改變,實(shí)際是分別使原來(lái)8個(gè)漢明碼的其中1位發(fā)生了改變。只要在糾錯(cuò)前把受干擾的編碼恢復(fù)為原來(lái)正常的排列順序,就可通過(guò)計(jì)算校驗(yàn)碼完成差錯(cuò)的定位及糾錯(cuò)。如果有163個(gè)字節(jié)的原始數(shù)據(jù),經(jīng)編碼后為240個(gè)字節(jié)

40、的漢明碼,那么如果把240個(gè)字節(jié)的漢明碼的每一位都取出,分別組成15個(gè)字節(jié)的編碼,這樣是不是可以連續(xù)糾正15個(gè)字節(jié)的差錯(cuò)了呢?在實(shí)際應(yīng)用中要分情況而定。通信中,一般可分為異步、同步兩種方式。在異步傳輸中起始位和停止位是由硬件電路產(chǎn)生的,如果干擾使起始位或停止位發(fā)生了改變,那么即使程序有跨字節(jié)糾錯(cuò)的能力也是無(wú)用的。對(duì)于同步方式則是可行的,因?yàn)樵诎l(fā)送接收雙方取得同步后,數(shù)據(jù)塊的每個(gè)字符間取消了起始位和停止位。常用的串口通信一般采用異步傳輸方式,能保證糾正連續(xù)1個(gè)字節(jié)的差錯(cuò)就可以了。我們也要看到,這樣處理后提高了漢明碼對(duì)突發(fā)干擾差錯(cuò)的糾錯(cuò)能力,卻犧牲了對(duì)隨機(jī)干擾糾錯(cuò)能力。因?yàn)檫@樣對(duì)漢明碼重新排序后,

41、原來(lái)1個(gè)漢明碼的各個(gè)位分布在不同位置的字節(jié)里,當(dāng)有多個(gè)隨機(jī)干擾出現(xiàn)時(shí),可能使原來(lái)這個(gè)被拆開(kāi)的1個(gè)漢明碼多位出現(xiàn)差錯(cuò)。因此采用多少位的漢明碼,如何對(duì)漢明碼重新組織排列,要根據(jù)信道的特點(diǎn)來(lái)決定。3.1 編碼原理3.1.1 基本概念線性分組碼是一類重要的糾錯(cuò)碼,應(yīng)用很廣泛。在(n,k)分組碼中,若督元是按線性關(guān)系相加而得到的,則稱其為線性分組碼?,F(xiàn)在以(7,4)分組碼為例來(lái)說(shuō)明線性分組碼的特點(diǎn)。設(shè)其碼字為a=a6,a5,a4,a3,a2,a1,a0,其中前4位是信息元,后3位是監(jiān)督元,可用下列線性方程組來(lái)描述該分組碼,產(chǎn)生監(jiān)督元: a2 = a6 + a5 + a4 a1 = a6 + a5+ a3

42、 (2.1.1) a0 = a6+ a4 + a3顯然,這3個(gè)方程是線性無(wú)關(guān)的。經(jīng)計(jì)算可得(7,4)碼的全部碼字,如表2-1所示。表2-1 (7,4)碼的全部碼字序號(hào)碼 字序號(hào)碼 字信 息碼元監(jiān) 督 元信 息碼元監(jiān) 督 元00 0 0 00 0 081 0 0 01 1 110 0 0 10 1 191 0 0 11 0 020 0 1 01 0 1101 0 1 00 1 030 0 1 11 1 0111 0 1 10 0 140 1 0 01 1 0121 1 0 00 0 150 1 0 11 0 1131 1 0 10 1 060 1 1 00 1 1141 1 1 01 0 070

43、 1 1 10 0 0151 1 1 11 1 1不難看出,上述(7,4)碼的最小碼距d0=3,它能糾1個(gè)錯(cuò)或檢2個(gè)錯(cuò)。漢明碼是能夠糾正單個(gè)錯(cuò)誤的線性分組碼,其特點(diǎn)是:最小碼距d0=3,碼長(zhǎng)n與監(jiān)督位滿足n=2r-1的關(guān)系,上述的(7,4)線性分組碼就是一個(gè)漢明碼。3.1.2 監(jiān)督矩陣h式(2.1.1)所示(7,4)漢明碼的3個(gè)監(jiān)督方程改寫(xiě)后可用矩陣形式表示為 a6 a5 1 1 1 0 1 0 0 a4 0 1 1 0 1 0 1 0 a3 = 0 (2.2.1) 1 0 1 1 0 0 1 a2 0 a1 a0并簡(jiǎn)記為 hat=0t 或 aht=0 (2.2.2)h稱為監(jiān)督矩陣,一旦h給定

44、,信息位和監(jiān)督位之間的關(guān)系也就確定了。h矩陣可以分成2部分 1 1 1 0 1 0 0 h = 1 1 0 1 0 1 0 =p ir (2.2.3) 1 0 1 1 0 0 1 hat=0t,可以用來(lái)作為判斷接收碼字a是否出錯(cuò)的依據(jù)。3.1.3 生成矩陣g把監(jiān)督方程補(bǔ)充完整并改寫(xiě)為矩陣形式a6 1 0 0 0a5 0 1 0 0a4 0 0 1 0 a6a3 = 0 0 0 1 a5 (2.3.1)a2 1 1 1 0 a4a1 1 1 0 1 a3a0 1 0 1 1 a = a6 a5 a4 a3 g (2.3.2)其中 1 0 0 0 1 1 1 0 1 0 0 1 1 0 g = 0

45、 0 1 0 1 0 1 (2.3.3) 0 0 0 1 0 1 1g稱為生成矩陣,由g和信息組就可以產(chǎn)生全部碼字。生成矩陣也可以分成2部分,即 g = ik q (2.3.4)其中 1 1 1 q = 1 1 0 = pt (2.3.5) 1 0 1 0 1 13.1.3 伴隨式(校正子)s設(shè)發(fā)送碼組a= an1,an2,a1,a0 ,在傳輸過(guò)程中可能發(fā)生誤碼。接收碼組b= bn1,bn2,b1,b0 ,收發(fā)碼組之差定義為錯(cuò)誤圖樣e,即 e = b - a(2.4.1)令s = bht,稱為伴隨式或校正子。s = bht =(a + e)ht = eht(2.4.2)上述(7,4)漢明碼的伴

46、隨式與錯(cuò)誤圖樣的對(duì)應(yīng)關(guān)系如表2-2所示。表2-2(7,4)漢明碼s與e的對(duì)應(yīng)關(guān)系序號(hào)錯(cuò)誤碼位ese6 e5 e4 e3 e2 e1 e0s2 s1 s00/0 0 0 0 0 0 00 0 01b00 0 0 0 0 0 10 0 12b10 0 0 0 0 1 00 1 03b20 0 0 0 1 0 01 0 04b30 0 0 1 0 0 00 1 15b40 0 1 0 0 0 01 0 16b50 1 0 0 0 0 01 1 07b61 0 0 0 0 0 01 1 13.2 (7,4)漢明碼編碼器的設(shè)計(jì)3.2.1 (7,4)漢明碼的編碼思路(7,4)漢明碼的編碼就是將輸入的四位信

47、息碼編成七位的漢明碼,即加入三位監(jiān)督位。根據(jù)式(2.3.2)a = a6 a5 a4 a3 g可知,信息碼與生成矩陣g的乘積就是編好以后的(7,4)漢明碼,而生成矩陣g又是已知的,由式(2.3.3)得 1 0 0 0 1 1 1 0 1 0 0 1 1 0 g = 0 0 1 0 1 0 1(3.1.1) 0 0 0 1 0 1 1所以,可以得出如下方程組 a6 = a6 a5 = a5 a4 = a4 a3 = a3(3.1.2) a2 = a6 + a5 + a4 a1 = a6 + a5 + a3 a0 = a6 + a4 + a3根據(jù)式(3.1.2)就可以編出編碼程序了。3.2.2 (

48、7,4)漢明碼的編碼程序設(shè)計(jì)開(kāi)始對(duì)單片機(jī)進(jìn)行初始化漢明碼編碼程序流程圖幀同步上升沿?y,到來(lái)n,沒(méi)到n,不等于輸出幀同步信號(hào)i=24?y,等于bs_in上升沿b=b+wave_inj; j=j+1;i=i+1;輸出查找表中的一位;bs_out=!bs_out2bs_in上升沿bs_out=!bs_outbs_in下降沿輸出查找表中的一位,bs_out!bs_out2bs_in上升沿bs_out!bs_outj4?j0利用查找表查找出b值對(duì)應(yīng)的值n,沒(méi)到n,沒(méi)到n,沒(méi)到y(tǒng),到來(lái)y,到來(lái)y,到來(lái)y,到來(lái)n,沒(méi)到第4章 編譯程序的調(diào)試、下載與運(yùn)行4.1 (7,4)漢明碼的編碼程序4.1.1 頭文件及

49、端口等初步設(shè)置 頭文件和內(nèi)部時(shí)鐘的設(shè)置:#include #include void port_init (void) xbr0=0x00; xbr1=0x14; /將int0,int1連接到交叉開(kāi)關(guān)xbr2=0x40;prt0cf=0x40;prt1cf=0xff;prt2cf=0xff; void sysclk_init (void) oscicn=0x17; /內(nèi)部時(shí)鐘16mhz 端口設(shè)置: sbit wave_out=p06; /編碼輸出 p0.6端口 sbit bs_out=p12; /編碼位同步輸出 p1.2端口 sbit fs_out=p16; /編碼幀同步輸出 p1.6端口 s

50、bit wave_in=p04; /編碼輸入 p0.4端口 sbit bs_in=p03; /編碼位同步輸入 p0.3端口 sbit fs_in=p02; /編碼幀同步輸入 p0.2端口 sbit bs2_in=p05; /2bs位同步輸入 p0.5端口建立數(shù)組,供編碼時(shí)查表輸出: unsigned char data i,j,k,a,b; unsigned char data c=0,11,21,30,38,45,51,56,71,76,82,89,97,106,116,127;4.1.2 漢明碼編碼主程序/主函數(shù)部分 main() wdtcn=0xde; wdtcn=0xad; /關(guān)看門(mén)狗 port_init(); sysclk_init(); a=0; b=0; fs_out=0; while(fs_in); /

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論