標籤:
cb說完美是沒有極限的,對此我表示贊同,自從用了cb的板子,玩開cmos,fpga,sdram,vga等。
不斷湧現的是,雙連接埠sdram,四連接埠sdram,各式各樣的封裝,但是大同小異,但總是有些不同,對於初學的我,感覺還是挺費事,玩轉各種常式發現,cb的sdram驅動程式很強大但並不完美,其中對sdram有挑選作用,如hy57v641620ftp-7很ok的使用,換成hy57v641620ftp-6就有問題,但是使用其他版本程式測試,這兩個ic均ok。
這個問題一度困擾過cb良久,最終cb偶然發現,將突髮長度從256改為128,就能好好的解決,自此,解決了問題(詳情參閱cb部落格)
但是這樣可能並不完美,需要深究其根本,就得仔細閱讀內部代碼,仔細推敲,本人水平有限,所以只能一步一個腳印。
現將相容和不相容的程式統一介面,使得程式更好移植,邏輯更加清晰。
ps:cb的介面已經做得很棒,只是我不太習慣,以下移植介面,按照我的思維理解方式修改。
先看看cb現有的介面
改造中
1、
module LCDData_Simulate
(
inputclk,//globan clock
inputrst_n, //Global reset
inputsys_vaild,//the device is ready
input[7:0]DIVIDE_PARAM,//0-255
input[11:0] X_size, // 增加x尺寸大小輸入,
input[11:0] Y_size, // 增加y尺寸大小輸入,
//sys 2 sdram control
outputdisp_valid, // 增加顯示有效訊號輸出,告知裝置,目前輸出像素有效,類似顯示的幀同步訊號
outputreg[15:0]sys_data,
outputsys_we
);
2、SDRAM_VGA_Display_Test
增加 WR_LOAD訊號,根據資料產生模組的幀有效訊號,產生一個脈衝,高電平脈衝,在幀同步訊號結束時產生,用於清除fifo
wire WR_LOAD;
reg sys_disp_valid_r1;
reg sys_disp_valid_r2;
[email protected](posedge clk_ref)
begin
sys_disp_valid_r1<=sys_disp_valid;
sys_disp_valid_r2<=sys_disp_valid_r1;
end
assign WR_LOAD=sys_disp_valid_r1&(!sys_disp_valid_r1);
3、SDRAM_VGA_Display_Test
// FIFO Write Side
.WR_CLK(clk_write),//write fifo clock
.WR_LOAD(WR_LOAD),//使用此訊號
.WR_DATA(sys_data_in),//write data input
.WR(sys_we_in),//write data request
.WR_MIN_ADDR(22‘d0),//write start address
.WR_MAX_ADDR(`H_DISP * `V_DISP *22‘d1),//write max address
.WR_LENGTH(9‘d256),//write burst length
就此,第一步相容已經完成,此目的已經達到資料產生模組任意間隔產生資料,保證同步,下一再實現顯示器尺寸自動匹配功能。
適用於帶fifo介面的儲存空間和顯示器測試模組封裝 挑戰cb