《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于軟硬件協(xié)同技術(shù)的AHB-PCI測(cè)試平臺(tái)
基于軟硬件協(xié)同技術(shù)的AHB-PCI測(cè)試平臺(tái)
2016年電子技術(shù)應(yīng)用第10期
劉 歡1,韓俊剛1,李卯良2,楊 錚1,李 明2,史少旭2
1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710121
摘要: 針對(duì)AHB-PCI的橋接電路,搭建了一個(gè)測(cè)試其功能的平臺(tái)。該平臺(tái)主要由軟件和硬件協(xié)同完成。硬件部分實(shí)現(xiàn)了兩個(gè)符合AHB標(biāo)準(zhǔn)的RAM,一個(gè)作為主機(jī),能夠請(qǐng)求總線;另一個(gè)作為從機(jī),可以接收數(shù)據(jù)。軟件方面通過(guò)驅(qū)動(dòng)程序?qū)CI部分進(jìn)行相應(yīng)配置和讀寫。通過(guò)實(shí)際測(cè)試比較,使用該方法搭建的平臺(tái)比在modelsim上的仿真驗(yàn)證平臺(tái)在正確性驗(yàn)證上更有保障。
中圖分類號(hào): TP302
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.009
中文引用格式: 劉歡,韓俊剛,李卯良,等. 基于軟硬件協(xié)同技術(shù)的AHB-PCI測(cè)試平臺(tái)[J].電子技術(shù)應(yīng)用,2016,42(10):40-43.
英文引用格式: Liu Huan,Han Jungang,Li Maoliang,et al. Built AHB-PCI test platform based on hardware/software codesign[J].Application of Electronic Technique,2016,42(10):40-43.
Built AHB-PCI test platform based on hardware/software codesign
Liu Huan1,Han Jungang1,Li Maoliang2,Yang Zheng1,Li Ming2,Shi Shaoxu2
1.School of Computer Science,Xi′an University of Posts and Telecommunications,Xi′an 710121,China; 2.School of Electronic Engineering,Xi′an University of Posts and Telecommunications,Xi′an 710121,China
Abstract: According to AHB-PCI bridge circuits, builted a platform to test its functionality. The platform was based on hardware/software codesign. Hardware consists of two-AHB standard RAM, one as the master to request bus, another as the slave to receive data. Software through the driver to configure the PCI, read and write. Through testing, platform was builted using this method of simulation platform than on the modelsim more secure in the verification correct.
Key words : AHB;PCI;hardware/software codesign;verification platform

0 引言

    半個(gè)世紀(jì)以來(lái),集成電路設(shè)計(jì)規(guī)模和設(shè)計(jì)復(fù)雜度不斷增加[1]。在這個(gè)過(guò)程中,集成電路片上設(shè)計(jì)對(duì)總線的要求也在不斷地提高。目前計(jì)算機(jī)中采用較多的總線標(biāo)準(zhǔn)有AMBA總線、ISA總線、SPI總線、PCI總線等。其中PCI總線作為一種系統(tǒng)總線在計(jì)算機(jī)上得到廣泛應(yīng)用[2],而AMBA總線由于其高性能、高帶寬的特點(diǎn)在片內(nèi)總線市場(chǎng)占有率最高,成為一種最流行的工業(yè)標(biāo)準(zhǔn)片內(nèi)總線結(jié)構(gòu)[3]

    AMBA Rev2.0 規(guī)范中包含兩級(jí)總線[4]AHB(Advanced High Performance Bus)系統(tǒng)總線和APB(Advanced Peripheral Bus)外圍總線。其中,AHB 總線采用地址/數(shù)據(jù)分離的流水式操作,支持突發(fā)傳送,分裂事務(wù)傳送特性和多個(gè)主設(shè)備的總線管理,具有高帶寬、高性能特性,適合于嵌入式處理器與高性能外圍設(shè)備,片內(nèi)存儲(chǔ)器及接口功能單元的連接[5]。

    PCI總線之所以成為局部總線的主流[6],是由一些顯著特點(diǎn)決定的,如運(yùn)行速度快、可擴(kuò)展性好、兼容性好、穩(wěn)定可靠等特點(diǎn)。

    本文利用軟硬件協(xié)同的技術(shù),搭建了一個(gè)對(duì)AHB-PCI[7]橋功能驗(yàn)證的平臺(tái)。與常用的Verilog驗(yàn)證相比,本文中的方法更能保證硬件的正確性,減少了從仿真到綜合中由于綜合工具優(yōu)化導(dǎo)致功能驗(yàn)證的不一致性,同時(shí)節(jié)約了開發(fā)周期。

