SDRAM讀寫一字
SDRAM控制模塊
上電后進行初始化狀態,初始化完成后進入空閑狀態,在此進行判斷如下判斷:
如果自刷新時間到,則進行自刷新操作,操作完成后重新進入空閑狀態;
如果讀使能有效則進行讀操作,操作完成后產生完成信號並延遲一個時鍾周期重新進入空閑狀態;
如果寫使能有效則進行寫操作,操作完成后產生完成信號並延遲一個時鍾周期重新進入空閑狀態。
其中自刷新狀態的優先性最高,然后是寫操作、最后是讀操作;
SDRAM控制狀態機流程圖:
控制模塊代碼
自刷新定時
自刷新15us定時流程圖
自刷新代碼
SDRAM頂層模塊
sdram_bank_add:讀寫SDRAM的地址
write_data: 寫如sdram的數據
read_data: 從sdram讀出的數據
read_req: 讀數據請求信號
write_req: 寫數據請求信號
rw_ack: 讀寫應答信號
bus_signal: 忙信號
init_done: 初始化完成信號,輸出,高電平有效
SDRAM接口信號
sdram_clk: sdram時鍾信號
sdram_data: sdram讀寫數據
sdram_command:cke、cs_n、ras、cas_n、we_n,SDRAM指令信號
sdram_address:[13:12]BA , [11:0]Addr,SDRAM地址信號
sdram_dqm: SDRAM數據掩碼
SDRAM測試模塊編寫
測試模塊設計
根據SDRAM的頂層模塊的接口信號,在判斷sdram初始化完成后對sdram的特定地址進行寫入數據,在寫入完成后延遲一段時間,然后將該特定地址的數據讀出顯示在LED燈上,一驗證整個工程的功能。
測試模塊流程圖
測試代碼
實驗效果
SDRAM原理圖
LED原理圖
實驗的工程夾文件為"sdram_read_write_a_word",其源代碼文件如下:
實驗中對地址為10和11分別寫入:16'h5555和16'h0003;
然后通過指定地址讀出數據顯示在LED燈上,實驗中可以自行更改讀寫的地址和數據,以驗證讀寫的正確性。
大西瓜FPGA-->https://daxiguafpga.taobao.com
博客資料、代碼、圖片、文字等屬大西瓜FPGA所有,切勿用於商業! 若引用資料、代碼、圖片、文字等等請注明出處,謝謝!
每日推送不同科技解讀,原創深耕解讀當下科技,敬請關注微信公眾號“科乎”。