??? 摘 要: 采用一種新的總線橋" title="總線橋">總線橋網(wǎng)絡(luò)連接方法,實(shí)現(xiàn)了由一個(gè)總線橋?qū)蓚€(gè)CPU以及多個(gè)數(shù)字設(shè)備連接在一起的功能。重點(diǎn)研究了總線橋的整體結(jié)構(gòu)設(shè)計(jì)及內(nèi)部邏輯功能,并對(duì)其進(jìn)行了詳細(xì)分析及仿真驗(yàn)證。結(jié)果表明總線橋能夠正確完成雙CPU與公共設(shè)備之間的通信,提高了系統(tǒng)電路的工作速度和性能,很好地解決了多CPU與公共電路模塊" title="電路模塊">電路模塊之間的通信問題。
??? 關(guān)鍵詞: 總線橋;SoC;雙CPU
?
??? 隨著集成電路設(shè)計(jì)和制造技術(shù)的發(fā)展,在比較復(fù)雜的移動(dòng)終端或控制終端設(shè)計(jì)中,往往使用模數(shù)" title="模數(shù)">模數(shù)混合信號(hào)" title="混合信號(hào)">混合信號(hào)SoC設(shè)計(jì)方法完成芯片設(shè)計(jì)[1-3]。使用模數(shù)混合信號(hào)SoC設(shè)計(jì)專用集成電路不僅可以提高系統(tǒng)電路工作速度,還可以增加系統(tǒng)的抗干擾能力,并保證系統(tǒng)工作安全[2][4]。
在模數(shù)混合信號(hào)SoC設(shè)計(jì)中,電路各不同部分的連接是關(guān)鍵問題。對(duì)僅含有一個(gè)CPU的SoC,可以使用總線方式完成各電路部分的連接,但對(duì)于含有2個(gè)或2個(gè)以上CPU的電路,使用總線方式連接就會(huì)降低電路工作速度和性能,因此,必須采用特殊的連接方法[5][6]。對(duì)于多CPU的SoC來說,其內(nèi)部各CPU系統(tǒng)之間以及CPU與公共電路模塊之間的通信連接形成了一種片內(nèi)網(wǎng)絡(luò),屬于片上網(wǎng)絡(luò)系統(tǒng)(NoC)。
針對(duì)具有兩個(gè)CPU系統(tǒng)的模數(shù)混合信號(hào)SoC設(shè)計(jì)要求" title="設(shè)計(jì)要求">設(shè)計(jì)要求,本文提出一種新的總線橋網(wǎng)絡(luò)連接方法,通過總線橋,可以把兩個(gè)CPU以及多個(gè)數(shù)字設(shè)備連接在一起。
1 雙CPU混合電路的系統(tǒng)結(jié)構(gòu)
在嵌入式微處理器中,目前一般使用總線橋?qū)崿F(xiàn)多個(gè)電路模塊與CPU相連接[ARM、IBM],這種總線的特點(diǎn)是能實(shí)現(xiàn)可變數(shù)據(jù)寬度,同時(shí)可以滿足快速數(shù)據(jù)連接。但對(duì)于多CPU的SoC系統(tǒng)來說,這種總線無法實(shí)現(xiàn)CPU所要求的運(yùn)行模式要求。在多CPU系統(tǒng)中,要求CPU之間實(shí)現(xiàn)無縫連接,同時(shí)對(duì)于公共電路也能實(shí)現(xiàn)無縫連接,即要求任何一個(gè)CPU都能把公共電路和其他的CPU作為其子系統(tǒng)的一部分,實(shí)現(xiàn)快速數(shù)據(jù)傳輸。圖1是一個(gè)雙CPU系統(tǒng)的數(shù)據(jù)流圖結(jié)構(gòu)。
?
在圖1的數(shù)據(jù)流圖中,CPU之間、CPU與公共電路之間的數(shù)據(jù)傳輸都經(jīng)過總線橋?qū)崿F(xiàn),因此,總線橋?qū)嶋H上就是一個(gè)系統(tǒng)總線仲裁器。仲裁器與CPU通過簡單的信號(hào)協(xié)議完成快速數(shù)據(jù)傳輸連接。
雙CPU的模數(shù)混合信號(hào)SoC的基本結(jié)構(gòu)如圖2所示,系統(tǒng)中的數(shù)據(jù)字長為8bit。在這個(gè)系統(tǒng)中,具有CPU1和CPU2 兩個(gè)完全獨(dú)立的8位CPU系統(tǒng)。要求所設(shè)計(jì)的SoC提供一個(gè)ADC電路和一個(gè)DAC電路,這兩個(gè)電路可以被任何一個(gè)CPU所控制。同時(shí),系統(tǒng)還要提供一個(gè)公共的32KB RAM,可以被兩個(gè)CPU中的任何一個(gè)所訪問。注意,這個(gè)系統(tǒng)中把ADC和DAC所連接的模擬電路設(shè)計(jì)在SoC之外。
與圖1相對(duì)照,圖2中的ADC和DAC以及RAM就是圖1中的公共電路。
?
在圖2所示的SoC結(jié)構(gòu)中,兩個(gè)CPU均為一個(gè)獨(dú)立CPU系統(tǒng),能夠完全獨(dú)立工作。在任何一個(gè)CPU系統(tǒng)中,CPU稱為本地CPU,每個(gè)CPU系統(tǒng)均包含有相應(yīng)的總線、邏輯電路、存儲(chǔ)器和I/O接口等,所有這些電路僅供本地CPU使用。
2 總線橋結(jié)構(gòu)設(shè)計(jì)
根據(jù)圖2的結(jié)構(gòu)可知,所需要的SoC中需要實(shí)現(xiàn)8bit的數(shù)據(jù)傳輸。在設(shè)計(jì)中考慮如下要求:
(1)任何一個(gè)CPU系統(tǒng)均為一個(gè)獨(dú)立工作的8bit系統(tǒng)。
(2)任何一個(gè)CPU系統(tǒng)均可隨時(shí)使用RAM、ADC和DAC電路,對(duì)于RAM的等待時(shí)間不大于2us,對(duì)于ADC和DAC電路的等待時(shí)間不大于120us。
(3)RAM、ADC和DAC電路全部在CPU系統(tǒng)控制下工作,不主動(dòng)向兩個(gè)CPU系統(tǒng)發(fā)送信號(hào)或數(shù)據(jù)。
(4)ADC的模擬輸入信號(hào)帶寬小于2kHz,轉(zhuǎn)換速度為100μs。
(5)DAC輸出數(shù)據(jù)速度低于4000點(diǎn)/s,轉(zhuǎn)換速度為1μs。
根據(jù)以上設(shè)計(jì)要求可知,必須使用一個(gè)總線橋把兩個(gè)CPU系統(tǒng)和RAM、ADC及DAC電路連接起來。
為了滿足設(shè)計(jì)要求,總線橋必須為每一個(gè)電路提供一個(gè)單獨(dú)的通道,每個(gè)通道需要設(shè)置一個(gè)開關(guān)來控制CPU系統(tǒng)的連接。
總線橋的具體設(shè)計(jì)要求如下:
(1)具有電路使用判別功能,即能夠判別哪一個(gè)CPU系統(tǒng)提出的電路使用要求。
(2)為了滿足速度要求,應(yīng)向每個(gè)CPU都提供相應(yīng)的電路部件工作狀態(tài)信息,以保證CPU系統(tǒng)能正確、快速地完成數(shù)據(jù)傳輸。
(3)總線橋?qū)﹄娐吠ǖ赖倪x擇使用硬件邏輯電路來完成。
(4)如果兩個(gè)CPU系統(tǒng)需要寫入或獨(dú)處數(shù)據(jù)中相互碰撞,則應(yīng)當(dāng)有一個(gè)CPU具有優(yōu)先權(quán)。
(5)如果兩個(gè)CPU系統(tǒng)使用不同的電路,則應(yīng)當(dāng)能夠同時(shí)使用。例如CPU1向RAM寫入或讀出數(shù)據(jù),CPU2從ADC讀取數(shù)據(jù),這時(shí)必須能夠同時(shí)工作。
(6)對(duì)于CPU系統(tǒng)來說,對(duì)RAM、ADC和DAC電路的讀寫操作類似于I/O口操作。
(7)暫不考慮CPU之間的數(shù)據(jù)傳輸。
3 總線橋設(shè)計(jì)與實(shí)現(xiàn)
根據(jù)以上討論,本文設(shè)計(jì)了一個(gè)完整的8bit雙CPU系統(tǒng)的總線橋系統(tǒng)。
3.1 總線橋控制原理
總線橋的功能是對(duì)各通道進(jìn)行連接控制,并向CPU提供相應(yīng)的設(shè)備狀態(tài)信號(hào)。本文設(shè)計(jì)的總線橋控制器的功能是對(duì)各通道進(jìn)行開關(guān)控制,在控制器的控制下建立CPU與RAM、ADC和DAC之間的直接連接。
為了保證多CPU系統(tǒng)能夠正常工作,并盡可能保證對(duì)其他功能電路的并行操作,總線橋的功能應(yīng)用是把CPU1、CPU2和RAM、ADC及DAC連接在一起,提供一個(gè)主動(dòng)電路之間、主動(dòng)電路與非主動(dòng)電路之間的連接通道,每一個(gè)部件具有一個(gè)獨(dú)立的連接通道。
由此可知,控制器需要能夠接收CPU提供的設(shè)備使用信息和設(shè)備狀態(tài)信息,具體要求如下:
每個(gè)CPU都需要為總線橋提供設(shè)備選擇信號(hào),為此每個(gè)CPU設(shè)計(jì)兩根信號(hào)線:cd11cd12代表CPU1發(fā)送給控制器的設(shè)備選擇信號(hào)線,通過這兩個(gè)信號(hào),控制器將CPU1發(fā)送來的數(shù)據(jù)傳送到相應(yīng)的公共設(shè)備中;cd21cd22代表CPU2發(fā)送給控制器的設(shè)備選擇信號(hào)線,通過這兩個(gè)信號(hào),控制器將CPU2發(fā)送來的數(shù)據(jù)傳送到相應(yīng)的公共設(shè)備中。除此之外,總線橋還需為每個(gè)CPU提供設(shè)備空閑狀態(tài)情況,為此需要一根設(shè)備空閑狀態(tài)信號(hào)線ack1ack2,表示控制器返回給CPU1CPU2的設(shè)備空閑狀態(tài)信號(hào),由ack1ack2的高低電平?jīng)Q定是否讓CPU1CPU2訪問設(shè)備。通過cdack這兩個(gè)控制信號(hào),可以很好地起到通道選擇的作用。
3.2 控制器邏輯結(jié)構(gòu)設(shè)計(jì)
對(duì)于本系統(tǒng)而言,總線橋的內(nèi)部邏輯設(shè)計(jì)是系統(tǒng)設(shè)計(jì)的關(guān)鍵;對(duì)于總線橋而言,必須做到正確接收數(shù)據(jù),并將數(shù)據(jù)正確傳送給CPU要傳送的公共設(shè)備,起到正確通道的作用,這就需要設(shè)置公共設(shè)備選擇信號(hào),即cd1、cd2。根據(jù)cd1、cd2信號(hào)的不同,總線橋選擇不同的設(shè)備,以CPU1的兩個(gè)信號(hào)線cd11、cd12為例,其真值表如表1所示。
?
當(dāng)cd11、cd12為00時(shí),代表CPU1要將數(shù)據(jù)送到設(shè)備RAM,總線橋接收到cd11、cd12傳過來的00信號(hào),就會(huì)將CPU1的送來的8位數(shù)據(jù)送入RAM中;當(dāng)cd11、cd12為01時(shí),代表CPU1要將數(shù)據(jù)送到設(shè)備DAC中,總線橋接收到cd11、cd12傳過來的01信號(hào),就會(huì)將CPU1的8根數(shù)據(jù)線和DAC的8根數(shù)據(jù)線相連,將數(shù)據(jù)送入DAC中;同樣,當(dāng)cd11、cd12為10時(shí),數(shù)據(jù)將會(huì)被送入設(shè)備ADC中;當(dāng)cd11、cd12為11時(shí),代表單片機(jī)CPU不訪問任何外設(shè)。這樣設(shè)置就可以保證總線橋?qū)?shù)據(jù)送入正確的公共設(shè)備中。
但是僅僅只有信號(hào)線還是不夠的。為了避免兩個(gè)CPU發(fā)生訪問沖突,還需要設(shè)置一個(gè)握手信號(hào),由總線橋發(fā)送給CPU以確定外設(shè)是否繁忙,能否訪問。為此,每一個(gè)CPU1和CPU2分別設(shè)置一個(gè)握手信號(hào)ack1和ack2來控制CPU訪問設(shè)備。當(dāng)ack為低電平時(shí)表示允許訪問設(shè)備;反之,則表示不允許。
為了實(shí)現(xiàn)系統(tǒng)的正常通信,人為規(guī)定兩個(gè)CPU不允許同時(shí)訪問同一個(gè)設(shè)備。CPU1的優(yōu)先級(jí)最高,當(dāng)兩個(gè)CPU同時(shí)訪問相同的設(shè)備時(shí),CPU1優(yōu)先訪問,但是如果CPU2先開始訪問某一個(gè)設(shè)備時(shí),為了防止數(shù)據(jù)因?yàn)橹袛喽鴣G失,即使CPU1此時(shí)要訪問,也是不被允許的。但是兩個(gè)CPU允許同時(shí)訪問不同的設(shè)備,并不互相干擾。總線橋內(nèi)部結(jié)構(gòu)真值表如表2。
?
表2中,cd11/cd12、cd21/cd22為總線橋的輸入控制線,ack1/ack2/acka1/acka2/ackd1/ackd2/ackr1/ackr2為總線橋的輸出控制線,真值表分為三種情況:(1)當(dāng)cd11/cd12、cd21/cd22信號(hào)相同時(shí),代表兩個(gè)CPU要同時(shí)訪問相同的設(shè)備,此時(shí)CPU1優(yōu)先級(jí)最高。(2)當(dāng)cd11/cd12,cd21/cd22信號(hào)不同時(shí),代表CPU訪問的設(shè)備不同,此時(shí)總線橋允許兩個(gè)CPU同時(shí)訪問。(3)當(dāng)cd11/cd12、cd21/cd22都為11時(shí),表示兩個(gè)CPU都為空閑狀態(tài)。
需要強(qiáng)調(diào)的是,當(dāng)一個(gè)CPU訪問完公共設(shè)備后,需要告知總線橋訪問結(jié)束,可以讓其他CPU開始訪問此設(shè)備。
3.3 設(shè)備連接接口設(shè)計(jì)
為了建立控制器的邏輯結(jié)構(gòu),還必須確定每一個(gè)設(shè)備接口的控制信號(hào)、地址信號(hào)和數(shù)據(jù)信號(hào)。
(1)總線橋與CPU的接口
以CPU1為例,輸入輸出信號(hào)主要設(shè)計(jì)為:(1)八位數(shù)據(jù)的雙向傳輸cpu1db0~cpu7db7;(2)13位地址線cpu1adr0~13;(3)發(fā)送讀信號(hào)、寫信號(hào)cpu1wr、 cpu1rd;(4)接收CPU發(fā)送的公共設(shè)備選擇信號(hào)cd11、cd12;(5)發(fā)送允許訪問公共設(shè)備信號(hào)ack1。
(2)總線橋與ADC接口
總線橋與AD的連接輸入輸出信號(hào)主要設(shè)計(jì)為:(1)接收通道選擇信號(hào)addr0~addr2;(2)發(fā)送AD啟動(dòng)信號(hào)adstart;(3)接收轉(zhuǎn)換完成信號(hào)adeoc;(4)接收轉(zhuǎn)換完成的八位數(shù)據(jù)addb0~addb7。
(3)總線橋與DAC接口
DAC通道與總線橋的連接輸入輸出信號(hào),主要設(shè)計(jì)為:(1)發(fā)送使能信號(hào)dacs;(2)發(fā)送八位數(shù)據(jù)dadb0~dadb7。
? (4)總線橋與RAM接口
??? 總線橋與RAM的連接輸入輸出信號(hào)主要設(shè)計(jì)為:(1)發(fā)送13位地址信息ramadr0~ramadr12;(2)發(fā)送使能信號(hào)ramcs1,ramcs2;(3)八位數(shù)據(jù)雙向傳輸ramdb0~ramdb7。
根據(jù)上述總線橋的邏輯結(jié)構(gòu)以及接口信號(hào),與CPU1、CPU2和RAM、ADC及DAC構(gòu)成完整的系統(tǒng)。具體設(shè)備連接接口如圖3所示。
?
3.4 仿真分析結(jié)果
為了驗(yàn)證系統(tǒng),對(duì)程序在quartusII中進(jìn)行了仿真,結(jié)果表明總線橋能夠正確調(diào)配CPU訪問設(shè)備,避免沖突,并且能夠?qū)?shù)據(jù)成功送到CPU選擇的設(shè)備中。
圖4中,在最初的兩個(gè)時(shí)鐘周期內(nèi),CPU1和CPU2都為空閑狀態(tài),而后cd1變?yōu)闉?0,cd2也變?yōu)?0,代表CPU1和CPU2要同時(shí)訪問公共設(shè)備RAM,可以看出此時(shí)ack1變?yōu)榈碗娖?,即首先允許CPU1優(yōu)先訪問,ack2仍然為高電平,即CPU2等待,當(dāng)CPU1結(jié)束訪問時(shí),才允許CPU2開始訪問。圖5中,cd2先變?yōu)?0,代表CPU2先開始訪問RAM,此時(shí)ack2為低電平,允許CPU2開始訪問;當(dāng)CPU2訪問到一半的時(shí)候,cd1變?yōu)?0,CPU1申請(qǐng)?jiān)L問RAM,從圖5中可以看到,此時(shí),ack2一直保持低電平,亦即CPU2并沒有被打斷,還在繼續(xù)進(jìn)行數(shù)據(jù)傳輸,當(dāng)CPU2結(jié)束訪問,ack2變?yōu)楦唠娖?,ack1才變成低電平, CPU1被允許繼續(xù)訪問。
?
本文采用的這種新的總線橋網(wǎng)絡(luò)連接方法,將兩個(gè)CPU和多個(gè)公共設(shè)備連接在一起,實(shí)現(xiàn)了兩個(gè)CPU通過數(shù)據(jù)橋與多個(gè)公共設(shè)備通信的功能。通過在quartusII中的仿真,驗(yàn)證了這種連接方法的可行性和正確性,此設(shè)計(jì)方法提高了電路工作的速度和性能。
參考文獻(xiàn)
[1] MEHENDALE M.Challenges in the?design of embedded real-time DSP?SoCs.IEEE 17th VLSI Design,2004:507-511.
[2] LI S.Processor architecture design for operation information?processing based on safety model of instruments.IEEE?ICSP′,2004,3:2687-2690.
[3] LI ZheYing.A study on analog IP blocks for mixed-signal?SoC.IEEE 5th ASICON,2003,1:564-567.
[4] LI ZheYing.SFG modeling for consistency checking of?mixed-signal SoC.IEEE 6th ASICON,2005,2:1066-1070.
[5] FURBER S.Future trends in SoC interconnect.IEEE VLSITSA,2005:295-298.
[6] KHAN Z.A novel bus encoding scheme from energy and crosstalk efficiency?perspective for AMBA based generic?SoC systems.IEEE 18th VLSI Design,2005:751-756.