999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的多通道FIFO存儲控制器的設計與實現

2019-02-20 02:07:48呂達張加宏李敏冒曉莉楊天民謝麗君
現代電子技術 2019年4期
關鍵詞:指令設計

呂達 張加宏 李敏 冒曉莉 楊天民 謝麗君

關鍵詞: FIFO; 有限狀態機; Verilog HDL; ModelSim; FPGA; 存儲控制器; 輪詢時間; 資源利用率

中圖分類號: TN830.3; TP302; TP332 ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ?文章編號: 1004?373X(2019)04?0001?04

Design and implementation of multi?channel FIFO memory controller based on FPGA

L? Da1, ZHANG Jiahong1,2,3, LI Min1,3, MAO Xiaoli1,3, YANG Tianmin1, XIE Lijun1

(1. School of Electronics and Information Engineering, Nanjing University of Information Science & Technology, Nanjing 210044, China; 2. Jiangsu Collaborative Innovation Center of Atmospheric Environment and Equipment Technology, Nanjing University of Information Science & Technology, Nanjing 210044, China;

3. Jiangsu Key Laboratory of Meteorological Observation and Information Processing, Nanjing University of Information Science & Technology, Nanjing 210044, China)

Abstract: A multi?channel FIFO memory controller is designed to solve the conflict problem occurring when multiple functional modules access the same memory unit simultaneously. The work principle of the controller and the architecture design of the system are given. The finite state machine (FSM) and Verilog HDL language are used to design various modules. The pre?simulation and post?simulation are completed by using the ModelSim. The board unloading function verification is completed on the Xilinx FPGA platform. The practical results show that the memory controller can maximize the memory access efficiency on the premise of ensuring no access conflicts occur, provide an easy?to?use user interface, and easily define parameters such as the number of channels and the polling time of each channel according to the specific application, thereby achieving the highest resource utilization rate.

Keywords: FIFO; finite state machine; Verilog HDL; ModelSim; FPGA; memory controller; polling time; resource utilization rate

0 ?引 ?言

FPGA在對實時性要求高而且數據流量大或者算法復雜度高的應用場合中使用越來越廣泛[1]。而FPGA的應用一般都會涉及對外部存儲單元數據存儲和讀取問題,所以設計一款接口簡單易用、訪問效率高、性能穩定的存儲控制器至關重要[2?4]。目前存儲控制器廣泛采用LocalLink接口總線。該接口總線由寫入數據線、讀取數據線、地址線、指令線和握手信號線組成。其中握手信號線包括local_ready和local_valid。local_ready用于通知外部模塊該控制器處于空閑狀態,此時外部模塊可對該控制器發送讀/寫請求。local_valid用于通知外部模塊數據可用,此時外部模塊可從讀取數據線上取走數據[5]。采用LocalLink接口總線的存儲控制器擁有設計難度低、使用簡單等優點的同時也存在以下不足:首先,不支持多個外部功能模塊同時訪問同一個控制器下掛載的存儲單元,外部多個功能模塊必須分時使用同一控制器,這就給外部功能模塊之間的協調帶來了困難,甚至造成存儲訪問沖突;其次,握手過程需占用時鐘周期,這就導致了存儲器訪問效率低下問題;最后,由于不帶數據緩沖,該存儲控制器只能應用在數據流量相對穩定的場合。

本文設計帶FIFO的多通道存儲控制器,使得多個外部功能模塊通過不同通道可以互不干擾地訪問同一存儲器單元[6]。外部模塊可以在任何時候將指令、數據和地址寫入FIFO或者從FIFO中讀取數據,而不需要等待該控制器空閑,也無需等待數據可用,提高了存儲器訪問效率。通過設置FIFO深度以滿足不同的突發訪問要求。對于數據流量相對穩定的應用,可設置較小的FIFO深度以節省FPGA資源,而對于短時間內存儲器訪問量大的應用,則設置較大的FIFO深度,以防止數據遺漏。本文以ST公司的M25P64 NORFLASH為例,詳細闡述了帶FIFO的多通道存儲控制器設計過程。前仿真和后仿真使用Micron公司提供的M25P64仿真模型,最后在基于Xilinx公司的FPGA芯片XC6SLX45和在線邏輯分析儀ChipScope下板驗證和測試。

1 ?系統設計

1.1 ?架構設計

本文設計的帶FIFO的多通道存儲控制器以SPI接口NORFLASH為示例,主要論述各通道仲裁和管理機制以及設計方法,而不是針對SPI接口NORFLASH的讀/寫過程展開敘述。圖1是帶FIFO的四通道存儲控制器系統架構簡圖。其中通道0和通道1只支持讀指令,通道2和通道3只支持寫指令和擦除指令。

