《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA與DDR2 SDRAM的大容量異步FIFO緩存設計
基于FPGA與DDR2 SDRAM的大容量異步FIFO緩存設計
來源:微型機與應用2011年第4期
庾志衡1,葉俊明2,鄧迪文3
(1. 桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004; 2. 桂林電子科技大學
摘要: 為了滿足高速實時數據采集系統對所采集海量數據進行緩存的要求,通過研究FIFO的基本工作原理,利用FPGA和DDR2 SDRAM設計了一種高速大容量異步FIFO。使用Xilinx提供的存儲器接口生成器(MIG)實現FPGA與DDR2的存儲器接口,并結合片上FIFO和相應的控制模塊完成FIFO的基本框架結構。詳細介紹了各個組成模塊的功能和原理,并設計了專門的測試模塊。
Abstract:
Key words :

摘  要: 為了滿足高速實時數據采集系統對所采集海量數據進行緩存的要求,通過研究FIFO的基本工作原理,利用FPGADDR2 SDRAM設計了一種高速大容量異步FIFO。使用Xilinx提供的存儲器接口生成器(MIG)實現FPGA與DDR2的存儲器接口,并結合片上FIFO和相應的控制模塊完成FIFO的基本框架結構。詳細介紹了各個組成模塊的功能和原理,并設計了專門的測試模塊。
關鍵詞: 高速大容量異步FIFO; MIG; FPGA; DDR2 SDRAM

 異步FIFO作為數據緩存被廣泛應用于高速實時數據采集、不同時鐘域之間的高性能數據傳輸以及多機處理等系統中[1]。如在視頻系統中用于視頻信號轉換、視頻分割和畫中畫電視[2]。在高速傳感信號實時檢測處理系統中用于數據緩存等。隨著微電子技術的發展,FIFO芯片也在向著高速、大容量、小體積、低成本的方向發展。特別是Xilinx FPGA 提供的FIFO IP核已經能夠達到500 MHz的速率和4 MB的容量。這些都為FIFO的實際工程應用提供了廣闊的空間。但是在某些價格敏感、要求海量數據緩存的高速系統中,出于價格和性能方面的考慮,大容量異步FIFO芯片并非這類設計的最佳選擇。FPGA具有工作速度高、可配置性強、靈活性好等突出優點,使用Xilinx FPGA 提供的免費MIG IP核可以很容易實現FPGA與外部存儲器之間的接口,而DDR2 SDRAM具有單位空間存儲容量大、高數據帶寬、價格便宜等優點。因此根據FIFO的基本原理,通過采用Xilinx FPGA器件和Micron公司的256MB DDR2 SDRAM MT4HTF3264HY-667設計并實現了一種異步FIFO。該FIFO具有價格相對便宜、高數據帶寬、容量大、數據位寬可以根據需要進行相應靈活配置等特點,具有較高的工程實用價值。
1 大容量異步FIFO系統方案設計
    設計主要由兩塊片上FIFO、兩塊數據位寬轉換模塊、FIFO控制器、DDR2 SDRAM控制器、時鐘模塊和外部的DDR2 SDRAM構成[3]。其整體結構框圖如圖1所示。

    基本工作機理是當WR_EN有效為高電平,輸入數據DIN[N:0]在WR_CLK的上升沿觸發下經過“數據位寬轉換模塊1”之后輸出位寬為128 bit的數據寫入到位寬為128 bit,深度為2 K的“片上FIFO1”中。當FIFO控制器檢測到“片上FIFO1”快滿時,開始讀取其中的數據,按照地址順序遞增的方式通過DDR2 SDRAM控制器寫入到DDR2 SDRAM中,直到“片上FIFO1”被取空。當FIFO控制器檢測到“片上FIFO2”快空時,通過DDR2 SDRAM控制器按照地址順序遞增讀取DDR2 SDRAM中的數據,寫入到“片上FIFO2”中,直到“片上FIFO2”被寫滿為止。DDR2 SDRAM只有一組地址總線,而在該項設計中需要對DDR2 SDRAM進行獨立的讀寫操作。為此,在FIFO控制器中定義了兩組地址總線用于分別記錄讀寫操作地址,當FIFO控制器處于寫DDR2 SDRAM狀態時,選通寫地址總線(wr_addr)與DDR2 SDRAM的地址總線(ddr2_addr)互聯。當FIFO控制器處于讀DDR2 SDRAM狀態時,選通讀地址總線(rd_addr)與DDR2 SDRAM的地址總線(ddr2_addr)互聯。另外為了保證讀數據有效,在FIFO控制器中設計有相應的限制語句,只有當讀地址(rd_addr)小于寫地址(wr_addr)時,才允許讀DDR2 SDRAM中的數據。“片上FIFO2”的空滿標志信號作為所設計的FIFO的空滿標志信號。從外部看,該設計是一個具有標準接口的大容量異步FIFO,而不用關心其內部操作。而且只需要對數據轉換模塊中的相關參數進行簡單的改動,便可以改變該大容量異步FIFO的位寬(THE WIDTH)。
2 高速大容量異步FIFO設計
    如圖1所示,設計主要集中在FPGA部分,包括數據位寬轉換模塊、FIFO控制器、時鐘模塊、DDR2 SDRAM控制器設計以及片上FIFO的定制。
2.1 DDR2 SDRAM控制器設計
    存儲器控制器需要對包括存儲器控制狀態機在內的所有構建模塊加以集成。控制器狀態機必須按正確順序發出命令,同時還要考慮存儲器器件的時序要求。而且存儲器控制器狀態機因存儲器架構(DDR、DDR2、QDRII、RLDRAM等)、組數(BANK)、數據總線寬度、存儲器器件的寬度和深度、組和行存取算法等變量的不同而異。因此,創建存儲器控制器是一項極其復雜、精細的任務。
    使用MIG(Memory Interface Generation)軟件工具[4]可以生成一個完整的設計,減少了設計人員的工作量,簡化了系統設計。設計人員通過在MIG GUI中設置系統和存儲器參數,整個過程不用一分鐘,MIG工具即可生成存儲控制器有關的RTL和UCF文件。MIG設計流程如圖2所示。

    設計采用Xilinx提供的免費IP核 MIG2.3來設計DDR2 SDRAM控制器。所用FPGA為Virtex-5  FPGA XC5vlx110T。控制器原理框圖如圖3所示。

    其中時鐘&復位模塊(Infrastructure)用于生成控制器所需要的各類時鐘和復位信號,它的輸入時鐘可根據用戶需求選擇單端或差分時鐘信號輸入。延時控制單元(Idelay_ctrl)用于同步校準設計中的延時單元以減少功耗。狀態控制單元(Ctrl)是控制器中的最關鍵單元,它生成DDR2 存儲器接口和用戶接口所必需的所有控制信號。物理層控制單元(Phy_top)是設計的物理層接口的頂層模塊,它封裝了FPGA 與 DDR2 SDRAM的物理接口信號。用戶接口單元(Usr_top)作為設計中的用戶接口,用于接收和存儲用戶數據、命令和地址信息。最終將復雜的DDR2 SDRAM訪問操作封裝成簡單的讀寫兩種操作。設計采用的Micron DDR2 SDRAM SODIMM MT4HTF3264HY-667容量為256MB、帶寬5.3 GB/S、數據位寬64 bit、含10位列地址線、13位行地址線和2位BANK地址線。上述MIG控制器右側信號端口用于連接DDR2 SDRAM物理引腳,右側信號端口用于連接輸入時鐘和來自FIFO控制器的數據和控制信號線。這些端口類型和位寬剛好與所選定的MT4HTF3264HY-667相匹配。
2.2 片上FIFO設計
    所設計的FIFO數據輸入/輸出端與外界的數據傳輸、FPGA與DDR2 SDRAM間的通信分別屬于不同的時鐘域,設計中通過采用兩塊小容量片上FIFO[5]作為緩沖來實現他們之間的跨時鐘域數據傳輸。根據所選定DDR2 SDRAM的性能參數,兩塊片上FIFO的數據位寬設置為128 bit,深度1 kHz。
2.3 FIFO控制器設計
    FIFO控制器用于控制兩塊片上FIFO與DDR2 SDRAM之間的數據通信,其狀態轉移圖如圖4所示。由于DDR2 SDRAM具有很高的數據帶寬,MT4HTF3264-667的帶寬為5.3 GB/S。遠大于FIFO1輸入/輸出端的數據帶寬。所以FIFO控制器根據兩塊片上FIFO的數據量狀況,對DDR2 SDRAM總線進行分時復用。

    該狀態機工作過程為:
    (1)系統上電或復位后,狀態機進入空閑狀態(idle),在該狀態下輸入端片上FIFO1讀使能信號(rd_en_wrfifo)、輸出端片上FIFO2寫使能信號(wr_en_rdfifo),DDR2 SDRAM控制器的用戶地址FIFO使能信號(app_af_wren),用戶數據FIFO使能信號(app_wdf_wren)均無效。
    (2)在空閑狀態下,當檢測到輸入端片上FIFO1幾乎滿,并且DDR2 SDRAM控制器初始化完畢,控制器發送寫DDR2 SDRAM命令(cmd =3’b000)。將讀到的數據直接寫入DDR2 SDRAM由于DDR2 SDRAM控制器突發長度為4,地址總線按4累加。當檢測到片上FIFO1被取空時,回到空閑狀態。
    (3)在空閑狀態,當檢測到輸出端片上FIFO2幾乎空,并且沒有檢測到輸入端片上FIFO1幾乎滿時,開始讀DDR2 SDRAM中的數據,并將讀出的數據寫入到輸出端片上FIFO2。待FIFO2寫滿后,回到空閑狀態。
2.4 時鐘模塊設計
    控制器所需要的系統時鐘(sys_clk)和200 MHz時鐘(idly_clk_200)由外部33  MHz時鐘信號通過FPGA的全局時鐘網絡后,分別輸入到兩個定制好的DCM后輸出生成。
2.5 數據位寬轉換模塊設計
    該模塊用于匹配N位的輸入/輸出數據位寬和兩個片上FIFO的128 bit數據位寬,實現所設計的大容量異步FIFO位寬可配置功能。輸入端數據位寬轉換模塊的基本工作機理是將在WR_CLK時鐘作用下連續輸入的128/N個數據按先后順序由高到低組成128 bit數據輸出到片上FIFO1的數據輸入端口,同時生成一個時鐘上升沿作為FIFO1的寫時鐘,將該128 bit寬數據寫入到片上FIFO1中。輸出端數據位寬轉換模塊將從片上FIFO2讀到的128 bit寬數據是由高到低依次拆分為128/N個N位寬數據,并且在RD_CLK上升沿先后輸出這些數據。當這些數據輸出完畢后,該模塊輸出一個上升沿脈沖作為輸出端片上FIFO2的讀時鐘信號,讀取下一個128 bit寬的數據。
3 實驗測試
    為了測試系統的性能,設計了專門的測試系統對所設計的FIFO進行測試,如圖5所示。

    基本工作機理是,在FPGA內部定制一塊存有4KB已知數據的嵌入式ROM。該ROM在時鐘CLK和循環地址計數器的作用下輸出數據流,該數據流經過待驗證的FIFO緩存后,通過串口發送到上位機上顯示。通過比較上位機接收到的數據與ROM中存儲的數據是否一致,便可以判斷系統設計是否正確。
    分別對不同位寬的FIFO,通過改變ROM的時鐘CLK模擬生成FIFO的高低速率輸入數據流,進行反復的實驗測試,結果表明上位機上接收到的數據與ROM中存儲的數據是一致的。
參考文獻
[1] 金明,羅飛路,朱霞飛.FIFO芯片在高速系統中的應用[J].電子技術應用,1998,24(3):61-62.
[2] 郭照南,李儒峰.FIFO 芯片AL422B在視頻系統中的應用[J].湖南工程學院學報, 2002,12(1):37-38.
[3] 徐欣,周舟,李楠,等.基于DDR2 SDRAM的高速大容量異步FIFO的設計與實現[J].中國測試,2009,35(6):34-37.
[4] Memory interface solutions user guide. http://www.xilinx.com/support/documentation/ip_documentation/ug086.pdf.
[5] LogiCORE? IP FIFO Generator v6.2. http://www.xilinx.com/support/documentation/ip_documentation/fifo_generator_ug175.pdf.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一本色道久久加勒比88综合| 亚洲日本电影| 亚洲国产一区二区a毛片| 国产手机视频一区二区| 国产精品麻豆欧美日韩ww| 欧美日本精品| 欧美激情一区二区三区全黄| 欧美v国产在线一区二区三区| 久久一区二区三区四区| 久久精品国产久精国产思思| 欧美在线视频网站| 久久国产免费| 久久久蜜桃精品| 久久久久国产精品人| 久久国产精品毛片| 久久高清免费观看| 久久久久se| 蜜月aⅴ免费一区二区三区| 玖玖综合伊人| 欧美电影专区| 欧美精品亚洲一区二区在线播放| 欧美紧缚bdsm在线视频| 欧美日韩国产一级| 欧美三级欧美一级| 国产精品久久久久久一区二区三区| 国产精品国产三级国产普通话三级| 国产精品久久777777毛茸茸| 国产精品揄拍一区二区| 国产亚洲欧美日韩精品| 精品动漫一区| 91久久综合亚洲鲁鲁五月天| 日韩亚洲不卡在线| 亚洲一区二区三区色| 先锋影音久久久| 亚洲第一中文字幕在线观看| 亚洲国产一区二区a毛片| 亚洲免费观看| 亚洲综合色视频| 久久精品国产一区二区三| 久久人人爽国产| 欧美黄色免费网站| 欧美色另类天堂2015| 国产精品普通话对白| 国产日韩欧美自拍| 韩国女主播一区| 亚洲激情视频| 亚洲一区二区少妇| 亚洲国产另类精品专区| 亚洲小视频在线观看| 久久狠狠亚洲综合| 欧美大片18| 国产精品二区在线| 精品成人久久| 一区二区欧美在线| 欧美一区二区三区久久精品茉莉花 | 亚洲欧美日韩国产一区| 亚洲第一页自拍| 亚洲一级特黄| 久久中文欧美| 欧美色一级片| 很黄很黄激情成人| 这里只有精品视频在线| 亚洲电影免费观看高清| 亚洲一区国产精品| 久久精品一二三| 欧美日韩亚洲精品内裤| 韩日精品视频| 一本色道久久综合一区| 久久国产精品毛片| 亚洲欧美激情一区二区| 欧美成人一区二区三区| 国产精品视频免费观看| 亚洲人成亚洲人成在线观看图片| 亚洲一区在线免费| 99国产精品视频免费观看一公开 | 欧美高清视频在线播放| 国产美女一区二区| 99国产精品一区| 最新亚洲一区| 久久精品电影| 国产精品第一区| 亚洲欧洲日韩女同| 亚洲国产精品久久久久秋霞蜜臀| 亚洲欧美变态国产另类| 欧美精品日韩一本| 狠狠色综合一区二区| 亚洲欧美精品在线| 亚洲天堂激情| 欧美久久精品午夜青青大伊人| 国产一区二区久久| 亚洲欧美精品suv| 亚洲伊人伊色伊影伊综合网| 欧美精品一区二区精品网 | 91久久线看在观草草青青| 欧美影院精品一区| 午夜欧美精品| 欧美三级午夜理伦三级中视频| 亚洲第一色在线| 久久精品视频在线免费观看| 欧美一区二区成人| 国产精品白丝av嫩草影院| 亚洲乱亚洲高清| 日韩午夜电影av| 欧美成人午夜激情| 影音先锋久久资源网| 久久精品导航| 久久久久国产精品午夜一区| 国产欧美精品一区二区三区介绍| 一本色道88久久加勒比精品| 一道本一区二区| 欧美日韩国产色站一区二区三区| 91久久精品国产91久久性色tv| 亚洲区欧美区| 欧美大秀在线观看| 亚洲电影免费| 亚洲人成人一区二区三区| 免费在线成人av| 亚洲国产精品激情在线观看| 91久久精品国产| 欧美成人一区二区三区片免费| 在线视频国产日韩| 亚洲精品免费在线播放| 欧美超级免费视 在线| 永久免费精品影视网站| 亚洲国产日韩欧美| 欧美成人免费全部观看天天性色| 亚洲国产成人在线视频| 99re8这里有精品热视频免费| 欧美激情精品久久久久久变态 | 亚洲精品久久嫩草网站秘色| 亚洲免费观看在线观看| 欧美精品自拍| 一区二区av在线| 亚洲中无吗在线| 国产欧美在线播放| 久久激情视频免费观看| 免费日韩av| 亚洲美女黄网| 午夜免费日韩视频| 国产主播一区二区三区| 亚洲高清123| 欧美精品一区二区三区蜜臀| 一区二区三区www| 欧美一区二区三区在线视频| 国产在线国偷精品产拍免费yy| 亚洲国产成人在线| 欧美精品一区二区三区在线看午夜 | 蜜桃av综合| 亚洲最新在线视频| 欧美一区二区三区视频| 国内久久精品| 夜夜嗨av一区二区三区四季av| 欧美三级欧美一级| 午夜精品美女久久久久av福利| 久久在线免费视频| 亚洲理伦电影| 欧美一区二区三区播放老司机| 韩国亚洲精品| 一区二区三区色| 国产深夜精品福利| 亚洲美女精品一区| 国产精品福利片| 亚洲国产影院| 国产精品第2页| 亚洲国产高清自拍| 欧美三级电影网| 亚洲第一精品夜夜躁人人爽| 欧美极品aⅴ影院| 亚洲男人的天堂在线aⅴ视频| 免费欧美日韩| 亚洲天堂av在线免费| 可以看av的网站久久看| 一本久久综合亚洲鲁鲁五月天| 久久久久网站| 一本色道久久综合亚洲精品按摩| 久久国产婷婷国产香蕉| 亚洲精品免费一二三区| 久久精品人人做人人综合 | 亚洲福利视频三区| 国产精品成人一区二区三区吃奶| 亚洲盗摄视频| 国产精品夜色7777狼人| 亚洲看片网站| 国产午夜精品久久久久久久| av成人天堂| 经典三级久久| 欧美一区午夜视频在线观看| 亚洲欧洲一区二区在线播放| 久久精品九九| 一本久久综合亚洲鲁鲁| 免费人成网站在线观看欧美高清| 亚洲男女自偷自拍| 欧美精品在线视频| 久久精品一区蜜桃臀影院| 国产精品久久久久久影视| 日韩视频在线播放| 一区二区三区在线观看国产| 欧美亚洲日本国产| 一区二区精品| 欧美精品久久99|