本發(fā)明涉及數(shù)字電路技術(shù)領(lǐng)域,特別涉及一種APB總線slave接口擴(kuò)展電路及其使用方法。
背景技術(shù):
APB(Advanced Peripheral Bus,外圍總線)總線是ARM(Advanced RISC Machines)公司研發(fā)推出的AMBA(Advanced Microcontroller Bus Architecture,片上總線)系列總線中的一種,已經(jīng)成為一種標(biāo)準(zhǔn)的片上總線結(jié)構(gòu)。主要用于SOC(System on Chip,系統(tǒng)級(jí)芯片)與低帶寬的周邊外設(shè)之間的連接和通訊,例如UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器),GPIO(General Purpose Input Output,通用輸入輸出接口)等。圖1為APB總線應(yīng)用示意圖,如圖所示,APB總線只有一個(gè)主接口(master),就是APB橋,其它都是從接口(slave),用于連接各種外設(shè)。
由于SOC系統(tǒng)越來(lái)越復(fù)雜,一個(gè)SOC系統(tǒng)中連接多個(gè)外設(shè)也越來(lái)越普遍。但是一般地,一條APB總線可連接的最多的slave個(gè)數(shù)固定,比如16個(gè),如果需要增加slave接口數(shù)目,則常用的方法有兩種方法:
方法一:修改APB總線結(jié)構(gòu),以支持更多slave接口;
方法二:增加一條同樣配置的APB總線。
圖2為方法一的實(shí)施例示意圖,如圖所示,如果APB總線是一個(gè)成熟IP,修改APB總線結(jié)構(gòu)來(lái)支持更多的slave,并不是最佳方法,即使是自行設(shè)計(jì)的APB總線,修改結(jié)構(gòu)意味著需要重新驗(yàn)證,而且不斷變化的需求可能導(dǎo)致反復(fù)多次的修改,而每次修改都需要對(duì)APB總線自身的結(jié)構(gòu)重新驗(yàn)證。
圖3為方法二的實(shí)施例示意圖,如圖所示,增加一條同樣配置的APB總線,可將支持的APB slave個(gè)數(shù)提高一倍,但需要在SOC系統(tǒng)中增加一個(gè)APB橋的接口,這個(gè)對(duì)整個(gè)SOC系統(tǒng)結(jié)構(gòu)影響較大。例如APB橋接口是連接到AHB或AXI總線上,則要求AHB或AXI總線需要有空閑的接口可供新增的APB橋接口使用。如果沒(méi)有,則可能需要修改AHB或AXI總線結(jié)構(gòu),以增加接口連接新增的APB橋接口。
現(xiàn)有技術(shù)的不足在于:增加APB slave接口時(shí)需要修改APB總線結(jié)構(gòu)或SOC系統(tǒng),實(shí)現(xiàn)較為復(fù)雜。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種APB總線slave接口擴(kuò)展電路及其使用方法,用以使得增加APB slave接口的實(shí)現(xiàn)過(guò)程變得較為簡(jiǎn)單。
本發(fā)明實(shí)施例提供了一種APB總線slave接口擴(kuò)展電路,包括:接口擴(kuò)展實(shí)現(xiàn)電路、APB slave擴(kuò)展接口;其中,所述APB總線需要擴(kuò)展的slave接口的地址空間劃分為N個(gè)互不交疊的子地址空間,N為大于1的整數(shù),所述APB總線需要擴(kuò)展的slave接口根據(jù)所述N個(gè)子地址空間擴(kuò)展為N個(gè)APB slave擴(kuò)展接口;
所述接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線需要擴(kuò)展的slave接口、APB slave擴(kuò)展接口相連,用于確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的APB slave擴(kuò)展接口連通。
較佳地,所述接口擴(kuò)展實(shí)現(xiàn)電路包括:PSEL接口擴(kuò)展實(shí)現(xiàn)電路、PRDATA接口擴(kuò)展實(shí)現(xiàn)電路;所述APB slave擴(kuò)展接口包括:PENABLE擴(kuò)展接口、N個(gè)PSEL擴(kuò)展接口、PRDATA擴(kuò)展接口、PADDR擴(kuò)展接口、PWRITE擴(kuò)展接口以及PWDATA擴(kuò)展接口;其中:
所述PSEL接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PSEL接口、APB總線的PADDR接口以及所述PSEL擴(kuò)展接口相連,接收所述PSEL接口的選擇信號(hào)和所述PADDR接口的地址信號(hào),并將所述地址信號(hào)的子地址空間與預(yù)設(shè)子地址空間進(jìn)行對(duì)比來(lái)確定選中的子地址空間,將所述選擇信號(hào)連通到所選中的子地址空間對(duì)應(yīng)的PSEL擴(kuò)展接口;
所述PRDATA接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PRDATA接口、所述PRDATA擴(kuò)展接口相連,根據(jù)所述PSEL擴(kuò)展接口的選擇信號(hào)確定選中的PRDATA擴(kuò)展接口,接收所述選中的PRDATA擴(kuò)展接口的讀回?cái)?shù)據(jù)信號(hào),并將所述讀回?cái)?shù)據(jù)信號(hào)連通到APB總線的PRDATA接口;
所述PENABLE擴(kuò)展接口,與APB總線的PENABLE接口相連,接收以廣播的形式發(fā)出的所述PENABLE接口的選通信號(hào);
所述PADDR擴(kuò)展接口,與APB總線的PADDR接口相連,接收以廣播的形式發(fā)出的所述PADDR接口的地址信號(hào);
所述PWRITE擴(kuò)展接口,與APB總線的PWRITE接口相連,接收以廣播的形式發(fā)出的所述PWRITE接口的寫(xiě)標(biāo)識(shí)信號(hào);
所述PWDATA擴(kuò)展接口,與APB總線的PWDATA接口相連,接收以廣播的形式發(fā)出的所述PWDATA接口的寫(xiě)數(shù)據(jù)信號(hào)。
較佳地,所述接口擴(kuò)展實(shí)現(xiàn)電路進(jìn)一步包括:PREADY接口擴(kuò)展實(shí)現(xiàn)電路、PSLVERR接口擴(kuò)展實(shí)現(xiàn)電路;所述APB slave擴(kuò)展接口進(jìn)一步包括:PREADY擴(kuò)展接口、PSLVERR擴(kuò)展接口;其中:
所述PREADY接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PREADY接口、所述PREADY擴(kuò)展接口相連,根據(jù)所述PSEL擴(kuò)展接口的選擇信號(hào)確定選中的PREADY擴(kuò)展接口,接收所述選中的PREADY擴(kuò)展接口的讀數(shù)據(jù)準(zhǔn)備好信號(hào),并將所述讀數(shù)據(jù)準(zhǔn)備好信號(hào)連通到APB總線的PREADY接口;
所述PSLVERR接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PSLVERR接口、所述PSLVERR擴(kuò)展接口相連,根據(jù)所述PSEL擴(kuò)展接口的選擇信號(hào)確定選中的PSLVERR擴(kuò)展接口,接收所述選中的PSLVERR擴(kuò)展接口的傳輸錯(cuò)誤響應(yīng)信號(hào),并將所述傳輸錯(cuò)誤響應(yīng)信號(hào)連通到APB總線的PSLVERR接口。
較佳地,所述接口擴(kuò)展實(shí)現(xiàn)電路為邏輯門(mén)電路和/或比較器。
本發(fā)明實(shí)施例提供了一種APB總線slave接口擴(kuò)展電路的使用方法,包括:
所述接口擴(kuò)展實(shí)現(xiàn)電路確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的APB slave擴(kuò)展接口連通;
當(dāng)APB總線傳輸處于IDEL狀態(tài),對(duì)應(yīng)的PSEL擴(kuò)展接口的選擇信號(hào)為0,對(duì)應(yīng)的PENABLE擴(kuò)展接口的使能信號(hào)為0;
當(dāng)傳輸被請(qǐng)求時(shí),APB總線進(jìn)入SETUP狀態(tài),所述選擇信號(hào)被置位,所述使能信號(hào)為0;
APB總線在SETUP狀態(tài)停留一個(gè)時(shí)鐘周期后,在下個(gè)時(shí)鐘周期進(jìn)入ACCESS狀態(tài),在SETUP狀態(tài)轉(zhuǎn)入ACCESS狀態(tài)的過(guò)程中,對(duì)應(yīng)的PADDR擴(kuò)展接口的地址信號(hào)、對(duì)應(yīng)的PWRITE擴(kuò)展接口的寫(xiě)標(biāo)識(shí)信號(hào)、對(duì)應(yīng)的PWDATA擴(kuò)展接口的寫(xiě)數(shù)據(jù)信號(hào)保持不變;
APB總線進(jìn)入ACCESS狀態(tài)后,所述選擇信號(hào)被置位,所述使能信號(hào)被置位。
較佳地,進(jìn)一步包括:
若對(duì)應(yīng)的PREADY擴(kuò)展接口的讀數(shù)據(jù)準(zhǔn)備好信號(hào)為低電平,APB總線保持ACCESS狀態(tài);
若對(duì)應(yīng)的PREADY擴(kuò)展接口的讀數(shù)據(jù)準(zhǔn)備好信號(hào)為高電平,APB總線退出ACCESS狀態(tài);
APB總線退出ACCESS狀態(tài)后,若無(wú)傳輸請(qǐng)求,APB總線轉(zhuǎn)入IDEL狀態(tài),若有傳輸請(qǐng)求,APB總線轉(zhuǎn)入SETUP狀態(tài)。
較佳地,所述確定選中的子地址空間是將子地址空間與預(yù)設(shè)子地址空間進(jìn)行對(duì)比來(lái)確定的。
本發(fā)明有益效果如下:
在本發(fā)明實(shí)施例提供的技術(shù)方案中,提出一種APB總線slave接口擴(kuò)展電路,包括:信號(hào)擴(kuò)展實(shí)現(xiàn)電路、APB slave擴(kuò)展接口;由于所述APB總線需要擴(kuò)展的slave接口的地址空間劃分為N個(gè)互不交疊的子地址空間,N為大于1的整數(shù),一個(gè)子地址空間對(duì)應(yīng)一個(gè)APB slave擴(kuò)展接口,所述APB總線需要擴(kuò)展的slave接口擴(kuò)展為N個(gè)APB slave擴(kuò)展接口;信號(hào)擴(kuò)展實(shí)現(xiàn)電路,用于確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的APB slave擴(kuò)展接口連通。新增加的slave擴(kuò)展接口時(shí)序符合標(biāo)準(zhǔn)的APB slave接口時(shí)序??梢栽诓恍薷腁PB總線及SOC結(jié)構(gòu)的基礎(chǔ)上,僅增加了擴(kuò)展電路來(lái)增加APB slave接口,實(shí)現(xiàn)簡(jiǎn)單。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1為本發(fā)明背景技術(shù)中APB總線應(yīng)用示意圖;
圖2為本發(fā)明背景技術(shù)中方法一的實(shí)施例示意圖;
圖3為本發(fā)明背景技術(shù)中方法二的實(shí)施例示意圖;
圖4為本發(fā)明實(shí)施例中APB總線slave接口擴(kuò)展電路的應(yīng)用示意圖;
圖5為本發(fā)明實(shí)施例中APB總線slave接口擴(kuò)展電路整體結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例中PSEL接口擴(kuò)展實(shí)現(xiàn)電路示意圖;
圖7為本發(fā)明實(shí)施例中PRDATA接口擴(kuò)展實(shí)現(xiàn)電路示意圖;
圖8為本發(fā)明實(shí)施例中PREADY接口擴(kuò)展實(shí)現(xiàn)電路示意圖;
圖9為本發(fā)明實(shí)施例中APB總線slave接口擴(kuò)展電路的使用方法實(shí)施流程示意圖;
圖10為本發(fā)明實(shí)施例中slave接口寫(xiě)數(shù)據(jù)時(shí)序示意圖;
圖11為本發(fā)明實(shí)施例中slave接口讀數(shù)據(jù)時(shí)序示意圖;
圖12為本發(fā)明實(shí)施例中APB接口狀態(tài)圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行說(shuō)明。
圖4為APB總線slave接口擴(kuò)展電路的應(yīng)用示意圖,包括:接口擴(kuò)展實(shí)現(xiàn)電路401、APB slave擴(kuò)展接口402;其中,所述APB總線需要擴(kuò)展的slave接口的地址空間劃分為N個(gè)互不交疊的子地址空間,N為大于1的整數(shù),一個(gè)子地址空間對(duì)應(yīng)一個(gè)APB slave擴(kuò)展接口,所述APB總線需要擴(kuò)展的slave接口擴(kuò)展為N個(gè)APB slave擴(kuò)展接口;
所述接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線需要擴(kuò)展的slave接口、APB slave擴(kuò)展接口相連,用于確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的APB slave擴(kuò)展接口連通。
APB slave擴(kuò)展接口與APB slave設(shè)備相連,將一個(gè)APB slave接口擴(kuò)展為多個(gè)擴(kuò)展接口,因而可以連接多個(gè)APB slave設(shè)備。
下面介紹圖4中APB總線slave接口擴(kuò)展電路的工作原理。
如圖所示,APB總線slave接口擴(kuò)展電路可以包括兩個(gè)部分,接口擴(kuò)展實(shí)現(xiàn)電路401和APB slave擴(kuò)展接口402。接口擴(kuò)展實(shí)現(xiàn)電路401又與APB總線slave接口連接。
APB總線上的各個(gè)slave接口是通過(guò)地址空間區(qū)分的,在接口擴(kuò)展實(shí)現(xiàn)電路中,仍然通過(guò)地址空間區(qū)分?jǐn)U展后的salve接口。將一個(gè)APB slave接口擴(kuò)展為N個(gè)時(shí),需要將這個(gè)slave接口的地址空間ADDRn再細(xì)分成N個(gè)子地址空間ADDRn_0,ADDRn_1,ADDRn_2…ADDRn_(n-1),N個(gè)子地址空間互不交疊,但是N個(gè)子地址空間可能只是某幾位地址線互不相同。接口擴(kuò)展實(shí)現(xiàn)電路的主要原理是通過(guò)將地址線PADDR[31:0]中的幾位(在子地址空間中互不相同的位)和預(yù)定的子地址空間中對(duì)應(yīng)的位進(jìn)行比較,如果相同,則選中對(duì)應(yīng)的子地址空間,訪問(wèn)相應(yīng)的slave設(shè)備。
如圖4所示,從整個(gè)SOC系統(tǒng)來(lái)看,本方案更有助于SOC系統(tǒng)架構(gòu)的穩(wěn)定性和最小化驗(yàn)證的工作量。通過(guò)擴(kuò)展電路改變SOC系統(tǒng)能支持的APB slave個(gè)數(shù),僅影響擴(kuò)展電路和增加或減少的APB slave接口,SOC其它部分完全不受APB slave個(gè)數(shù)改變帶來(lái)的影響,更有助于系統(tǒng)架構(gòu)的穩(wěn)定性,也避免了由于SOC系統(tǒng)架構(gòu)修改或APB總線修改導(dǎo)致的大量重復(fù)驗(yàn)證工作。
下面對(duì)APB總線slave接口擴(kuò)展電路的具體結(jié)構(gòu)、連接關(guān)系進(jìn)行說(shuō)明。
目前常用的APB總線版本有兩個(gè),APB2和APB3。APB2總線沒(méi)有PREADY和PSLVERR接口,因此,在APB2總線系統(tǒng)中應(yīng)用本發(fā)明時(shí),APB slave擴(kuò)展接口不包括PREADY擴(kuò)展接口和PSLVERR擴(kuò)展接口。APB2總線slave接口擴(kuò)展電路的具體結(jié)構(gòu)、連接關(guān)系具體如下所示:
具體實(shí)施中,所述接口擴(kuò)展實(shí)現(xiàn)電路包括:PSEL接口擴(kuò)展實(shí)現(xiàn)電路、PRDATA接口擴(kuò)展實(shí)現(xiàn)電路;所述APB slave擴(kuò)展接口包括:PENABLE擴(kuò)展接口、PSEL擴(kuò)展接口、PRDATA擴(kuò)展接口、PADDR擴(kuò)展接口、PWRITE擴(kuò)展接口以及PWDATA擴(kuò)展接口;其中:
所述PSEL接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PSEL接口、APB總線的PADDR接口以及所述PSEL擴(kuò)展接口相連,接收所述PSEL接口的選擇信號(hào)和所述PADDR接口的地址信號(hào),并將所述地址信號(hào)的子地址空間與預(yù)設(shè)子地址空間進(jìn)行對(duì)比來(lái)確定選中的子地址空間,將所述選擇信號(hào)連通到所選中的子地址空間對(duì)應(yīng)的PSEL擴(kuò)展接口;
所述PRDATA接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PRDATA接口、所述PRDATA擴(kuò)展接口相連,根據(jù)所述PSEL擴(kuò)展接口的選擇信號(hào)確定選中的PRDATA擴(kuò)展接口,接收所述選中的PRDATA擴(kuò)展接口的讀回?cái)?shù)據(jù)信號(hào),并將所述讀回?cái)?shù)據(jù)信號(hào)連通到APB總線的PRDATA接口;
所述PENABLE擴(kuò)展接口,與APB總線的PENABLE接口相連,接收以廣播的形式發(fā)出的所述PENABLE接口的選通信號(hào);
所述PADDR擴(kuò)展接口,與APB總線的PADDR接口相連,接收以廣播的形式發(fā)出的所述PADDR接口的地址信號(hào);
所述PWRITE擴(kuò)展接口,與APB總線的PWRITE接口相連,接收以廣播的形式發(fā)出的所述PWRITE接口的寫(xiě)標(biāo)識(shí)信號(hào);
所述PWDATA擴(kuò)展接口,與APB總線的PWDATA接口相連,接收以廣播的形式發(fā)出的所述PWDATA接口的寫(xiě)數(shù)據(jù)信號(hào)。
APB3總線slave接口擴(kuò)展電路的具體結(jié)構(gòu)、連接關(guān)系具體如下所示:
在APB3總線系統(tǒng)中應(yīng)用本發(fā)明時(shí),在上述APB總線slave接口擴(kuò)展電路中添加PREADY擴(kuò)展接口和PSLVERR擴(kuò)展接口等相關(guān)電路。
實(shí)施中,所述接口擴(kuò)展實(shí)現(xiàn)電路進(jìn)一步包括:PREADY接口擴(kuò)展實(shí)現(xiàn)電路、PSLVERR接口擴(kuò)展實(shí)現(xiàn)電路;所述APB slave擴(kuò)展接口進(jìn)一步包括:PREADY擴(kuò)展接口、PSLVERR擴(kuò)展接口;其中:
所述PREADY接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PREADY接口、所述PREADY擴(kuò)展接口相連,根據(jù)所述PSEL擴(kuò)展接口的選擇信號(hào)確定選中的PREADY擴(kuò)展接口,接收所述選中的PREADY擴(kuò)展接口的讀數(shù)據(jù)準(zhǔn)備好信號(hào),并將所述讀數(shù)據(jù)準(zhǔn)備好信號(hào)連通到APB總線的PREADY接口;
所述PSLVERR接口擴(kuò)展實(shí)現(xiàn)電路,與APB總線的PSLVERR接口、所述PSLVERR擴(kuò)展接口相連,根據(jù)所述PSEL擴(kuò)展接口的選擇信號(hào)確定選中的PSLVERR擴(kuò)展接口,接收所述選中的PSLVERR擴(kuò)展接口的傳輸錯(cuò)誤響應(yīng)信號(hào),并將所述傳輸錯(cuò)誤響應(yīng)信號(hào)連通到APB總線的PSLVERR接口。
實(shí)施中,所述接口擴(kuò)展實(shí)現(xiàn)電路為邏輯門(mén)電路和/或比較器。
具體的,接口擴(kuò)展實(shí)現(xiàn)電路由邏輯門(mén)電路和/或比較器組成。關(guān)于接口擴(kuò)展實(shí)現(xiàn)電路的內(nèi)部結(jié)構(gòu)在下述實(shí)施例中具體說(shuō)明。
為了更清楚地理解本發(fā)明,下面以具體實(shí)施例進(jìn)行說(shuō)明。
圖5為APB總線slave接口擴(kuò)展電路整體結(jié)構(gòu)示意圖,如圖所示,將一個(gè)APB slave接口擴(kuò)展為三個(gè)slave接口,需要將這個(gè)slave接口的地址空間ADDRn再細(xì)分成三個(gè)子地址空間ADDRn_0,ADDRn_1,ADDRn_2,三個(gè)子地址空間互不交疊,但是三個(gè)子地址空間可能只是某幾位地址線互不相同。擴(kuò)展電路的主要原理是通過(guò)將地址線PADDR[31:0]中的幾位(在子地址空間中互不相同的位)和預(yù)定的子地址空間中對(duì)應(yīng)的位進(jìn)行比較,如果相同,則選中對(duì)應(yīng)的子地址空間,訪問(wèn)相應(yīng)的slave設(shè)備。
例如:ADDRn={0x10000000~0x100fffff},設(shè)置三個(gè)子地址空間分別為:
ADDRn_0={0x10000000~0x1003ffff},
ADDRn_1={0x10040000~0x1007ffff},
ADDRn_2={0x10080000~0x100fffff}。
則三個(gè)子地址空間中只有第18、19位不一樣(從0位開(kāi)始),即ADDRn_0[19:18]=0,ADDRn_1[19:18]=1,ADDRn_2[19:18]=2或3。擴(kuò)展電路只需要判斷APB slave接口上的地址線PADDR[19:18],如果PADDR[19:18]=0,則選擇地址空間ADDRn_0,圖5中左邊的APB slave接口和右邊后綴“_0”的slave接口連通;如果PADDR[19:18]=1,則選擇地址空間ADDRn_1,圖5中左邊的APB slave接口和右邊后綴“_1”的slave接口連通;如果PADDR[19:18]=2或3,則選擇地址空間ADDRn_2,圖5中左邊的APB slave接口和右邊后綴“_2”的slave接口連通。
如圖5所示,在APB總線slave接口擴(kuò)展電路中,地址信號(hào)PADDR[31:0]、寫(xiě)標(biāo)識(shí)信號(hào)PWRITE、選通信號(hào)PENABLE和寫(xiě)數(shù)據(jù)信號(hào)PWDATA[31:0]這四組信號(hào)以廣播的形式發(fā)出,直接連接到3個(gè)APB slave上。選擇信號(hào)PSEL需要通過(guò)地址仲裁后實(shí)現(xiàn)擴(kuò)展,擴(kuò)展后每次最多連通到一個(gè)slave。擴(kuò)展后的3個(gè)APB slave返回的讀回?cái)?shù)據(jù)信號(hào)PRDATA_n和讀數(shù)據(jù)準(zhǔn)備好信號(hào)PREADY_n也需要通過(guò)地址仲裁判斷,選擇其中一路連通到PRDATA和讀數(shù)據(jù)準(zhǔn)備好信號(hào)PREADY(n=0,1,2)。
下面詳細(xì)介紹接口擴(kuò)展實(shí)現(xiàn)電路各個(gè)部分的電路。
圖6為PSEL接口擴(kuò)展實(shí)現(xiàn)電路示意圖,如圖6所示,將PADDR第19位和第18位分別和3個(gè)預(yù)設(shè)定的地址空間對(duì)應(yīng)的位做邏輯比較,對(duì)比相同的時(shí)候,比較電路輸出值為邏輯1,PSEL信號(hào)通過(guò)與門(mén)輸出。對(duì)比不相同的時(shí)候,比較電路輸出值為邏輯0,對(duì)應(yīng)的與門(mén)輸出一直為0,PSEL信號(hào)無(wú)法傳遞。且由于地址空間的唯一性,圖3中的三個(gè)比較電路,最多只有一個(gè)是對(duì)比相同的,即PSEL信號(hào)連通到PSEL_0,PSEL_1和PSEL_2中的一個(gè)。
圖7為PRDATA接口擴(kuò)展實(shí)現(xiàn)電路示意圖,如圖7所示,通過(guò)兩級(jí)二輸入比較器實(shí)現(xiàn)對(duì)多路返回的讀數(shù)據(jù)PRDATA_n[31:0](n=0,1,2)進(jìn)行選擇。
第一級(jí)選擇:用圖6中的PSEL_0作為第一級(jí)二輸入選擇器的選擇端sel,如果PSEL_0為1,則選擇二輸入選擇器1端輸入的信號(hào)即PRDATA_0[31:0]連通到選擇器輸出端。如果PSEL_0為0,則二輸入選擇器0端的輸入信號(hào)即PRDATA_1[31:0]將連通到選擇器輸出端,然后進(jìn)入二級(jí)選擇。
第二級(jí)選擇:用圖6中的PSEL_2作為第二級(jí)二輸入選擇器的選擇端sel,如果PSEL_2為1,則選擇二輸入選擇器1端輸入的信號(hào)即PRDATA_2[31:0]連通到選擇器輸出端,即連通到PRDATA。如果PSEL_2為0,則二輸入選擇器0端的輸入信號(hào)第一級(jí)選擇器輸出的數(shù)據(jù)將連通到選擇器輸出端,即連通到PRDATA。最終實(shí)現(xiàn)從PRDATA_0[31:0],PRDATA_1[31:0],PRDATA_2[31:0]中選擇一路數(shù)據(jù)連接到PRDATA[31:0],完成選擇。
圖7所示電路并不是唯一電路,如果將PSEL_0換成PSEL_1,PRDATA_0[31:0]和PRDATA_1[31:0]連接位置交換,也是可以實(shí)現(xiàn)的。
圖8為PREADY接口擴(kuò)展實(shí)現(xiàn)電路示意圖,如圖8所示,通過(guò)兩級(jí)二輸入比較器實(shí)現(xiàn)對(duì)多路返回的PREDAY_n(n=0,1,2)進(jìn)行選擇。
第一級(jí)選擇:用圖6中的PSEL_0作為第一級(jí)二輸入選擇器的選擇端sel,如果PSEL_0為1,則選擇二輸入選擇器1端輸入的信號(hào)即PREDAY_0連通到選擇器輸出端。如果PSEL_0為0,則二輸入選擇器0端的輸入信號(hào)即PREDAY_1將連通到選擇器輸出端,然后進(jìn)入二級(jí)選擇。
第二級(jí)選擇:用圖6中的PSEL_2作為第二級(jí)二輸入選擇器的選擇端sel,如果PSEL_2為1,則選擇二輸入選擇器1端輸入的信號(hào)即PREDAY_2連通到選擇器輸出端,即連通到PREDAY。如果PSEL_2為0,則二輸入選擇器0端的輸入信號(hào)第一級(jí)選擇器輸出的數(shù)據(jù)將連通到選擇器輸出端,即連通到PREDAY。最終實(shí)現(xiàn)從PREDAY_0,PREDAY_1,PREDAY_2中選擇一路數(shù)據(jù)連接到PREDAY,完成選擇。
圖8所示電路并不是唯一電路,如果將PSEL_0換成PSEL_1,PREDAY_0和PREDAY_1連接位置交換,也是可以實(shí)現(xiàn)的。
從PSLVERR_0,PSLVERR_1,PSLVERR_2中選擇一路數(shù)據(jù)連接到PSLVERR的實(shí)現(xiàn)方法和圖8中PREADY接口擴(kuò)展實(shí)現(xiàn)電路的實(shí)現(xiàn)方法一樣。
根據(jù)以上電路圖描述,將一個(gè)APB slave接口擴(kuò)展成三個(gè)APB slave接口的電路完全由組合邏輯構(gòu)成,不增加通訊的延時(shí),擴(kuò)展后的slave接口時(shí)序仍然符合標(biāo)準(zhǔn)的APB slave接口時(shí)序,并且組合邏輯面積功耗都比較小。
下面介紹APB總線slave接口擴(kuò)展電路的使用方法。
圖9為APB總線slave接口擴(kuò)展電路的使用方法實(shí)施流程示意圖,如圖所示,可以包括如下步驟:
步驟901、所述接口擴(kuò)展實(shí)現(xiàn)電路確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的APB slave擴(kuò)展接口連通;
步驟902、當(dāng)APB總線傳輸處于IDEL狀態(tài),對(duì)應(yīng)的PSEL擴(kuò)展接口的選擇信號(hào)為0,對(duì)應(yīng)的PENABLE擴(kuò)展接口的使能信號(hào)為0;
步驟903、當(dāng)傳輸被請(qǐng)求時(shí),APB總線進(jìn)入SETUP狀態(tài),所述選擇信號(hào)被置位,所述使能信號(hào)為0;
步驟904、APB總線在SETUP狀態(tài)停留一個(gè)時(shí)鐘周期后,在下個(gè)時(shí)鐘周期進(jìn)入ACCESS狀態(tài),在SETUP狀態(tài)轉(zhuǎn)入ACCESS狀態(tài)的過(guò)程中,對(duì)應(yīng)的PADDR擴(kuò)展接口的地址信號(hào)、對(duì)應(yīng)的PWRITE擴(kuò)展接口的寫(xiě)標(biāo)識(shí)信號(hào)、對(duì)應(yīng)的PWDATA擴(kuò)展接口的寫(xiě)數(shù)據(jù)信號(hào)保持不變;
步驟905、APB總線進(jìn)入ACCESS狀態(tài)后,所述選擇信號(hào)被置位,所述使能信號(hào)被置位。
實(shí)施中,還可以進(jìn)一步包括:
若對(duì)應(yīng)的PREADY擴(kuò)展接口的讀數(shù)據(jù)準(zhǔn)備好信號(hào)為低電平,APB總線保持ACCESS狀態(tài);
若對(duì)應(yīng)的PREADY擴(kuò)展接口的讀數(shù)據(jù)準(zhǔn)備好信號(hào)為高電平,APB總線退出ACCESS狀態(tài);
APB總線退出ACCESS狀態(tài)后,若無(wú)傳輸請(qǐng)求,APB總線轉(zhuǎn)入IDEL狀態(tài),若有傳輸請(qǐng)求,APB總線轉(zhuǎn)入SETUP狀態(tài)。
對(duì)于步驟901的實(shí)施,首先使用接口擴(kuò)展實(shí)現(xiàn)電路來(lái)確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的。這樣,APB總線slave接口通過(guò)接口擴(kuò)展實(shí)現(xiàn)電路與APB slave擴(kuò)展接口連通。
新增加的APB slave擴(kuò)展接口時(shí)序符合標(biāo)準(zhǔn)的APB slave接口時(shí)序,下面具體介紹新增加的APB slave擴(kuò)展接口如何在IDEL狀態(tài)、SETUP狀態(tài)以及ACCESS狀態(tài)工作。
對(duì)于步驟902的實(shí)施,系統(tǒng)初始化為IDLE狀態(tài)(空閑狀態(tài)),即默認(rèn)APB狀態(tài),此時(shí)沒(méi)有傳輸操作,也沒(méi)有選中任何從模塊,PSELx=0,PENABLE=0;
對(duì)于步驟903的實(shí)施,當(dāng)有傳輸要進(jìn)行時(shí),PSELx=1,PENABLE=0,系統(tǒng)進(jìn)入SETUP狀態(tài),并只會(huì)在SETUP狀態(tài)停留一個(gè)周期。
對(duì)于步驟904、905的實(shí)施,當(dāng)PCLK的下一個(gè)上升沿時(shí)到來(lái)時(shí),系統(tǒng)進(jìn)入ACCESS狀態(tài)。系統(tǒng)進(jìn)入ENABLE狀態(tài)時(shí),維持之前在SETUP狀態(tài)的PADDR、PSEL、PWRITE不變,并將PENABLE置為1。傳輸也只會(huì)在ACCESS狀態(tài)維持一個(gè)周期,在經(jīng)過(guò)SETUP與ACCESS狀態(tài)之后就已完成。之后如果沒(méi)有傳輸要進(jìn)行,就進(jìn)入IDLE狀態(tài)等待;如果有連續(xù)的傳輸,則進(jìn)入SETUP狀態(tài)。
實(shí)施中,所述確定選中的子地址空間是將子地址空間與預(yù)設(shè)子地址空間進(jìn)行對(duì)比來(lái)確定的。
確定選中的子地址空間的具體實(shí)施在上述實(shí)施例中已經(jīng)說(shuō)明,此處不再贅述。
圖10為slave接口寫(xiě)數(shù)據(jù)時(shí)序示意圖,圖11為slave接口讀數(shù)據(jù)時(shí)序示意圖,APB接口讀寫(xiě)時(shí)序可分為3個(gè)狀態(tài):IDEL,SETUP和ACCESS。圖12為APB接口狀態(tài)圖,如圖12所示,三個(gè)狀態(tài)通過(guò)PSEL和PENABLE的變化切換。在SETUP狀態(tài)時(shí)準(zhǔn)備PADDR,PSEL,PWDATA,PWRITE信號(hào)的值,在ACCESS狀態(tài)完成寫(xiě)數(shù)據(jù)或讀數(shù)據(jù)。PSLVERR信號(hào)不是必須的,在PREADY為1時(shí),若PSLVERR是也是1則表示傳輸失敗。新增加的slave擴(kuò)展接口仍然符合標(biāo)準(zhǔn)的APB slave接口時(shí)序。
綜上所述,在本發(fā)明實(shí)施例提供的技術(shù)方案中,提出一種APB總線slave接口擴(kuò)展電路,包括:信號(hào)擴(kuò)展實(shí)現(xiàn)電路、APB slave擴(kuò)展接口;由于所述APB總線需要擴(kuò)展的slave接口的地址空間劃分為N個(gè)互不交疊的子地址空間,N為大于1的整數(shù),一個(gè)子地址空間對(duì)應(yīng)一個(gè)APB slave擴(kuò)展接口,所述APB總線需要擴(kuò)展的slave接口擴(kuò)展為N個(gè)APB slave擴(kuò)展接口;信號(hào)擴(kuò)展實(shí)現(xiàn)電路,用于確定選中的子地址空間,并將APB總線slave接口與所選中的子地址空間對(duì)應(yīng)的APB slave擴(kuò)展接口連通。新增加的slave擴(kuò)展接口時(shí)序符合標(biāo)準(zhǔn)的APB slave接口時(shí)序??梢栽诓恍薷腁PB總線及SOC結(jié)構(gòu)的基礎(chǔ)上,僅增加了擴(kuò)展電路來(lái)增加APB slave接口,實(shí)現(xiàn)簡(jiǎn)單。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。