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
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 亚洲高清日韩heyzo| 亚洲高清中文字幕| 久久久噜噜噜| 日韩a级毛片| 午夜免费视频网站| 手机在线免费毛片| 美女啪啪无遮挡| 久久精品国产999大香线焦| 国产成人综合亚洲欧洲色就色| 尤物特级无码毛片免费| 国产午夜福利亚洲第一| 欧美激情福利| 亚洲国产天堂久久综合| 青青草国产在线视频| 国产第一页屁屁影院| 久久精品无码专区免费| 美女一区二区在线观看| 亚洲综合激情另类专区| 国产成人精品在线1区| 中国国产高清免费AV片| 无码AV高清毛片中国一级毛片| 成人精品午夜福利在线播放| 欧美激情视频二区| 日a本亚洲中文在线观看| 2021国产v亚洲v天堂无码| 日韩黄色精品| 国产菊爆视频在线观看| 精品国产www| 2021精品国产自在现线看| 国产激爽爽爽大片在线观看| 国产极品嫩模在线观看91| 中文字幕免费在线视频| 波多野结衣久久高清免费| 久久99热66这里只有精品一| 国模沟沟一区二区三区| 视频一本大道香蕉久在线播放| 欧美国产综合视频| 国产成人成人一区二区| 国产污视频在线观看| 欧美日韩国产系列在线观看| 在线播放国产一区| 久久 午夜福利 张柏芝| 1769国产精品视频免费观看| igao国产精品| 亚洲精品手机在线| 亚洲日本中文字幕乱码中文 | 中文字幕在线观看日本| 中文无码精品A∨在线观看不卡| 午夜无码一区二区三区在线app| 国产高清毛片| 免费国产好深啊好涨好硬视频| 青青青视频免费一区二区| 精品无码一区二区三区电影| 毛片免费观看视频| 国产麻豆永久视频| 国产哺乳奶水91在线播放| 国产成人精品男人的天堂| 最新亚洲人成网站在线观看| 欧洲一区二区三区无码| 亚洲欧洲日韩综合| 久久久精品无码一区二区三区| 成人福利在线视频免费观看| 性做久久久久久久免费看| 国产真实乱子伦精品视手机观看| 亚洲人精品亚洲人成在线| 2021最新国产精品网站| 亚洲V日韩V无码一区二区| 欧美日韩久久综合| 狼友av永久网站免费观看| 看国产一级毛片| 亚洲浓毛av| 欧美另类精品一区二区三区| 色婷婷天天综合在线| 日本人妻一区二区三区不卡影院 | 香蕉蕉亚亚洲aav综合| 亚洲精品国产自在现线最新| 日韩av无码精品专区| 国产99精品视频| 欧美日韩高清在线| 国产农村妇女精品一二区| 成人小视频在线观看免费| 人妻丰满熟妇啪啪|