基于PCI接口芯片外擴FIFO的FPGA實現(xiàn)
引言
目前,計算機上的系統(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)新聞>>
您可能感興趣的文章
- 透過DMD芯片歷程 細(xì)看DLP投影發(fā)展之路
- MC34262系列PFC控制芯片的應(yīng)用研究
- DecaWave推出精度在10厘米以內(nèi)的室內(nèi)定位芯片
- 韓研發(fā)出可彎曲塑料芯片 可用于生產(chǎn)折疊智能機
- 三芯片巨頭建合資公司開發(fā)NAND技術(shù)
- 美光用IBM工藝投產(chǎn)3D內(nèi)存芯片 提速15倍
- 同方國芯:特種集成電路發(fā)展駛?cè)肟燔嚨?金融IC卡芯片值得期待
- Silicon Labs最新通信芯片組結(jié)合語音和M2M功能
- 惠普計劃未來1年半內(nèi)推出非易失性內(nèi)存芯片
- 英特爾芯片設(shè)計獲革命性突破
新聞點評
- MediaTek開車用技術(shù)研討會以整合性解決方案賦能智能聯(lián)網(wǎng)汽車產(chǎn)業(yè)
- 8K智能電視芯片全球首發(fā),聯(lián)發(fā)科技S900以AI推動智能電視革新
- 聯(lián)發(fā)科技智能手機芯片Helio P65發(fā)布,手游與拍攝體驗雙升級
- 三只松鼠、卓勝微電子兩公司2019年5月16日(首發(fā))獲通過
- 聯(lián)發(fā)科技以AI賦能智能電視,聯(lián)動智能家居體系
- 兩家上市公司盯上北京矽成,集成電路產(chǎn)業(yè)收購硝煙再起
- 晶泰科2018年完成進(jìn)出口總額1.22億美元
- 華為昇騰310 AI芯片何以獲頒第五屆世界互聯(lián)網(wǎng)領(lǐng)先科技成果獎
- AI芯片并非信息行業(yè)主食 補齊缺芯短板勿舍本逐末
- 海外對華芯片技術(shù)輸出嚴(yán)防死守,5G將成中國芯片業(yè)趕超時間窗