圖1中PLL是鎖相環模塊,其不僅負責提供該控制器的系統時鐘,還負責提供外部存儲器時鐘flash_clk、FIFO時鐘fifo_clk以及外部存儲器數據捕獲時鐘cap_clk。各時鐘為同頻率異相位關系,具體各時鐘的相位關系在后仿真中初步確定,在下板驗證中最終確定。仲裁器的作用是決定各通道是否使能、控制多路器和清零輪詢計數。輪詢計數器用于記錄每個通道輪詢時間。指令FIFO用于存放指令數據。讀FIFO用于緩存控制器已經從外部存儲讀取到的數據。寫FIFO用于緩存用戶將要寫入外部存儲器的數據。讀管理器和寫管理器分別負責各自通道指令譯碼、執行操作和信號反饋等。

本文設計的存儲控制器接口簡單而高效。表1列出了該控制器的接口總線,通道0和通道1包括所有指令類接口和讀取類接口,通道2和通道3包括所有指令類接口和寫入類接口。

1.2 ?仲裁器設計

仲裁機制采用時間片輪轉方式,具體過程如下所述:首先,仲裁器在將輪詢計數器清零后使能通道0管理器并設置對應多路器;然后,通道0管理器開始執行操作,當通道0管理器檢測到輪詢計數器計數值超出預設值,也即時間片消耗完,向仲裁器發送完成信號;最后,仲裁器收到通道0完成信號后,關閉通道0,并將輪詢計數器清零后使能下一個通道,依次循環,達到各通道合理訪問外部存儲單元的目的。

仲裁器的作用是協調各個通道對外部存儲單元的訪問請求,不但控制多路器和各通道管理器,還負責控制初始化模塊和安全模塊。仲裁器狀態機如圖2所示,存儲控制器系統復位后,由IDLE狀態進入S0狀態,將多路器選擇為初始化模塊,隨后進入S1狀態,使能初始化模塊并獲得外部存儲芯片ID。當初始化完成后進入S2狀態,將多路器選擇為安全模塊,隨后進入S3狀態,使能安全模塊,安全模塊根據初始化模塊獲得的ID進行安全校驗。安全校驗不通過仲裁器鎖死在S3狀態,否則進入S4狀態,S4狀態中將多路器選擇為讀模塊并清零輪詢計數器,隨后進入S5狀態,使能通道0管理器。當收到通道0管理器反饋的完成信號后,進入S6狀態,關閉通道0管理器并清零輪詢計數器,隨后進入S7狀態,使能通道1管理器。如此依次執行通道1、通道2和通道3操作,當收到通道3管理器反饋的完成信號后,再次進入S4狀態。

1.3 ?讀管理器和寫管理器設計

讀管理器和寫管理器除了具備指令譯碼,執行操作和信號反饋等基本功能外,為了滿足更苛刻的輪詢時間要求和優化執行效率,還具備指令拆分和指令綜合功能。指令拆分功能表述如下:當某一條指令需要讀取的數據較多,執行時間超過一個輪詢時間片時,為了不占用其他通道的輪詢時間,必須暫停該條指令,為其他通道讓出使用權。指令綜合功能表述如下:為了提高讀取數據的效率,將多條地址連續的讀指令合并成一條讀指令,而節省重復發送指令碼、訪問地址的時間。

讀管理器的狀態機如圖3所示,在S0狀態中判斷cmd_record[29:24]數據量是否為0。數據量為0表示在上一次輪詢該通道時遺留下未完成的指令,此時跳轉到S1狀態;如果不為0且指令FIFO不為空,則進入S10,如果數據量為0而指令FIFO為空則進入OVER狀態。S10和S11是從指令FIFO中讀取新指令的過程,完成后同樣進入S1狀態。S1狀態中首先判斷指令名是否合法,如果不合法進入ERROR狀態,合法則判斷讀FIFO是否已經被寫滿,寫滿將rd_overflow拉高并進入OVER狀態,未寫滿進入S2狀態。S2~S5狀態是讀取4 B數據并更新cmd_record的過程,完成S5后進入S6狀態。在S6狀態中首先檢查輪詢計數器是否大于等于預設值或者讀FIFO是否為空,如果計數器大于預設值或者讀FIFO為空,則進入S12狀態,否則判斷cmd_record[29:24]數據量是否為0,不為0則進入S3狀態繼續讀取數據,為0檢測指令FIFO是否為空,為空同樣進入S12狀態,否則進入S7狀態。S7,S8完成從指令FIFO中讀取新的指令操作,如果地址連續則不需要結束本次讀操作而直接從S8進入S3狀態繼續進行讀操作,否則進入S9狀態結束本次讀操作并進行新的讀操作。S12中主要完成關閉讀模塊操作,之后進入OVER狀態,OVER狀態將done拉高。寫管理器的狀態機設計與讀管理器類似,不再贅述。

