国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

零基礎學FPGA (二十五) 一路走來 :SDR SDRAM(架構篇)

發布時間:2015-5-21 16:02    發布者:wp1981
關鍵詞: SDRAM , 小墨同學 , FPGA
今天我們來講的是SDRAM的架構以及設計,這也是小墨第一次接觸架構,也談不上給大家講,就是把我理解的當做一個筆記分享給大家,我也試著做了一個SDRAM 的架構word文檔,在文章的后面,喜歡的朋友可以下載下來看一下,有什么錯誤也請積極指正,畢竟我也是沒有老師教,也是自己摸索的,難免有些不合理的地方。

一、SDRAM 工作部分

1、上電初始化



             我們先來看第一部分,上電初始化。上電初始化我們知道,上電之后我們需要等待200us的穩定期,這段時間我們可以用一個定時器來計數,這沒什么問題,然后進入的是預充電部分,這個時候,預充電的時候,sdram_cmd模塊會檢測此時的初始化狀態機的狀態,若處于預充電狀態,那么sdram_cmd模塊向SDRAM發命令,具體命令sdram的datasheet里面有,發的是一個precharge,即預充電,發完命令之后,需要等待一段時間,來確保這個命令被SDRAM捕獲,這等待的時間,特權老師用的方式我覺得很好



         用一個宏定義,當計數器計數到相應的時間后,預充電完成參數置位 即end_trp 置位,下面的用法也是一樣,即當初始化狀態機進入預充電狀態i_pre時,計數器開啟,開始計數,計數完成,也就是預充電結束的時候,計數器復位,這個復位的控制,可以用case語句來檢測初始化狀態機的狀態,在相應的狀態給予相應的復位與置位
         接下來是8個自刷新,操作和預充電一樣
         到了模式寄存器的配置階段,我們需要選定L_bank,以及SDRAM工作模式的配置,當sdram_cmd模塊檢測到初始化狀態機到達模式寄存器配置階段時,我們的給SDRAM的sdram_bank端口賦相應的值,并且設置地址總線



當初始化結束的時候,標志位init_done置位,告訴工作狀態機,初始化狀態機已經結束,進入工作狀態。下面是我用word做的上電初始化的狀態轉移圖





2、自刷新

初始化結束之后,SDRAM為了防止數據丟失,要進行自刷新,上一篇文章已經講過了,刷新2^12行需要64ms,也就是每15us刷新一行,也就是我們需要每15us發送一次自刷新請求給SDRAM工作狀態機,狀態機一旦檢測到自刷新請求信號,就告訴sdram工作模塊,然后工作模塊就向SDRAM發送自刷新命令,即CMD_A_PEF



下面是自刷新的狀態轉移圖



3、讀寫狀態

      初始化結束以后,SDRAM就處于工作狀態,每15us進行一次自刷新,這個時候,如果想要讀或寫數據的話,即向工作狀態機sdram_work_FSM發送讀寫請求,如果是讀請求,那么工作狀態機進入行有效狀態,也即激活狀態w_active,此時,sdram_cmd模塊會發送行有效命令,即CMD_ACTIVEA

      同時,我們需要將我們的12位行地址送給我們的sdram地址總線sdram_addr,然后便是一個等待時間段,TRCD,這個時間段里我們是不需要做什么工作的,只需等待TRCD結束

      TRCD結束的時候,工作狀態機進入讀狀態,此時,我們需要發送列地址選中我們的存儲單元,并告訴sdram_cmd模塊發送讀命令,這個過程是讀命令和列地址同時發送的。我們知道,讀命令發出之后,會進入潛伏期TCL。

       這個狀態我們也不需要做什么,因為我們在模式寄存器配置階段已經將各種參數配置好了,包括什么潛伏期長,突發讀寫長度之類的,等到潛伏期結束之后,SDRAM會自動進行讀數據,而且讀的數據長度會跟我們之前設置的一樣長,這個讀數據的狀態需要時間,即我們的工作狀態機工作在w_rd狀態,等待8個時鐘周期之后,所有的數據都已經被送到數據總線。

       這個時候我們需要等一會,因為我們在發送讀命令的時候,A10是置1的,也就是說,每次讀寫完之后要自動進行預充電,從而才可以打開新的工作行,這時,我們的工作狀態機即進入了w_rwait狀態,等到預充電結束,才完成一次讀操作,返回初始狀態,等待下一個請求的到來



       下面是讀寫狀態轉移圖,由于寫狀態只是沒有潛伏期,寫完之后有一個寫回延時,其他地方與讀狀態相同,我就不再介紹了





