當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化

0. 引言

目前,計算機(jī)上的系統(tǒng)總線常見的有 ISA總線、 PCI總線以及 VXI總線等。在實際應(yīng)用中,PCI總線已經(jīng)成為主流的應(yīng)用總線,具有較高的數(shù)據(jù)傳輸效率,能滿足大多數(shù)數(shù)據(jù)采集和發(fā)送系統(tǒng)的需求。由于 PCI總線規(guī)范相當(dāng)復(fù)雜,一般實際應(yīng)用中都選擇專用的 PCI接口芯片來設(shè)計 PCI接口。本文選擇美國 PLX公司生產(chǎn)的 PCI總線通用接口芯片 PCI 9054,利用該專用芯片橋接 PCI總線與本地總線 [1-3]。在實際半實物仿真測試系統(tǒng)的應(yīng)用中,要求仿真計算機(jī)能夠快速、穩(wěn)定的連續(xù)輸出所需數(shù)據(jù),而由于 PCI 9054內(nèi)部 FIFO存儲器主要用于數(shù)據(jù)的讀寫控制,容量有限,不能滿足半實物仿真測試系統(tǒng)數(shù)據(jù)傳輸?shù)囊?。因此,本文提出利?FPGA內(nèi)部的嵌入式陣列塊( EAB)(Embedded Array Blocks)來實現(xiàn)外擴(kuò) FIFO的功能,目的是用于存儲由 PCI總線傳輸過來的仿真數(shù)據(jù),并在 D/A轉(zhuǎn)換期間起到數(shù)據(jù)緩存的作用。

1. PCI 9054特性及 FPGA內(nèi)部 EAB模塊簡介

1.1 PCI 9054接口芯片簡介及配置

PCI 9054內(nèi)部有六個可編程的 FIFO存儲器,它們可分別實現(xiàn) PCI發(fā)起讀、寫操作, PCI目標(biāo)讀、寫操作和 DMA方式讀、寫操作。這里采用 DMA方式傳輸數(shù)據(jù),可實現(xiàn)大量數(shù)據(jù)的突發(fā)傳輸而不丟失,數(shù)據(jù)通過 PCI 9054內(nèi)部的 FIFO進(jìn)行雙向傳輸。為此,核心控制芯片 FPGA內(nèi)部專門設(shè)計了與 PCI 9054進(jìn)行數(shù)據(jù)通信的邏輯控制單元,通過查詢 FIFO的當(dāng)前狀態(tài),實時地把數(shù)據(jù)傳送到相應(yīng)的存儲單元。

PCI 9054內(nèi)部提供一個串行 EEPROM配置接口,為 PCI總線和局部總線配置部分重要信息,如本地總線的基地止空間、I/O空間、中斷控制信號等信息,總?cè)萘繛?2 K字節(jié)或 4 K字節(jié),其內(nèi)容可通過 PCI總線寫入,也可通過編程器直接燒寫。EPROM一定要選擇支持串行傳輸方式的芯片,這里選用 93CS56L作為外接 EEPROM,容量為 2 K字節(jié), EEPROM的配置電路如圖 1所示。圖中 93CS56L的 1、2、3/4引腳與 PCI9054上的 EECS、EESK、EEDI/EEDO引腳相連,系統(tǒng)啟動時自動檢測 EEPROM,并將初始化配置參數(shù)裝入 PCI配置寄存器中,根據(jù)本地總線對內(nèi)存、 I/O端口和中斷等統(tǒng)一劃分空間,自動配置。EEPROM的配置至關(guān)重要,其配置不正確可導(dǎo)致整個系統(tǒng)無法運(yùn)行。

1.2嵌入式邏輯陣列塊( EAB)結(jié)構(gòu)[4]

嵌入式邏輯陣列塊( EAB)具有邏輯和存儲功能,在輸入、輸出端口上帶有寄存器的 RAM塊,利用它們可以實現(xiàn) ROM、RAM、雙端口 RAM和 FIFO等功能設(shè)計。每個 EAB模塊均含有 2 K的數(shù)據(jù)容量,每個 EAB單元中還包括數(shù)據(jù)區(qū)、總線和讀 /寫控制等。數(shù)據(jù)區(qū)是 EAB的核心部分,可根據(jù)數(shù)據(jù)/地址線的不同設(shè)置將其配置為 2048×1bit,1024×2bit, 512×4bit,256×8bit等。相應(yīng)的數(shù)據(jù)總線可以配置成 8bit、4bit、2bit或 1bit寬,地址總線可以配置成 8bit、9bit、10bit或 11bit寬。而輸入輸出總線相對應(yīng),這三條總線都可以設(shè)置為同步/異步兩種工作方式。

2. 外擴(kuò)異步 FIFO的 FPGA實現(xiàn) [5]

