在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

              0 引言

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

              1 PCI 總線從的設(shè)計

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

              (1)數(shù)據(jù)傳輸功能:PCI 總線的傳輸包括PCI 與I/O 之間的傳輸(I/O 讀和I/O 寫)和 PCI 與存儲器之間的傳輸(存儲器讀和存儲器寫)。

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

             ?。?)命令/地址譯碼功能:根據(jù)一些控制信號將地址/數(shù)據(jù)和命令/字節(jié)使能線上的地址 和命令信號分離出來,得到相應(yīng)的命令信號和讀寫操作的地址。

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

              1.2 控制器的設(shè)計

              在用Verilog HDL 語言進(jìn)行PCI 總線從設(shè)計之前, 首先要對PCI 總線從設(shè)備控制器的功能進(jìn)行頂層設(shè)計[3], 將總線接口控制器按照功能分為有限狀態(tài)機模塊、奇偶校驗 模塊、配置空間配置模塊、基地址檢查模塊、計數(shù)器模塊、地址鎖存模塊和頂層模塊這7 個模塊[4], 控制器頂層模塊設(shè)計中有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 表示信號低電 平有效。

              各個模塊完成功能如下:

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

              重試(retry)狀態(tài):當(dāng)信息未準(zhǔn)備好時,系統(tǒng)進(jìn)入重試狀態(tài)。

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

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

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

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

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

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

              3 PCI總線設(shè)備控制器的驗證

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


              4 結(jié)論

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

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



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

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