《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 基于SoC的雙CPU連接橋設(shè)計

基于SoC的雙CPU連接橋設(shè)計

2008-12-03
作者:劉 佳1,2,李哲英1,2

??? 摘 要: 采用一種新的總線橋" title="總線橋">總線橋網(wǎng)絡(luò)連接方法,實現(xiàn)了由一個總線橋?qū)蓚€CPU以及多個數(shù)字設(shè)備連接在一起的功能。重點研究了總線橋的整體結(jié)構(gòu)設(shè)計及內(nèi)部邏輯功能,并對其進(jìn)行了詳細(xì)分析及仿真驗證。結(jié)果表明總線橋能夠正確完成雙CPU與公共設(shè)備之間的通信,提高了系統(tǒng)電路的工作速度和性能,很好地解決了多CPU與公共電路模塊" title="電路模塊">電路模塊之間的通信問題。
??? 關(guān)鍵詞: 總線橋;SoC;雙CPU

?

??? 隨著集成電路設(shè)計和制造技術(shù)的發(fā)展,在比較復(fù)雜的移動終端或控制終端設(shè)計中,往往使用模數(shù)" title="模數(shù)">模數(shù)混合信號" title="混合信號">混合信號SoC設(shè)計方法完成芯片設(shè)計[1-3]。使用模數(shù)混合信號SoC設(shè)計專用集成電路不僅可以提高系統(tǒng)電路工作速度,還可以增加系統(tǒng)的抗干擾能力,并保證系統(tǒng)工作安全[2][4]。
  在模數(shù)混合信號SoC設(shè)計中,電路各不同部分的連接是關(guān)鍵問題。對僅含有一個CPU的SoC,可以使用總線方式完成各電路部分的連接,但對于含有2個或2個以上CPU的電路,使用總線方式連接就會降低電路工作速度和性能,因此,必須采用特殊的連接方法[5][6]。對于多CPU的SoC來說,其內(nèi)部各CPU系統(tǒng)之間以及CPU與公共電路模塊之間的通信連接形成了一種片內(nèi)網(wǎng)絡(luò),屬于片上網(wǎng)絡(luò)系統(tǒng)(NoC)。
  針對具有兩個CPU系統(tǒng)的模數(shù)混合信號SoC設(shè)計要求" title="設(shè)計要求">設(shè)計要求,本文提出一種新的總線橋網(wǎng)絡(luò)連接方法,通過總線橋,可以把兩個CPU以及多個數(shù)字設(shè)備連接在一起。
1 雙CPU混合電路的系統(tǒng)結(jié)構(gòu)
  在嵌入式微處理器中,目前一般使用總線橋?qū)崿F(xiàn)多個電路模塊與CPU相連接[ARM、IBM],這種總線的特點是能實現(xiàn)可變數(shù)據(jù)寬度,同時可以滿足快速數(shù)據(jù)連接。但對于多CPU的SoC系統(tǒng)來說,這種總線無法實現(xiàn)CPU所要求的運(yùn)行模式要求。在多CPU系統(tǒng)中,要求CPU之間實現(xiàn)無縫連接,同時對于公共電路也能實現(xiàn)無縫連接,即要求任何一個CPU都能把公共電路和其他的CPU作為其子系統(tǒng)的一部分,實現(xiàn)快速數(shù)據(jù)傳輸。圖1是一個雙CPU系統(tǒng)的數(shù)據(jù)流圖結(jié)構(gòu)。

?


  在圖1的數(shù)據(jù)流圖中,CPU之間、CPU與公共電路之間的數(shù)據(jù)傳輸都經(jīng)過總線橋?qū)崿F(xiàn),因此,總線橋?qū)嶋H上就是一個系統(tǒng)總線仲裁器。仲裁器與CPU通過簡單的信號協(xié)議完成快速數(shù)據(jù)傳輸連接。
  雙CPU的模數(shù)混合信號SoC的基本結(jié)構(gòu)如圖2所示,系統(tǒng)中的數(shù)據(jù)字長為8bit。在這個系統(tǒng)中,具有CPU1和CPU2 兩個完全獨立的8位CPU系統(tǒng)。要求所設(shè)計的SoC提供一個ADC電路和一個DAC電路,這兩個電路可以被任何一個CPU所控制。同時,系統(tǒng)還要提供一個公共的32KB RAM,可以被兩個CPU中的任何一個所訪問。注意,這個系統(tǒng)中把ADC和DAC所連接的模擬電路設(shè)計在SoC之外。
  與圖1相對照,圖2中的ADC和DAC以及RAM就是圖1中的公共電路。