2 ?仿真和分析

2.1 ?前仿真

帶FIFO的多通道存儲控制器在Xilinx ISE 14.7環境下開發。以Micron公司提供的M25P64模型在ModelSim中進行行為級仿真。帶FIFO的多通道存儲控制器將對外部存儲單元的操作轉化成對FIFO的操作,FIFO由Xilinx FIFO生成器IP核構造。為了盡可能消除毛刺,提高系統穩定性,本文設計中所有的多路器都采用時序邏輯觸發的方式[7?9]。

前仿真時序如圖4所示,p0通道和p1通道可以不沖突地輪流讀取數據。在此過程中人為設置了錯誤的指令名和FIFO過載等非正常狀態,而從仿真的時序圖中也不難發現這些非正常狀態均能得到預期的反饋。

2.2 ?后仿真

綜合并布局布線后仿真可以全面地包含器件延時、連線延時以及時鐘毛刺等信息,不但可以全面地驗證所設計的模塊功能是否滿足設計要求,還能保證穩定性要求。本文設計中后仿真要解決的核心問題是窗口問題,即將時鐘信號的采樣邊沿調整到有效窗口的中心位置。

圖5是fifo_clk后仿真時序圖,系統時鐘設置為50 MHz。如圖5中橢圓標示處,fifo_clk上升沿處于有效窗口中心位置,此時,能保證最優的建立時間和保持時間。flash_clk,cap_clk時鐘調節過程同fifo_clk。

經過后仿真時鐘相位調節,Micron公司提供的M25P64仿真模型和Xilinx庫均無報錯,因而滿足時序要求。

3 ?下板驗證及測試

ChipScope是ISE開發環境中的一個工具,集成了關鍵邏輯分析器和其他測試和測量組件,用于測試Xilinx FPGA芯片內部的目標設計[10?11]。本文設計的帶FIFO的多通道存儲控制器在Xilinx公司的FPGA芯片XC6SLX45中進行驗證和測試。該設計主要資源使用情況如下:使用邏輯片資源657,占9%;使用1個PLL資源,占25%;使用6 KB嵌入式RAM資源,占2%。

圖6a)為ChipScope窗口。從ChipScope中觀察到本文設計的存儲控制器能從外部存儲單元中讀取數據。圖6b)為測試指令綜合功能。寫入3條地址連續的讀/寫指令,如圖6b)中p0_cmd_rd_data所示,3條指令被綜合成一條讀指令,如圖6b)中flash_addr所示。綜上所述,本文設計與實現的帶FIFO的多通道存儲控制器達到了預期功能,具有較強的實用性。

4 ?結 ?語

本文以實際應用為出發點,實現帶FIFO的多通道存儲控制器,使得多個外部模塊能夠高效而又無沖突訪問同一外部存取單元。本文設計不局限于SPI接口NORFLASH,其他類型存儲單元只要改變對應接口模塊和讀/寫模塊即可,因而具有良好的可移植性和通用性。本文設計具備高度的可配置性,用戶可以根據具體應用自由定義通道數量、各通道功能、各通道輪詢時間、FIFO深度等,以達到最高資源利用效率。

參考文獻

[1] LIU B L, LIU B Q, PAN L, et al. Research and design of video acquisition system based on FPGA [J]. Applied mechanics and materials, 2014, 644: 3472?3475.

[2] 李明明,王全忠,郭偉,等.一種NOR FLASH控制器驗證平臺的研究[J].現代電子技術,2015,38(10):162?165.

LI Mingming, WANG Quanzhong, GUO Wei, et al. Research on a verification platform for NOR FLASH controller [J]. Modern electronics technique, 2015, 38(10): 162?165.

[3] 呂波,張涌,黃侃,等.基于FPGA的四口RAM設計與實現[J].儀表技術與傳感器,2017(1):34?37.

L? Bo, ZHANG Yong, HUANG Kan, et al. Design and implementation of quad?port RAM based on FPGA [J]. Instrument technique and sensor, 2017(1): 34?37.

[4] 吳長瑞,徐建清,蔣景紅.基于Kintex?7 FPGA的DDR3 SDRAM接口應用研究[J].現代電子技術,2017,40(24):21?24.

WU Changrui, XU Jianqing, JIANG Jinghong. Application of DDR3 SDRAM interface based on Kintex?7 FPGA [J]. Modern electronics technique, 2017, 40(24): 21?24.