2.1異步 FIFO存儲器的內(nèi)部結(jié)構(gòu)及工作原理[6]

本設(shè)計選擇的 EPF10K10 FPGA內(nèi)部含有 3個嵌入式陣列塊( EAB)。為了實現(xiàn)大容量的異步 FIFO存儲器,可以通過內(nèi)部級聯(lián)的方法把多個 EAB模塊進(jìn)行連接,如本設(shè)計把 3個 EAB模塊進(jìn)行連接,每個 EAB模塊均為 512×4 Bit,連接以后可實現(xiàn) 512×12 Bit的 FIFO存儲模塊,即 FIFO存儲器的容量為 6 KB。圖 2給出了利用 EAB模塊構(gòu)成 FIFO存儲器的內(nèi)部結(jié)構(gòu)圖。

從圖 2可以看出,異步 FIFO存儲器包含一個雙端口的 RAM、寫指針(WP)、讀指針(RP)、空標(biāo)志產(chǎn)生邏輯( FULL)及滿標(biāo)志產(chǎn)生邏輯 (EMPTY)。其工作過程是把 PCI9054讀入的內(nèi)存波形數(shù)據(jù)緩存到 RAM中,然后根據(jù)仿真需要,把波形數(shù)據(jù)傳送給 D/A轉(zhuǎn)換模塊。其遵循的原則是寫入數(shù)據(jù)位數(shù)及時鐘與 PCI9054輸出數(shù)據(jù)位數(shù)及本地時鐘( LCLK)同步,而輸出數(shù)據(jù)位數(shù)及時鐘與 D/A轉(zhuǎn)換模塊的輸入數(shù)據(jù)位數(shù)及時鐘相一致,且硬件系統(tǒng)第一個讀入的數(shù)據(jù)為輸出端口讀出的第一個數(shù)據(jù),依此類推。由于時鐘頻率的不同,輸入口和輸出口的工作過程彼此是獨(dú)立的,即可以同時進(jìn)行讀寫操作。只要 FIFO存儲器的數(shù)據(jù)標(biāo)志位 FULL為非滿狀態(tài),就可以繼續(xù)向 FIFO存儲器中寫入數(shù)據(jù);只要 FIFO存儲器的數(shù)據(jù)標(biāo)志位 EMPTY為非空狀態(tài),就可以繼續(xù)從 FIFO存儲器中讀取數(shù)據(jù)。

2.2異步 FIFO存儲器的 FPGA實現(xiàn)方法

由 EAB構(gòu)成的 FIFO模塊,只需對其進(jìn)行編程實現(xiàn),而無需其它外部元件匹配。設(shè)計過程中主要考慮的一是如何實現(xiàn)數(shù)據(jù)在傳輸過程中不丟失數(shù)據(jù),即如何同步異步時鐘信號,避免亞穩(wěn)態(tài)的產(chǎn)生;二是如何正確地判斷 FIFO存儲器的空/滿狀態(tài)。



圖 1 EEPROM 配置電路

圖 2 由 EAB模塊構(gòu)成的 FIFO內(nèi)部結(jié)構(gòu)圖圖 3給出了 FIFO存儲器的四種狀態(tài),即:

1)初始狀態(tài):對于本設(shè)計而言,即為 WP=0,RP=511。此時的 FIFO處于空狀態(tài), RP=WP-1,不能對其進(jìn)行讀操作。

1RP=WP狀態(tài)。FIFO只要再進(jìn)行一次寫操作就會變成滿狀態(tài)。

2RP=WP-2狀態(tài)。FIFO只要再進(jìn)行一次讀操作就會變成空狀態(tài)。

3RP=WP-1狀態(tài),F(xiàn)IFO已經(jīng)存滿數(shù)據(jù),不能對其進(jìn)行寫操作。



圖 2 由EAB 模塊構(gòu)成的FIFO 內(nèi)部結(jié)構(gòu)圖



圖 3 FIFO 四種工作狀態(tài)

可以看出,滿狀態(tài)和空狀態(tài)的 RP和 WP的關(guān)系是一致的,均為 RP=WP-1。但在滿或空狀態(tài)出現(xiàn)之前的一個狀態(tài)是各不相同的。當(dāng) RP=WP時,由于寫入一個數(shù)據(jù)而使其進(jìn)入滿狀態(tài)( RP=WP-1),而在 RP=WP-2時,由于讀出一個數(shù)據(jù)而使其進(jìn)入空狀態(tài)( RP=WP-1)。設(shè)計中可以根據(jù)這一原則通過軟件編程來得到空 /滿狀態(tài)標(biāo)志產(chǎn)生的條件。下面給出一段描述空狀態(tài)產(chǎn)生的 VHDL語言程序。