?


  在圖2所示的SoC結(jié)構(gòu)中,兩個CPU均為一個獨立CPU系統(tǒng),能夠完全獨立工作。在任何一個CPU系統(tǒng)中,CPU稱為本地CPU,每個CPU系統(tǒng)均包含有相應(yīng)的總線、邏輯電路、存儲器和I/O接口等,所有這些電路僅供本地CPU使用。
2 總線橋結(jié)構(gòu)設(shè)計
  根據(jù)圖2的結(jié)構(gòu)可知,所需要的SoC中需要實現(xiàn)8bit的數(shù)據(jù)傳輸。在設(shè)計中考慮如下要求:
  (1)任何一個CPU系統(tǒng)均為一個獨立工作的8bit系統(tǒng)。
  (2)任何一個CPU系統(tǒng)均可隨時使用RAM、ADC和DAC電路,對于RAM的等待時間不大于2us,對于ADC和DAC電路的等待時間不大于120us。
  (3)RAM、ADC和DAC電路全部在CPU系統(tǒng)控制下工作,不主動向兩個CPU系統(tǒng)發(fā)送信號或數(shù)據(jù)。
  (4)ADC的模擬輸入信號帶寬小于2kHz,轉(zhuǎn)換速度為100μs。
  (5)DAC輸出數(shù)據(jù)速度低于4000點/s,轉(zhuǎn)換速度為1μs。
  根據(jù)以上設(shè)計要求可知,必須使用一個總線橋把兩個CPU系統(tǒng)和RAM、ADC及DAC電路連接起來。
  為了滿足設(shè)計要求,總線橋必須為每一個電路提供一個單獨的通道,每個通道需要設(shè)置一個開關(guān)來控制CPU系統(tǒng)的連接。
  總線橋的具體設(shè)計要求如下:
  (1)具有電路使用判別功能,即能夠判別哪一個CPU系統(tǒng)提出的電路使用要求。
  (2)為了滿足速度要求,應(yīng)向每個CPU都提供相應(yīng)的電路部件工作狀態(tài)信息,以保證CPU系統(tǒng)能正確、快速地完成數(shù)據(jù)傳輸。
  (3)總線橋?qū)﹄娐吠ǖ赖倪x擇使用硬件邏輯電路來完成。
  (4)如果兩個CPU系統(tǒng)需要寫入或獨處數(shù)據(jù)中相互碰撞,則應(yīng)當(dāng)有一個CPU具有優(yōu)先權(quán)。
  (5)如果兩個CPU系統(tǒng)使用不同的電路,則應(yīng)當(dāng)能夠同時使用。例如CPU1向RAM寫入或讀出數(shù)據(jù),CPU2從ADC讀取數(shù)據(jù),這時必須能夠同時工作。
  (6)對于CPU系統(tǒng)來說,對RAM、ADC和DAC電路的讀寫操作類似于I/O口操作。
  (7)暫不考慮CPU之間的數(shù)據(jù)傳輸。
3 總線橋設(shè)計與實現(xiàn)
  根據(jù)以上討論,本文設(shè)計了一個完整的8bit雙CPU系統(tǒng)的總線橋系統(tǒng)。
