基于MIG控制器的DDR3读写控制详解
基于MIG控制器的DDR3讀寫控制詳解
目的:詳細介紹FPGA中基于MIG IP核控制的DDR3詳細控制及內部邏輯
平臺:AX7350-Xilinx
軟件:Vivado 2017.4
1.MIG IP 核介紹
1.1 IP核架構
由下圖我們可以看到MIG這個IP核的架構如下,直觀可以看出,MIG主要有面向用戶端口和面向DDR端口,用戶通過使用MIG能夠通過用戶端口的信號,來完成對DDR SDRAM的訪問,達到簡化操作的目的。
1.2 IP核用戶端控制命令
首先我們需要了解與用戶命令相關的信號,并且了解命令能夠被正確接收的時序。在下面的接口列表中信號的I/O方向均是相對MIG IP核而言的。
1.3 仲裁模塊
本模塊的目的是為了來避免讀寫沖突的,在ddr進行寫操作的同時,也有可能有讀操作需要處理,這時候就會發(fā)生讀寫沖突,為了避免讀寫操作同時發(fā)生創(chuàng)建一個仲裁模塊,模塊的結構和信號列表如下:
這里簡單介紹以下本模塊的工作方式,本模塊的狀態(tài)跳轉入下圖所示,在仲裁狀態(tài)ARBIT下若接收到讀請求,則進入讀狀態(tài),若接收到寫請求,則進入寫狀態(tài)。若讀寫請求同時出現(xiàn)則優(yōu)先響應寫請求進入寫狀態(tài),當在讀寫狀態(tài)中接收到讀寫結束信號wr_done或者rd_done時,狀態(tài)將回到仲裁狀態(tài)。
1.4 時鐘帶寬
在使用MIG IP控制DDR3讀寫數(shù)據(jù)的時候總會遇到關于MIG控制器的時鐘問題,幾個時鐘總是搞得人暈頭轉向,為了進一步說明清楚其之間的相互關系,繪制了上圖所示的時鐘模塊圖(其中各時鐘具體參數(shù)是根據(jù)黑金AX7350(XILINX 7035)系列FPGA開發(fā)板配置,不同的硬件平臺其具體參數(shù)不同,但是時鐘結構類似)。
如上圖所示,MIG控制器一共可以分為三個部分:第一個是USER模塊,在這里可以理解為top模塊;第二個是MIG控制器,由于DDR3控制過程過去繁瑣,xilinx提供了一個可以讀寫DDR3的核,這個核也就是MIG控制器;第三個模塊也就是DDR3物理存儲芯片。
首先DDR3作為物理存儲介質,一定是需要時鐘的,所以MIG給了DDR3一個時鐘,也就是圖中的clk_ddr3。那么MIG也不可能平白無故的能產生時鐘,所以它也需要一個外部輸入時鐘,也就是圖中的clk_input,是由用戶端輸送給MIG控制器內部的時鐘分頻模塊。MIG內部的時鐘模塊將輸入的時鐘分成兩路輸出,一路clk_ddr3接到物理DDR3芯片中,另一路clk_user輸送到user模塊中的DDR_CTRL中。一般情況下,clk_ddr3:clk_user=4:1,如圖中所示,clk_ddr3取值為800M,那么clk_user的值為200M。
關于DDR3的帶寬計算
如上圖時鐘模塊可知,clk_ddr3=800M,DDR3的物理接口為32bit,按照4:1的比例計算的話,用戶端的接口寬度2432=256bit,其中2指的是時鐘上下沿雙沿讀取數(shù)據(jù),4指的是4:1的比例。
所以:
DDR3帶寬=1600M*32bit
仿真
每次涉及到仿真官方提供的IP時,都要詬病一下Altera做的多難用,Xilinx做的多人性化。Xilinx針對IP的仿真,只需要在生成IP后,點擊個Open Example Design即可,而腦殘的Altera非要給你整得特別復雜,非得你運行個tcl腳本(這還算簡單的呢),才能啟動仿真,不能和Xilinx學學嗎?
對于ZYNQ 7035的MIG IP核,啟動仿真后,初始化完成大約在55us左右,要耐心等待啊,初始化完成是第一步,初始化完成了,才能有后續(xù),不然的話,老老實實先讓初始化拉高再說吧。
總結
以上是生活随笔為你收集整理的基于MIG控制器的DDR3读写控制详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vivado开发编译流程
- 下一篇: verilog中wire和reg的区别,