1 AHB-PCI橋的結(jié)構(gòu)

    AHB-PCI橋?qū)崿F(xiàn)AHB到PCI的協(xié)議轉(zhuǎn)換。主要包括兩部分,即AHB一端作為主機(jī),完成AHB到PCI的信號(hào)轉(zhuǎn)換;另一個(gè)PCI一端作為主機(jī),能夠?qū)崿F(xiàn)PCI相關(guān)寄存器的配置和數(shù)據(jù)的傳輸。兩個(gè)模塊均需要進(jìn)行時(shí)鐘的同步。拓?fù)浣Y(jié)構(gòu)如圖1所示。

wdz2-t1.gif

    圖中最大矩形方框?yàn)锳HB_PCI橋轉(zhuǎn)換電路的頂。它由模塊I和模塊II兩個(gè)模塊構(gòu)成。當(dāng)有一個(gè)AHB主設(shè)備 (例如圖形處理器 )啟動(dòng)一個(gè)事務(wù)時(shí) ,其目標(biāo)為一個(gè)掛接在PCI總線上的從設(shè)備,則模塊 I負(fù)責(zé)相應(yīng)的協(xié)議轉(zhuǎn)換和數(shù)據(jù)緩沖,并在PCI總線上啟動(dòng)一個(gè)適當(dāng)?shù)氖聞?wù)。而當(dāng)有一個(gè)PCI主設(shè)備啟動(dòng)一個(gè)事務(wù)時(shí) ,其目標(biāo)為一個(gè)掛接在AHB總線上的從設(shè)備(例如片上存儲(chǔ)器),模塊II負(fù)責(zé)相應(yīng)的協(xié)議轉(zhuǎn)換和數(shù)據(jù)緩沖,并在AHB總線上啟動(dòng)一個(gè)適當(dāng)?shù)氖聞?wù)。

2 基于FPGA的軟硬件協(xié)同的測(cè)試平臺(tái)

2.1 測(cè)試平臺(tái)概述

    本文所完成的測(cè)試平臺(tái)主要目的是對(duì)AHB-PCI橋的功能進(jìn)行測(cè)試,并確保符合標(biāo)準(zhǔn)的協(xié)議。系統(tǒng)上電后,通過(guò)軟件對(duì)PCI相應(yīng)寄存器進(jìn)行配置,然后對(duì)AHB作為從設(shè)備進(jìn)行讀寫操作,最后啟動(dòng)AHB作為主設(shè)備,對(duì)PCI作為從的一端進(jìn)行讀寫。通過(guò)這樣不斷地操作,完成對(duì)橋的功能驗(yàn)證。平臺(tái)使用操作系統(tǒng)版本Red Hat2.16.0,vivado版本15.4,F(xiàn)PGA為Xllinx的7vx690tffg1930-1,帶有PCI插槽的主機(jī)。

2.2 基于FPGA的測(cè)試平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)

2.2.1 測(cè)試平臺(tái)的結(jié)構(gòu)

    基于FPGA的測(cè)試平臺(tái)所實(shí)現(xiàn)的所有測(cè)試電路必須可綜合。測(cè)試平臺(tái)主要由軟件和硬件兩部分構(gòu)成。軟件部分主要實(shí)現(xiàn)對(duì)PCI一端通過(guò)驅(qū)動(dòng)程序進(jìn)行驅(qū)動(dòng),實(shí)現(xiàn)PCI主從的時(shí)序,硬件部分主要由兩個(gè)符合AHB標(biāo)準(zhǔn)的RAM構(gòu)成。平臺(tái)硬件結(jié)構(gòu)如圖2所示。

wdz2-t2.gif

