基于FPGA的高速SDRAM控制器的視頻應用
當要求寫(xiě)SDRAM時(shí),控制狀態(tài)機的狀態(tài)由c_tRCD2跳變到c_WR狀態(tài),發(fā)出寫(xiě)命令。SDRAM控制器會(huì )在發(fā)寫(xiě)命令的同時(shí)將本次突發(fā)數據的第一個(gè)數據送到總線(xiàn)上,接著(zhù)是三個(gè)周期的狀態(tài):c_tDAL1、c_DAL2、c_tDAL3,之后回到c_idle狀態(tài)。這樣完成了寫(xiě)數據的一次循環(huán),剛好需要 8個(gè)周期。在回到c_idle狀態(tài)后即可啟動(dòng)下一次寫(xiě)數據傳輸,這時(shí)狀態(tài)機跳到c_ACT狀態(tài),發(fā)出激活另一個(gè)bank的某一行的命令,然后經(jīng)過(guò)兩個(gè)周期后,此時(shí)上一次寫(xiě)操作的數據突發(fā)長(cháng)度剛好結束。下一個(gè)周期狀態(tài)變成c_WR,發(fā)下一次的寫(xiě)命令,同時(shí)將這一次突發(fā)長(cháng)度的第一個(gè)數據放到SDRAM數據總線(xiàn)上……如此循環(huán),可以完成長(cháng)度是1280的連續數據的寫(xiě)入。這個(gè)循環(huán)如何結束呢?當發(fā)了最后一個(gè)突發(fā)寫(xiě)命令后,狀態(tài)機回到c_idle時(shí),即可停止循環(huán),不再進(jìn)入激活狀態(tài)??傊ㄟ^(guò)控制這個(gè)狀態(tài)機可以完成長(cháng)度是8的倍數的連續數據讀寫(xiě)??刂茽顟B(tài)機還有實(shí)現刷新操作的功能,當要求對SDRAM進(jìn)行刷新操作時(shí),控制狀態(tài)機的狀態(tài)會(huì )跳變到c_AR,SDRAM控制器會(huì )依此發(fā)出刷新命令。然后狀態(tài)機跳變到c_tRFC狀態(tài)等待刷新操作的結束。當刷新操作結束后,狀態(tài)機將恢復到c_idle。這樣就完成了一次刷新操作。如果需要多次刷新,就可以連續進(jìn)行多次這樣的循環(huán)。
2.3 SDRAM控制器的綜合
本設計使用的SDRAM芯片是MT48LC2M3282,FPGA芯片是cyclone的EP1C6Q240C6。綜合工具是QuartusII 6.0。綜合的結果是邏輯單元使用了170個(gè),占總資源的3%;工作頻率最高可以達到240.10 MHz,滿(mǎn)足項目要求。本文引用地址:http://dyxdggzs.com/article/191928.htm
3 代碼的仿真測試
本設計的仿真工具是Modelsim6.1f,部分仿真測試波形見(jiàn)圖5。圖中描述了讀一行數據的時(shí)序圖,在開(kāi)始突發(fā)寫(xiě)數據后,SDRAM的數據總線(xiàn)sdr_DQ上的數據沒(méi)有被中斷。這個(gè)表示整個(gè)設計達到了能夠支持超長(cháng)數據突發(fā)讀寫(xiě)功能,能滿(mǎn)足設計要求。
4 結束語(yǔ)
本文介紹了一種實(shí)現超長(cháng)數據突發(fā)讀寫(xiě)的設計。此設計采用切換Bank操作節約了激活命令所花費的時(shí)間;采用自動(dòng)預沖命令節約了預沖命令所花費的時(shí)間;采用集中刷新完成了足夠的刷新操作。通過(guò)對上面操作的組合設計,能夠很好地完成超長(cháng)數據的突發(fā)讀寫(xiě)。在設計中,成功地實(shí)現了突發(fā)長(cháng)度是1280的數據讀寫(xiě),滿(mǎn)足了項目需求。
評論