二、模擬信號產生部分

        我們先來想一下我們的要想測試我們的SDRAM控制器是否正確,都需要什么測試參數吧

       1、 首先我們需要發送讀寫地址對吧,但是我們需要有一個間隔,即每隔一段時間發送一次寫地址,為什么呢?因為我們之前在模式寄存器配置的時候,定義了突發讀寫的長度為8,也就是我們發送一個地址,那么sdram會在連續的8個地址中連續寫8次數,我們如果要再發送地址,需要等到這8次地址寫完之后再發送下一個地址這個延時大概為640ns,也就是計數器為什么要計到3f的原因,下一個地址的發送就需要比之前的地址大8了,比如第一次我發送的是0地址,那,隔一段時間之后,我就需要發送8地址了。

        讀地址也一樣,當寫地址寫滿了之后,讓地址清零,從零地址讀起即可



        還有再解釋一下,特權老師為什么定義22位的模擬地址,22位的模擬地址包括2位的L_BANK的地址,12位行地址和8位列地址。有人會問,為什么是行地址和列地址分開呢,不是行列地址共用嗎?注意這里只是模擬地址,到時候我們給地址總線賦值的時候是分開賦值的

      
     2、然后我們需要產生遞增數據,每640ns產生8個數即可


      
      3、在發送遞增數據之前,我們需要發送寫請求信號,這個寫請求信號是要發送到我們接下來要講的FIFO里面,發送寫請求之后,數據進入FIFO,注意,這里的寫請求是發送給FIFO的,不是發送到SDRAM的,SDRAM的寫請求是由FIFO發出去的



         有人會問,寫請求有了,是不是還該有讀請求,要知道,我們的數據是先寫到FIFO里面,再有SDRAM對FIFO進行讀操作,將寫進FIFO的數據再送到SDRAM,而我們從SDRAM中讀回的數據,同樣要寫到FIFO里面,然后我們再從FIFO里面讀。是不是有人會問,這不是多此一舉嗎?其實不然,要知道我們的SDRAM是工作在100M的時鐘頻率下,而且是有相位偏移的,對我們FPGA來說是一個異步時鐘,如果我們不采用FIFO的形式,那很容易發生亞穩態問題,導致系統不穩定

三、數據緩存部分

   1、寫FIFO



         我來解釋一下,寫入時鐘,也就是我們FPGA的時鐘,50MHZ,在這個時鐘頻率下,我們需要給FIFO發送寫請求和遞增數據,wrusedw反映了我寫入FIFO的占用量,當sdram工作狀態機檢測到寫請求之后(FIFO發出的寫請求),會產生一個響應,告訴FIFO要讀數據了,這個響應作為FIFO的讀信號,在100MHZ的時鐘頻率下,將我們寫入的數據讀走,送到SDRAM數據總線上

        2、讀FIFO



      讀FIFO跟寫FIFO相反,寫FIFO時鐘為100MHZ,在這個時鐘頻率下,我們將從SDRAM中讀回的數據寫到FIFO里面,注意這里我們還用了wrusedw,來反應寫FIFO的占用量,也就是我們從SDRAM里讀了多少數據,然后在50MHZ的時鐘下,將從SDRAM讀回的數據采集下來,送到顯示模塊來驗證是否是遞增數據,這個顯示模塊我們用數碼管來顯示,比較方便,為了觀察清楚,我們可以在數碼管顯示模塊,每隔1S種發送一次讀FIFO請求,這樣在數碼管上,會每隔1秒鐘顯示一個遞增的數據了

       大體上就是這么多了,整個SDRAM的工作過程就介紹完了,還有些細節沒講到的,大家可以自行消化,有不懂的可以給我留言,或者加我QQ微信,歡迎交流

      下一篇文章我們講時序,真正在板子上讓它跑起來才是王道,下面附上我做的一個word,還請各位大神指正~

以后小墨同學的文章將北京至芯科技官方技術論壇同時更新,至芯科技的官方技術論壇也有很多的資料供大家下載,里面也有小墨的專題板塊,希望廣大網友和愛好者的大力支持~
http://www.fpgaw.com/
小墨同學《零基礎學FPGA》學習專版  一個大三學生學習之路的真實記錄
http://www.fpgaw.com/thread-78527-1-1.html
下面是至芯科技官方網站,夏宇聞教授和那里的老師都超好的~有意愿接受FPGA培訓的可以找工作人員咨詢
http://www.zxopen.com/
       以后小墨同學的教程會跟這款開發板配套,想跟小墨同學一起學習,一起進步的的可以考慮一下購買一塊開發板,畢竟學習要舍得投資嘛,下面是開發板淘寶鏈接
http://item.taobao.com/item.htm?spm=a230r.1.14.13.NZBxw3&id=42366952129&ns=1&abbucket=13#detail


本文地址:http://www.qingdxww.cn/thread-149639-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 為何選擇集成電平轉換?
  • 無線充電基礎知識及應用培訓教程2
  • 無線充電基礎知識及應用培訓教程3
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲不卡一区二区三区 | 黄色片免费网站 | 五月天婷色 | 国产网站麻豆精品视频 | 中国一级毛片在线观看 | 超级碰碰碰精品色时视频 | 99久久精品免费观看国产 | 国产精品亚洲综合一区在线观看 | 一级毛片视频免费观看 | 国产精品久久久久久久免费 | 久久婷婷久久一区二区三区 | 免费国产va在线观看视频 | 亚洲特一级毛片 | 久久99视频免费 | 四虎影院网站 | 福利在线一区 | 国产网站在线播放 | 老汉tv永久视频福利在线观看 | 亚洲欧美视频在线播放 | 1024香蕉国产在线视频 | 日韩免费视频观看 | 阿v视频在线免费观看 | 欧美成人免费一级人片 | 高清性色生活片久久久 | 精品视频一区二区三区在线观看 | 日本久久久久久久中文字幕 | 九九精品99久久久香蕉 | 麻豆影视视频高清在线观看 | 婷婷丁香在线 | 九九热欧美 | 在线观看日本网站 | 国产欧美日韩高清专区手机版 | 亚洲综合导航 | 99免费观看视频 | 欧美亚洲动漫 | 在线国产毛片 | 美女隐私视频黄www小说 | 大伊香蕉精品一线视频 | 在线播放国产一区二区三区 | 一区二区三区四区视频在线 | 日韩在线 中文字幕 |