<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è) > EDA/PCB > 設計應用 > FPGA中軟FIFO設計和實(shí)現

FPGA中軟FIFO設計和實(shí)現

作者: 時(shí)間:2008-04-28 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:在現代電路設計中,一個(gè)系統往往包含了多個(gè)時(shí)鐘,如何在異步時(shí)鐘間傳遞數據成為一個(gè)很重要的問(wèn)題,而使用異步可以有效地解決這個(gè)問(wèn)題。異步是一種在電子系統中得到廣泛應用的器件,文中介紹了一種基于的異步設計方法。使用這種方法可以設計出高速、高可靠的異步FIFO。
關(guān)鍵詞:FIFO;

0引言

在現場(chǎng)可編程邏輯芯片的設計過(guò)程中不同模塊之間的數據接口尤其是不同時(shí)鐘系統的各個(gè)模塊之間的數據接口是系統設計的一個(gè)關(guān)鍵用異步FIFO模塊來(lái)實(shí)現接口,接口雙方都在自己時(shí)鐘的同步下進(jìn)行工作它們之間不需要互相握手只需要跟接口FIFO模塊進(jìn)行交互即可即向接口FIFO模塊中寫(xiě)入數據或從FIFO模塊中讀出數據。用這樣一個(gè)緩沖FIFO模塊實(shí)現內部不同時(shí)鐘系統之間的數據接口使設計變得非常簡(jiǎn)單和容易所用的FIFO接口是XILINX公司提供的IP核。經(jīng)過(guò)充分測試和優(yōu)化,系統運行穩定占用的FPGA內部資源也非常少。

1 FIFO 類(lèi)型

FIFO先進(jìn)先出隊列是一種在電子系統得到廣泛應用的器件通常用于數據的緩存和用于容納異步信號的頻率或相位的差異FIFO的實(shí)現通常是利用雙口RAM 和讀寫(xiě)地址產(chǎn)生模塊來(lái)實(shí)現的圖1顯示出了FIFO 的內部結構。

圖1 FIFO內部結構圖

FIFO的功能框圖如圖2 所示

圖2 FIFO功能框圖

根據讀寫(xiě)操作的同步/異步標志方案的同步/異步第一個(gè)寫(xiě)操作以及復位功能的不同FIFO 存儲器可分為4 大類(lèi):

(1)異步FIFO。 通常只有兩個(gè)控制信號讀使能( RE )與寫(xiě)使能( WE)信號標志信號有全空標志(EF)全滿(mǎn)標志(FF) 可選半滿(mǎn)標志(HF)幾乎全滿(mǎn)標志(AF) 幾乎全空標志(AE)這些標志并不與任何時(shí)鐘或事件同步但是反映讀寫(xiě)指針的即時(shí)對照。

(2)選通式FIFO。與異步FIFO存儲器相似選通FIFO通常使用讀寫(xiě)選通UNCK和LDCK信號以及輸出使能OE信號這類(lèi)FIFO 通常提供半滿(mǎn)標志(HF)可選幾乎滿(mǎn)標志(AF)幾乎空標志(AE)全空標志(EF)和全滿(mǎn)標志(FF)這些標志雖然反映讀寫(xiě)指針但不與任何時(shí)鐘或事件同步。

(3)標準同步FIFO。同步FIFO需要自由運行的讀和寫(xiě)時(shí)鐘RCLK 和WCLK 讀寫(xiě)操作是與這些時(shí)鐘同步的控制信號包括讀使能信號FEN 寫(xiě)使能信號WEN和輸出使能信號OE 標志方案使用全空標志全滿(mǎn)標志和半滿(mǎn)標志時(shí)序上不是FWFT 的因此寫(xiě)入FIFO 的第一個(gè)字先停留在一個(gè)在存儲單元中。

(4)FWFT 同步FIFO。FWFT First Word Fall Through FIFO與標準FIFO相似它需要自由運行的讀時(shí)鐘和寫(xiě)時(shí)鐘RCLK和WCLK讀寫(xiě)操作與這些時(shí)鐘同步控制信號包括讀使能REN寫(xiě)使能WEN以及輸出使能信號OE內部結構是首字直接通過(guò)First Word Fall Through 的即是寫(xiě)入FIFO 的第一個(gè)數據單元直接進(jìn)入輸出緩沖區而不是停在存儲器單元其標志方案是FWFT結構的直接結果也與標準同步FIFO不同。FWFT FIFO 存儲器使用輸出預備OR和輸入預備IR標志而不使用全空標志和全滿(mǎn)標志。FWFT FIFO 也使用半空標志,也可選幾乎全空標志和全滿(mǎn)標志。

2 FPGA內部FIFO的設計

FPGA中有幾個(gè)大容量的RAM,本文以XILINX公司Spartan-ⅡE系列芯片為設計芯片。在Spartan-ⅡE系列芯片中包含兩列Block RAM,并且沿垂直邊擺放。如圖3所示

圖3 雙口 RAM

不同的Spartan-ⅡE系列芯片的所包含的Block RAM個(gè)數和位數如表1所示:

表1. Spartan-ⅡE BRAM

Spartan-ⅡE系列

個(gè)數

位數

XC2S50E

8

32/K位

XC2S100E

10

40/K位

XC2S150E

12

48/K位

XC2S200E

14

56/K位

XC2S300E