2.2.2 測(cè)試軟件設(shè)計(jì)

    在系統(tǒng)中所有的PCI設(shè)備,包括PCI-PCI橋接器在內(nèi),都有一個(gè)需要配置的數(shù)據(jù)結(jié)構(gòu),它通常位于PCI配置地址空間中。PCI的配置頭是用于系統(tǒng)標(biāo)識(shí)與控制設(shè)備。配置頭在PCI配置空間的位置取決于系統(tǒng)中PCI設(shè)備的拓?fù)浣Y(jié)構(gòu)。例如將一個(gè)PCI網(wǎng)卡插入不同的PCI插槽,雖然其配置頭的位置會(huì)變化,但是對(duì)整個(gè)系統(tǒng)沒(méi)影響,系統(tǒng)將找到掛接在其上的每個(gè)PCI設(shè)備與橋接器,并使用配置頭中的信息來(lái)配置寄存器。如圖3所示為普通PCI的配置寄存器分布。

wdz2-t3.gif

    命令寄存器是一個(gè)必備的寄存器,該寄存器可讀/寫,格式如圖4所示。根據(jù)使用中的需要將該寄存器利用驅(qū)動(dòng)程序配置為0x0246,bit 1寫為1,存儲(chǔ)器地址空間使能,接受以該設(shè)備為目標(biāo)的存儲(chǔ)器事務(wù);bit 2寫為1,總線主設(shè)備使能,允許該設(shè)備發(fā)出請(qǐng)求,占用總線;bit 6奇偶校驗(yàn)使能;bit 10寫為0,中斷使能,允許產(chǎn)生INTX的中斷消息。

wdz2-t4.gif

    狀態(tài)寄存器為只讀寄存器,記錄PCI總線有關(guān)的狀態(tài)信息,格式如圖5所示。

wdz2-t5.gif

    在一般PCI設(shè)備中,除了擁有配置空間外,還具有兩個(gè)物理空間:memory空間和I/O空間。想要訪問(wèn)這兩個(gè)地址空間,就必須使用配置空間中的基址寄存器。一般PCI設(shè)備或橋中涉及3種基址寄存器:內(nèi)存空間基址寄存器、I/O空間基址寄存器和擴(kuò)展ROM基址寄存器。

    Linux內(nèi)核提供了3種數(shù)據(jù)結(jié)構(gòu)來(lái)描述PCI控制器、PCI設(shè)備以及PCI總線。其中PCI控制器用pci_controller結(jié)構(gòu)來(lái)描述,PCI總線用pci_bus結(jié)構(gòu)來(lái)描述,PCI設(shè)備用pci_dev結(jié)構(gòu)來(lái)描述。PC對(duì)PCI進(jìn)行初始化流程如下:

    (1)Linux分配數(shù)據(jù)結(jié)構(gòu)pci_contoller,并且初始化,包括PCI的memory/io空間和訪問(wèn)PCI配置空間所需的handler。

    (2)PCI設(shè)備的枚舉:掃描系統(tǒng)上所有PCI設(shè)備,包括PCI橋,并初始化它們的配置空間(硬件上的初始化)。

    (3)用數(shù)據(jù)結(jié)構(gòu)將PCI設(shè)備信息聯(lián)系起來(lái),在系統(tǒng)中構(gòu)建PCI樹(軟件上的初始化)。

    (4)加載PCI設(shè)備的驅(qū)動(dòng)程序。

    驅(qū)動(dòng)程序通過(guò)讀取和配置相應(yīng)的寄存器,對(duì)PCI進(jìn)行配置操作和對(duì)memory/io空間的訪問(wèn)。

2.2.3 AHB作從RAM的硬件電路設(shè)計(jì)

    AHB作為從的RAM由AHB控制部分和RAM部分構(gòu)成。其中RAM由vivado的IP核生成??刂撇糠种饕歉鶕?jù)AHB的時(shí)序生成RAM的讀寫時(shí)序并對(duì)橋做出相應(yīng)的操作。結(jié)構(gòu)如圖6所示。

wdz2-t6.gif

    該RAM支持AHB的所有傳輸類型,接受的傳輸字大小為32 bit,即hsize_s為010b。寫時(shí)序如圖7所示,寫時(shí)序以一個(gè)INCR的傳輸類型為例,寫4個(gè)32 bit的數(shù)據(jù)。整個(gè)傳輸過(guò)程hwrite_s為高,表示橋?qū)AM進(jìn)行寫操作。開始傳輸時(shí),主機(jī)會(huì)將htrans_s的信號(hào)置為2,表示非連續(xù)傳輸,并且發(fā)送地址a0和傳輸類型hburst_s,如果hready_s為高即從機(jī)準(zhǔn)備好,則將htrans_s信號(hào)置為3,表示連續(xù)傳輸,并發(fā)送第二個(gè)地址a2和第一個(gè)地址對(duì)應(yīng)的數(shù)據(jù)d1,此時(shí)RAM控制部分將地址a0發(fā)給ram_addr,并將數(shù)據(jù)d0發(fā)給ram_wdata,ram_write置高,將數(shù)據(jù)寫入RAM,直到等到傳輸完成,所有信號(hào)置為默認(rèn)狀態(tài)。

