sdram時序分析-基於signaltapii
背景:利用fpga驅動sdram,本篇是時序**部分,理論理解詳見上傳檔案;
修改部分:
1、重新整理周期:改為64ms/(2^13)=7.8125us
2、讀命令的啟動條件:sdram初始化完成後啟動
3、sdram讀出的資料寫入到fifo中的寫入請求訊號提前乙個時鐘使能;
4、初始化階段的預充電指令指令對所有bank充電,即此時的a[10]改為1;
測試條件:
à突發讀寫,每次的突發長度為256,其中資料的取值為1~640;
àsdram的行位址為13位,列位址為9位,4個bank,資料寬度為16位;
àsdram控制器時鐘為100mhz,相位為0;sdram晶元時鐘為100mhz,時鐘相角為-90°,à但由於signaltapii的取樣始終只有200mhz,所以採回來的時鐘訊號相位差沒有體現出來,具體表現在下面的時序圖中,時鐘的下降沿為sdram控制器有效邊沿(原對應100mhz,相位為0),上公升沿為sdram晶元的時鐘有效沿(100mhz,時鐘相角為-90°),分析時序圖時這點需要注意一下;
à每次突發傳輸結束後沒有使用突發終止命令而使用了預充電指令;
初始化階段:
200us穩定期à1個預充電à8個重新整理周期à模式暫存器設定
寫資料階段:
綠色畫線部分為第乙個寫入的資料1,第二幅中綠色畫線部分為寫入的最後乙個資料256;
紫色為預充電指令,關閉了正在操作的行;
將資料寫入sdram時,必須提前乙個時鐘將資料從fifo裡面讀出來,然後在寫入命令觸發的同時寫入第乙個資料到sdram,需要注意的是sdram控制器的時鐘有效沿為下降沿,sdram晶元的輸入時鐘為上公升沿,資料的寫入和讀出都是在sdram晶元的輸入時鐘的上公升沿;(原本sdram控制器的時鐘為上公升沿有效,sdram晶元的輸入時鐘為-90度,可能由於取樣時鐘只有200mhz的緣故,所以顯示的時鐘有效沿為上述所示)
上圖出現了乙個問題,暫時沒有想明白,
sdram_data和q
為wire
連線關係,理論上
sdram_data
應該隨q
隨時變化,但是我們可以看出他們之間慢了乙個週期,暫時沒找到原因,後續;
讀資料階段:
先看乙個錯誤的例子:
由於寫入fifo的寫資料請求訊號晚乙個週期,所以當st=8時的下降沿才會寫入第乙個資料258,結果導致sdram讀出的第乙個資料257沒有被寫入fifo,將寫入fifo中的資料寫請求訊號提前乙個時鐘週期後的時序圖如下;
改正後的時序圖分析:st=7的上公升沿sdram晶元輸出第乙個資料257,之後的下降沿將資料寫入fifo(read端)中,st=7+256-1=262的上公升沿sdram晶元輸出最後乙個資料256,之後的下降沿將資料寫入fifo(read端)中,符合預期要求;
將突發傳輸中末尾的預充電指令換成突發終止指令:
寫時序圖:
讀時序圖:
突發終止指令均在256個資料傳輸完成後第乙個時鐘有效,符合sdram的突發傳輸時序要求,從sdram裡面讀出來的資料正常,則說明寫入資料到sdram中的操作過程正常,但是vga顯示出來的影象有少許隨機橫向窄條紋干擾,不知道是啥原因,下一步測試應該將從sdram讀出的所有資料都通過串列埠列印出來進行分析,後續;
SDRAM工作時序與原理
ddr出身自sdram,嚴格的說應該叫ddr sdram,ddr sdram是double data rate sdram的縮寫,是雙倍速率同步動態隨機儲存器的意思,所以,有很大一部分,兩者是一樣的,理解sdram,然後再來理解ddr在sdram上的改進,效果應該更好一些,這裡要感謝chinauni...
SDRAM記憶體條時序特點
sdram儲存器讀寫速度較高,其單位容量的功耗較低,廣泛應用在許多任務程專案中,特別在雷達 影象處理等需要高速度 大容量的資料儲存領域,sdram儲存器有著廣泛的應用價值。而單片sdram儲存器一般是直接焊接在電路板上,而且引腳較多 一旦遇上sdram儲存器工作故障,更換晶元比較麻煩,並且當需要擴充...
基於quartus的高階時序分析
派生時鐘就是和獨立時鐘存在頻率或者相位關係的時鐘,非同步儲存器就是具有儲存讀寫非同步功能的儲存器。在時序分析中,這兩個部分的靜態時序分析是需要設定個別約束的。派生時鐘會產生時鐘偏斜或者不同頻率時序問題,非同步儲存器則類似latch,存在建立時間和保持時間的要求。分別對獨立時鐘和衍生時鐘做時序約束,保...