process(wr_clk,reset)

begin

if reset=1 then

empty_in<=1;

elsif (wr_clk=1 and wr_clkevent) then

if ((rp=wp-2 or (rp=fifo_depth-1 and wp=1)

or(rp=fifo_depth-2 and wp=0)

and (rd_en=0 and wr_en=1)) then
empty_in<=1;

elsif (empty_in=1 and wr_en=0) then

empty_in<=0;
end if;

end if;

end process;

其中:

wr_clk為寫入數(shù)據(jù)時鐘信號; reset為系統(tǒng)復(fù)位信號;empty_in為空標(biāo)志信號; fifo_depth為 FIFO存儲器深度值,這里為 512;rp為讀數(shù)據(jù)指針; wp為寫數(shù)據(jù)指針; wr_en為寫入數(shù)據(jù)使能信號;rd_en為讀出數(shù)據(jù)使能信號。
對于異步 FIFO而言,設(shè)計過程中還需考慮的一點(diǎn)就是如何消除不同時鐘域的亞穩(wěn)態(tài)。這里主要是對讀 /寫地址采用雷格碼變換,即相鄰地址之間只有一個數(shù)據(jù)位不同,據(jù)此可以很好地減少亞穩(wěn)態(tài)的發(fā)生。雷格碼可以通過對 FPGA內(nèi)部編程實現(xiàn)二進(jìn)制計數(shù)器來完成,即讀地址的雷格碼計數(shù)器用讀時鐘,寫地址的雷格碼用寫時鐘,數(shù)據(jù)輸入端由兩個相鄰二進(jìn)制的數(shù)據(jù)位異或產(chǎn)生,這樣就很好地解決了當(dāng)讀/寫地址指針相同時,由于讀/寫時鐘異步而產(chǎn)生的地址錯誤。下面給出的是讀地址雷格碼程序描述。

process(rd_clk,reset,rd_en)

begin

if reset=1 then
rd_gray<="00000000";

else

rd_gray(3)<=rp(3);

rd_gray(2)<=rp(3)xor rp(2);

rd_gray(1)<=rp(2)xor rp(1);

rd_gray(0)<=rp(1)xor rp(0);

end if;
end process;

其中: reset為系統(tǒng)復(fù)位信號; rd_clk為讀出數(shù)據(jù)時鐘信號; rd_en為讀出數(shù)據(jù)使能信號; rp為讀數(shù)據(jù)指針;rd_gray為讀雷格碼地址。

3. 結(jié)束語 本文根據(jù)半實物仿真測試系統(tǒng)的要求,利用 FPGA芯片內(nèi)部 EAB模塊設(shè)計了基于 PCI總線接口的異步 FIFO緩存器。針對異步 FIFO設(shè)計中的空 /滿狀態(tài)及亞穩(wěn)態(tài)問題,給出了具體的解決方法,主要采用 VHDL語言進(jìn)行了 FIFO的電路設(shè)計,利用 ALTERA公司的 EPF10K10 FPGA芯片實現(xiàn)了該設(shè)計,并將這一設(shè)計應(yīng)用到半實物仿真測試系統(tǒng)中進(jìn)行連續(xù)波形數(shù)據(jù)的傳輸,在實際測試系統(tǒng)中取得了較好的效果。本文作者創(chuàng)新點(diǎn):在半實物仿真測試系統(tǒng)中,本著模塊化的設(shè)計思想,本文利用 FPGA芯片內(nèi)部 EAB模塊設(shè)計了異步 FIFO存儲器,提高了半實物仿真測試系統(tǒng)數(shù)據(jù)傳輸效率,解決了由于計算機(jī)中斷而引起的數(shù)據(jù)傳輸間歇性問題。

參考文獻(xiàn)

[1] Ravi Budruk,Don Anderson,Tom Shanley. PCI Express系統(tǒng)體系結(jié)構(gòu)標(biāo)準(zhǔn)教材 [M].北京:電子工業(yè)出版社,2002:5-30.
[2]尹勇, 李宇. PCI總線設(shè)備開發(fā)寶典[M].北京:北京航空航天大學(xué)出版社,2005:1-14.
[3] PLX Technology,Inc. “PCI 9054 Data Book” Version 2.0[Z].USA,1999.
[4]李琳,陳勇生 . FLEX10K系列 EAB的應(yīng)用 [J].國外電子元器件 . 2001(12):59-62
[5]張志安. 硬目標(biāo)侵徹引信半實物仿真技術(shù)研究[D].南京:南京理工大學(xué),2007.
[6]熊紅兵,陳琦 . 基于 FPGA的異步 FIFO設(shè)計與實現(xiàn)[J].微計算機(jī)信息. 2006,6-2:216-218

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