微型控制器領(lǐng)域的數(shù)理邏輯基礎(chǔ)的推理
劉妍
(煙臺(tái)職業(yè)學(xué)院,山東 煙臺(tái) 264670)
摘要:微型控制器已經(jīng)應(yīng)用到我們的生活的各個(gè)領(lǐng)域,例如飛機(jī)上各種儀表的控制、計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸、工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理、家用電器、醫(yī)療設(shè)備等等。微型控制器的功能越來(lái)越強(qiáng)大,離不開(kāi)位于中央處理單元CPU中算術(shù)邏輯運(yùn)算單元ALU的加法器的支持。本文論述了微型控制器的運(yùn)算處理的數(shù)理邏輯的推理。
關(guān)鍵詞:微型控制器;加法器;數(shù)制;補(bǔ)碼
收稿日期:2015-03-16
作者簡(jiǎn)介:劉妍(1978-),女,山東萊陽(yáng)人,煙臺(tái)職業(yè)學(xué)院教師.
中圖分類號(hào):TN4文獻(xiàn)標(biāo)識(shí)碼:A
1問(wèn)題的引出
在我們生活中的各個(gè)領(lǐng)域,處處可見(jiàn)微型控制器忙碌的身影,它將采集到的的信號(hào)進(jìn)行智能化、微型化、數(shù)字化的處理,并將這些操作交給由復(fù)雜指令系統(tǒng)構(gòu)成的程序來(lái)實(shí)現(xiàn)特定的功能,如電梯智能化管理,壓力、溫度、濕度的測(cè)量等等。
微型控制器采用大規(guī)模集成電路作為邏輯元件, 將各種復(fù)雜的操作交由運(yùn)算器(ALU)處理,而ALU的核心處理單元為加法器,操作數(shù)以補(bǔ)碼形式進(jìn)行運(yùn)算。
本文論證了以補(bǔ)碼形式參與運(yùn)算的數(shù)理邏輯的推理。
2二進(jìn)制
電腦誕生的時(shí)候是用二極管做的,二極管作為計(jì)算的最小單位部件,需要電力來(lái)驅(qū)動(dòng),電流只存在2種狀況,通和不通,于是產(chǎn)生了二進(jìn)制。二進(jìn)制數(shù)也可以用十六進(jìn)制數(shù)、十進(jìn)制數(shù)等形式表示。
以8位處理器的MCS-51系列單片機(jī)為例,該系列單片機(jī)采用正邏輯,電路的高電平和低電平對(duì)應(yīng)二進(jìn)制數(shù)1、0,計(jì)算的工作原理基于“布爾代數(shù)”[1],進(jìn)行邏輯運(yùn)算,單片機(jī)電路雖然復(fù)雜,但基本單元卻很簡(jiǎn)單,由與門、或門、非門等組成。
邏輯運(yùn)算又稱布爾運(yùn)算,布爾用數(shù)學(xué)方法研究邏輯問(wèn)題,成功地建立了邏輯演算。他用等式表示判斷,把推理看作等邏輯運(yùn)算式的變換。這種變換的有效性不依賴人們對(duì)符號(hào)的解釋,只依賴于符號(hào)的組合規(guī)律。這一邏輯理論人們常稱它為布爾代數(shù)。20世紀(jì)30年代,邏輯代數(shù)在電路系統(tǒng)上獲得應(yīng)用,隨后,由于電子技術(shù)與計(jì)算機(jī)的發(fā)展,出現(xiàn)各種復(fù)雜的大系統(tǒng),它們的變換規(guī)律也遵守布爾所揭示的規(guī)律。
由布爾運(yùn)算可知,邏輯運(yùn)算與算術(shù)運(yùn)算都可以以代數(shù)演算的形式運(yùn)算,在數(shù)學(xué)運(yùn)算方法方面是統(tǒng)一的,基本運(yùn)算方法是四則運(yùn)算。
3碼制
微型控制器CPU的核心處理單元ALU的核心單元加法器,是怎樣實(shí)現(xiàn)四則運(yùn)算的呢?
四則運(yùn)算為加法運(yùn)算、減法運(yùn)算、乘法運(yùn)算、除法運(yùn)算。乘法運(yùn)算可以由數(shù)的移位相加運(yùn)算實(shí)現(xiàn),除法可以由數(shù)的移位相減實(shí)現(xiàn);這樣四則運(yùn)算可以歸結(jié)為加法運(yùn)算和減法運(yùn)算。
為了將減法運(yùn)算由加法運(yùn)算實(shí)現(xiàn),微型控制器中引入了負(fù)數(shù)的概念。8位機(jī)中約定,最高位D7表示符號(hào),其他7位表示數(shù)值,D7=1表示負(fù)數(shù),D7=0表示正數(shù)。
例1:4=0000 0100B,[+4]原=0000 0100B,[+4]反=0000 0100B,[+4]補(bǔ)=0000 0100B;
在例1的二進(jìn)制數(shù)中,加黑色標(biāo)注的最高位為符號(hào)位,黑色標(biāo)注的低7位為數(shù)值位。
3.1 無(wú)符號(hào)數(shù)
由于加法運(yùn)算中1+1=10,1111 1111B+1=10000 0000B,而MCS-51系列單片機(jī)的存儲(chǔ)器的位數(shù)是8位的,能夠存儲(chǔ)的是8位二進(jìn)制數(shù),進(jìn)行加法運(yùn)算時(shí)由于存儲(chǔ)器位數(shù)的限制,使得8位無(wú)符號(hào)二進(jìn)制最大數(shù)1111 1111B加1在存儲(chǔ)器中存儲(chǔ)的結(jié)果變?yōu)樽钚?shù)0000 0000B。8位無(wú)符號(hào)數(shù)的范圍為FFH-00H。我們以循環(huán)的形式將8位無(wú)符號(hào)數(shù)進(jìn)行排列:
圖1 8位無(wú)符號(hào)數(shù)的循環(huán)排列
從圖1中可以看出,將數(shù)據(jù)從00H-FFH順時(shí)針圓形循環(huán)排列,規(guī)則為加1;FFH加1后得到00H。
3.2 8位有符號(hào)數(shù)
一個(gè)有符號(hào)數(shù)用原碼、反碼、補(bǔ)碼三種方式表示[2]。
①8位有符號(hào)數(shù)原碼
原碼:正數(shù)的原碼與原來(lái)的數(shù)相同;負(fù)數(shù)的原碼符號(hào)位要置1,數(shù)值位保持不變。
例2:1=0000 0001B,[+1]原=0000 0001B=01H,
[-1]原=1000 0001B=81H;
例3:2=0000 0010B,[+2]原=0000 0010B=02H,
[-2]原=1000 0010B=82H;
例4:126=0111 1110B,[+126]原=0111 1110B=7EH,
[-126]原=1111 1110B=FEH;
例5:127=0111 1111B,[+127]原=0111 1111B=7FH,
[-127]原=1111 1111B=FFH;
8位有符號(hào)數(shù)原碼表示的范圍為-127-+127,因?yàn)椋?/p>
[+0]原=0000 0000B=00H,[-0]原=10000000B=80H;
我們以循環(huán)的形式將8位有符號(hào)數(shù)原碼進(jìn)行排列:
圖2 8位有符號(hào)數(shù)原碼循環(huán)排列
由圖2中可以觀察到正數(shù)原碼和負(fù)數(shù)原碼圍繞圓心O對(duì)稱排列,由于[+0]原和[-0]原不相等,所以原碼不能直接參與到運(yùn)算中。
②8位有符號(hào)數(shù)反碼
反碼:正數(shù)的反碼表示與正數(shù)的原碼相同;負(fù)數(shù)的反碼符號(hào)位為1,數(shù)值位由其絕對(duì)值按位取反得到。
例6:1=0000 0001B,[+1]反=0000 0001B=01H,
[-1]反=1111 1110B=FEH;
例7:2=0000 0010B,[+2]反=0000 0010B=02H,
[-2]反=1111 1101B=FDH;
例8:126=0111 1110B,[+126]反=0111 1110B=7EH,
[-126]反=1000 0001B=81H;
例9:127=0111 1111B,[+127]反=0111 1111B=7FH;
[-127]反=1000 0000B=80H;
8位有符號(hào)數(shù)反碼表示的范圍為-127-+127,因?yàn)椋?/p>
[+0]反=0000 0000B=00H,[-0]反=11111111B=FFH;
我們以循環(huán)的形式將8位有符號(hào)數(shù)反碼進(jìn)行排列:
圖3 8位有符號(hào)數(shù)反碼循環(huán)排列
由圖3中可以觀察到,正數(shù)反碼和負(fù)數(shù)反碼圍繞軸ab平行對(duì)稱排列,由于[+0]反和[-0]反不相等,所以反碼不能直接參與到運(yùn)算中。
③8位有符號(hào)數(shù)補(bǔ)碼
補(bǔ)碼:正數(shù)的補(bǔ)碼與正數(shù)的原碼相同;負(fù)數(shù)的補(bǔ)碼為其反碼加1得到。
例10:1=0000 0001B,[+1]補(bǔ)=0000 0001B=01H,
[-1]補(bǔ)=1111 1111B=FFH;
例11:2=0000 0010B,[+2]補(bǔ)=0000 0010B=02H,
[-2]補(bǔ)=1111 1110B=FEH;
例12:126=0111 1110B,[+126]補(bǔ)=0111 1110B=7EH,
[-126]補(bǔ)=1000 0010B=82H;
例9:127=0111 1111B,[+127]補(bǔ)=0111 1111B=7FH;
[-127]補(bǔ)=1000 0001B=81H;
8位有符號(hào)數(shù)補(bǔ)碼表示的范圍為-128-+127,因?yàn)椋?/p>
[+0]補(bǔ)=0000 0000B=00H,
[-0]補(bǔ)=[-0]反+1=1111 1111B+1=0000 0000B=00H;
規(guī)定,[-128]補(bǔ)=80H,-128沒(méi)有對(duì)應(yīng)的原碼和反碼。
我們以循環(huán)的形式將8位有符號(hào)數(shù)補(bǔ)碼進(jìn)行排列:
圖4 8位有符號(hào)數(shù)補(bǔ)碼循環(huán)排列
由圖4中可以觀察到,正數(shù)補(bǔ)碼和負(fù)數(shù)補(bǔ)碼圍繞軸0x平行對(duì)稱排列,[+0]補(bǔ)和[-0]補(bǔ)相等。
將圖4按照我們所熟悉的數(shù)軸形式展開(kāi),如圖5:
(a)區(qū)間在-128~+127的補(bǔ)碼標(biāo)注形式數(shù)軸
圖5(b)區(qū)間在-128~+127的傳統(tǒng)十進(jìn)制數(shù)標(biāo)注形式數(shù)軸
觀察圖5(a)與圖5(b),可以看出,二者表達(dá)的數(shù)理關(guān)系是一致的,所以我們能夠使用補(bǔ)碼形式參與運(yùn)算。
4微型控制器算術(shù)邏輯運(yùn)算單元
以MCS-51系列單片機(jī)為例,內(nèi)部有一個(gè)8位的CPU,由核心處理單元ALU實(shí)現(xiàn)算術(shù)邏輯運(yùn)算,如圖6。
圖6 CPU內(nèi)部結(jié)構(gòu)框圖
運(yùn)算器(ALU)的主要功能[3]
A)算術(shù)和邏輯運(yùn)算,可對(duì)半字節(jié)(一個(gè)字節(jié)是8位,半個(gè)字節(jié)就是4位)和單字節(jié)數(shù)據(jù)進(jìn)行操作。
B)加、減、乘、除、加1、減1、比較等算術(shù)運(yùn)算。
C)與、或、異或、求補(bǔ)、循環(huán)等邏輯運(yùn)算。
D)位處理功能(即布爾處理器)。
5結(jié)論
使用補(bǔ)碼參與運(yùn)算可以將減法運(yùn)算轉(zhuǎn)變成為有符號(hào)數(shù)的加法運(yùn)算,這樣四則運(yùn)算可以由加法器完成,通過(guò)布爾代數(shù)的原則,中央處理器CPU可以實(shí)現(xiàn)算術(shù)與邏輯運(yùn)算,完成對(duì)微型控制器各種數(shù)據(jù)的處理。
參考文獻(xiàn):
[1]楊炳儒.布爾代數(shù)及其泛化結(jié)構(gòu)[M].北京:科學(xué)出版社,2008.
[2]張志良.單片機(jī)原理與控制技術(shù)[M].北京:機(jī)械工業(yè)出版社,2005.
[3]丁元杰.單片微機(jī)原理及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,1999.
(責(zé)任編輯侯中巖)