【日記】SRAM的讀取操作


 

首先,想記錄一下,以前對於inout引腳的概念就是網頁上被轉載很多次的標准版:

於是,非常愚笨的我,每次使用時都要定義一個類似link_data的寄存器,然后再對寄存器賦值。這可真是不會舉一反三,比如這幾天sram的程序中有這么一句:

assign sram_dq = (state == `wr_ready || state == `wr_delay) ? fifo1_dq_out :   8'hzz;

這樣就不需要定義類似link_data的寄存器,而且很簡潔。

 

下面是這幾天我和哥們王奇一起做的sram讀寫實驗的代碼,或者截圖,(其實我們是在練習SDRAM的操作時,做不來SDRAM,於是先拿SRAM撒氣的,結果我被氣着了。。。)我們就是想把菜鳥學習的點滴記錄下來,讓更菜的童鞋們有個階段性的參考,想練習sram的使用時,可以參考我們的程序,省的網頁上別人的程序復雜得花很大功夫看會。

 

1.感謝王奇(中北大學學生),我們一起開始做,一起讀sram的英文datasheet,一起扣時序問題,他卻比我早很多時間就已經做出來了,我在此期間因為做不出來,都被煩死了,最終還是在他的幫助下,修改好了時序才做出來。他自己的博客上面也有它的程序和實驗過程。這里我寫我的實驗過程。

2.我的幾個模塊:

看上圖,應該很清楚了,練習sram的使用之前,我還從來沒用過FIFO,所以又練習了好多天的FIFO使用(沒辦法,我腦子不好),串口通信也沒做過(雖然是學單片機的時候就應該會的,我當時懶,也沒學),又專門寫了串口的程序。期間磕磕絆絆,也就過來了。

3.這次實驗的關鍵就是SRAM的讀寫程序,雖然是英文手冊,其實最重要的就是引腳圖、時間表、時序圖。其他的看看也行。

看,最重要的就是不要將狀態機寫的復雜,寫的過程就只有3個時鍾周期,不需要寫的太多時鍾周期。地址給出的同時也要給出數據。讀sram的時候,給出地址后,應在下一個時鍾上升沿的時候寫入第二個FIFO。讀的過程也只有3個時鍾周期。

4.在寫狀態機的時候,我就是受到了教科書上面的影響,上來就扒下來那個所謂經典的“current_state”、“next_state”的三段論狀態機模型。結果,我感覺完全不適合這次的練習使用。我還是用了新的寫法(參考哥們的)。具體來說,就是第一段的always塊,僅僅定義了狀態的相互轉換,基本沒有涉及到狀態之外的變量。第二段大量使用assign語句,這樣就避免的“posedge clk”和“<=”的約束。而且這種狀態機的寫法真的是很簡單易懂啊。。。。

5.附上中心控制模塊和串口模塊的程序:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM