- 片上系統(tǒng)設(shè)計(jì)思想與源代碼分析
- 陳曦 黃毅
- 3090字
- 2018-12-27 17:52:47
3.3 接口信號(hào)定義
WISHBONE總線規(guī)范中使用的主要信號(hào)如圖3-1所示。

圖3-1 WISHBONE總線規(guī)范中使用的主要信號(hào)(一個(gè)點(diǎn)到點(diǎn)互聯(lián)的例子)
所有的WISHBONE接口信號(hào)都是高電平有效,設(shè)計(jì)高電平有效的主要原因是由于低電平有效信號(hào)的書寫問題,不同的設(shè)計(jì)者表達(dá)低電平有效信號(hào)的方式不同,以最常見的低電平有效的復(fù)位信號(hào)為例,其表示方法就有_RST_I、N_RST_I、#RST_I和/RST_I,而高電平有效的信號(hào)其表達(dá)方式通常只有一種。
所有的WISHBONE接口信號(hào)都以_I()或_O()結(jié)束。_I表示輸入,_O表示輸出。()表示該信號(hào)為總線信號(hào),總線的寬度可以為1,也可以為大于1的任何值。
在圖3-1中,主設(shè)備具有遵守WISHBONE規(guī)范的主設(shè)備接口,從設(shè)備具有遵守WISHBONE規(guī)范的從設(shè)備接口,INTERCON模塊將主設(shè)備和從設(shè)備的對(duì)應(yīng)數(shù)據(jù)、地址和控制線連接起來,SYSCON模塊提供時(shí)鐘和復(fù)位信號(hào),這兩個(gè)信號(hào)被連接送入主設(shè)備和從設(shè)備。圖3-1給出了WISHBONE接口的常見信號(hào),這些信號(hào)有些是必需的,有些是可選的。這些信號(hào)的基本功能描述如下:
CLK_O/CLK_I:時(shí)鐘信號(hào)。時(shí)鐘信號(hào)由SYSCON模塊產(chǎn)生,并送入各個(gè)主設(shè)備和從設(shè)備。SYSCON通常內(nèi)部存在一個(gè)鎖相環(huán),將來源于芯片外的晶體振蕩器或時(shí)鐘輸入信號(hào)整形和分頻、倍頻為芯片內(nèi)所需要的時(shí)鐘信號(hào)。所有WISHBONE信號(hào)都同步到時(shí)鐘信號(hào)上,包括復(fù)位信號(hào)。
RST_O/RST_I:同步復(fù)位信號(hào),高電平有效。復(fù)位信號(hào)由SYSCON模塊產(chǎn)生,并送入各主設(shè)備及從設(shè)備。
DAT_O()/DAT_I():主設(shè)備和從設(shè)備的之間的數(shù)據(jù)信號(hào),數(shù)據(jù)可以從主設(shè)備傳送給從設(shè)備,也可以從從設(shè)備傳送給主設(shè)備。一對(duì)主設(shè)備和從設(shè)備之間最多存在兩條數(shù)據(jù)總線,一條用于主設(shè)備向從設(shè)備傳輸數(shù)據(jù),另外一條用于從設(shè)備向主設(shè)備傳輸數(shù)據(jù)。WISHBONE規(guī)定數(shù)據(jù)總線的最大寬度為64位,這一規(guī)定實(shí)際上是考慮到目前商用處理器的最大位數(shù)為64,實(shí)際上數(shù)據(jù)總線的寬度可以是任意值。就目前看,在64位處理器以后,處理器將向多核方向發(fā)展,總線將向高速串行方向發(fā)展。
ADR_O(n…m)/ADR_I(n…m):地址信號(hào),主設(shè)備輸出地址到從設(shè)備。N取決于IP核的地址寬度,m取決于數(shù)據(jù)總線DAT_O()/DAT_I()的寬度和粒度。數(shù)據(jù)總線的粒度指的是數(shù)據(jù)總線能夠一次傳送的最小比特?cái)?shù),很多處理器如ARM的數(shù)據(jù)總線的粒度為1個(gè)字節(jié),但是也有一些處理器如CEVA TeakLite DSP的數(shù)據(jù)總線粒度為2個(gè)字節(jié)。一個(gè)位寬為32比特、粒度為1個(gè)字節(jié)的數(shù)據(jù)總線的地址信號(hào)應(yīng)定義為ADR_O(n…2)/ADR_I(n…2)。在傳送數(shù)據(jù)時(shí),具體哪些字節(jié)有效通過SEL_O()/SEL_I()信號(hào)控制。
TGD_O/TGD_I()、TGA_O()/TGA_I():TGD_O/TGD_I()為數(shù)據(jù)標(biāo)簽,具體講是附加于在數(shù)據(jù)總線DAT_O()/DAT_I()的標(biāo)簽,該標(biāo)簽可以用于傳送關(guān)于數(shù)據(jù)總線的額外信息如奇偶校驗(yàn)信息、時(shí)間戳信息等。TGA_O/TGA_I()為地址標(biāo)簽,具體是附加于在地址總線ADR_O()/ADR_I()的標(biāo)簽,該標(biāo)簽可以用于傳送關(guān)于地址總線的額外信息如地址總線奇偶校驗(yàn)信息、存儲(chǔ)器保護(hù)信息等。WISHBONE只規(guī)定了TGD_O/TGD_I和TGA_O()/TGA_I()的接口時(shí)序,用戶可以定義TGD_O/TGD_I的具體含義。
TGC_O/TGC_I():TGC_O/TGC_I()為總線周期標(biāo)簽,該標(biāo)簽可以用于傳送關(guān)于當(dāng)前周期所進(jìn)行操作的描述如操作類型(包括單次操作、塊操作、RMW操作)、中斷應(yīng)答類型、緩存操作類型等。類似的,WISHBONE只規(guī)定了TGC_O/TGC_I()的接口時(shí)序,用戶可以定義TGD_O/TGD_I的具體含義。
ACK_O/ACK_I、ERR_O/ERR_I、RTY_O/RTY_I:主從設(shè)備間的操作結(jié)束方式信號(hào)。ACK表示成功,ERR表示錯(cuò)誤,RTY表示重試。操作總是在某一總線周期內(nèi)完成的,因此操作結(jié)束方式也稱為總線周期結(jié)束方式。成功是操作的正常結(jié)束方式,錯(cuò)誤表示操作失敗,造成失敗的原因可能是地址或數(shù)據(jù)校驗(yàn)錯(cuò)誤,寫操作或讀操作不支持等。重試表示從設(shè)備當(dāng)前忙,不能及時(shí)處理該操作,該操作可以稍后重新發(fā)起。接收到操作失敗或重試后,主設(shè)備如何響應(yīng)取決于主設(shè)備的設(shè)計(jì)者。
SEL_O()/SEL_I():有效數(shù)據(jù)總線選擇信號(hào),標(biāo)識(shí)當(dāng)前操作中數(shù)據(jù)總線上哪些比特是有效的。SEL_O()/SEL_I()的寬度為數(shù)據(jù)總線寬度除以數(shù)據(jù)總線粒度。比如一個(gè)具有32位寬、粒度為1個(gè)字節(jié)的數(shù)據(jù)總線的選擇信號(hào)應(yīng)定義為SEL_O(3:0)/ SEL_I(3:0),SEL(4'b1001)代表當(dāng)前操作中數(shù)據(jù)總線的最高和最低字節(jié)有效。
CYC_O/CYC_I、LOCK_O/LOCK_I、GNT_O()/GNT_I:周期信號(hào)CYC_O/CYC_I有效代表當(dāng)前周期中一個(gè)有效的總線操作正在進(jìn)行,只有該信號(hào)有效,WISHBONE主設(shè)備和從設(shè)備接口的其他信號(hào)才有意義。CYC_O/CYC_I信號(hào)在一次總線操作過程中必須持續(xù)有效,比如一次塊讀操作可能需要多個(gè)時(shí)鐘周期,CYC_O/CYC_I信號(hào)必須保持持續(xù)有效。實(shí)際上,該信號(hào)的實(shí)際作用等同于其他總線標(biāo)準(zhǔn)中的仲裁申請(qǐng)信號(hào)。當(dāng)存在多個(gè)主設(shè)備時(shí),它們可能希望同時(shí)進(jìn)行總線操作,主設(shè)備通過仲裁申請(qǐng)信號(hào)向仲裁器申請(qǐng)總線占有權(quán),仲裁器通過一定的仲裁優(yōu)先級(jí)邏輯向其中一個(gè)選定的主設(shè)備發(fā)送總線允許信號(hào)GNT_O()/GNT_I信號(hào),表示該主設(shè)備可以占用總線。GNT_O()表示仲裁器輸出的允許信號(hào)有多個(gè),而對(duì)于一個(gè)主設(shè)備,其允許信號(hào)輸入GNT_I卻只有一個(gè)。一次總線操作可能需要多個(gè)時(shí)鐘周期,比如一次塊操作,在操作過程中,仲裁器可能會(huì)提前將總線占用權(quán)收回并分配給其他主設(shè)備從而打斷前一主設(shè)備的操作,LOCK_O/LOCK_I有效代表本次總線操作是不可打斷的。仲裁器收到LOCK_I信號(hào),就不會(huì)提前收回總線占用權(quán)。圖3-1中只有一個(gè)主設(shè)備和一個(gè)從設(shè)備,因此沒有畫出仲裁器模塊,該模塊可以視為是INTERCON的一部分,見本章最后給出的例子。
STB_O/STB_I:選通信號(hào)。選通有效代表主設(shè)備發(fā)起一次總線操作。只有選通信號(hào)有效,ADR_O/ADR_I()、DAT_O()/DAT_I()、SEL_O()/SEL_I()才有意義。在WISHBONE總線規(guī)范中,CYC_O/CYC_I是最高層的控制信號(hào),只有該信號(hào)有效,STB_O/STB_I信號(hào)才有意義。一個(gè)信號(hào)有意義指該信號(hào)的當(dāng)前值需要主設(shè)備或從設(shè)備解釋,0為無效,1為有效,而一個(gè)信號(hào)沒有意義指該信號(hào)的當(dāng)前值主設(shè)備和從設(shè)備不必關(guān)心,是0還是1都無效。
WE_O/WE_I:寫使能信號(hào),代表當(dāng)前周期中進(jìn)行的操作是寫操作還是讀操作。1代表寫,0代表讀。
3.4 WISHBONE支持的互聯(lián)類型
WISHBONE規(guī)范支持的互聯(lián)類型有4種,即點(diǎn)到點(diǎn)、共享總線、十字交叉和基于交換模塊的互聯(lián)。這4種互聯(lián)方式在該規(guī)范中有明確的定義。實(shí)際上還有第5種,那就是片外互聯(lián),比如兩片集成電路可以通過點(diǎn)到點(diǎn)的方式連接到一起。
如圖3-1所示為點(diǎn)到點(diǎn)互聯(lián),是最簡(jiǎn)單的互聯(lián)方式,它允許一個(gè)主設(shè)備和一個(gè)從設(shè)備進(jìn)行通信。主設(shè)備可以是一個(gè)處理器IP核,從設(shè)備可以是一個(gè)串行I/O端口或存儲(chǔ)器。
點(diǎn)對(duì)點(diǎn)互聯(lián)的一個(gè)特殊應(yīng)用就是當(dāng)數(shù)據(jù)需要多個(gè)步驟順序進(jìn)行處理時(shí),多個(gè)同時(shí)具有主設(shè)備接口和從設(shè)備接口的模塊串接在一起,如圖3-2所示。這種連接方式也稱作數(shù)據(jù)流連接。模塊A處理完數(shù)據(jù)后將數(shù)據(jù)送給模塊B,模塊B處理完數(shù)據(jù)后再將處理后的數(shù)據(jù)送給模塊C處理。數(shù)據(jù)從一個(gè)模塊送往另一個(gè)模塊,常常將這種處理方式稱作流水線。流水線在處理器設(shè)計(jì)中非常重要,其好處是多個(gè)數(shù)據(jù)可以并行處理,從而提高系統(tǒng)的數(shù)據(jù)處理能力。

圖3-2 數(shù)據(jù)流方式互聯(lián)
共享總線互聯(lián)方式如圖3-3所示。共享總線互聯(lián)方式適合于系統(tǒng)中有兩個(gè)或多個(gè)主設(shè)備需要與一個(gè)或多個(gè)從設(shè)備通信的場(chǎng)合,它們通過共享的總線進(jìn)行通信,其好處是結(jié)構(gòu)緊湊,節(jié)省布線資源;缺點(diǎn)是主設(shè)備希望與特定從設(shè)備通信時(shí)可能需要等待。主設(shè)備在需要與一個(gè)從設(shè)備通信時(shí),需要先向仲裁器(圖3-3中沒有給出)申請(qǐng)總線占有權(quán),獲得允許后開始占用總線與目標(biāo)從設(shè)備開始通信,通信結(jié)束后釋放總線。當(dāng)多個(gè)主設(shè)備同時(shí)希望占有總線時(shí),仲裁器通過一定的優(yōu)先級(jí)邏輯分配總線使用機(jī)會(huì)。

圖3-3 共享總線互聯(lián)方式
共享總線互聯(lián)方式在片上系統(tǒng)中得到了廣泛的使用,幾乎成了片上系統(tǒng)的標(biāo)志技術(shù)之一。共享總線技術(shù)在板級(jí)系統(tǒng)如PCI總線中也得到了應(yīng)用。
十字交叉互聯(lián)方式比共享總線互聯(lián)方式略復(fù)雜。共享總線互聯(lián)方式只允許最多有一對(duì)主設(shè)備從設(shè)備對(duì)通過共享總線進(jìn)行通信,而十字交叉互聯(lián)方式最多同時(shí)允許超過一對(duì)的主設(shè)備和從設(shè)備對(duì)同時(shí)進(jìn)行通信,如圖3-4所示。當(dāng)然,在十字交叉互聯(lián)方式中,一個(gè)從設(shè)備同時(shí)只能與一個(gè)主設(shè)備進(jìn)行通信,兩個(gè)主設(shè)備不能同時(shí)訪問同一從設(shè)備。

圖3-4 十字交叉互聯(lián)方式(圖中虛線代表了一種可能的通信方式)
類似的,基于交換模塊的互聯(lián)比十字交叉互聯(lián)方式的INTERCON模塊更復(fù)雜,一般的,基于交換模塊的互聯(lián)比十字交叉互聯(lián)允許同時(shí)通信的主從設(shè)備對(duì)更多。
隨著技術(shù)的發(fā)展,已經(jīng)出現(xiàn)了比片上總線更復(fù)雜的片上網(wǎng)絡(luò)技術(shù),基于片上網(wǎng)絡(luò)技術(shù),已經(jīng)出現(xiàn)了內(nèi)含幾十個(gè)處理器的芯片,以應(yīng)用于CISCO的高端路由器中。
- UI設(shè)計(jì)基礎(chǔ)培訓(xùn)教程
- The Supervised Learning Workshop
- GraphQL學(xué)習(xí)指南
- Building a Home Security System with Raspberry Pi
- 秒懂設(shè)計(jì)模式
- D3.js 4.x Data Visualization(Third Edition)
- 從Excel到Python:用Python輕松處理Excel數(shù)據(jù)(第2版)
- SQL基礎(chǔ)教程(第2版)
- C#程序設(shè)計(jì)教程(第3版)
- Node Cookbook(Second Edition)
- Angular應(yīng)用程序開發(fā)指南
- Java Web應(yīng)用開發(fā)給力起飛
- 玩轉(zhuǎn).NET Micro Framework移植:基于STM32F10x處理器
- JavaScript編程精解(原書第2版)
- Scrapy網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)