摘要:本文首先介紹了 AHB和OPB總線協(xié)議特點(diǎn),并在此基礎(chǔ)上詳細(xì)闡述了 OPB_AHB總線橋接器的功能和設(shè)計(jì)思路,最后給出了 OPB_AHB的驗(yàn)證方法和仿真結(jié)果。并在 Xilinx的EDK環(huán)境下利用MicroBlaze軟核構(gòu)建了 SoC系統(tǒng)并通過 FPGA驗(yàn)證。 1.引言 SoC(System on a Chip)自20世紀(jì)90年代后期出現(xiàn)以來,廣受學(xué)術(shù)界和工業(yè)界的關(guān)注, SoC通常將微處理器、 IP(Intelligence Property)核和存儲(chǔ)器(或片外存儲(chǔ)控制接口)集成在單一芯片上,具有小型、輕量、低功耗、多功能、高可靠和低成本化等特征,在計(jì)算機(jī)、通信、消費(fèi)類電子、工控、交通運(yùn)輸?shù)阮I(lǐng)域應(yīng)用十分廣泛。 隨著基于IP復(fù)用技術(shù)的 SoC設(shè)計(jì)的不斷發(fā)展,片上總線 OCB(on-chip Bus)技術(shù)成為解決 SoC發(fā)展的關(guān)鍵技術(shù)。目前主要有三大主流片上總線標(biāo)準(zhǔn): IBM公司的 CoreConnect,ARM公司的AMBA (Advanced Microcontroller Bus Architecture)以及Silicore Corp公司的 Wishbone。本文針對(duì)兩大主流 OCB總線標(biāo)準(zhǔn) AMBA和CoreConnect,完成AMBA高性能系統(tǒng)總線AHB和CoreConnect的外圍總線 OPB之間的橋接轉(zhuǎn)換,設(shè)計(jì)出 OPB_AHB橋接器。 2.OPB_AHB橋接器功能特性 AHB是ARM公司微控制器總線體系結(jié)構(gòu) AMBA規(guī)范定義的三種總線之一,它是先進(jìn)的系統(tǒng)總線,用于連接高性能系統(tǒng)模塊,支持突發(fā)數(shù)據(jù)傳輸方式及單個(gè)數(shù)據(jù)傳輸方式, AHB總線可掛接多個(gè)功能模塊(主 /從),并為它們提供高帶寬、低延遲的總線連接。 OPB總線是IBM公司推出的一種芯片級(jí)的外圍設(shè)備總線, OPB總線主要連接外圍低速設(shè)備,降低外圍設(shè)備對(duì)系統(tǒng)性能的影響,支持突發(fā)( Burst)操作。 Xilinx公司的軟核處理器 MicroBlaze能夠很好的支持 OPB總線協(xié)議, MicroBlaze環(huán)境的 OPB總線都是 32位的地址位寬和數(shù)據(jù)位寬,支持 8bit、16bit、32bit的數(shù)據(jù)傳輸。本文設(shè)計(jì)的OPB_AHB橋接器主要是完成以下四個(gè)功能。 3.OPB_AHB橋接器結(jié)構(gòu) 圖1是一個(gè)簡單的基于 MicroBlaze的OPB_AHB 橋接器拓?fù)浣Y(jié)構(gòu)圖。 MicroBlaze是一個(gè)軟核處理器,整個(gè)系統(tǒng)在 Xilinx的EDK環(huán)境下實(shí)現(xiàn), AHB_OPB橋接器可以作為 OPB設(shè)備和 AHB設(shè)備之間數(shù)據(jù)、地址和控制命令的傳輸通道。 當(dāng)OPB主設(shè)備要向 AHB從設(shè)備讀寫數(shù)據(jù)時(shí), OPB_AHB橋接器可以作為 OPB總線這一側(cè)的從設(shè)備( Slave),同時(shí)在 AHB總線這一側(cè)充當(dāng)主設(shè)備 (Master)的角色,此時(shí) OPB_AHB橋接器主要工作是由圖 2中OPB2AHB bridge完成。當(dāng) AHB主設(shè)備要向 OPB從設(shè)備讀寫數(shù)據(jù)時(shí), OPB_AHB橋接器可以作為AHB總線這一側(cè)的從設(shè)備( Slave),同時(shí)在 OPB總線這一側(cè)充當(dāng)主設(shè)備 (Master)的角色,此時(shí) OPB_AHB橋接器主要工作是由圖 2中AHB2OPB bridge完成。 4.OPB_AHB橋接器的實(shí)現(xiàn) 實(shí)現(xiàn)兩種總線的互聯(lián),關(guān)鍵是完成控制信號(hào)之間的轉(zhuǎn)換以及數(shù)據(jù)和地址的傳輸,本設(shè)計(jì)采用的方法包括。 (1)流水線方式, (2)將所有輸入的控制信號(hào)和數(shù)據(jù)地址總線都寄存一拍。 (3)控制信號(hào)都采用同 (4)步設(shè)計(jì)方法, (5)在OPB_Clk的上升沿觸發(fā)。 (6)數(shù)據(jù)的讀寫操作為同 (7)步讀寫。 4.1OPB2AHB_Brg的實(shí)現(xiàn) (1) 所有控制信號(hào)采用同步設(shè)計(jì)思想,在 SOPB_Clk的上升沿觸發(fā)。 SOPB_Rst高電平有效,為同步復(fù)位,當(dāng)其有效時(shí),所有信號(hào)輸出 0狀態(tài)。 (2) 當(dāng)橋接器檢測到 SOPB_Sel信號(hào)有效時(shí),即表明橋接器被選中,成為 OPB總線上的從設(shè)備,或者檢測到 AHB_Resp信號(hào)狀態(tài)為RETRY,此時(shí) OPB2AHB_Brg作為AHB總線上的主設(shè)備向 AHB仲裁器發(fā)出請求總線信號(hào) AHB_BusReq。 (3) 當(dāng)OPB2AHB_Brg檢測到 AHB總線側(cè)的允許信號(hào) AHB_Grants時(shí),說明橋接器的請求得 到允許,此時(shí)當(dāng) AHB_Ready有效時(shí),可以根據(jù) SOPB_BE判斷傳輸數(shù)據(jù)的大小,決定 AHB_Size的狀態(tài),當(dāng) SOPB_BE為1111時(shí),AHB_Size為010(32bit),SOPB_BE為1100或0011時(shí),AHB_Size為001(16bit),SOPB_BE為0001、0010、0100、1000時(shí),AHB_Size為000(8bit)。 (4) 當(dāng)SOPB_RNW為高電平時(shí),為讀取數(shù)據(jù),數(shù)據(jù)流向是從 AHB_Rdata到Sl_Dbus,當(dāng) SOPB_RNW為低電平時(shí),為寫數(shù)據(jù),數(shù)據(jù)流向從 SOPB_Dbus到AHB_Wdata。地址總線相連,即SOPB_Abus連接AHB_Addr。 (5)當(dāng)一次數(shù)據(jù)傳輸完成后, (6)置位Sl_xferAck信號(hào), (7) 讓其輸出一個(gè)時(shí)鐘周期的高脈沖。 4.2 AHB_OPB_Brg的實(shí)現(xiàn) (1) 當(dāng)橋接器檢測到 AHB_Sel信號(hào)有效時(shí),即表明橋接器被選中,成為AHB總線上的從設(shè)備,此時(shí)AHB2OPB_Brg作為OPB總線上的主設(shè)備向 OPB仲裁器發(fā)出請求總線信號(hào) M_req。 (2)當(dāng)橋接器接收到 OPB仲裁器發(fā)出的允許信號(hào) OPB_Mgrant信號(hào)時(shí), (3)表明橋接器可以 開始工作,(4)這個(gè)信號(hào)會(huì)激勵(lì) M_Sel信號(hào)有效, (5)根據(jù) IP核 BK3721的功能特性, (6) M_BE總是輸出 1111,(7) M_SeqAddr和M_busLock輸出為0。 (3) 當(dāng)AHB_Write為高電平時(shí),為寫數(shù)據(jù)有效,此時(shí) AHB主設(shè)備向從設(shè)備橋接器寫數(shù)據(jù),同時(shí)橋接器作為 OPB總線上的主設(shè)備向選中的 OPB從設(shè)備寫數(shù)據(jù),數(shù)據(jù)流向?yàn)?AHB_Wdata到 M_Dbus。當(dāng)AHB_Write為低電平時(shí),為讀數(shù)據(jù)有效,此時(shí) AHB主設(shè)備從橋接器(作為 AHB總線上的從設(shè)備)讀取數(shù)據(jù),同時(shí)橋接器作為 OPB總線的主設(shè)備從選中的 OPB從設(shè)備讀取數(shù)據(jù),數(shù)據(jù)流向?yàn)镺PB_DBus到AHB_RData。 (8)當(dāng)數(shù)據(jù)傳輸指 (9)示信號(hào)OPB_xferAck被檢測有效時(shí), (10) AHB_Ready信號(hào)輸出高電平有效信號(hào), (11)表示數(shù)據(jù)傳輸結(jié)束。 5.OPB_AHB橋接器的驗(yàn)證 5.1 OPB2AHB_Brg的驗(yàn)證 用verilog編寫testbench,在testbench中虛擬設(shè)備一個(gè) AHB從設(shè)備存儲(chǔ)器 AHB_mem,存儲(chǔ)器的數(shù)據(jù)位寬和地址位寬都是 32位,通過測試平臺(tái)可以對(duì)虛擬存儲(chǔ)器進(jìn)行數(shù)據(jù)的讀寫,并將數(shù)據(jù)的讀寫結(jié)果保存到 Wdata.txt文件中。 利用ModelSim工具對(duì)測試平臺(tái)進(jìn)行仿真。在主設(shè)備向虛擬從設(shè)備寫數(shù)據(jù)時(shí), SOPB_RNW為低電平,橋接器作為AHB上的主設(shè)備將 SOPB_DBus數(shù)據(jù)線上的數(shù)據(jù)通過 AHB_Wdata寫到 AHB_mem存儲(chǔ)器中,并在 WData.txt文件中顯示出來,仿真結(jié)果如圖 3 (a)所示。 圖3 (a) OPB2AHB_Brg寫數(shù)據(jù)仿真波形 在主設(shè)備從虛擬從設(shè)備讀取數(shù)據(jù)時(shí), SOPB_RNW為高電平,橋接器作為 AHB上的主設(shè)備將AHB_mem存儲(chǔ)器的數(shù)據(jù)通過 AHB_Rdata讀取到Sl_Dbus數(shù)據(jù)總線上,并在 WData.txt文件中顯示出來,仿真結(jié)果如圖 3 (b)所示。 圖3 (b) OPB2AHB_Brg讀數(shù)據(jù)仿真波形 5.2 AHB2OPB_Brg的驗(yàn)證 AHB2OPB_Brg驗(yàn)證平臺(tái)主要分為測試激勵(lì),被測對(duì)象以及響應(yīng)輸出三部分。測試過程為:首先對(duì)測試激勵(lì)進(jìn)行初始化,產(chǎn)生時(shí)鐘信號(hào)和復(fù)位信號(hào)及控制信號(hào),然后向虛擬 OPB從設(shè)備(mem存儲(chǔ)器)寫數(shù)據(jù),寫完數(shù)據(jù)后等待一段時(shí)間在進(jìn)行讀取數(shù)據(jù)操作。在ModelSim中仿真結(jié)果如圖 4所示。 通過觀察,當(dāng)寫信號(hào)時(shí), AHB_WData數(shù)據(jù)總線上的數(shù)據(jù)能夠正確的寫入到虛擬從設(shè)備 OPB_mem中,當(dāng)讀信號(hào)有效時(shí),虛擬從誒設(shè)備 OPB_mem中的數(shù)據(jù)能夠正確通過 OPB_Dbus傳輸?shù)紸HB_RData總線上。 6.結(jié)束語 本文在分析了 AMBA總線協(xié)議和 OPB總線協(xié)議的基礎(chǔ)上,給出了OPB_AHB橋接器的設(shè)計(jì)和驗(yàn)證方案。本文作者創(chuàng)新點(diǎn)是采用同步設(shè)計(jì)和流水線設(shè)計(jì)方法,能夠正確的轉(zhuǎn)換 OPB總線與 AHB總線之間的數(shù)據(jù)、地址、控制信號(hào),提高了系統(tǒng)的運(yùn)行速度和穩(wěn)定性。最后通過 Xilinx的ISE綜合和時(shí)序仿真,最高頻率達(dá)到 100MHZ,并導(dǎo)入到 EDK環(huán)境中,選擇MicroBlaze軟核處理器構(gòu)建 SoC系統(tǒng),實(shí)現(xiàn) OPB與AHB總線協(xié)議的互連。 |