基于FPGA的高速SDRAM控制器的視頻應用
0 引言
SDRAM(同步動態(tài)存儲器)是一種應用廣泛的存儲器,具有容量大、數據讀寫速度快、價格低廉等優(yōu)點,特別適合那些需要海量存儲器的應用領域,例如視頻方面。
這里有一個視頻項目要求將非標準的ITU-R BT.656視頻格式的數據轉換成VGA格式,直接用于顯示器顯示。如圖1,輸入的視頻格式是非標準的ITU-R BT.656格式,圖像分辨率是1280×1024,幀速是15幀/秒,每一個像素點是24bit;輸出的視頻格式是VGA格式,圖像分辨率是1280× 1024,幀速是60幀/秒,每一個像素點還是24bit。
本項目使用SDRAM來存儲視頻數據。在設計中,要求能夠將一幅完整的圖像(1280×1024×24bit)存儲在SDRAM中。并且要求讀寫突發(fā)長度是1280,即一行視頻數據(1280×24bit)。SDRAM突發(fā)長度最高只能達到256(即SDRAM芯片的一列的長度),為此需要使用FPGA專門實現一個SDRAM控制器。在控制器的設計中通過采用切換bank操作、自動預沖、集中刷新等技術實現了這種超長突發(fā)長度的數據讀寫。同樣通過適當地修改此控制器,可以實現任意突發(fā)長度的數據讀寫。
1 SDRAM基本特性
本設計中采用的SDRAM芯片的型號是MT48LC2M3282-7。SDRAM的主要操作包括初始化、讀寫和刷新操作。SDRAM的初始化操作過程如下:上電后等待100 μs;然后依次完成預沖,兩次刷新操作;接下來就可以配置寄存器了。至此整個初始化工作結束,SDRAM進入正常工作狀態(tài)。SDRAM進入正常工作狀態(tài)后,就可以根據命令來工作。這些命令包括:預沖(Precharge)和自動預沖(AutoPrecharge)、激活(Active)、讀 (read)、寫(write)、自動刷新(Auto Refresh)和自刷新(Self Refresh)等。根據本設計的需要,這里詳細介紹設計中相關的命令:自動預沖、激活、讀寫、自動刷新。自動預沖命令是SDRAM芯片在一次突發(fā)讀/寫結束后自動發(fā)出預沖命令,將讀寫的行關閉。它與預沖命令有著相同的功能,但是發(fā)起命令的方式不一樣。預沖命令是SDRAM控制器發(fā)起的命令,它需要占據 SDRAM的總線,在這段時間不能讀寫數據。而自動預沖命令是SDRAM自動的行為,不需要占據SDRAM的總線。這個命令是在發(fā)起讀寫命令時設置的。
激活命令是對SDRAM的某一行激活,這樣才能對這一行數據發(fā)起讀寫操作。讀寫命令是對某一激活的行進行突發(fā)讀寫操作。具體的突發(fā)讀寫的數據長度在初始化時配置寄存器時設置了。
評論