新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 片上總線Wishbone 學習(三)接口信號定義

        片上總線Wishbone 學習(三)接口信號定義

        作者: 時間:2016-12-15 來源:網絡 收藏
        所有的Wishbone接口信號都是高電平有效,設計成高電平有效的主要原因是由于低電平有效信號的書寫問題,不同的設計者表達低電平有效信號的方式不同,拿最常見的低電平有效的復位信號來說,其表示方法就有_RST_I、N_RST_I、#RST_I和/RST_I,而高電平有效的信號其表達方式通常只有一種。所有的Wishbone接口信號都以_I或者_O結束。_I表示輸入,_O表示輸出。()表示該信號為總線信號,總線的寬度可以為1,也可以為大于1的任何值。

        本文引用地址:http://www.104case.com/article/201612/330219.htm

        信號分類

        SYSCON模塊信號
        CLK_O:輸出信號,系統時鐘,作為MASTER和SLAVE的時鐘輸入:
        RST_O:輸出復位信號,作為MASTER和SLAVE的復位輸入,使得WISHBONE接口內部的狀態機全部恢復到起始態。

        MASTER和SLAVE的共有信號
        CLK_I:輸入信號,MASTER和SLAVE的時鐘輸入端,所有WISHBONE輸出信號都在CLK-I的上升沿有效;
        DAT_O():數據輸出信號,最大位寬為64位;
        RST_I:輸入信號,使得WISHBONE接口內部的狀態機全部恢復到起始態;
        TGD_I():輸入信號,數據標簽類型;
        TGD_O():輸出信號,數據標簽類型;
        MASTER端信號
        ACK_I:輸入信號,確認信號,當該信號有效時,表明一個總線周期結束;
        ADR_O():輸出信號,地址輸出;
        CYC_O:周期輸出信號,當該信號有效,表明進程中的總線是有效的,即它確定了總線周期的持續時間。CYC_O從數據傳輸的第一個比特開始有效,到數據傳輸結束為止。
        ERR_l:輸入信號,當該信號有效,表明總線周期非正常結束,表示有錯誤發生:
        LOCK_O:輸出信號,當該信號有效,表明當前總線周期鎖定,不能被其他進程中斷;
        RTY_I:輸入信號,當該信號有效,表明MASTER還沒有準備好接收或發送數據,重新請求總線;
        SEL_O():輸出信號,用于選擇數據信號線的輸出;
        STB_O:輸出信號,表明一個有效數據傳送周期;
        WE_O():讀使能信號,決定信號的讀和寫功能。
        SLAVE端信號
        ACK_O:輸出確認信號,表明總線周期結束;
        ADR_I():地址輸入信號:
        CYC_I:輸入信號,當該信號有效,表明進程中的總線是有效的,即它確定了總線周期的持續時間。CYC一0從數據傳輸的第一個比特開始有效,到數據傳輸結束為止。
        ERR_O:錯誤輸入信號,表明由于發生錯誤,周期終止;
        LOCK_I:輸入信號,當該信號有效,表明當前總線周期鎖定,不能被其他進程中斷;
        RTY_O:輸出信號,當該信號有效,表明SLAVE還沒有準備好接收或發送數據,重新請求總線;
        STB_I:輸入信號,表明SLAVE被選中和主端通信;
        WE_I:讀寫使能輸入信號;


        圖1Wishbone總線規范中使用的主要信號(一個點到點互聯的例子)

        在圖1中,主設備具有遵守Wishbone規范的主設備接口,從設備具有遵守Wishbone規范的從設備接口,INTERCON模塊將主設備和從設備的對應數據、地址和控制線連接起來,SYSCON模塊提供時鐘和復位信號,這兩個信號被送入主設備和從設備。圖1給出了Wishbone接口的常見信號,這些信號有些是必須的,有些是可選的。這些信號的基本功能描述如下:

        CLK_O/CLK_I:時鐘信號。時鐘信號由SYSCON模塊產生,并送入各個主設備和從設備。SYSCON通常內部存在一個鎖相環,將來源于芯片外的晶體振蕩器或者時鐘輸入信號整形、分頻或者倍頻為芯片內所需要的時鐘信號。所有Wishbone信號都同步到時鐘信號上,包括復位信號。

        RST_O/RST_I:同步復位信號,高電平有效。復位信號由SYSCON模塊產生,并送入各主設備及從設備。

        DAT_O()/DAT_I():主設備和從設備的之間的數據信號,數據可以由主設備傳送給從設備,也可以由從設備傳送給主設備。一對主設備和從設備之間最多存在兩條數據總線,一條用于主設備向從設備傳輸數據,另外一條用于從設備向主設備傳輸數據。Wishbone規定數據總線的最大寬度為64位,這一規定實際上是考慮到目前商用處理器的最大位數為64,實際上數據總線的寬度可以是任意值。就筆者看來,在64位處理器以后,處理器將向多核方向發展,總線將向高速串行方向發展。

        ADR_O(n…m)/ADR_I(n…m):地址信號,主設備輸出地址到從設備。n取決于IP核的地址寬度,m取決于數據總線DAT_O()/DAT_I()的寬度和粒度。數據總線的粒度指的是數據總線能夠一次傳送的最小比特數,很多處理器如ARM的數據總線的粒度為1個字節,但是也有一些處理器如CEVATeakLiteDSP的數據總線粒度為2個字節。一個位寬為32比特、粒度為1個字節的數據總線的地址信號應定義為ADR_O(n…2)/ADR_I(n…2)。在傳送數據時,具體哪些字節有效通過SEL_O()/SEL_I()信號(見下文)控制。

        TGD_O/TGD_I()、TGA_O()/TGA_I():TGD_O/TGD_I()為數據標簽,具體講是附加于在數據總線DAT_O()/DAT_I()的標簽,該標簽可以用于傳送關于數據總線的額外信息如奇偶校驗信息、時間戳信息等。TGA_O/TGA_I()為地址標簽,具體講是附加于在地址總線ADR_O()/ADR_I()的標簽,該標簽可以用于傳送關于地址總線的額外信息如地址總線奇偶校驗信息、存儲器保護信息等。Wishbone只規定了TGD_O/TGD_I和TGA_O()/TGA_I()的接口時序,用戶可以定義TGD_O/TGD_I的具體含義。

        TGC_O/TGC_I():TGC_O/TGC_I()為總線周期標簽,該標簽可以用于傳送關于當前總線周期所進行操作的描述如操作類型(包括單次操作、塊操作、RMW操作)、中斷應答類型、緩存操作類型等。類似的,Wishbone只規定了TGC_O/TGC_I()的接口時序,用戶可以定義TGD_O/TGD_I的具體含義。

        ACK_O/ACK_I、ERR_O/ERR_I、RTY_O/RTY_I:主從設備間的操作結束方式信號。ACK表示成功,ERR表示錯誤,RTY表示重試(Retry)。操作總是在某一總線周期內完成的,因此操作結束方式也稱為總線周期結束方式。成功是操作的正常結束方式,錯誤表示操作失敗,造成失敗的原因可能是地址或者數據校驗錯誤,寫操作或者讀操作不支持等。重試表示從設備當前忙,不能及時處理該操作,該操作可以稍后重新發起。接收到操作失敗或者重試后,主設備如何響應取決于主設備的設計者。

        SEL_O()/SEL_I():有效數據總線選擇信號,標識當前操作中數據總線上哪些比特是有效的,以總線粒度為單位。SEL_O()/SEL_I()的寬度為數據總線寬度除以數據總線粒度。比如一個具有32位寬、粒度為1個字節的數據總線的選擇信號應定義為SEL_O(3:0)/SEL_I(3:0),SEL(4’b1001)代表當前操作中數據總線的最高和最低字節有效。

        CYC_O/CYC_I、LOCK_O/LOCK_I、GNT_O()/GNT_I:總線周期信號CYC_O/CYC_I有效代表一個主設備請求總線使用權或者正在占有總線,但是不一定正在進行總線操作(是否正在進行總線操作取決于選通信號STB_O/STB_I是否有效)。只有該信號有效,Wishbone主設備和從設備接口的其它信號才有意義。CYC_O/CYC_I信號在一次總線操作過程中必須持續有效,比如一次塊讀操作可能需要多個時鐘周期,CYC_O/CYC_I信號必須保持持續有效。實際上,該信號的實際作用等同于其他總線標準中的仲裁申請信號。當存在多個主設備時,它們可能希望同時進行總線操作,主設備通過仲裁申請信號向仲裁器申請總線占有權,仲裁器通過一定的仲裁優先級邏輯向其中一個選定的主設備發送總線允許信號GNT_O()/GNT_I,表示該主設備可以占用總線。GNT_O()是仲裁器輸出的允許信號,一般有多個;而對于一個主設備,其允許信號輸入GNT_I卻只有一個。一次總線操作可能需要多個時鐘周期,比如一次塊操作。在操作過程中,仲裁器可能會提前將總線占用權收回并分配給其他主設備從而打斷當前主設備的操作,LOCK_O/LOCK_I有效代表本次總線操作是不可打斷的。仲裁器收到LOCK_I信號,就不會提前收回總線使用權。圖1中只有一個主設備和一個從設備,因此沒畫出仲裁器模塊,該模塊可以視為是INTERCON的一部分,見本章最后給出的例子。

        STB_O/STB_I:選通信號。選通有效代表主設備發起一次總線操作。只有選通信號有效(此時CYC_O/CYC_I也必須為高),ADR_O/ADR_I()、DAT_O()/DAT_I()、SEL_O()/SEL_I()才有意義。在Wishbone總線規范中,CYC_O/CYC_I是最高層的控制信號,只有該信號有效,STB_O/STB_I信號才有意義。一個信號有意義是指該信號的當前值是需要主設備或者從設備解釋的,0為無效,1為有效,而一個信號沒有意義是指該信號的當前值主設備和從設備不必關心,是0還是1都無效。

        WE_O/WE_I:寫使能信號,代表當前周期中進行的操作是寫操作還是讀操作。1代表寫,0代表讀。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 靖边县| 遂川县| 雷山县| 白水县| 庆阳市| 常熟市| 渭源县| 木里| 如皋市| 蒙城县| 响水县| 大连市| 灯塔市| 新巴尔虎左旗| 龙井市| 灵台县| 浪卡子县| 辰溪县| 永兴县| 华亭县| 宜州市| 隆回县| 连云港市| 张家口市| 普格县| 满城县| 松潘县| 保定市| 亳州市| 凤凰县| 丹棱县| 阳曲县| 临汾市| 阜宁县| 临澧县| 繁昌县| 武宁县| 龙泉市| 收藏| 乡宁县| 安西县|