1. 背景
這篇文章主要介紹了DDR3IP核的寫實現。
2. 寫命令和數據總線介紹
DDR3 SDRAM控制器IP核主要預留了兩組總線,一組可以直接綁定到DDR3 SDRAM芯片端口,一組是留給用戶端使用的,框圖如圖1所示。
如圖1 所示的中間部分為我們調取的IP 核,user FPGA Logic 為用戶端邏輯,DDR2/DDR3 SDRAM 為存儲芯片。其中IP 核與存儲芯片之間的總線大部分以ddr 作為開頭,這部分總線我們只需要在top 模板設為端口即可,無需我們控制。用戶端與IP 核之間的總線大部分以app 作為開頭,并且從用戶端輸出到IP 核的信號線需要我們產生。
在了解了大概的框架之后,下面我們首先通過以app 為開頭的總線實現對IP寫控制操作。為了更好的了解相關的參數,我們可以登錄Xilinx 官網下載UG586手冊,具體的下載地址如下所示: https://www.xilinx.com/support/documentation/ip_documentation/mig_7serie...
通過手冊我們可以了解到,為了實現寫,我們需要控制app 端的命令總線和數據總線,下面先對app 端命令總線作解釋,此處的input 和output 均現對于IP核而言。
端口名稱 | 端口名稱 | 端口描述 |
app_cmd | input | 3bit命令總線,3’b000代表寫,3’b001代表讀。 |
app_addr | input | 30bit地址總線(位寬根據芯片不同會不同)。 |
app_en | input | 1bit命令使能信號,該信號有效(高電平),且app_rdy也有效時,IP核才可以接收到用戶端發送的app_cmd和app_addr。 |
app_rdy | output | 1bit命令空閑信號,該信號有效(高電平),且app_en也有效時,IP核才可以接收到用戶端發送的app_cmd和app_addr。 |
在了解到命令端每一個信號的作用后,我們可以給出下圖2 所示的波形,其中①、②、④處的指令均不會被IP 核接收,只有③處的指令才會被IP 接收。
app 端寫數據總線中的每一根信號作用如下表所示,此處的input 和output 均現對于IP 核而言。
端口名稱 | 端口名稱 | 端口描述 |
app_wdf_data | input | 128bit寫數據總線(位寬根據芯片不同會不同),該數據包含8個需要寫入DDR3芯片的數據。 |
app_wdf_wren | input | 1bit寫數據有效標志,該信號有效(高電平),且app_wdf_rdy也有效時,IP核才可以接收到用戶端發送的app_wdf_data。 |
app_wdf_rdy | output | 1bit寫數據空閑信號,該信號有效(高電平),且app_wdf_rdy也有效時,IP核才可以接收到用戶端發送的app_wdf_data。 |
app_wdf_end | input | 1bit最后一個寫數據的標志,該信號有效(高電平)時,代表對應的app_wdf_data為當前寫的最后一個數據。 |
app_wdf_mask | input | 16bit寫數據掩碼(位寬根據芯片不同會不同),該信號為寫數據的掩碼。 |
根據上表所描述,我們可以對app 端寫時序所用到的每一根信號有一點的了解,下面給出寫時序的波形。圖3 中所示的①、②、④處的數據均不會被寫入到IP 中,只有③處的數據才會被IP 接收。
我們對app_wdf_end 這個信號做最進一步的講解,該信號表示的是當前突發寫的最后一個數據。在A7 DDR3 控制器IP 核中,只存在突發長度為8 這種形式,因此每一次的突發均為16bit x 8 = 128bit,并且在我們調取該IP 核時,會發現DDR3 的物理層端與用戶端存在兩種速率關系,即4:1 和2:1。當選取速率比例為4:1 時app_wdf_data 為128bit,此時每一個發送的有效app_wdf_data 數據均為當前8 突發的第一個數據,同時也是最后一個數據,因此此時app_wdf_end 信號 與app_wdf_wren 信號同步;當選取速率比例為2:1 時app_wdf_data 為64bit,此時每一個發送的有效app_wdf_data 數據均為當前突發的4 個數據,因此此時app_wdf_end 信號與app_wdf_wren 信號如下圖②所示。
3. 寫命令和寫數據間關系講解
根據Xilinx UG586 手冊我們可知,寫命令和寫數據直接存在三種邏輯關系,具體示例如圖5 所示。圖中①狀態指的是命令和數據同時發送到IP 核,②狀態指的是數據提前于命令發送到IP 核,③狀態指的是命令提前于數據發送到IP 核。第①、②種情況均可穩定傳輸,但是第③種情況需要一個前提條件,即命令提前數據的時間不能超過兩個用戶端的時鐘周期。因此,為了更穩定的發送數據,建議采取第①、②種發送模式,在本講中,我們采取第②種發送方式。
編輯:hfy
-
FPGA
+關注
關注
1626文章
21665瀏覽量
601803 -
SDRAM
+關注
關注
7文章
422瀏覽量
55155 -
DDR3
+關注
關注
2文章
274瀏覽量
42179 -
Xilinx
+關注
關注
71文章
2163瀏覽量
121000 -
存儲芯片
+關注
關注
11文章
886瀏覽量
43088
發布評論請先 登錄
相關推薦
評論