本文由遠航路上ing 原創,轉載請標明出處。
這節筆記記錄IP核的生成以及參數設置。
先再IP庫里下載安裝Framebuffer 的ipcore 並安裝完畢。
一、IP核的生成:
1、先點擊IP核則右邊會出現生成對話框:
按箭頭指示順序進行設置:要設置生成ip核的路徑(可以新建一個文件夾ipcore來放置IP核,若有多個IP核則在ipcore下分別建立文件夾),IP核的名字,以及語言的類型:verilog或VHDL。最后點擊Customize.
2、 在上一步設置之后會出現下面的設置界面,先設置輸入視頻格式,有三種:YCbCr422,YCbCr444 or RGB ,單信號。在動態參數更新未被選擇時(靜態模式),輸入視頻幀的高度與寬度是固定的,在方框內直接填入,注意范圍為64--4096,不過建議大於64,否則可能無視頻被采集到。在選擇動態模式時,此處填寫的數據為最大的高度與寬度,實際的高度與寬度要以參數設置為准。
選擇Parallel processing 之后,則數據會是並行數據;16bit,否則為串行數據:8bit。
選擇Frame rate conversion之后,啟動幀率轉換,會加入一個輸入端口OCLK,否則就會就會按輸入信號時鍾輸出。
在選擇了動態配置的情況下,界面如下:
幀率的高度和寬度設置變為了最大分辨率設置。同時左側會多出設置參數的信號。時序圖見datasheet.
對於寬度和高度設置的寄存器的地址為:
在動態設置的時候,每個寄存器的size為32,則占用4個字節,所以設置的時候可以兩個字節分開設置,比如設置FRMWIDTH時,地址為0x00時設置低2字節,0x02時設置高2字節。設置幀高度和寬度的數據為實際數據-1.比如分辨率大小為1920*1080,則送人的數據應為1919*1079.
3、先設置像素的寬度(8/9/10)。
再設置存儲總線寬度,這個與DDR的數據總線寬度一致,(一般framebuffer ip核接DDR的ip核,所以與ddr ip核的數據總線寬度一致)。
parameter bus width 的寬度可以為8/16/32bit,根據最大分辨率的位數來選擇參數總線的寬度。
選擇分離參數時鍾,則會多出一個pclk的時鍾輸入端口,根據pclk的時鍾來設置參數;若不選此項,則根據輸入時鍾來設置時鍾參數。
選擇同步復位選項,則多出一個同步復位的端口。
output frame size ports 端口,選擇此項則會多出兩個端口來表示輸出幀的長度和寬度,這兩個參數在frmsync_out有效的時候才會更新。
4、設置FIFO的類型,有兩種,
設置FIFO的深度,則FIFO所存儲的總的數據為:depth*bus width==64(depth)*64(bus width) = 64*4*16(ddr芯片的數據位寬) = 256*16個16bit的數據,
則在數據存儲量到總存儲量的一半的時候出發DDR的寫操作,則一次寫入的數據為128*16bit的數據,則Framebuffer IP會向DDR 的IP送出32個64bit(bus width)的數據。
設置DDR 存儲的突發長度和命令突發計數。此兩處的值要與DDR的設置相配合才可以。(詳細配合后面再說)
最后點擊Generate 則等一段時間就可以生成了。
在生成之后,文件夾內會生成一些文件:
其中紅線內部的兩個文件可以作為綜合的文件加入工程(兩者其一即可),藍線內的文件可以作為前仿真文件加入工程。
而頂層文件和參數文件在frame_buffer_eval文件夾內部。
打開frame_buffer_eval文件夾,出現兩個文件夾,testbench文件夾內部是前仿真的外部輔助文件,在仿真時要把這兩個文件加入到工程內,並選擇為只仿真。
frame_bru8_c1文件夾內部存放着頂層文件,參數文件和modelsim仿真的.do文件。
上圖所示,sim文件夾內部是仿真的.do文件,而src文件夾內部是頂層文件(rtl)和參數文件(params)。
將此文件加入工程,作為頂層文件。
在params文件夾內找到params.v文件,這是參數文件,但是本工程不需要也不用添加。
打開params.v文件可以看到內部的參數都是IP核生成時所設置的參數。