標籤:
本文由遠航路上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核產生時所設定的參數。
Lattice 的 Framebuffer IP核使用調試筆記之IP核產生與參數設定