wdz2-t7.gif

    如圖8所示為讀時(shí)序,讀時(shí)序以一個(gè)INCR的傳輸為例,讀取4個(gè)32 bit的數(shù)據(jù)。整個(gè)傳輸過(guò)程中hwrite_s為低,表示橋?qū)AM進(jìn)行讀操作。開始傳輸時(shí),主機(jī)會(huì)將htrans_s的信號(hào)置為2,表示非連續(xù)傳輸,并且發(fā)送地址a0和傳輸類型hburst_s,如果hready_s為高即從機(jī)準(zhǔn)備好,則將htrans_s信號(hào)置為3,表示連續(xù)傳輸,否則信號(hào)持續(xù)直到hready_s拉高,從機(jī)準(zhǔn)備好接受第一個(gè)地址,控制部分將地址傳送給ram_addr,RAM一拍后出數(shù)據(jù),將數(shù)據(jù)傳給hrdata_s,如此往復(fù),直到傳輸完成,所有信號(hào)置為默認(rèn)狀態(tài)。

wdz2-t8.gif

    控制部分內(nèi)部實(shí)現(xiàn)了一個(gè)同步的FIFO。該FIFO的主要功能是統(tǒng)計(jì)AHB作為從進(jìn)行的讀寫次數(shù),將這個(gè)計(jì)數(shù)器的值發(fā)送給AHB作為主的硬件電路,這樣方便軟件對(duì)作主電路的控制。

2.2.4 AHB作主RAM的硬件電路設(shè)計(jì)

    AHB作主的硬件電路主要由AHB作為主的控制部分和RAM部分構(gòu)成。這部分的RAM是由vivado的IP核生成,保證存儲(chǔ)數(shù)據(jù)的正確性??刂撇糠稚葾HB需要的時(shí)序和RAM的讀寫時(shí)序。

    用狀態(tài)機(jī)實(shí)現(xiàn)生成AHB作主的時(shí)序,如圖9所示。初始狀態(tài)為IDLE,當(dāng) AHB作為從的計(jì)數(shù)器由9變?yōu)?0的時(shí)候,觸發(fā)一個(gè)上升沿,此時(shí)發(fā)送請(qǐng)求占用總線信號(hào)hbusreq_m,等到橋接電路回饋一個(gè)授權(quán)信號(hào)hgrant_m和從機(jī)準(zhǔn)備好傳輸信號(hào)hready_m,則將狀態(tài)轉(zhuǎn)到TRANS_NONSEQ,并將本次傳輸數(shù)據(jù)的計(jì)數(shù)器置零,否則維持本狀態(tài)。當(dāng)狀態(tài)機(jī)處于TRANS_NONSEQ時(shí),會(huì)判斷傳輸數(shù)據(jù)的計(jì)數(shù)器和本次要傳輸?shù)臄?shù)據(jù)是否相等,如果相等則進(jìn)入狀態(tài)TRANS_END,否則進(jìn)入狀態(tài)TRANS_SEQ。在TRANS_SEQ的狀態(tài)時(shí),處理辦法和在狀態(tài)TRANS_NONSEQ相同。狀態(tài)TRANS_END完成本次傳輸,狀態(tài)機(jī)進(jìn)入初始狀態(tài)。

wdz2-t9.gif

    該部分硬件能夠?qū)崿F(xiàn)AHB傳輸類型中比較常用的幾種傳輸方式,單一傳輸(single)、增量傳輸(INCR)、4個(gè)數(shù)據(jù)增量傳輸(INCR4)、8個(gè)數(shù)據(jù)增量傳輸(INCR8)、16個(gè)數(shù)據(jù)的增量傳輸(INCR16)。每次傳輸?shù)拈_始由ahbs_ram中的計(jì)數(shù)器進(jìn)行控制,即用軟件操作作從的讀寫數(shù)據(jù),來(lái)啟動(dòng)AHB作主的電路。

