《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 教學:SDRAM控制器設計

教學:SDRAM控制器設計

2022-08-16
來源:FPGA之家
關鍵詞: FPGA 控制器 SDRAM

  在FPGA視頻圖像處理系統中,經常需要使用到SDRAM作為視頻圖像緩存。SDRAM控制器可以分為上電初始化,自動刷新,讀操作和寫操作這四個部分,他們之間的轉換可以通過狀態機來控制。下面分別實現這幾個部分。

  1.SDRAM上電初始化

  SDRAM上電初始化時序如下圖所示。

e970072c-1aa0-11ed-ba43-dac502259ad0.jpg

  由時序圖可知初始化大概的過程為:上電后等待電源VDD和時鐘信號穩定100μs(期間命令為空命令),同時在100μs內設置CKE(時鐘使能)信號為高。隨后對所有Bank發送預充電(PRECH ARGE)命令,發送兩次自動刷新(REFRESH)命令,最后發送裝載模式寄存器(LOAD MODE REGISTER)命令,并將設置寄存器的值傳入地址總線A0~A11。

 e989048e-1aa0-11ed-ba43-dac502259ad0.png

  上述過程的實現可以通過線性序列機來實現。即需要對初始化過程時間進行計數,當時間到達時就執行某個命令。下面是部分代碼。

  1.計時器

e99b1066-1aa0-11ed-ba43-dac502259ad0.png

  2.命令執行時間設置

e9bb0100-1aa0-11ed-ba43-dac502259ad0.jpg

  3.對應時間執行對應命令

 e9d21688-1aa0-11ed-ba43-dac502259ad0.png

  2.SDRAM自動刷新

  同樣給出自動刷新的時序圖。

 e9f26636-1aa0-11ed-ba43-dac502259ad0.jpg

  過程比較簡單:首先對所有Bank預充電,然后發送兩次自動刷新命令。

 ea154336-1aa0-11ed-ba43-dac502259ad0.png

  同樣可以使用線性序列機的方法來實現,這里就不重復了。但需要添加一個刷新狀態標志。ref_opt_done=1表示刷新完成,ref_opt=1表示正在刷新。

 ea218a38-1aa0-11ed-ba43-dac502259ad0.png

  3.SDRAM寫操作

ea449154-1aa0-11ed-ba43-dac502259ad0.jpg

  從時序圖上看首先發出激活命令,并給出行地址Bank地址;隨后發出寫命令,并指定寫入Bank,起始列地址和寫入數據;最后進行預充電,關閉所有Bank。這里每次突發寫入4個數據,即突發長度為4,突發長度可以在之前初始化的模式寄存器中設置。

 ea682470-1aa0-11ed-ba43-dac502259ad0.png

  同樣使用序列機的實現方法,在寫操作中也需要添加寫操作完成狀態標志,和過程狀態標志。此外只有當寫入突發長度數據的時候我們才使能數據線輸入有效,其他時刻讓數據線保持高阻態,所以要添加一個寫數據狀態標志Wr_data_valid=1時表示正在寫數據。

 ea76287c-1aa0-11ed-ba43-dac502259ad0.png

  4.SDRAM讀操作

ea9599c8-1aa0-11ed-ba43-dac502259ad0.jpg

  與寫操作類似,但是我們輸入讀命令的時候,數據并不是立刻輸出,而是要經過一個CAS_Latency后輸出。這個延時也可以通過模式寄存器的配置來調整。我們同樣需要給出讀操作完成、讀操作過程,讀出突發數據的有效區間。

eab7f6da-1aa0-11ed-ba43-dac502259ad0.png

eac770c4-1aa0-11ed-ba43-dac502259ad0.png

  5.SDRAM控制器設計

  首先SDRAM上電后進入空閑狀態,初始化完成后進入刷新狀態,然后根據輸入命令進行轉換,實際上狀態機的控制對于刷新操作,讀/寫操作是有一個優先級的:刷新操作>寫操作>讀操作。即假設寫命令和刷新命令同時到來時先執行刷新操作。下圖為狀態機的狀態轉移圖。具體實現可參考完整代碼。

  eaea2010-1aa0-11ed-ba43-dac502259ad0.jpg

  由于SDRAM需要固定時間間隔刷新一次,我們還得考慮一個刷新定時器,固定時間產生一個刷新請求。

eb156d24-1aa0-11ed-ba43-dac502259ad0.png

  最后我們還需要考慮如果在讀操作的時候,產生了刷新請求或寫請求怎么辦呢?寫操作的時候,產生了刷新請求或讀請求怎么辦?或者在刷新操作時產生了讀/寫請求怎么辦?

  對于刷新請求的突然到來我們采取記住刷新標志,等待當前任務完成后進行刷新操作。

  在刷新操作時讀/寫請求突然到來,我們也采取記住讀/寫標志,等待當前任務完成后進行讀/寫操作。

  但是對于在讀/寫操作時外部讀/寫請求的到來,我們選擇了忽略這次請求。部分代碼如下。

eb24db7e-1aa0-11ed-ba43-dac502259ad0.jpg

  由于視頻信號數據讀入讀出都是連續不斷的,因此在某些時刻會導致讀寫的遺漏,但一般會在SDRAM讀出寫入前加上一個FIFO進行緩存控制數據的讀寫,當寫FIFO中數據大于一次突發長度時,使能寫信號;當讀FIFO中數據小于突發長度時,使能讀信號,就可以解決這個問題。



更多信息可以來這里獲取==>>電子技術應用-AET<< 

mmexport1621241704608.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久久久久久久久久免免费精品| 免费在线观看中文字幕| 99久久无色码中文字幕人妻| 日本高清H色视频在线观看| 亚洲精品福利你懂| 色欲精品国产一区二区三区AV| 国产精品永久免费视频| 三上悠亚国产精品一区| 最近更新中文字幕影视| 亚洲黄色免费网站| 色八a级在线观看| 国产欧美另类久久精品蜜芽| a一级毛片免费高清在线| 无翼乌日本漫画| 亚洲av无码片区一区二区三区 | 小说都市欧美亚洲| 久久狠狠躁免费观看2020| 欧美福利电影在线| 免费特级黄毛片| 足本玉蒲团在线观看| 国产精品久久久尹人香蕉| mm1313亚洲精品国产| 无码专区天天躁天天躁在线| 亚洲va久久久噜噜噜久久狠狠| 狠狠综合久久av一区二区| 四虎最新免费观看网址| 99视频全部免费精品全部四虎| 在线看亚洲十八禁网站| 一边摸下面一别吃奶| 日本护士在线视频xxxx免费| 亚洲制服欧美自拍另类| 特级毛片www| 午夜成人在线视频| 蜜柚直播在线第一页| 国产欧美亚洲精品第一页久久肉| 99久久精品国产一区二区成人| 强迫的护士bd在线观看| 久久久久久久久久久久福利| 日韩视频精品在线| 亚洲国产欧美在线人成精品一区二区 | 国产精品无码DVD在线观看|