本發(fā)明涉及處理器技術(shù)領(lǐng)域,具體的說(shuō)是一種通用輸入輸出時(shí)序處理器及時(shí)序輸入輸出控制方法。
背景技術(shù):
在現(xiàn)有的芯片中,如果要實(shí)現(xiàn)各種數(shù)字接口,就必須在內(nèi)部加入其控制器。例如要實(shí)現(xiàn)spi接口,就必須加入spi控制器,要加入uart接口,就必須加入uart控制器,要實(shí)現(xiàn)對(duì)片外sram的讀寫(xiě)訪問(wèn)就必須加入sram的控制器。然而這些芯片在不同使用者那里的應(yīng)用場(chǎng)景并不相同。有些客戶不需要spi,但芯片卻集成了;而有些客戶需要xxx接口,但芯片卻沒(méi)有集成;有些客戶需要8路pwm接口,而芯片卻只集成了2路。芯片集成了客戶不需要的接口,導(dǎo)致性價(jià)比下降,不必要的功耗也會(huì)增加。而且每設(shè)計(jì)一種接口會(huì)比較復(fù)雜,延長(zhǎng)了芯片研發(fā)生產(chǎn)的周期,也導(dǎo)致成本上升。同時(shí)過(guò)多接口的加入,導(dǎo)致芯片設(shè)計(jì)復(fù)雜,漏洞過(guò)多,出現(xiàn)錯(cuò)誤概率增加。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)不足,本發(fā)明提供一種通用輸入輸出時(shí)序處理器。
本發(fā)明提供的一種通用輸入輸出時(shí)序處理器及時(shí)序輸入輸出控制方法是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
一種通用輸入輸出時(shí)序處理器,由總線接口橋、處理器寄存器堆、時(shí)序控制狀態(tài)機(jī)、時(shí)序發(fā)生計(jì)數(shù)器、時(shí)序ram存儲(chǔ)器、串并轉(zhuǎn)換控制器組成,所述處理器寄存器堆包含多個(gè)序列控制寄存器組,其中:
所述總線接口橋分別連接處理器寄存器堆、時(shí)序ram存儲(chǔ)器,總線接口橋從總線上接收cpu的各種命令傳遞給各個(gè)寄存器,起到了一個(gè)命令格式轉(zhuǎn)換的作用;
所述處理器寄存器堆連接時(shí)序控制狀態(tài)機(jī),處理器寄存器堆用于暫存處理器的處理數(shù)據(jù);
所述時(shí)序控制狀態(tài)機(jī)連接時(shí)序發(fā)生計(jì)數(shù)器,時(shí)序控制狀態(tài)機(jī)由取指控制器、譯碼器、執(zhí)行器組成,取指器用于讀取控制代碼,譯碼器用于分析代碼并翻譯成執(zhí)行器便于執(zhí)行控制的代碼,執(zhí)行器用于配合計(jì)數(shù)器具體實(shí)施控制;
所述時(shí)序發(fā)生計(jì)數(shù)器連接時(shí)序ram存儲(chǔ)器;
時(shí)序ram存儲(chǔ)器連接串并轉(zhuǎn)換控制器組,時(shí)序ram存儲(chǔ)器存儲(chǔ)各個(gè)序列的控制代碼,方便于序列狀態(tài)機(jī)和串并轉(zhuǎn)換控制器的讀取,所述串并轉(zhuǎn)換控制器用于完成位寬轉(zhuǎn)換,從時(shí)序ram存儲(chǔ)器讀取數(shù)據(jù),然后依次輸送到指定的引腳上;
所述序列控制寄存器組中,每個(gè)序列控制寄存器組對(duì)應(yīng)1個(gè)序列控制。
所述串并轉(zhuǎn)換控制器是雙向的,可從當(dāng)前設(shè)定成輸入的引腳上讀取數(shù)據(jù),寫(xiě)入到存儲(chǔ)器的指定位置。
一種時(shí)序輸入輸出控制方法,采用芯片引腳與ram交換數(shù)據(jù)的方式,在控制器的控制下,當(dāng)設(shè)定為輸出時(shí),從ram中讀取數(shù)據(jù)輸出到芯片引腳;當(dāng)設(shè)定為輸入時(shí),從芯片引腳讀取數(shù)據(jù)寫(xiě)入到ram中。圖2中有兩個(gè)ram,1個(gè)ram(數(shù)據(jù)ram)中存放輸入輸出序列的數(shù)據(jù)。當(dāng)輸出時(shí)將ram中的數(shù)據(jù)寫(xiě)入芯片引腳。當(dāng)輸入時(shí)讀取芯片引腳的數(shù)據(jù)寫(xiě)入ram。另1個(gè)ram(方向控制ram)存儲(chǔ)序列的輸入輸出方向選擇控制序列。在控制器的控制下隨著序列的發(fā)生依次讀取ram中的輸入寫(xiě)入芯片引腳的輸入輸出方向選擇寄存器,控制芯片輸入輸出方向,也同時(shí)根據(jù)方向控制數(shù)據(jù)ram當(dāng)前是讀取還是寫(xiě)入;
將一個(gè)或多個(gè)序列存儲(chǔ)在ram中,當(dāng)同一時(shí)刻只有1個(gè)序列在運(yùn)行或者沒(méi)有序列在運(yùn)行;每個(gè)序列對(duì)應(yīng)著1個(gè)序列控制寄存器組,組內(nèi)至少設(shè)置4個(gè)寄存器,采用波特率寄存器控制本序列的速度;
序列首地址寄存器存放本序列在ram中存放的開(kāi)始處地址,尾地址寄存器存放本序列在ram中存放的結(jié)束地址;控制寄存器指明本序列的屬性。
常見(jiàn)屬性有:
1、方向靈活性控制。本序列的方向可以像上面所描述的采用1個(gè)專門的ram存儲(chǔ)來(lái)控制,這樣靈活性比較高,可隨著序列發(fā)生隨時(shí)切換方向。但也可由本屬性指明本序列只是輸入,或只是輸出,或者輸入輸出同時(shí)支持。如果指明只是輸入或輸出,那么方向控制ram在本序列發(fā)生時(shí)不會(huì)讀取。
2、串并轉(zhuǎn)換設(shè)置。上面說(shuō)明的是一種無(wú)串并轉(zhuǎn)換設(shè)置。1個(gè)ram1次讀取或?qū)懭肟梢允?個(gè)字節(jié)(8位),2個(gè)字節(jié)(16位)或4個(gè)字節(jié)(32位)等等(本文描述以1個(gè)字節(jié)為例),每位對(duì)應(yīng)芯片的1個(gè)引腳。但還有1種帶串并轉(zhuǎn)換的設(shè)置,就是1個(gè)ram的數(shù)據(jù)都對(duì)應(yīng)1個(gè)引腳,要寫(xiě)入引腳時(shí),需要將每次ram讀取的數(shù)據(jù)由并行到串行轉(zhuǎn)換成位流,依次送入芯片的1個(gè)引腳;要讀取引腳時(shí),將引腳上的數(shù)據(jù)由串行轉(zhuǎn)換成并行數(shù)據(jù),再寫(xiě)入ram。當(dāng)需要進(jìn)行串并轉(zhuǎn)換時(shí),序列的方向控制如果由ram提供,那么方向控制ram中讀出的數(shù)據(jù)也要進(jìn)行從并行到串行的轉(zhuǎn)換。而如果是由本序列的控制寄存器提供,則不需要。
3、序列啟動(dòng)條件控制。1個(gè)控制器可以有幾組序列控制寄存器組,以支持多個(gè)序列發(fā)生。每個(gè)序列的啟動(dòng)條件包括:
(1)、當(dāng)指定的芯片引腳出現(xiàn)上升沿時(shí);
(2)、當(dāng)指定的芯片引腳出現(xiàn)下降沿時(shí);
(3)、當(dāng)指定的芯片引腳出現(xiàn)上升沿或者下降沿時(shí);
(4)、當(dāng)指定的芯片引腳等于0時(shí);
(5)、當(dāng)指定的芯片引腳等于1時(shí);
(6)、當(dāng)輸入輸出時(shí)序處理器收到其它c(diǎn)pu命令要求啟動(dòng)時(shí);
(7)、當(dāng)指定的其它輸入輸出時(shí)序處理器(1個(gè)芯片內(nèi)可以有多個(gè)輸入輸出時(shí)序處理器)的某個(gè)序列開(kāi)始,與之同時(shí)開(kāi)始;
(8)、當(dāng)指定的某個(gè)序列結(jié)束時(shí)開(kāi)始;
4、大小端控制。指明在串行傳輸時(shí)先發(fā)送字節(jié)中的高位還是低位。
本發(fā)明的有益效果是:
1、實(shí)現(xiàn)一種通用的,即支持各種數(shù)字端口輸入輸出時(shí)序變化要求,應(yīng)對(duì)復(fù)雜多變的各種數(shù)字接口協(xié)議;
2、每個(gè)端口只需支持1個(gè)通用輸入輸出時(shí)序處理器即可,降低芯片研發(fā)周期;
3、功耗更低;
4、可應(yīng)用于各種帶輸入輸出數(shù)字接口的芯片中。在應(yīng)用過(guò)程中也可以根據(jù)應(yīng)用場(chǎng)景將時(shí)序處理器分類以進(jìn)行簡(jiǎn)化。例如,有些端口上的時(shí)序處理器只支持串行輸入(讀取某一引腳上的數(shù)值將其串轉(zhuǎn)并成字節(jié)數(shù)據(jù)寫(xiě)入ram)或輸出(將ram字節(jié)數(shù)據(jù)并轉(zhuǎn)串輸出到某一引腳);有些端口上的時(shí)序處理器只支持并行輸入(例如,同時(shí)讀取8個(gè)引腳上的數(shù)據(jù),作為1個(gè)字節(jié)寫(xiě)入ram)或輸出(例如,從ram中讀取1個(gè)字節(jié)并行輸出到8個(gè)引腳),不進(jìn)行串并轉(zhuǎn)換;有些端口上的時(shí)序處理器支持并行輸出,不支持并行輸入等等。這些都是為了根據(jù)實(shí)際情況簡(jiǎn)化設(shè)計(jì)而作的類別劃分。
附圖說(shuō)明
圖1是通用輸入輸出時(shí)序處理器結(jié)構(gòu)示意圖;
圖2是一種時(shí)序輸入輸出控制方法示意圖;
圖3是串并轉(zhuǎn)換設(shè)置示意圖。
具體實(shí)施方式
下面將通過(guò)實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
文中英文縮寫(xiě)釋義:cpu:中央處理器單元;gpio:通用輸入輸出端口;mux:多路選擇器;iic:集成電路總線;uart:通用異步收發(fā)傳輸器;pwm:脈沖寬度調(diào)制;ram:隨機(jī)存取存儲(chǔ)器;spi:串行外設(shè)接口;外設(shè)ip:在集成電路的可重用設(shè)計(jì)方法學(xué)中,ip核,全稱知識(shí)產(chǎn)權(quán)核(英語(yǔ):intellectualpropertycore),是指某一方提供的、形式為邏輯單元、芯片設(shè)計(jì)的可重用模塊。
實(shí)施例1:
如圖1所示的一種通用輸入輸出時(shí)序處理器,由總線接口橋、處理器寄存器堆、時(shí)序控制狀態(tài)機(jī)、計(jì)數(shù)器,時(shí)序ram存儲(chǔ)器,串并轉(zhuǎn)換控制器組成。
總線接口橋用于從總線上接收cpu的各種命令傳遞給各個(gè)寄存器。起到了一個(gè)命令格式轉(zhuǎn)換的作用。
處理器寄存器堆內(nèi)部包含若干個(gè)序列控制寄存器組(每個(gè)寄存器組對(duì)應(yīng)1個(gè)序列控制),用于暫存處理器的處理數(shù)據(jù)。序列首地址寄存器記錄了要發(fā)生序列的在存儲(chǔ)器中訪問(wèn)的起始地址,序列尾地址寄存器記錄了要發(fā)生序列的在存儲(chǔ)器中的結(jié)束地址。序列控制寄存器有方向靈活性控制,串并轉(zhuǎn)換,啟動(dòng)條件,大小端控制,序列長(zhǎng)度控制,發(fā)生次數(shù)控制,位使能等。
序列長(zhǎng)度控制要發(fā)生序列的長(zhǎng)度和序列發(fā)生次數(shù)。其序列長(zhǎng)度最大值受限于存儲(chǔ)器的大小,根據(jù)應(yīng)用場(chǎng)景和系統(tǒng)規(guī)格確定時(shí)序存儲(chǔ)器的容量。容量越大,序列長(zhǎng)度最大值也就越大。序列長(zhǎng)度最小值為1位。另外注意存儲(chǔ)器中不止存儲(chǔ)1個(gè)序列,可以存儲(chǔ)多個(gè)序列。也可以通過(guò)程序控制各個(gè)序列的發(fā)生先后順序和次數(shù)。
每個(gè)序列的發(fā)生次數(shù)從只發(fā)生1次到無(wú)數(shù)次(即持續(xù)不停的發(fā)生)。每個(gè)序列啟動(dòng)的條件有:1、受cpu控制直接啟動(dòng);2、當(dāng)某個(gè)序列結(jié)束時(shí)啟動(dòng)或者和某個(gè)序列同時(shí)啟動(dòng);3、當(dāng)輸入引腳上出現(xiàn)指定的上升沿,下降沿,邊沿(上升沿或下降沿),等于0時(shí)或等于1時(shí)啟動(dòng),這些條件要由cpu事先配置入控制寄存器。序列速度寄存器控制要發(fā)生序列的運(yùn)行速度,即每個(gè)位占用多少個(gè)時(shí)鐘周期。支持每個(gè)序列設(shè)定不同的速度。
位使能決定究竟是哪些引腳參與本次序列發(fā)生。
序列發(fā)生控制狀態(tài)機(jī)是中央控制器,決定序列發(fā)生的各個(gè)步驟,并具體實(shí)施。與之配合的計(jì)數(shù)器起到定時(shí)的輔助控制的作用。序列發(fā)生控制狀態(tài)機(jī)由3個(gè)控制器組成。取指器用于讀取控制代碼,譯碼器用于分析代碼并翻譯成執(zhí)行器便于執(zhí)行控制的代碼。而執(zhí)行器用于配合計(jì)數(shù)器具體實(shí)施控制。
時(shí)序ram存儲(chǔ)器存儲(chǔ)各個(gè)序列的控制代碼,方便于序列狀態(tài)機(jī)和串并轉(zhuǎn)換控制器的讀取。cpu可以像訪問(wèn)普通ram存儲(chǔ)器那樣訪問(wèn)這個(gè)ram存儲(chǔ)器,所以當(dāng)時(shí)序處理器不工作時(shí),這個(gè)ram存儲(chǔ)器可以當(dāng)做一般存儲(chǔ)器供cpu使用。
因?yàn)閺拇鎯?chǔ)器中讀取的數(shù)據(jù)和寫(xiě)入的數(shù)據(jù)的位寬是固定的,而每個(gè)序列所作用于的引腳的個(gè)數(shù)不同,引腳的編號(hào)也不同。例如序列a控制了4個(gè)引腳,分別是引腳0,1,2,3;序列b控制了8個(gè)引腳,分別是引腳0,1,5,6,10,11,12,13。所以需要串并轉(zhuǎn)換控制器來(lái)完成這個(gè)轉(zhuǎn)換操作。串并轉(zhuǎn)換控制器用于完成位寬轉(zhuǎn)換,受中央控制器的決定,從存儲(chǔ)器讀取數(shù)據(jù),然后依次輸送到制定的引腳上。同時(shí)串并轉(zhuǎn)換控制器是雙向,從當(dāng)前設(shè)定成輸入的引腳上讀取數(shù)據(jù),寫(xiě)入到存儲(chǔ)器的指定位置。
實(shí)施例2
如圖2所示的一種時(shí)序輸入輸出控制方法,采用芯片引腳與ram交換數(shù)據(jù)的方式,在控制器的控制下,當(dāng)設(shè)定為輸出時(shí),從ram中讀取數(shù)據(jù)輸出到芯片引腳;當(dāng)設(shè)定為輸入時(shí),從芯片引腳讀取數(shù)據(jù)寫(xiě)入到ram中。圖2中有兩個(gè)ram,1個(gè)ram(數(shù)據(jù)ram)中存放輸入輸出序列的數(shù)據(jù)。當(dāng)輸出時(shí)將ram中的數(shù)據(jù)寫(xiě)入芯片引腳。當(dāng)輸入時(shí)讀取芯片引腳的數(shù)據(jù)寫(xiě)入ram。另1個(gè)ram(方向控制ram)存儲(chǔ)序列的輸入輸出方向選擇控制序列。在控制器的控制下隨著序列的發(fā)生依次讀取ram中的輸入寫(xiě)入芯片引腳的輸入輸出方向選擇寄存器,控制芯片輸入輸出方向,也同時(shí)根據(jù)方向控制數(shù)據(jù)ram當(dāng)前是讀取還是寫(xiě)入;
將一個(gè)或多個(gè)序列存儲(chǔ)在ram中,當(dāng)同一時(shí)刻只有1個(gè)序列在運(yùn)行或者沒(méi)有序列在運(yùn)行;每個(gè)序列對(duì)應(yīng)著1個(gè)序列控制寄存器組,組內(nèi)至少設(shè)置4個(gè)寄存器,采用波特率寄存器控制本序列的速度;
序列首地址寄存器存放本序列在ram中存放的開(kāi)始處地址,尾地址寄存器存放本序列在ram中存放的結(jié)束地址;控制寄存器指明本序列的屬性。
常見(jiàn)屬性有:
1、方向靈活性控制。本序列的方向可以像上面所描述的采用1個(gè)專門的ram存儲(chǔ)來(lái)控制,這樣靈活性比較高,可隨著序列發(fā)生隨時(shí)切換方向。但也可由本屬性指明本序列只是輸入,或只是輸出,或者輸入輸出同時(shí)支持。如果指明只是輸入或輸出,那么方向控制ram在本序列發(fā)生時(shí)不會(huì)讀取。
2、串并轉(zhuǎn)換設(shè)置。上面說(shuō)明的是一種無(wú)串并轉(zhuǎn)換設(shè)置。1個(gè)ram1次讀取或?qū)懭肟梢允?個(gè)字節(jié)(8位),2個(gè)字節(jié)(16位)或4個(gè)字節(jié)(32位)等等(本文描述以1個(gè)字節(jié)為例),每位對(duì)應(yīng)芯片的1個(gè)引腳。但還有1種帶串并轉(zhuǎn)換的設(shè)置,就是1個(gè)ram的數(shù)據(jù)都對(duì)應(yīng)1個(gè)引腳,要寫(xiě)入引腳時(shí),需要將每次ram讀取的數(shù)據(jù)由并行到串行轉(zhuǎn)換成位流,依次送入芯片的1個(gè)引腳;要讀取引腳時(shí),將引腳上的數(shù)據(jù)由串行轉(zhuǎn)換成并行數(shù)據(jù),再寫(xiě)入ram。當(dāng)需要進(jìn)行串并轉(zhuǎn)換時(shí),如圖3所示,序列的方向控制如果由ram提供,那么方向控制ram中讀出的數(shù)據(jù)也要進(jìn)行從并行到串行的轉(zhuǎn)換。而如果是由本序列的控制寄存器提供,則不需要。
3、序列啟動(dòng)條件控制。1個(gè)控制器可以有幾組序列控制寄存器組,以支持多個(gè)序列發(fā)生。每個(gè)序列的啟動(dòng)條件包括:
(1)、當(dāng)指定的芯片引腳出現(xiàn)上升沿時(shí);
(2)、當(dāng)指定的芯片引腳出現(xiàn)下降沿時(shí);
(3)、當(dāng)指定的芯片引腳出現(xiàn)上升沿或者下降沿時(shí);
(4)、當(dāng)指定的芯片引腳等于0時(shí);
(5)、當(dāng)指定的芯片引腳等于1時(shí);
(6)、當(dāng)輸入輸出時(shí)序處理器收到其它c(diǎn)pu命令要求啟動(dòng)時(shí);
(7)、當(dāng)指定的其它輸入輸出時(shí)序處理器(1個(gè)芯片內(nèi)可以有多個(gè)輸入輸出時(shí)序處理器)的某個(gè)序列開(kāi)始,與之同時(shí)開(kāi)始;
(8)、當(dāng)指定的某個(gè)序列結(jié)束時(shí)開(kāi)始;
4、大小端控制。指明在串行傳輸時(shí)先發(fā)送字節(jié)中的高位還是低位。
以上所述實(shí)施例僅表示本發(fā)明的實(shí)施方式,其描述較為具體和詳細(xì),但并不能理解為對(duì)本發(fā)明范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明保護(hù)范圍。