<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PCI總線(xiàn)從設備控制器的設計與實(shí)現

PCI總線(xiàn)從設備控制器的設計與實(shí)現

作者: 時(shí)間:2011-11-14 來(lái)源:網(wǎng)絡(luò ) 收藏

  0 引言

  隨著(zhù)星載電子系統復雜度、小型化需求的提高,片上系統(System on Chip SoC)已 經(jīng)成為應對未來(lái)星載電子系統設計需求的解決途徑。為了簡(jiǎn)化設計流程并且提高部件的可重 用性,在目前的SoC 設計中引入了稱(chēng)之為平臺的體系結構模板,用它來(lái)描述采用已有的標準 核來(lái)開(kāi)發(fā)SoC 的方法。本文所作的工作主要是按照建立SoC 集成設計平臺的需求,根據當前 國際航天領(lǐng)域的技術(shù)現狀,選擇PCI(Peripheral Component Interconnect)總線(xiàn)作為SoC 集成設計平臺所能提供的一種總線(xiàn)模塊,根據可重用的IP(Intellectual Property)設計 思想對PCI 總線(xiàn)從進(jìn)行設計實(shí)現。

  1 PCI 總線(xiàn)從的設計

  1.1 控制器的基本功能[1-2]

 ?。?)數據傳輸功能:PCI 總線(xiàn)的傳輸包括PCI 與I/O 之間的傳輸(I/O 讀和I/O 寫(xiě))和 PCI 與存儲器之間的傳輸(存儲器讀和存儲器寫(xiě))。

 ?。?)錯誤檢測與處理功能:在交易的地址段和數據段中,PCI 總線(xiàn)是被奇偶校驗保護 的。在交易的地址段和數據段中,驅動(dòng)AD 總線(xiàn)的設備負責為本階段計算和提供奇偶校驗位, 接收AD 總線(xiàn)數據的設備負責進(jìn)行奇偶校驗的檢測、處理并給出相應的信息。

 ?。?)命令/地址譯碼功能:根據一些控制信號將地址/數據和命令/字節使能線(xiàn)上的地址 和命令信號分離出來(lái),得到相應的命令信號和讀寫(xiě)操作的地址。

 ?。?)配置功能:當機器第一次上電時(shí),配置軟件必須掃描在系統中的不同總線(xiàn)(PCI 和 其它),確定什么設備存在和它們有什么配置要求。為了實(shí)現這個(gè)過(guò)程,每個(gè)PCI 設備必須 實(shí)現由PCI 規范定義的一組配置寄存器。依賴(lài)其操作特性、功能還可以實(shí)現由PCI 規范定義 的其它要求的或可選的配置寄存器。另外,還應保留許多附加的配置單元,以實(shí)現指定功能 的配置寄存器。

  1.2 控制器的設計

  在用Verilog HDL 語(yǔ)言進(jìn)行PCI 總線(xiàn)從設計之前, 首先要對PCI 總線(xiàn)從設備控制器的功能進(jìn)行頂層設計[3], 將總線(xiàn)接口控制器按照功能分為有限狀態(tài)機模塊、奇偶校驗 模塊、配置空間配置模塊、基地址檢查模塊、計數器模塊、地址鎖存模塊和頂層模塊這7 個(gè)模塊[4], 控制器頂層模塊設計中有pci_clk、pci_cbe_l 、bkend_abort_l、bkend_ad、 bkend_int_l、data_STop_l、data_read_l、pci_frame_l、data_write_l、pci_idsel、pci_devsel、 pci_irdy_l、pci_inta_l、pci_rst_l、pci_par、ready_l、pci_ad 等信號, 其中_ L 表示信號低電 平有效。

  各個(gè)模塊完成功能如下:

  配置空間模塊:支持即插即用,從硬件的角度來(lái)看,其技術(shù)手段是為每一個(gè)PCI 設備提供一個(gè)配置空間,操作系統在自檢(POST Power-On-Self Test)的過(guò)程中檢測所有 PCI設備,讀取設備的配置信息,并給每一個(gè)設備分配系統資源,如中斷、I/O空間、存儲器 空間等。配置空間包括一系列配置寄存器, 一般占用256個(gè)I/O地址,直接影響PCI 設備特性 的是PCI空間的前16個(gè)雙字節的配置, 該區域稱(chēng)為PCI 配置頭,一般PCI設備都要進(jìn)行“類(lèi)型 0”配置[1]。

  配置空間是PCI地址空間中重要的一部分,主要有設備標識、設備控制、設備狀態(tài)、基 地址定位及其它一些由特定設備所描述的功能這五部分。

  這個(gè)模塊中售主ID 用語(yǔ)句DEVICE_ID= 16’h0120 來(lái)定義,其它設備標識類(lèi)似,命令寄 存器提供了產(chǎn)生和響應PCI 周期、粗略控制設備的能力。當idsel_reg, pci_irdy_l 有效, 且 pci_addr[7:2] == 6’h04 時(shí),信號stat_com_en 有效,表示可以在配置寫(xiě)周期內對設備狀 態(tài)及命令寄存器進(jìn)行配置。將pci_dat[1:0]的值賦給com,由端口com 來(lái)控制一個(gè)設備響應 I/O 或是內存的訪(fǎng)問(wèn)。用輸出信號ba0_size[31:4]、ba1_size[31:4]表示定義的I/O、內存 空間的大小。pci_dat_out[31:0] 在配置讀時(shí)表示輸出的設備配置信息,在其它情況下將從 設備產(chǎn)生的數據輸出。ba0_en、ba1_en 分別表示在配置寫(xiě)時(shí)I/O、內存基地址寄存器的有效 性。ba0_en 或ba1_en 有效是在配置寫(xiě)期間對從設備進(jìn)行配置的一個(gè)必要條件,int_line_en 是中斷線(xiàn)寄存器有效位。

  在所有的基地址寄存器中,第0 位均為只讀位并且用來(lái)決定是存儲器空間還是I/O 空間。 如果該位為0 則是映射到存儲器空間,否則,若為1 表示映射到I/O 空間。

  映射到I/O 空間的基地址寄存器寬度總是32 位,其中0 位恒為1(用硬件實(shí)現),1 位 為保留位并且其讀出值必須為0,其余位用來(lái)把設備映射到I/O 空間。映射到存儲器空間的 基地址寄存器可以是32 位或64 位。對于存儲器基地址寄存器,在0 位上設置為0,位2 和 位1 將其設為00,表示基地址寄存器為32 位寬。將位3 設為1,表示數據可預取。在設計 中將內存空間定義為1M 大小,1M 地址空間的設備應構造地址寄存器的高12 位為1(使用 32 位基址寄存器),其它位置為0。對于I/O 基地址寄存器為了簡(jiǎn)便將其配置為與內存基地 址寄存器一樣的狀態(tài)。

  基地址檢查模塊:如果PCI 設備要占用一定的I/O 空間或存儲器空間, 就必須實(shí)現基址 寄存器, 以便系統設置軟件在對系統進(jìn)行自動(dòng)設置時(shí), 對其地址譯碼器進(jìn)行編程,使設備能 獲得所要求的空間,在利用Verilog HDL進(jìn)行PCI 總線(xiàn)接口設計時(shí), 必須對基址寄存器的每 一位都能正確譯碼, 這樣才能確定PCI 設備是申請I/O 空間, 還是申請存儲器空間, 申請 空間的大小及其在系統中占據的位置, 是否可預取等。

  在基地址檢查模塊中首先判斷系統是否要求復位,若要求復位則需對存儲交易地址的寄 存器(ba0、ba1)清0;反之則說(shuō)明需要對給定的基地址進(jìn)行判斷,當I/O 基地址寄存器有 效時(shí),將總線(xiàn)上的數據pci_ad[31:4]的值賦給寄存器ba0;同樣的當內存基地址寄存器有效 時(shí)將pci_ad[31:4]的值賦給寄存器ba1。這時(shí)ba0 和ba1 中的值就是系統配置的I/O 和內存 在系統中具體的位置。接下來(lái)當設備要選擇申請的空間時(shí),通過(guò)判斷式pci_addr ba0_size的值是否與ba0 或ba1 相等,來(lái)判斷是否選中I/O 或內存空間。

  奇偶生成模塊: 的奇偶校驗提供了一種檢驗數據傳輸正確與否的機制, 在任何 給定的總線(xiàn)周期內,哪個(gè)設備驅動(dòng)了pci_ad[31::00]線(xiàn),它就必須驅動(dòng)PAR線(xiàn),而且在時(shí)間 上要比相應的地址或數據推遲一個(gè)時(shí)鐘周期。奇偶校驗主要用來(lái)確定主設備是否成功地尋址 到它所希望的從設備,以及數據傳輸的正確與否。因此,進(jìn)行奇偶校驗的檢測是必 需的。而奇偶校驗生成就是解決以上問(wèn)題的一個(gè)必要的步驟,從而使PCI總線(xiàn)設備控制器能 夠為PCI總線(xiàn)提供正確的與奇偶校驗有關(guān)的信息。

  在交易中,從設備驅動(dòng)數據到pci_dat_out 端口上,并通過(guò)par_out 信號向主設備提供 正確的奇偶效驗信息。PCI 總線(xiàn)奇偶校驗位的產(chǎn)生是采用偶校驗,參與奇偶校驗的位包括 pci_ad[31::00]及pci_cbe_l[3:0],檢驗pci_ad[31::00] 及pci_cbe_l[3:0] 上‘1’的 個(gè)數是否為偶數。如果為偶數則為par_out 端口賦‘0’,如果為奇數則為par_out 端口賦‘1’, 再將這個(gè)值傳回主設備,在主設備中與主設備產(chǎn)生的奇偶校驗值做比較,這樣做的目的是為 保證總線(xiàn)命令的正常執行和數據傳輸的正確性。如果兩個(gè)值相等說(shuō)明尋址及數據的傳輸是正 確的,如果不相等,則說(shuō)明尋址或數據的傳輸過(guò)程中發(fā)生了問(wèn)題,此次交易的數據必須重新 傳送。而對于那些實(shí)際并不傳送數據的字節所對應的線(xiàn),必須被驅動(dòng)到穩定狀態(tài),也要包含 于奇偶計算之中。

  有限狀態(tài)機模塊:PCI 總線(xiàn)接口芯片是多功能和時(shí)序復雜的時(shí)序邏輯電路,它的復雜性 由PCI 總線(xiàn)操作的多樣性決定。為了便于利用硬件描述語(yǔ)言進(jìn)行設計,將這一復雜的時(shí)序邏 輯抽象成有限狀態(tài)機,并利用有限狀態(tài)機實(shí)現復雜的總線(xiàn)操作。存儲器讀寫(xiě)操作、I/O 讀寫(xiě) 操作、配置空間讀寫(xiě)操作和中斷操作都要通過(guò)一種設計合理的有限狀態(tài)機實(shí)現,根據PCI 總 線(xiàn)操作的時(shí)序關(guān)系給出了一種簡(jiǎn)捷明了的有限狀態(tài)機, 實(shí)現了存儲器的讀寫(xiě)、I/O 讀寫(xiě)等各 種操作。如圖1 所示為有限狀態(tài)機的狀態(tài)轉移圖。


  空閑狀態(tài)(Idle):根據當前命令為配置命令或讀寫(xiě)命令而進(jìn)入配置讀寫(xiě)等待狀態(tài)或存 儲器、I/O 讀寫(xiě)等待狀態(tài)、其它情況則繼續在空閑狀態(tài)等待。

  配置讀寫(xiě)等待(con_wait)狀態(tài):系統進(jìn)入配置讀寫(xiě)等待狀態(tài)后根據pci_irdy_l 的值 判斷直接進(jìn)入配置讀寫(xiě)(con)狀態(tài),還是繼續在配置讀寫(xiě)等待(con_wait)狀態(tài)循環(huán),如 果pci_irdy_l=0,則進(jìn)入配置讀寫(xiě)(con)狀態(tài),否則繼續在配置讀寫(xiě)等待(con_wait)狀 態(tài)循環(huán)。

  配置讀寫(xiě)(con)狀態(tài):在這一狀態(tài)中將par_oe 設為有效,開(kāi)始奇偶校驗生成;并將 trdy_l 設為有效表示從設備準備好。下來(lái)判斷pci_irdy_l 信號是否有效,即主設備是否準備好,如果該信號有效則傳輸配置信息,在下一時(shí)鐘延到來(lái)時(shí)轉入backoff 狀態(tài),準備返回 空閑狀態(tài);否則進(jìn)行等待,直到pci_irdy_l 有效為止。

  存儲器或I/O 讀寫(xiě)等待(rw_wait)狀態(tài):在進(jìn)入這一狀態(tài)前首先應判斷是要進(jìn)行讀操 作還是寫(xiě)操作,下一步控制器要根據基地址譯碼模塊的譯碼結果決定控制器是對存儲器還是 I/O 讀寫(xiě),若譯碼結果顯示存儲器或I/O 都未選中,則進(jìn)入傳輸中止狀態(tài)。

  存儲器或I/O 讀寫(xiě)等待2(rw_wait2)狀態(tài):進(jìn)入該狀態(tài)的同時(shí)開(kāi)始計數,根據read_flag 的值,決定進(jìn)行讀操作還是寫(xiě)操作。

  存儲器或I/O 讀等待(read_wait)狀態(tài):在存儲器或I/O 讀寫(xiě)等待2(rw_wait2)狀 態(tài)時(shí)判斷若為讀操作,則狀態(tài)機轉入存儲器或I/O 讀等待(read_wait)狀態(tài),存儲器或I/O 讀等待(read_wait)狀態(tài)是在從設備trdy_l 有效之前讀取從設備的第一個(gè)數據段,也就是 地址段。

  存儲器或I/O 讀寫(xiě)(rw)狀態(tài): 在這一狀態(tài)中進(jìn)行存儲器或I/O 讀寫(xiě)。

  傳輸中止(abort)狀態(tài):使從設備停止響應,傳輸中止。

  存儲器或I/O 讀寫(xiě)停止等待(last_rw)狀態(tài):這是數據傳輸結束的前一個(gè)周期,表示即將停止數據傳輸。

  重試(retry)狀態(tài):當信息未準備好時(shí),系統進(jìn)入重試狀態(tài)。

  結束狀態(tài):結束此次交易。

  計數器模塊:在DEVSEL確定以后,必須在16個(gè)總線(xiàn)周期內提供或者接收數據,這一模塊 用來(lái)實(shí)現一個(gè)周期計數功能,當在第12個(gè)周期時(shí)數據仍然未就緒時(shí)提供一個(gè)“retry”信號 來(lái)要求數據,同時(shí)在16個(gè)周期到來(lái)時(shí)通知終端設備此次交易結束。

  地址鎖存模塊:在總線(xiàn)交易的地址段對PCI總線(xiàn)的地址、C/BE信號、IDSEL信號實(shí)現鎖存, 提供了這些信號的寄存器。

  2 PCI總線(xiàn)從設備控制器的FPGA實(shí)現

  FPGA 是當前復雜數字硬件電路設計的理想首選。設計選用Xilinx 公司生產(chǎn)的Sparten —Ⅱ 200 PCI 驗證板。集成軟件環(huán)境為Xilinx ISE6.1i。

  設計中有源代碼輸入、綜合、實(shí)現等3 個(gè)比較大的階段,而電路仿真的切入點(diǎn)也基本與 這些階段吻合 。選用XST(Xilinx Synthesis Technology)作為綜合工具。PCI 驗證板電 源、管教電壓、晶振分別選為5V、 2.5V、50MHz,下載模式選擇為JTAG 模式,并通過(guò)ISP PROM 配置FPGA。

  3 PCI總線(xiàn)設備控制器的驗證

  硬件系統通常是通過(guò)信號來(lái)驅動(dòng)的,在不同的輸入信號下其行為表現是產(chǎn)生不同的輸出 結果,因此,仿真輸入信息的產(chǎn)生是對系統進(jìn)行仿真的重要前提和必須進(jìn)行的步驟,PCI 總線(xiàn)控制器的仿真是由一段Verilog HDL 語(yǔ)言程序直接產(chǎn)生仿真的輸入信息,將此外部激勵信 號施加于PCI 總線(xiàn)控制器模型,通過(guò)觀(guān)察其在外部激勵信號作用下的反應來(lái)判斷PCI 總線(xiàn)控 制器是否能實(shí)現預期的功能。對PCI 總線(xiàn)控制器的仿真,主要是按照PCI 總線(xiàn)操作命令來(lái)進(jìn) 行的,對于正常的總線(xiàn)操作結束和由主設備及從設備提出的操作終止都作了測試,其仿真結 果實(shí)現了預期的要求。由于仿真項目比較多,我們選取其中具有代表性的一個(gè)項目來(lái)舉例說(shuō) 明。圖2 是存儲器空間沒(méi)有等待周期的突發(fā)數據段寫(xiě)這一過(guò)程的仿真結果。


  4 結論

  PCI 總線(xiàn)從設備控制器的設計按照自頂向下的設計流程,實(shí)現了PCI 從設備控制器的設 計目標,完成了PCI 總線(xiàn)協(xié)議所要求的基本功能,目前已是一個(gè)完整可用的PCI 總線(xiàn)從設備 控制器IP 核,有很高的工程價(jià)值。

  本文的創(chuàng )新點(diǎn):該設計方案將PCI 從設備控制器作為IP 核來(lái)設計,將總線(xiàn)接口控制器 按照功能分為有限狀態(tài)機模塊、奇偶校驗模塊、配置空間配置模塊、基地址檢查模塊、計數 器模塊、地址鎖存模塊和頂層模塊這7 個(gè)模塊,編寫(xiě)了測試文件,測試表明,設計完全符合 功能要求。



關(guān)鍵詞: PCI總線(xiàn) 設備控制器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>