3.1 總線橋控制原理
  總線橋的功能是對各通道進(jìn)行連接控制,并向CPU提供相應(yīng)的設(shè)備狀態(tài)信號。本文設(shè)計的總線橋控制器的功能是對各通道進(jìn)行開關(guān)控制,在控制器的控制下建立CPU與RAM、ADC和DAC之間的直接連接。
  為了保證多CPU系統(tǒng)能夠正常工作,并盡可能保證對其他功能電路的并行操作,總線橋的功能應(yīng)用是把CPU1、CPU2和RAM、ADC及DAC連接在一起,提供一個主動電路之間、主動電路與非主動電路之間的連接通道,每一個部件具有一個獨立的連接通道。
  由此可知,控制器需要能夠接收CPU提供的設(shè)備使用信息和設(shè)備狀態(tài)信息,具體要求如下:
  每個CPU都需要為總線橋提供設(shè)備選擇信號,為此每個CPU設(shè)計兩根信號線:cd11cd12代表CPU1發(fā)送給控制器的設(shè)備選擇信號線,通過這兩個信號,控制器將CPU1發(fā)送來的數(shù)據(jù)傳送到相應(yīng)的公共設(shè)備中;cd21cd22代表CPU2發(fā)送給控制器的設(shè)備選擇信號線,通過這兩個信號,控制器將CPU2發(fā)送來的數(shù)據(jù)傳送到相應(yīng)的公共設(shè)備中。除此之外,總線橋還需為每個CPU提供設(shè)備空閑狀態(tài)情況,為此需要一根設(shè)備空閑狀態(tài)信號線ack1ack2,表示控制器返回給CPU1CPU2的設(shè)備空閑狀態(tài)信號,由ack1ack2的高低電平?jīng)Q定是否讓CPU1CPU2訪問設(shè)備。通過cdack這兩個控制信號,可以很好地起到通道選擇的作用。
3.2 控制器邏輯結(jié)構(gòu)設(shè)計
  對于本系統(tǒng)而言,總線橋的內(nèi)部邏輯設(shè)計是系統(tǒng)設(shè)計的關(guān)鍵;對于總線橋而言,必須做到正確接收數(shù)據(jù),并將數(shù)據(jù)正確傳送給CPU要傳送的公共設(shè)備,起到正確通道的作用,這就需要設(shè)置公共設(shè)備選擇信號,即cd1、cd2。根據(jù)cd1、cd2信號的不同,總線橋選擇不同的設(shè)備,以CPU1的兩個信號線cd11、cd12為例,其真值表如表1所示。

