本發(fā)明涉及芯片架構(gòu)技術(shù)領(lǐng)域,尤其涉及一種高性價(jià)比的SoC架構(gòu)。
背景技術(shù):
現(xiàn)在很多商用芯片都在盡可能增加集成度,從而降低成本、提高可靠性。常常一個(gè)芯片就是一個(gè)小的片上系統(tǒng)(SoC)。其中的CPU核一般用于數(shù)據(jù)運(yùn)算和/或事務(wù)處理。高性能的CPU核常常需要license費(fèi)用,并且占的芯片面積也不小。而實(shí)際應(yīng)用中,常常并不需要一味追求高性能——比如,有的應(yīng)用沒(méi)有過(guò)大的數(shù)據(jù)量,或者有額外的協(xié)處理器分擔(dān)一部分運(yùn)算。在保證一定性能的前提下,簡(jiǎn)單的CPU核,以及相應(yīng)的系統(tǒng)架構(gòu),可以簡(jiǎn)化系統(tǒng)設(shè)計(jì)、減少功耗和成本。此外,豐富的應(yīng)用是現(xiàn)在嵌入式終端面臨的主要問(wèn)題,這意味著大量的應(yīng)用程序,即需要大的程序空間。而傳統(tǒng)8051程序空間尋址僅為64k,在面對(duì)上述應(yīng)用時(shí)捉襟見(jiàn)肘。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中存在的缺點(diǎn),而提出的一種高性價(jià)比的SoC架構(gòu)。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用了如下技術(shù)方案:
一種高性價(jià)比的SoC架構(gòu),包括改進(jìn)的8051核、flash核、模數(shù)轉(zhuǎn)換器、實(shí)時(shí)鐘、串口、SPI接口、通用IO口、通信收發(fā)器、數(shù)據(jù)存儲(chǔ)器、I2C接口,所述模數(shù)轉(zhuǎn)換器、實(shí)時(shí)鐘、串口、SPI接口、通用IO口、I2C接口通過(guò)SFR總線或xmem總線與8051核電性連接,所述通信收發(fā)器通過(guò)SFR總線和xmem總線與8051核電性連接,所述數(shù)據(jù)存儲(chǔ)器通過(guò)xmem總線與8051核電性連接,所述flash核通過(guò)flash信號(hào)線與flash存取控制電路電性連接,所述flash存取控制電路通過(guò)讀寫總線與8051核電性連接,所述flash存取控制電路支持程序燒錄。
優(yōu)選的,所述通信收發(fā)器包括配置寄存器、數(shù)據(jù)緩沖器,所述配置寄存器通過(guò)SFR總線與8051核電性連接,所述數(shù)據(jù)緩沖器通過(guò)通過(guò)xmem總線與8051核電性連接。
優(yōu)選的,所述flash存取控制電路包括flash下載電路、flash只讀電路、flash讀寫電路,所述flash下載電路與下載控制相連用于接收上位機(jī)數(shù)據(jù),按頁(yè)寫入全部原始程序,所述flash只讀電路與8051核相連作為程序空間的ROM來(lái)使用,所述flash讀寫電路通過(guò)8051總線與8051核相連用于部分更改flash內(nèi)容,所述flash核分別與flash下載電路、flash只讀電路、flash讀寫電路電性連接,其中所述flash只讀電路與flash讀寫電路并聯(lián)后與所述flash下載電路并聯(lián)。
優(yōu)選的,所述flash下載電路包括下載控制狀態(tài)機(jī)、串口收發(fā)、串口波特率生成,所述串口波特率生成的輸出端與串口收發(fā)的輸入端連接,所述下載控制狀態(tài)機(jī)、串口收發(fā)雙向連接,所述下載控制狀態(tài)機(jī)與flash信號(hào)雙向連接,所述串口收發(fā)與串口信號(hào)雙向連接。
優(yōu)選的,所述flash讀寫電路部分更改flash內(nèi)容通過(guò)在8051核的數(shù)據(jù)存儲(chǔ)器中包含一塊兩用RAM,平時(shí)作為8051的數(shù)據(jù)存儲(chǔ)器使用;當(dāng)需要對(duì)flash的一部分進(jìn)行改寫時(shí),就搬移一部分程序到此RAM,然后程序跳轉(zhuǎn)到此RAM中運(yùn)行,并對(duì)flash進(jìn)行寫操作;寫完后跳轉(zhuǎn)回flash繼續(xù)運(yùn)行。
優(yōu)選的,所述改進(jìn)的8051核支持bank電路,包括指令執(zhí)行狀態(tài)機(jī)、8051專用寄存器堆、8051輸入輸出控制接口和bank選擇電路,所述指令執(zhí)行狀態(tài)機(jī)包括跳轉(zhuǎn)后控制信號(hào),所述8051專用寄存器堆內(nèi)包括bank序號(hào)用于配置下次要跳入的bank的序號(hào),所述跳轉(zhuǎn)后控制信號(hào)、bank序號(hào)的輸出端與bank選擇電路的輸入端連接,所述8051輸入輸出控制接口的輸入端與flash核的輸出端連接,所述8051輸入輸出控制接口、bank選擇電路的輸出端均與組合邏輯電路的輸入端連接,所述組合邏輯電路將加bank后的地址發(fā)送給flash核。
改進(jìn)的8051核是一個(gè)免費(fèi)的改進(jìn)過(guò)的8051IP核,它的絕大部分指令與標(biāo)準(zhǔn)8051兼容,同時(shí)將標(biāo)準(zhǔn)8051每個(gè)機(jī)器周期中的12個(gè)時(shí)鐘周期縮減為4個(gè),大大提高了執(zhí)行速度。
模數(shù)轉(zhuǎn)換器、實(shí)時(shí)鐘、串口、SPI接口、通用IO口、I2C接口可以靈活的連接在SFR總線和xmem總線上,以達(dá)到在芯片中可剪裁的采用各種常見(jiàn)接口的目的。
隨著工藝的進(jìn)步,已經(jīng)有很多成熟的flash IP core可以集成到芯片中,大大減少了板級(jí)設(shè)計(jì)的復(fù)雜度。另外,現(xiàn)在很多應(yīng)用都要求能夠在線更新應(yīng)用程序,這需要硬件的支持。鑒于此,我們?cè)O(shè)計(jì)flash core的硬件控制電路,使之可以正常擦寫、在線更新,而在系統(tǒng)正常運(yùn)行時(shí)作為ROM使用——CPU直接從其中讀取程序代碼然后運(yùn)行。
豐富的應(yīng)用是現(xiàn)在嵌入式終端面臨的主要問(wèn)題,這意味著大量的應(yīng)用程序,即需要大的程序空間。而傳統(tǒng)8051程序空間尋址僅為64k,在面對(duì)上述應(yīng)用時(shí)捉襟見(jiàn)肘。Bank操作可以將程序空間尋址范圍擴(kuò)展數(shù)倍。這需要軟硬件兩方面的支持。硬件上,我們修改了8051核中部分跳轉(zhuǎn)指令的運(yùn)行,再配合編譯器,可以支持4個(gè)bank共128k的尋址空間。
本發(fā)明具有以下優(yōu)點(diǎn):
1.節(jié)省存儲(chǔ)空間、提高速度:本系統(tǒng)增加了對(duì)片內(nèi)flash的支持,上電后程序直接在flash中運(yùn)行,而一般的系統(tǒng)是代碼預(yù)先存在片外單獨(dú)一塊flash中,上電后先加載到片內(nèi)code memory中再運(yùn)行——這需要額外的代碼空間和較長(zhǎng)的上電啟動(dòng)時(shí)間;
2.支持8051在flash中的bank操作,從而支持更多的應(yīng)用程序——可以支持到128k,256k甚至更大的存儲(chǔ)空間,而傳統(tǒng)的8051核心最大支持到64k字節(jié)的存儲(chǔ)空間;
3.采用了改進(jìn)的8051核,指令執(zhí)行速度是標(biāo)準(zhǔn)8051的3倍(同樣時(shí)鐘的情況下);
4.與標(biāo)準(zhǔn)8051指令集兼容,這有利于軟件的繼承、開發(fā)和維護(hù);
5.占用芯片面積小,減少了成本和風(fēng)險(xiǎn):本方案中8051核對(duì)應(yīng)的邏輯門數(shù)僅相當(dāng)于1k個(gè)FPGA LE(四輸入查找表邏輯單元),遠(yuǎn)小于業(yè)內(nèi)常見(jiàn)的ARM核、MIPS核等收費(fèi)內(nèi)核;
6.8051使用的是復(fù)雜指令集,相比精簡(jiǎn)指令集的CPU核(如ARM,MIPS),更容易節(jié)省代碼空間。
附圖說(shuō)明
圖1為傳統(tǒng)以8051為核心的SoC架構(gòu)示意圖;
圖2為本發(fā)明提出的一種高性價(jià)比的SoC架構(gòu)的架構(gòu)示意圖;
圖3為flash存取控制電路框圖;
圖4為flash三種操作模式的切換示意圖;
圖5為接口時(shí)序示意圖;
圖6為flash下載電路的框圖;
圖7為下載控制狀態(tài)機(jī)模塊的狀態(tài)轉(zhuǎn)換圖;
圖8為8051在flash中和在PD_ram中運(yùn)行兩種模式下的地址映射圖;
圖9為bank電路與地址映射示意圖;
圖10為bank_sel更新的時(shí)序示意圖;
圖11為bank切換舉例示意圖
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。
參照?qǐng)D2,一種高性價(jià)比的SoC架構(gòu),包括改進(jìn)的8051核、flash核、模數(shù)轉(zhuǎn)換器、實(shí)時(shí)鐘、串口、SPI接口、通用IO口、通信收發(fā)器、數(shù)據(jù)存儲(chǔ)器、I2C接口,8051核是一個(gè)免費(fèi)的改進(jìn)過(guò)的8051IP核,其絕大部分指令與標(biāo)準(zhǔn)8051兼容,同時(shí)將標(biāo)準(zhǔn)8051每個(gè)機(jī)器周期中的12個(gè)時(shí)鐘周期縮減為4個(gè),大大提高了執(zhí)行速度,所述模數(shù)轉(zhuǎn)換器、實(shí)時(shí)鐘、串口、SPI接口、通用IO口、I2C接口通過(guò)SFR總線或xmem總線與8051核電性連接,所述通信收發(fā)器通過(guò)SFR總線和xmem總線與8051核電性連接,所述數(shù)據(jù)存儲(chǔ)器通過(guò)xmem總線與8051核電性連接,flash核通過(guò)flash信號(hào)線與flash存取控制電路電性連接,flash存取控制電路通過(guò)讀寫總線與8051核電性連接,flash存取控制電路支持程序燒錄。通信收發(fā)器包括配置寄存器、數(shù)據(jù)緩沖器,所述配置寄存器通過(guò)SFR總線與8051核電性連接,所述數(shù)據(jù)緩沖器通過(guò)通過(guò)xmem總線與8051核電性連接。
參照?qǐng)D1,相比傳統(tǒng)8051系統(tǒng)架構(gòu)上的改進(jìn)共4點(diǎn),如下:
(1)改進(jìn)的8051核;
(2)可剪裁的各種接口;
(3)對(duì)flash存儲(chǔ)器的支持;
(4)對(duì)bank操作的支持;
本實(shí)施例中對(duì)flash的操作有三種需求:
(1)出廠時(shí),要能燒寫整個(gè)程序,即支持本地刷新(通過(guò)特定串口);
(2)系統(tǒng)運(yùn)行中,要能更新一部分應(yīng)用程序或數(shù)據(jù),結(jié)合相應(yīng)軟件可以支持遠(yuǎn)程下載、更新;
(3)除了上述情況之外的系統(tǒng)正常運(yùn)行過(guò)程中,要能作為程序空間被CPU讀取指令。
針對(duì)這三種需求,flash要有三種互斥的操作模式,或者說(shuō)是三種操作狀態(tài)。由芯片的配置管腳和8051配置寄存器來(lái)實(shí)施切換。具體列表如下:
表1 flash操作模式
參照?qǐng)D3,為flash存取控制電路框圖,flash存取控制電路包括flash下載電路、flash只讀電路、flash讀寫電路,flash下載電路與下載控制相連用于接收上位機(jī)數(shù)據(jù),按頁(yè)寫入全部原始程序,flash只讀電路與8051核相連作為程序空間的ROM來(lái)使用,flash讀寫電路通過(guò)8051總線與8051核相連用于部分更改flash內(nèi)容,flash核分別與flash下載電路、flash只讀電路、flash讀寫電路電性連接,其中flash只讀電路與flash讀寫電路并聯(lián)后與flash下載電路并聯(lián)。
參照?qǐng)D4,為flash三種操作模式的切換示意圖,每種操作中,接口電路都要完成兩件事情:一是生成符合flash時(shí)序要求的接口信號(hào),二是完成該操作的流程控制。
1.接口時(shí)序的控制,本實(shí)施例中采用128kB的NOR Flash硬IP核,接口信號(hào)分類如下表所示:
表2接口信號(hào)分類
flash下載和讀寫模式都是主動(dòng)發(fā)起對(duì)flash的操作,接口時(shí)序主要受控于接口電路本身,故而比較容易設(shè)計(jì);而正常模式(flash作為程序空間只讀)對(duì)flash的操作還取決于8051,這樣就需要接口電路同時(shí)滿足flash和8051的時(shí)序。因此,本實(shí)施例中以正常模式為代表介紹接口控制時(shí)序,圖5為接口時(shí)序示意圖,8051要求給出讀使能和讀地址后,flash能夠在c3結(jié)束之前將數(shù)據(jù)放到DOUT上。如圖5所示,在芯片系統(tǒng)時(shí)鐘為20MHz時(shí),這樣的時(shí)序可以滿足。
參照?qǐng)D6為flash下載電路的框圖,flash下載電路包括下載控制狀態(tài)機(jī)、串口收發(fā)、串口波特率生成,串口波特率生成的輸出端與串口收發(fā)的輸入端連接,下載控制狀態(tài)機(jī)、串口收發(fā)雙向連接,下載控制狀態(tài)機(jī)與flash信號(hào)雙向連接,串口收發(fā)與串口信號(hào)雙向連接。下載模式用于flash的燒寫,即通過(guò)專用串口將8051程序固化到flash中。這些程序在芯片切換到正常模式后將由8051讀取并運(yùn)行。
參照?qǐng)D7,串口每接收一個(gè)字節(jié),就交由“下載控制狀態(tài)機(jī)”去寫入(同時(shí)串口接收下一個(gè)字節(jié)),在下一個(gè)字節(jié)接收到之前,當(dāng)前的字節(jié)一定可以寫入完畢。這樣可以達(dá)到流水操作的效果,以提高效率;相對(duì)于“flash下載”模式中的全部擦寫,部分擦寫通常只會(huì)更改flash中的一小部分內(nèi)容,大致有兩種:一是遠(yuǎn)程下載的需要更新的部分程序,或者需要增加的新的應(yīng)用程序,統(tǒng)稱為程序的在線更新;二是運(yùn)行中部分需要永久保存或半永久保存的數(shù)據(jù),也可以存入。
由于該flash在擦寫的同時(shí),無(wú)法從其中讀取內(nèi)容,所以這時(shí)8051不能把flash當(dāng)成rom來(lái)讀取。解決的辦法是先把一小部分程序搬移到一塊ram(PD_ram)中,并讓程序在其中運(yùn)行,這樣才可以對(duì)flash進(jìn)行改寫。
如圖8所示,flash讀寫電路部分更改flash內(nèi)容通過(guò)在8051核的數(shù)據(jù)存儲(chǔ)器中包含一塊兩用RAM,平時(shí)作為8051的數(shù)據(jù)存儲(chǔ)器使用;當(dāng)需要對(duì)flash的一部分進(jìn)行改寫時(shí),就搬移一部分程序到此RAM,然后程序跳轉(zhuǎn)到此RAM中運(yùn)行,并對(duì)flash進(jìn)行寫操作;寫完后跳轉(zhuǎn)回flash繼續(xù)運(yùn)行,8051在flash中和在PD_ram中運(yùn)行,對(duì)應(yīng)不同的地址映射。
其中,D_ram一直用作數(shù)據(jù)空間,而另有一小塊PD_ram在正常模式下用作數(shù)據(jù)空間,在flash讀寫模式下用作程序空間。此時(shí),PD_ram中的程序是在進(jìn)入flash讀寫模式之前從flash中搬移過(guò)來(lái)的,主要完成flash的擦寫功能。
要打斷正常運(yùn)行來(lái)進(jìn)行flash擦寫,需要如下步驟:
(1)將必要的程序段從flash中搬移到PD_ram中;
(2)搬完后會(huì)有一個(gè)跳轉(zhuǎn)指令,此時(shí)硬件自動(dòng)完成地址映射;
(3)將需要改動(dòng)的flash頁(yè)映射到8051數(shù)據(jù)空間的一段(固定地址窗口);
(4)將選定的flash頁(yè)的內(nèi)容拷貝到D_ram中,擦除選定的flash頁(yè);
(5)對(duì)D_ram中的拷貝做必要的改寫,寫回到flash中;
(6)寫完后會(huì)有一個(gè)跳轉(zhuǎn)指令,跳回flash中運(yùn)行。
對(duì)于低數(shù)據(jù)率的嵌入式終端,常見(jiàn)的情況是數(shù)據(jù)存儲(chǔ)需求小,而程序存儲(chǔ)空間要求大,這種128kB的NOR Flash硬IP核就是針對(duì)這種情況的。傳統(tǒng)8051程序空間的尋址為64k。為了擴(kuò)展尋址空間,采用劃分bank的方式,就可以擴(kuò)展至128k,256k,乃至更多。這需要軟硬件的支持:修改8051硬件,使相關(guān)的跳轉(zhuǎn)指令能支持bank跳轉(zhuǎn);采用中繼函數(shù)配合編譯器實(shí)現(xiàn)bank跳轉(zhuǎn)。
參照?qǐng)D9,改進(jìn)的8051核支持bank電路,包括指令執(zhí)行狀態(tài)機(jī)、8051專用寄存器堆、8051輸入輸出控制接口和bank選擇電路,指令執(zhí)行狀態(tài)機(jī)包括跳轉(zhuǎn)后控制信號(hào),8051專用寄存器堆內(nèi)包括bank序號(hào)用于配置下次要跳入的bank的序號(hào),跳轉(zhuǎn)后控制信號(hào)、bank序號(hào)的輸出端與bank選擇電路的輸入端連接,8051輸入輸出控制接口的輸入端與flash核的輸出端連接,8051輸入輸出控制接口、bank選擇電路的輸出端均與組合邏輯電路的輸入端連接,組合邏輯電路將加bank后的地址發(fā)送給flash核。
時(shí)序如圖10所示,本實(shí)施例中bank中代碼的最小顆粒度是函數(shù),并且在編譯時(shí)必須經(jīng)過(guò)中繼函數(shù),那么目前僅在函數(shù)返回指令(ret)運(yùn)行時(shí)更新bank_sel信號(hào)即可。
參照?qǐng)D11,中繼函數(shù)與編譯器,Bank1中的函數(shù)func X要調(diào)用bank2中的函數(shù)func Y,在調(diào)用和返回過(guò)程中分別要經(jīng)過(guò)中繼函數(shù)B_disp和B_ret。這兩個(gè)函數(shù)都位于bank0即root_bank中。中繼函數(shù)完成兩個(gè)功能:一是操作棧頂,選擇跳往目標(biāo)函數(shù);二是通過(guò)寄存器“bank序號(hào)”保存原bank、設(shè)置新bank,該設(shè)置在跳轉(zhuǎn)指令執(zhí)行時(shí)實(shí)施bank切換。
以上,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。