[5] MAHMOODI M R, SAYEDI S M. A low cost high speed FPGA?based image processing framework [J]. International journal of modern education and computer science, 2016, 8(3): 11?21.

[6] GONG Z P, CHEN T F, ZOU F, et al. Implementation of multi?channel FIFO in one blockRAM with parallel access to one port [J]. Journal of computers, 2014, 9(5): 1193?1200.

[7] 張松,李筠.FPGA的模塊化設計方法[J].電子測量與儀器學報,2014,28(5):560?565.

ZHANG Song, LI Jun. Modular design of FPGA design methodology [J]. Journal of electronic measurement and instrumentation, 2014, 28(5): 560?565.

(上接第4頁)

[8] 關珊珊,周潔敏.基于Xilinx FPGA的SPI FLASH控制器設計與驗證[J].電子器件,2012,35(2):216?220.

GUAN Shanshan, ZHOU Jiemin. Design and verification of SPI FLASH controller based on Xilinx FPGA [J]. Chinese journal of electron devices,2012,35(2):216?220.

[9] 黃宏智,周欽強,黃飛龍.新型自動氣象站NAND FLASH存儲系統的設計與實現[J].電子測量技術,2016,39(12):132?135.

HUANG Hongzhi, ZHOU Qinqiang, HUANG Feilong. Design and realization of the storage system for new automatic weather station based on NAND FLASH [J]. Electronic measurement technology, 2016, 39(12): 132?135.

[10] Xilinx. Product guide: LogiCORE IP FIFO generator v9.3 [EB/OL]. (2012?12?18) [2017?10?25]. https://www.xilinx.com/support/documentation/ip_documentation/fifo_generator/v9_3/pg057?fifo?generator.pdf.

[11] Xilinx. User guide: ChipScope pro software and cores [EB/OL]. (2012?10?16)[2017?10?26]. https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/chipscope_pro_sw_cores_ug029.pdf.

猜你喜歡
指令設計
聽我指令:大催眠術
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 国产成人精品视频一区二区电影| 国产成人三级| 亚洲av无码成人专区| 日韩高清一区 | 丁香婷婷久久| 国产精品极品美女自在线看免费一区二区| 亚洲精品日产精品乱码不卡| 亚洲欧美自拍中文| 久久婷婷色综合老司机| 凹凸精品免费精品视频| 亚洲成人黄色网址| 亚洲a级毛片| 免费无码AV片在线观看国产| 国产美女自慰在线观看| 欧美色香蕉| 国产精品福利在线观看无码卡| 亚洲性一区| 五月婷婷精品| 国产成人精品亚洲77美色| 亚洲va在线观看| 99一级毛片| 国产成人精品男人的天堂| 成人免费一区二区三区| 亚洲国产精品日韩av专区| 一级香蕉人体视频| 国产尤物视频网址导航| 国产高清无码麻豆精品| 亚洲精品欧美重口| 亚洲色图欧美在线| 国产无码性爱一区二区三区| 黄色在线网| 亚亚洲乱码一二三四区| 国产玖玖玖精品视频| 欧美α片免费观看| 97狠狠操| 亚洲经典在线中文字幕| 国产中文在线亚洲精品官网| 日韩欧美一区在线观看| 日韩国产综合精选| 国产流白浆视频| 欧亚日韩Av| 真实国产乱子伦视频| 欧美三级日韩三级| 国产精品99在线观看| 伊人天堂网| 制服丝袜 91视频| 亚洲自拍另类| 色婷婷电影网| 国产精品一区在线麻豆| 日韩经典精品无码一区二区| 超碰免费91| 亚洲最大福利视频网| 国产91高跟丝袜| 国产精品综合色区在线观看| 四虎免费视频网站| 国产精品开放后亚洲| 国产91av在线| 女高中生自慰污污网站| 精品久久人人爽人人玩人人妻| 992Tv视频国产精品| 在线欧美一区| 国产69精品久久| Aⅴ无码专区在线观看| 国产成人91精品| 国产美女免费| 欧美日韩国产一级| 欧美福利在线播放| 青青青视频91在线 | 亚洲一级毛片免费看| 蝴蝶伊人久久中文娱乐网| 国产呦视频免费视频在线观看| 精品国产自在现线看久久| 婷婷五月在线视频| 国产亚洲欧美日韩在线观看一区二区| 亚洲国产成人自拍| 91久久国产热精品免费| 国产人人乐人人爱| 2020精品极品国产色在线观看| 亚洲一级无毛片无码在线免费视频 | 亚洲三级色| 日韩免费视频播播| 欧美在线精品一区二区三区|