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

RTOS實(shí)現(xiàn)雙核MCU消息通信

雙核單片機(jī)是什么
S12X系列雙核單片機(jī)的整車控制器CAN結(jié)點(diǎn)設(shè)計(jì)
雙核單片機(jī)之初體驗(yàn)--2
雙核單片機(jī)之初體驗(yàn)--3
單片機(jī)入門視頻教程之初識單片機(jī)

單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)——雙單片機(jī)串口通信實(shí)驗(yàn)

AN5286_STM32H7x5/x7雙核單片機(jī)調(diào)試的應(yīng)用手冊

基于51單片機(jī)雙單片機(jī)串口通信仿真設(shè)計(jì)
STM32H5 DA 之初體驗(yàn)(帶 TrustZone)

評論