3 測(cè)試結(jié)果與分析

    利用該平臺(tái)在FPGA上對(duì)AHB-PCI橋進(jìn)行驗(yàn)證,使用vivado15.4進(jìn)行綜合,添加Debug core對(duì)信號(hào)進(jìn)行采樣,生成bit,在FPGA上驗(yàn)證。實(shí)驗(yàn)進(jìn)行了大量的測(cè)試,測(cè)試結(jié)果與預(yù)期的一致,下面對(duì)其中的一部分進(jìn)行介紹。

    (1)PCI的寫操作:軟件由驅(qū)動(dòng)發(fā)出對(duì)PCI進(jìn)行寫操作,從測(cè)試波形可以看出,所采的地址和數(shù)據(jù)與軟件發(fā)出的一致,從而測(cè)試了橋PCI到AHB的寫通路正確。

    (2)PCI的讀操作:軟件由驅(qū)動(dòng)對(duì)PCI進(jìn)行讀操作,從測(cè)試波形可以知道,軟件所讀出來(lái)的數(shù)據(jù)和開始寫入的數(shù)據(jù)一致,從而測(cè)試了橋PCI到AHB的讀通路正確。

    (3)AHB的寫操作:此處AHB的觸發(fā)由ahbs_ram中的計(jì)數(shù)器進(jìn)行控制,所以利用軟件寫固定個(gè)數(shù),觸發(fā)了一次寫操作,實(shí)驗(yàn)結(jié)果波形可以看出寫操作的傳輸類型為INCR,傳輸了32個(gè)32 bit的數(shù)據(jù)。利用軟件讀取該部分存儲(chǔ)的值,和硬件寫入的值一致,從而測(cè)試了橋AHB到PCI的寫通路正確。

    (4)AHB的讀操作:同寫操作一樣,軟件做相應(yīng)的操作,觸發(fā)一次讀操作,實(shí)驗(yàn)結(jié)果波形可以看出來(lái),本次讀操作的傳輸類型為INCR,讀取了32個(gè)32 bit的數(shù)據(jù),利用軟件寫入的數(shù)據(jù)和波形上讀取的數(shù)據(jù)一致,從而測(cè)試了橋AHB到PCI的讀通路正確。

4 總結(jié)

    本文運(yùn)用軟件與硬件相結(jié)合的技術(shù)搭建的測(cè)試平臺(tái)對(duì)AHB-PCI橋進(jìn)行了功能驗(yàn)證。該平臺(tái)相對(duì)于modelsim搭建的測(cè)試平臺(tái)在硬件的驗(yàn)證中更有說(shuō)服力,利用FPGA對(duì)功能驗(yàn)證,極大地保證了硬件的正確性,節(jié)約了開發(fā)時(shí)間。平臺(tái)運(yùn)用軟硬件協(xié)同技術(shù),對(duì)于同類的硬件測(cè)試具有非常大的借鑒意義。

    本文的方法可以測(cè)試硬件的基本功能和硬件的正確性,而未能將硬件功能測(cè)試完全,可利用System Verilog 搭建平臺(tái)解決這個(gè)問(wèn)題。

參考文獻(xiàn)

[1] 詹文法,李麗,程作仁,等.一種基于總線的可重用驗(yàn)證平臺(tái)研究[J].電子技術(shù)應(yīng)用,2006,32(5):92-96.

[2] 史茂森,邵翠萍,龔龍慶.一種PCI總線Master模塊接口設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(7):207-210.

[3] 顏偉成,陳朝陽(yáng),沈緒榜.AMBA-AHB總線接口的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2005,33(10):130-136.

[4] AMBA(tm) Specification.Revision 2.0.May,1999.http://www.arm.com/.

[5] 王晨旭,桑勝田,王進(jìn)祥,等.AHB-PCI橋的設(shè)計(jì)及其驗(yàn)證方法[J].微處理機(jī),2004,2(1):8-13.

[6] 李鑒.PCI系列總線及其應(yīng)用[J].現(xiàn)代電子技術(shù),2002,135(2):76-79.

[7] PRASHANT D,PITHADIYA N,VAIBHAV C,et al.Designing PCI/AHB bridge[J].International Journal for Scientific Research & Development,2013,1(2):388-390.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。