單片機(jī)時(shí)鐘周期、機(jī)器周期、指令周期與總線周期
時(shí)鐘周期:
時(shí)鐘周期也稱(chēng)為振蕩周期,定義為時(shí)鐘脈沖的倒數(shù)(可以這樣來(lái)理解,時(shí)鐘周期就是單片機(jī)外接晶振的倒數(shù),例如12M的晶振,它的時(shí)間周期就是1/12us),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。
在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動(dòng)作。對(duì)于某種單片機(jī),若采用了1MHZ的時(shí)鐘頻率,則時(shí)鐘周期為1us;若采用4MHZ的時(shí)鐘頻率,則時(shí)鐘周期為250us。由于時(shí)鐘脈沖是計(jì)算機(jī)的基本工作脈沖,它控制著計(jì)算機(jī)的工作節(jié)奏(使計(jì)算機(jī)的每一步都統(tǒng)一到它的步調(diào)上來(lái))。顯然,對(duì)同一種機(jī)型的計(jì)算機(jī),時(shí)鐘頻率越高,計(jì)算機(jī)的工作速度就越快。具體計(jì)算就是1/fosc。也就是說(shuō)如果晶振為1MHz,那么時(shí)鐘周期就為1us;6MHz的話(huà),就是1/6us。
8051單片機(jī)把一個(gè)時(shí)鐘周期定義為一個(gè)節(jié)拍(用P表示),二個(gè)節(jié)拍定義為一個(gè)狀態(tài)周期(用S表示)。
機(jī)器周期:
在計(jì)算機(jī)中,為了便于管理,常把一條指令的執(zhí)行過(guò)程劃分為若干個(gè)階段,每一階段完成一項(xiàng)工作。例如,取指令、存儲(chǔ)器讀、存儲(chǔ)器寫(xiě)等,這每一項(xiàng)工作稱(chēng)為一個(gè)基本操作。完成一個(gè)基本操作所需要的時(shí)間稱(chēng)為機(jī)器周期。一般情況下,一個(gè)機(jī)器周期由若干個(gè)S周期(狀態(tài)周期)組成。
8051系列單片機(jī)的一個(gè)機(jī)器周期同6個(gè)S周期(狀態(tài)周期)組成。前面已說(shuō)過(guò)一個(gè)時(shí)鐘周期定義為一個(gè)節(jié)拍(用P表示),二個(gè)節(jié)拍定義為一個(gè)狀態(tài)周期(用S表示),8051單片機(jī)的機(jī)器周期由6個(gè)狀態(tài)周期組成,也就是說(shuō)一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。具體計(jì)算為:時(shí)鐘周期Xcycles。如果單片機(jī)是12周期的話(huà),那么機(jī)器周期就是T×12。假設(shè)晶振頻率為12M,單片機(jī)為12周期的話(huà),那么機(jī)器周期就是1us。
例如外接24M晶振的單片機(jī),他的一個(gè)機(jī)器周期=12/24M秒;52系列單片機(jī)一個(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期。設(shè)晶振頻率為12MHz時(shí),52單片機(jī)是12T的單片機(jī),即頻率要12分頻。12M經(jīng)過(guò)分頻變?yōu)?M,由T=1/f,即一個(gè)機(jī)器周期變?yōu)?us
指令周期:
執(zhí)行一條指令所需要的時(shí)間,一般由若干個(gè)機(jī)器周期組成。指令不同,所需的機(jī)器周期也不同。通常,包含一個(gè)機(jī)器周期的指令成為單周期指令,比如CLR,MOV等等。包含兩個(gè)機(jī)器周期的指令稱(chēng)為雙周期指令。另外還有4周期指令,比如乘法和除法指令。對(duì)于一些簡(jiǎn)單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機(jī)器周期。對(duì)于一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個(gè)或者兩個(gè)以上的機(jī)器周期。
總線周期:
由于存貯器和I/O端口是掛接在總線上的,CPU對(duì)存貯器和I/O接口的訪問(wèn),是通過(guò)總線實(shí)現(xiàn)的。通常把CPU通過(guò)總線對(duì)微處理器外部(存貯器或I/O接口)進(jìn)行一次訪問(wèn)所需時(shí)間稱(chēng)為一個(gè)總線周期。
總結(jié)一下,時(shí)鐘周期是最小單位,機(jī)器周期需要1個(gè)或多個(gè)時(shí)鐘周期,指令周期需要1個(gè)或多個(gè)機(jī)器周期;機(jī)器周期指的是完成一個(gè)基本操作的時(shí)間,這個(gè)基本操作有時(shí)可能包含總線讀寫(xiě),因而包含總線周期,但是有時(shí)可能與總線讀寫(xiě)無(wú)關(guān),所以,并無(wú)明確的相互包含的關(guān)系。
指令周期:是CPU的關(guān)鍵指標(biāo),指取出并執(zhí)行一條指令的時(shí)間。一般以機(jī)器周期為單位,分單指令執(zhí)行周期、雙指令執(zhí)行周期等?,F(xiàn)在的處理器的大部分指令(ARM、DSP)均采用單指令執(zhí)行周期。
機(jī)器周期:完成一個(gè)基本操作的時(shí)間單元,如取指周期、取數(shù)周期。
時(shí)鐘周期:CPU的晶振的工作頻率的倒數(shù)。
例子1:
22.1184MHZ的晶振,它的晶振周期、時(shí)鐘周期和機(jī)器周期分別是多少?
以51為例,晶振22.1184M,時(shí)鐘周期(晶振周期)就是(1/22.1184)μs,一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周期,一個(gè)機(jī)器周期就是0.5425μs。一個(gè)機(jī)器周期一般是一條指令花費(fèi)的時(shí)間,也有些是2個(gè)機(jī)器周期的指令,DJNZ,是雙周期指令.
例子2:
1、振蕩周期(時(shí)鐘周期):為單片機(jī)提供時(shí)鐘信號(hào)的振蕩源的周期。
2、機(jī)器周期:通常將完成一個(gè)基本操作所需的時(shí)間稱(chēng)為機(jī)器周期。
3、指令周期:是指MCU執(zhí)行一條指令所需要的時(shí)間。一個(gè)指令周期通常含有1~4個(gè)機(jī)器周期。
若MCU單片機(jī)外接晶振為12MHz時(shí)具體值為:
振蕩周期(時(shí)鐘周期)=1/12MHz=1/12μs=0.0833μs,機(jī)器周期=12*1/12μs=1μs,指令周期=1~4μs
說(shuō)明:
1、時(shí)鐘周期即晶振的單位時(shí)間發(fā)出的脈沖數(shù),12MHz=12×10的6次方,即每秒發(fā)出12000000個(gè)脈沖信號(hào),那么發(fā)出一個(gè)脈沖的時(shí)間就是時(shí)鐘周期,即1/12微秒。
2、一個(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期,所以是1微秒。
編輯:admin 最后修改時(shí)間:2019-08-10