中文字幕无码夊久人妻|国产另类在线欧美日韩|精品无码乱码AV片国产|91久久香蕉国产熟女线看|白嫩丰满大乳美女免费视频|久久久久人妻精品区一三寸|免费一看一级毛片少妇丰满2|精品无码国产一区二区三区51

您現(xiàn)在的位置:融合網(wǎng)首頁 > 芯片 > 技術(shù) >

基于PCI接口芯片外擴FIFO的FPGA實現(xiàn)

來源:互聯(lián)網(wǎng) 作者:佚名 責(zé)任編輯:admin 發(fā)表時間:2011-12-01 18:32 
核心提示:對于異步 FIFO而言,設(shè)計過程中還需考慮的一點就是如何消除不同時鐘域的亞穩(wěn)態(tài)。這里主要是對讀 /寫地址采用雷格碼變換,即相鄰地址之間只有一個數(shù)據(jù)位不同,據(jù)此可以很好地減少亞穩(wěn)態(tài)的發(fā)生。

引言

目前,計算機上的系統(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總線與本地總線。在實際半實物仿真測試系統(tǒng)的應(yīng)用中,要求仿真計算機能夠快速、穩(wěn)定的連續(xù)輸出所需數(shù)據(jù),而由于 PCI 9054內(nèi)部 FIFO存儲器主要用于數(shù)據(jù)的讀寫控制,容量有限,不能滿足半實物仿真測試系統(tǒng)數(shù)據(jù)傳輸?shù)囊蟆R虼,本文提出利?FPGA內(nèi)部的嵌入式陣列塊( EAB)(Embedded Array Blocks)來實現(xiàn)外擴 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)無法運行。

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

嵌入式邏輯陣列塊( 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. 外擴異步 FIFO的 FPGA實現(xiàn)

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

本設(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。給出了利用 EAB模塊構(gòu)成 FIFO存儲器的內(nèi)部結(jié)構(gòu)。

異步 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ù),依此類推。由于時鐘頻率的不同,輸入口和輸出口的工作過程彼此是獨立的,即可以同時進(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)初始狀態(tài):對于本設(shè)計而言,即為 WP=0,RP=511。此時的 FIFO處于空狀態(tài), RP=WP-1,不能對其進(jìn)行讀操作。

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

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

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

可以看出,滿狀態(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_clk'event) 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è)計過程中還需考慮的一點就是如何消除不同時鐘域的亞穩(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)中取得了較好的效果。

(責(zé)任編輯:admin)
    • “掃一掃”關(guān)注融合網(wǎng)微信號

    免責(zé)聲明:我方僅為合法的第三方企業(yè)注冊用戶所發(fā)布的內(nèi)容提供存儲空間,融合網(wǎng)不對其發(fā)布的內(nèi)容提供任何形式的保證:不保證內(nèi)容滿足您的要求,不保證融合網(wǎng)的服務(wù)不會中斷。因網(wǎng)絡(luò)狀況、通訊線路、第三方網(wǎng)站或管理部門的要求等任何原因而導(dǎo)致您不能正常使用融合網(wǎng),融合網(wǎng)不承擔(dān)任何法律責(zé)任。

    第三方企業(yè)注冊用戶在融合網(wǎng)發(fā)布的內(nèi)容(包含但不限于融合網(wǎng)目前各產(chǎn)品功能里的內(nèi)容)僅表明其第三方企業(yè)注冊用戶的立場和觀點,并不代表融合網(wǎng)的立場或觀點。相關(guān)各方及作者發(fā)布此信息的目的在于傳播、分享更多信息,并不代表本網(wǎng)站的觀點和立場,更與本站立場無關(guān)。相關(guān)各方及作者在我方平臺上發(fā)表、發(fā)布的所有資料、言論等僅代表其作者個人觀點,與本網(wǎng)站立場無關(guān),不對您構(gòu)成任何投資、交易等方面的建議。用戶應(yīng)基于自己的獨立判斷,自行決定并承擔(dān)相應(yīng)風(fēng)險。

    根據(jù)相關(guān)協(xié)議內(nèi)容,第三方企業(yè)注冊用戶已知悉自身作為內(nèi)容的發(fā)布者,需自行對所發(fā)表內(nèi)容(如,字體、圖片、文章內(nèi)容等)負(fù)責(zé),因所發(fā)表內(nèi)容(如,字體、圖片、文章內(nèi)容等)等所引發(fā)的一切糾紛均由該內(nèi)容的發(fā)布者(即,第三方企業(yè)注冊用戶)承擔(dān)全部法律及連帶責(zé)任。融合網(wǎng)不承擔(dān)任何法律及連帶責(zé)任。

    第三方企業(yè)注冊用戶在融合網(wǎng)相關(guān)欄目上所發(fā)布的涉嫌侵犯他人知識產(chǎn)權(quán)或其他合法權(quán)益的內(nèi)容(如,字體、圖片、文章內(nèi)容等),經(jīng)相關(guān)版權(quán)方、權(quán)利方等提供初步證據(jù),融合網(wǎng)有權(quán)先行予以刪除,并保留移交司法機關(guān)查處的權(quán)利。參照相應(yīng)司法機關(guān)的查處結(jié)果,融合網(wǎng)對于第三方企業(yè)用戶所發(fā)布內(nèi)容的處置具有最終決定權(quán)。

    個人或單位如認(rèn)為第三方企業(yè)注冊用戶在融合網(wǎng)上發(fā)布的內(nèi)容(如,字體、圖片、文章內(nèi)容等)存在侵犯自身合法權(quán)益的,應(yīng)準(zhǔn)備好具有法律效應(yīng)的證明材料,及時與融合網(wǎng)取得聯(lián)系,以便融合網(wǎng)及時協(xié)調(diào)第三方企業(yè)注冊用戶并迅速做出相應(yīng)處理工作。

    融合網(wǎng)聯(lián)系方式:(一)、電話:(010)57722280;(二)、電子郵箱:2029555353@qq.com dwrh@dwrh.net

    對免責(zé)聲明的解釋、修改及更新權(quán)均屬于融合網(wǎng)所有。

    新聞關(guān)注排行榜

    熱門推薦 最新推薦

    熱門關(guān)鍵字

    關(guān)于我們 - 融合文化 - 媒體報道 - 在線咨詢 - 網(wǎng)站地圖 - TAG標(biāo)簽 - 聯(lián)系我們
    Copyright © 2010-2020 融合網(wǎng)|DWRH.net 版權(quán)所有 聯(lián)系郵箱:dwrh@dwrh.net 京公網(wǎng)安備 11011202002094號 京ICP備11014553號