16

64/K位

XC2S400E

40

160/K位

XC2S600E

72

288/K位

FPGA 中的FIFO由三部分構成:寫(xiě)地址產(chǎn)生模塊、雙口RAM和讀地址產(chǎn)生模塊。如圖4所示

圖4.FIFO結構圖

由圖4可以看出,寫(xiě)地址產(chǎn)生模塊根據寫(xiě)時(shí)鐘和寫(xiě)有效信號產(chǎn)生遞增的寫(xiě)地址,讀地址產(chǎn)生模塊根據讀時(shí)鐘和讀有效信號產(chǎn)生遞增的讀地址。FIFO的操作如下:在寫(xiě)時(shí)鐘wr_clk的升沿,當wren有效時(shí),將wr_data寫(xiě)入雙口RAM中寫(xiě)地址對應的位置中;始終將讀地址對應的雙口RAM中的數據輸出到讀數據總線(xiàn)上。這樣就實(shí)現了先進(jìn)先出的功能。寫(xiě)地址產(chǎn)生模塊還根據讀地址和寫(xiě)地址關(guān)系產(chǎn)生FIFO的滿(mǎn)標志。當wren有效時(shí),若寫(xiě)地址+2=讀地址時(shí),full為1;當wren無(wú)效時(shí),若寫(xiě)地址+ 1=讀地址時(shí),full為1。讀地址產(chǎn)生模塊還根據讀地址和寫(xiě)地址的差產(chǎn)生FIFO的空標志。當rden有效時(shí),若寫(xiě)地址-1=讀地址時(shí),empty為 1;當rden無(wú)效時(shí),若寫(xiě)地址=讀地址時(shí),empty為1。按照以上方式產(chǎn)生標志信號是為了提前一個(gè)時(shí)鐘周期產(chǎn)生對應的標志信號。

3 FPGA內部軟FIFO的仿真

現場(chǎng)可編程門(mén)陣列FPGA是在專(zhuān)用ASIC 的基礎上發(fā)展出來(lái)的,它克服了專(zhuān)用ASIC不夠靈活的缺點(diǎn)。與其它中小規模集成電路相比,它有很強的靈活性,即其內部的具體邏輯功能可以根據需要配置,對電路的修改和維護很方便目前FPGA的容量已經(jīng)跨過(guò)了百萬(wàn)門(mén)級使得FPGA 成為解決系統級設計的重要選擇方案之一?,F在FPGA 已經(jīng)成為多種數據采集系統應用的強有力的解決方案。由于可編程方案的靈活性,數據采集系統設計可以適應日益變化的標準協(xié)議和性能需求,FPGA具有集成優(yōu)勢和更低的系統成本。

甚高速集成電路硬件描述語(yǔ)言VHDL 廣泛用于描述數字系統的結構、行為、功能和接口。它的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計算機高級語(yǔ)言。

本文利用XILINX 公司Spartan-ⅡE 系列的FPGA器件現場(chǎng)用VHDL編程實(shí)現了軟FIFO設計。在Quartus II 4.0 環(huán)境中仿真,得到了很不錯的效果。部分程序和仿真結果分別如以下程序和圖5所示。

部分VHDL 程序

FIFO1TO2:FIFO32TO32 PORT MAP

( wrclk=>FIFO1TO2WE,

rdreq=>FIFO1TO2RREQ,

rdclk=>FIFO1TO2RE,

wrreq=>FIFO1TO2WREQ,

data=>FIFO1TO2DATAIN,

rdempty=>FIFO1TO2EMPTY,

wrfull=>FIFO1TO2FULL,

q=>FIFO1TO2DATAOUT);

------------------------------PROCESS_FIFO_DSP1_TO_DSP2FIFO1TO2WRITE:PROCESS(FIFO1TO2WE)

BEGIN

IF (FIFO1TO2WREQ='1' AND FIFO1TO3FULL='0')

THEN

FIFO1TO2DATAIN=DSP1DATA;

END IF;

END PROCESS FIFO1TO2WRITE;

FIFO1TO2READ:PROCESS(FIFO1TO2RE)

BEGIN

IF (FIFO1TO2RREQ='1' AND FIFO1TO2EMPTY='0')

THEN

DSP2DATA=FIFO1TO2DATAOUT;

ELSE

DSP2DATA="ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";

END IF;

END PROCESS FIFO1TO2READ;

圖5 部分防真結果

4 結論

文中針對異步FIFO設計中的難點(diǎn)和要點(diǎn),提出了具體的解決方案,并用VHDL語(yǔ)言給出了電路的設計,利用XILINX的Spartan-ⅡE 系列FPGA實(shí)現,并被應用于多種電路中,在實(shí)際應用中取得了較好的效果。

參考文獻:

[1]徐慶元,張天序,鐘勝. 基于USB總線(xiàn)的高速視頻采集系統設計[J]. 微計算機信息.2006,10-1:247-249.

[2]余松煌,周源華數字圖像處理[M]北京:電子工業(yè)出版社,1987

[3] Martti Juhola.Comparison of Algorithms for Standand Median Filtering IEEE-TRANS ASSP-39 1991

[4] 林敏,方穎立 VHDL數字系統設計與高層次綜合「M」.北京:電子工業(yè)出版社,2002



關(guān)鍵詞: FPGA FIFO

評論


相關(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>