注:本文是作者以前發(fā)表在其個(gè)人博客,現(xiàn)在發(fā)布到“聚豐開(kāi)發(fā)”專欄
不經(jīng)意間,“酷睿雙核”已經(jīng)成為電腦CPU性能達(dá)標(biāo)的代名詞,雙核從字面意思理解就是里面有兩個(gè)CPU的核,原來(lái)一臺(tái)電腦只有一個(gè)CPU核處理事情,如果用了雙核CPU,就有兩個(gè)CPU核來(lái)處理事情,這樣速度和效能會(huì)更高。
這樣在一般人眼里,雙核儼然代表了先進(jìn)的技術(shù)和先進(jìn)的性能,當(dāng)然同時(shí)也代表著先進(jìn)的價(jià)格,不信可以去回顧一下市場(chǎng)價(jià)格,同一時(shí)期雙核電腦CPU要比單核的價(jià)格高不少。
從性能和價(jià)格上電腦CPU和單片機(jī)是沒(méi)有可比性,如果說(shuō)電腦CPU是大佬,那么單片機(jī)就是大佬馬仔的馬仔的馬仔的馬仔的馬仔。既然雙核電腦CPU性能比單核的要強(qiáng)大不少,作為和電腦CPU八百年前祖上是一家的單片機(jī),如果也用雙核技術(shù),想必性能也會(huì)提升不少。
理論上講設(shè)計(jì)出雙核單片機(jī)完全沒(méi)有問(wèn)題,只是單片機(jī)要求價(jià)格便宜,要是設(shè)計(jì)出一款雙核單片機(jī),假設(shè)性能可以提升一倍,但價(jià)格也要上升許多,恐怕不會(huì)有多少人可以用。
在我的潛意識(shí)里,一直都認(rèn)為雙核單片機(jī)是一種相對(duì)昂貴的產(chǎn)品,應(yīng)該沒(méi)有機(jī)會(huì)和現(xiàn)在大量?jī)r(jià)格不超過(guò)人民幣1塊錢(qián)的普通單片機(jī)進(jìn)行競(jìng)爭(zhēng),直到去年底接觸到***應(yīng)廣科技的一款雙核單片機(jī),才徹底改變了我這種認(rèn)識(shí)。
在介紹這種雙核單片機(jī)之前,讓我們一起了解一下目前市場(chǎng)上價(jià)格不超過(guò)人民幣1塊錢(qián)的一些單片機(jī),這些單片機(jī)的具體性能參數(shù)不做介紹,這里只列舉大致參考價(jià)格(可能存在少許偏差)。
義隆 EM78P153 市場(chǎng)參考價(jià)0.7~0.8元
飛凌 兼容版153 市場(chǎng)參考價(jià)0.55~0.6元
博巨興 兼容版153 市場(chǎng)參考價(jià)0.45~0.55元
麥肯、佑華等公司性能相當(dāng)型號(hào) 市場(chǎng)參考價(jià) 0.6~0.7元
在讓我們來(lái)看一下這款單片機(jī)的一些性能參數(shù):
內(nèi)置2個(gè)FPPA處理單元
1k Word OTP 程序存儲(chǔ)器
64 Bytes RAM 數(shù)據(jù)存儲(chǔ)器
包含跳轉(zhuǎn)指令在內(nèi)的絕大多數(shù)指令為單周期指令
支持位操作
支持硬件延時(shí)和等待指令 *注1 *注2
13條雙向IO口+1條輸入口
3通道8位A/D轉(zhuǎn)換器
IO支持VDD/2電壓驅(qū)動(dòng)LCD
內(nèi)部低速RC、內(nèi)部高速RC、外部振蕩器、外部RC、外部時(shí)鐘可選
休眠電流<1uA
工作電壓 2.5~5.5V
工作溫度 -40~105攝氏度
(*注1:該單片機(jī)支持delay 100指令,該指令為延時(shí)等待100+1個(gè)周期)
(*注2:該單片機(jī)支持wait1 pa.0指令,該指令為當(dāng)pa.0為高時(shí)才執(zhí)行下一條指令)
以我個(gè)人的經(jīng)驗(yàn),現(xiàn)在市面上的單片機(jī),如果想找出一款支持PWM、ADC、UART中任意一種功能的型號(hào),價(jià)格一般都超過(guò)人民幣1塊錢(qián),而且一般都只支持其中的一到兩種,除非是價(jià)格達(dá)到2~3元的型號(hào)。而如果選用前面列舉參數(shù)的單片機(jī),本身硬件已經(jīng)直接支持ADC,而且還可以通過(guò)軟件在不影響主程序的前提下實(shí)現(xiàn)高速PWM和UART功能。
上圖為該雙核單片機(jī)的內(nèi)部構(gòu)架示意圖,從圖可見(jiàn)該單片機(jī)內(nèi)部有兩個(gè)核,分別為FPP0和FPP1,每個(gè)核自己有獨(dú)立的程序指針(PC)、堆棧指針(SP)、累加器(ACC)和狀態(tài)寄存器(CF)。設(shè)計(jì)原理并不復(fù)雜,是讓這兩個(gè)核共享系統(tǒng)時(shí)鐘,第一個(gè)系統(tǒng)時(shí)鐘周期執(zhí)行FPP0程序,第二個(gè)系統(tǒng)時(shí)鐘周期執(zhí)行FPP1程序,依次間隔往復(fù),這樣就可以讓兩個(gè)核各自運(yùn)行自己的程序。
兩個(gè)核都可以訪問(wèn)控制RAM和特殊功能寄存器,因?yàn)樵谝粋€(gè)系統(tǒng)周期內(nèi)只有一個(gè)核在工作,所以不會(huì)出現(xiàn)兩個(gè)核同時(shí)寫(xiě)某個(gè)RAM或寄存器的狀況。為了讓大家更清晰地理解這個(gè)雙核單片機(jī)的工作機(jī)理,下面我以問(wèn)答的方式對(duì)部分特性進(jìn)行說(shuō)明。
1.兩個(gè)核的程序放在什么地方?如何執(zhí)行?
樣例代碼:
地址 指令
0x000 goto main0
0x001 goto main1
...
main0:
...
main1:
...
回答:?jiǎn)纹瑱C(jī)上電后FPP0的程序指針指向0x000,F(xiàn)PP1的程序指針指向0x001,但是單片機(jī)系統(tǒng)只啟動(dòng)FPP0,F(xiàn)PP0跳轉(zhuǎn)到main0開(kāi)始執(zhí)行該位置的代碼,F(xiàn)PP1需要在main0代碼設(shè)置相應(yīng)控制寄存器位才能啟動(dòng)。
系統(tǒng)上電只啟動(dòng)FPP0是為了便于程序統(tǒng)一初始化各特殊功能寄存器,如果在FPP0和FPP1中都分別進(jìn)行初始化,很有可能造成系統(tǒng)配置混亂。
2.如果我在main1中使用跳轉(zhuǎn)指令跳轉(zhuǎn)到main0中,會(huì)有什么后果?
goto main0
goto main1
...
main0:
...
main0_loop:
...
goto main0_loop
...
main1:
...
goto main0 //***這里跳轉(zhuǎn)到main0中***//
...
回答:編譯器會(huì)報(bào)警出錯(cuò),所以后果就是代碼錯(cuò)誤無(wú)法通過(guò)編譯,需要?jiǎng)h除該代碼。
3.會(huì)不會(huì)出現(xiàn)兩個(gè)核同時(shí)寫(xiě)某個(gè)RAM變量而導(dǎo)致寫(xiě)失敗的情況?
回答:每個(gè)系統(tǒng)時(shí)鐘周期只有一個(gè)核會(huì)工作,所以不會(huì)出現(xiàn)兩個(gè)核在同一時(shí)刻寫(xiě)同一地址的情況。
4.既然FPP1需要FPP0的程序來(lái)啟動(dòng),那不啟動(dòng)FPP1時(shí)是不是FPP0運(yùn)行速度會(huì)增快一倍呢?
回答:?jiǎn)?dòng)FPP1與不啟動(dòng)FPP1不影響FPP0的運(yùn)行速度,F(xiàn)PP0的速度總是系統(tǒng)時(shí)鐘的一半,這個(gè)是由系統(tǒng)硬件自動(dòng)進(jìn)行分配的,不啟動(dòng)FPP1的影響是在屬于FPP1的那一半時(shí)間單片機(jī)沒(méi)有執(zhí)行代碼。
-
單片機(jī)
+關(guān)注
關(guān)注
6026文章
44458瀏覽量
631085
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論