?

  當(dāng)cd11、cd12為00時,代表CPU1要將數(shù)據(jù)送到設(shè)備RAM,總線橋接收到cd11、cd12傳過來的00信號,就會將CPU1的送來的8位數(shù)據(jù)送入RAM中;當(dāng)cd11、cd12為01時,代表CPU1要將數(shù)據(jù)送到設(shè)備DAC中,總線橋接收到cd11、cd12傳過來的01信號,就會將CPU1的8根數(shù)據(jù)線和DAC的8根數(shù)據(jù)線相連,將數(shù)據(jù)送入DAC中;同樣,當(dāng)cd11、cd12為10時,數(shù)據(jù)將會被送入設(shè)備ADC中;當(dāng)cd11、cd12為11時,代表單片機(jī)CPU不訪問任何外設(shè)。這樣設(shè)置就可以保證總線橋?qū)?shù)據(jù)送入正確的公共設(shè)備中。
  但是僅僅只有信號線還是不夠的。為了避免兩個CPU發(fā)生訪問沖突,還需要設(shè)置一個握手信號,由總線橋發(fā)送給CPU以確定外設(shè)是否繁忙,能否訪問。為此,每一個CPU1和CPU2分別設(shè)置一個握手信號ack1和ack2來控制CPU訪問設(shè)備。當(dāng)ack為低電平時表示允許訪問設(shè)備;反之,則表示不允許。
  為了實現(xiàn)系統(tǒng)的正常通信,人為規(guī)定兩個CPU不允許同時訪問同一個設(shè)備。CPU1的優(yōu)先級最高,當(dāng)兩個CPU同時訪問相同的設(shè)備時,CPU1優(yōu)先訪問,但是如果CPU2先開始訪問某一個設(shè)備時,為了防止數(shù)據(jù)因為中斷而丟失,即使CPU1此時要訪問,也是不被允許的。但是兩個CPU允許同時訪問不同的設(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信號相同時,代表兩個CPU要同時訪問相同的設(shè)備,此時CPU1優(yōu)先級最高。(2)當(dāng)cd11/cd12,cd21/cd22信號不同時,代表CPU訪問的設(shè)備不同,此時總線橋允許兩個CPU同時訪問。(3)當(dāng)cd11/cd12、cd21/cd22都為11時,表示兩個CPU都為空閑狀態(tài)。
  需要強(qiáng)調(diào)的是,當(dāng)一個CPU訪問完公共設(shè)備后,需要告知總線橋訪問結(jié)束,可以讓其他CPU開始訪問此設(shè)備。
3.3 設(shè)備連接接口設(shè)計
  為了建立控制器的邏輯結(jié)構(gòu),還必須確定每一個設(shè)備接口的控制信號、地址信號和數(shù)據(jù)信號。
  (1)總線橋與CPU的接口
  以CPU1為例,輸入輸出信號主要設(shè)計為:(1)八位數(shù)據(jù)的雙向傳輸cpu1db0~cpu7db7;(2)13位地址線cpu1adr0~13;(3)發(fā)送讀信號、寫信號cpu1wr、 cpu1rd;(4)接收CPU發(fā)送的公共設(shè)備選擇信號cd11、cd12;(5)發(fā)送允許訪問公共設(shè)備信號ack1。
  (2)總線橋與ADC接口
  總線橋與AD的連接輸入輸出信號主要設(shè)計為:(1)接收通道選擇信號addr0~addr2;(2)發(fā)送AD啟動信號adstart;(3)接收轉(zhuǎn)換完成信號adeoc;(4)接收轉(zhuǎn)換完成的八位數(shù)據(jù)addb0~addb7。
  (3)總線橋與DAC接口
  DAC通道與總線橋的連接輸入輸出信號,主要設(shè)計為:(1)發(fā)送使能信號dacs;(2)發(fā)送八位數(shù)據(jù)dadb0~dadb7。
?  (4)總線橋與RAM接口
??? 總線橋與RAM的連接輸入輸出信號主要設(shè)計為:(1)發(fā)送13位地址信息ramadr0~ramadr12;(2)發(fā)送使能信號ramcs1,ramcs2;(3)八位數(shù)據(jù)雙向傳輸ramdb0~ramdb7。
  根據(jù)上述總線橋的邏輯結(jié)構(gòu)以及接口信號,與CPU1、CPU2和RAM、ADC及DAC構(gòu)成完整的系統(tǒng)。具體設(shè)備連接接口如圖3所示。

?


3.4 仿真分析結(jié)果
  為了驗證系統(tǒng),對程序在quartusII中進(jìn)行了仿真,結(jié)果表明總線橋能夠正確調(diào)配CPU訪問設(shè)備,避免沖突,并且能夠?qū)?shù)據(jù)成功送到CPU選擇的設(shè)備中。
  圖4中,在最初的兩個時鐘周期內(nèi),CPU1和CPU2都為空閑狀態(tài),而后cd1變?yōu)闉?0,cd2也變?yōu)?0,代表CPU1和CPU2要同時訪問公共設(shè)備RAM,可以看出此時ack1變?yōu)榈碗娖?,即首先允許CPU1優(yōu)先訪問,ack2仍然為高電平,即CPU2等待,當(dāng)CPU1結(jié)束訪問時,才允許CPU2開始訪問。圖5中,cd2先變?yōu)?0,代表CPU2先開始訪問RAM,此時ack2為低電平,允許CPU2開始訪問;當(dāng)CPU2訪問到一半的時候,cd1變?yōu)?0,CPU1申請訪問RAM,從圖5中可以看到,此時,ack2一直保持低電平,亦即CPU2并沒有被打斷,還在繼續(xù)進(jìn)行數(shù)據(jù)傳輸,當(dāng)CPU2結(jié)束訪問,ack2變?yōu)楦唠娖剑琣ck1才變成低電平, CPU1被允許繼續(xù)訪問。

?

  本文采用的這種新的總線橋網(wǎng)絡(luò)連接方法,將兩個CPU和多個公共設(shè)備連接在一起,實現(xiàn)了兩個CPU通過數(shù)據(jù)橋與多個公共設(shè)備通信的功能。通過在quartusII中的仿真,驗證了這種連接方法的可行性和正確性,此設(shè)計方法提高了電路工作的速度和性能。


參考文獻(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.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。