版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1)vga_driver.v代碼分析
a)
#(
//
//
參數(shù)例化列表
VGA_1024_768_60fps_65MHz
HorizontalParameter(Pixel
)
parameter
parameterparameterparameterparameter
H_DISP
H_FRONTH_SYNCH_BACKH_TOTAL
=11'd1024,
11'd24,
=11'd136,
=11'd160,11'd1344,
=
=
//VirticalParameter(Line)
parameter
parameterparameterparameterparameter
)
V_DISP
V_FRONTV_SYNCV_BACKV_TOTAL
=10'd768,
10'd3,
=10'd6,
=10'd29,10'd806
=
=
這樣寫的目的是為了軟件封裝性,能夠在例化的時候修改法分辨率,同時電路結(jié)構(gòu)保持不
變。
DISP,F(xiàn)RONT,SYNC,BACK,TOTAL分別為顯示期,消隱前肩,消音期,消隱后肩,總時間,各自對應(yīng)各自的行場信號。
b)行同步信號設(shè)計(jì)
//
//行同步信號發(fā)生器
reg[10:0]hcnt;
always@(posedgeclk_vgaorbegin
if(!rst_n)hcnt<=0;else
begin
if(hcnt<H_TOTAL-1'b1)
hcnt
else
hcnt
negedgerst_n)
<=hcnt+1'b1;
<=0;
end
end
//
always@(posedgeclk_vgaornegedgerst_n)
begin
if(!rst_n)
vga_hs<=1;
else
begin
if((hcnt>=H_DISP+H_FRONT-1'b1)
&&(hcnt<H_DISP+H_FRONT+H_SYNC-1'b1))
vga_hs<=
0;
else
vga_hs<=
1;
end
end
如上所示,分析代碼可以知道,行同步信號的計(jì)數(shù)狀態(tài)機(jī)按照時序的劃分,是以下過程:H_DISP,H_FRONT,H_SYNC,H_BACK,這似乎和上述分析的VGA時序不是完全吻合。但是VGA時序是一個循環(huán),順推H_BACK個時終域便可以得到以上時期劃分,但是這樣更方便后續(xù)坐標(biāo)計(jì)數(shù),因?yàn)锽ingo此處這樣設(shè)計(jì),當(dāng)然實(shí)際證明是完全可行的。
注意:(hcnt>=H_DISP+H_FRONT-1'b1)&&(hcnt<H_DISP+H_FRONT+H_SYNC-1'b1)只是因?yàn)楹罄m(xù)坐標(biāo)計(jì)算,就把時序提前了1個時鐘已達(dá)到同步。
c)場同步信號設(shè)計(jì)
同上。
d)數(shù)據(jù)顯示坐標(biāo)以及輸出設(shè)計(jì)
//
assign
vga_xpos
=
(hcnt<H_DISP)?hcnt[9:0]+1'b1:10'd0;
assign
assign
vga_ypos
vga_rgb
=
(vcnt<V_DISP)?vcnt[9:0]+1'b1:10'd0;
=((hcnt<H_DISP)&&(vcnt<V_DISP))?vga_data:16'd0;
這部分很容易理解,在顯示期坐標(biāo)根據(jù)顯示的掃描而改變,在非顯示期,坐標(biāo)置零。
(2)Vga_display.v代碼分析
a)標(biāo)準(zhǔn)色彩定義
//definecolorsRGB--5|6|5
localparam
localparam
RED
GREEN
=16'hF800;
=16'h07E0;
localparam
localparam
BLUE
WHITE
=16'h001F;
=16'hFFFF;
localparam
localparam
BLACK
YELLOW
=16'h0000;
=16'hFFE0;
localparam
localparam
CYAN
ROYAL
=16'hF81F;
=16'h07FF;
定義當(dāng)?shù)氐膮?shù),目的是為了后續(xù)標(biāo)準(zhǔn)色彩調(diào)用的方便,沒有其他作用。
b)根據(jù)固定區(qū)域輸出數(shù)據(jù)
always@(posedgeclkornegedgerst_n)
begin
if(!rst_n)
vga_data<=16'h0;
else
begin
if(vga_xpos>=0&&vga_xpos<(H_DISP/3))
vga_data<=RED;
elseif(vga_xpos>=(H_DISP>>3)*1&&vga_xpos<(H_DISP/3)*2)
vga_data<=GREEN;
else
vga_data<=BLUE;
end
end
如上代碼,根據(jù)xpos坐標(biāo),來輸出固定色彩。由于vga_driver模塊已經(jīng)完全設(shè)計(jì)好接
口,因此vga_display.v模塊就是簡單的根據(jù)區(qū)域,輸出設(shè)計(jì)的顏色。
(3)Vga_ctrl.v代碼分析
同步化解析略。
可控鎖相環(huán)PLL設(shè)計(jì)
本來可空鎖相環(huán)PLL設(shè)計(jì),Bingo想單獨(dú)成章來講述的,但覺得可能別的地方實(shí)際應(yīng)用價(jià)
值不是很大,最后便在此處闡明這樣設(shè)計(jì)的原因。
由于VGA不同分辨率的掃描時鐘不同,因此分辨率變化的時候,PLL的輸出時鐘是必要跟隨著變化。但是Bingo覺得好麻煩,于是想了偷懶的一招:PLLIP定義,無非是用QuartusIIGUI對PLL參數(shù)的設(shè)定,最后生成pll.v這個文件。而這個文件相當(dāng)于是鎖相環(huán)的驅(qū)動電路,故勢必包含著參數(shù)的定義。實(shí)際如下:
altpll_component.clk0_divide_by=1,
altpll_component.clk0_duty_cycle=50,
altpll_component.clk0_multiply_by=1,
如上圖所示,每次修改參數(shù),這三個變量會相應(yīng)的發(fā)生變化。因此,何不把這三個參數(shù)作
為例化的參數(shù),可以再頂層直接修改代碼來實(shí)現(xiàn)固定頻率的輸出?這樣豈不是很方便?因此設(shè)計(jì)參數(shù)例化接口如下:
#(
parameter
parameterparameter
)
DUTY_CYCLE=50,
DIVIDE_DATA=1,
MULTIPLY_DATA=1
理論上是完全行得通的,這樣設(shè)計(jì)的另一個好處就是電路的封裝性更好Bingo實(shí)踐證明,
完全可行,因此在此處說明,要學(xué)會正確的偷懶呵呵。
(4)Vga_design.v頂層文件代碼解析
a)Vga接口定義
//vgainterface
output
output
vga_adv_clk,
vga_blank_n,
output
output
vga_sync_n,
vga_hs,
outputvga_vs,
output[15:0]vga_rgb
如上所示,上面三個信號線是在使用adv712x視頻轉(zhuǎn)換芯片的時候才會出現(xiàn),一般的電阻
模擬電路,或者直接RGB3線驅(qū)動,可以直接刪除相關(guān)信號以及電路。
b)進(jìn)一步偷懶法則
根據(jù)常用的幾種分辨率,Bingo進(jìn)行了總結(jié),以下三種應(yīng)用較多,因此進(jìn)一步偷懶法則,圍繞他們?nèi)邅恚ú辉谶@三種以內(nèi)的話,自己模仿著再寫一個):
VGA_640_480_60FPS_25MHz
VGA_800_600_72FPS_50MHz
VGA_1024_768_60FPS_65MHz
Verilog語法也有define的用法,是否還記得C語言中,大工程的調(diào)試經(jīng)常對相關(guān)變量的
注釋,注銷來調(diào)整整個工程變量的應(yīng)用,因此此處Bingo套用這種思維模式,定義以上三種模式的變量,通過修改注釋define便可以輕松修改全局。具體如下所示:
//
//vgaparameterdefine
//`defineVGA_640_480_60FPS_25MHz
//`defineVGA_800_600_72FPS_50MHz
`defineVGA_1024_768_60FPS_65MHz
`ifdefVGA_640_480_60FPS_25MHz
parameter
DUTY_CYCLE=50;
parameter
parameter
DIVIDE_DATA=2;
MULTIPLY_DATA=1;
parameter
parameter
H_DISP=11'd640;
H_FRONT
=
11'd16;
parameter
parameter
H_SYNC
H_BACK
=11'd96;
=11'd48;
parameter
parameter
H_TOTAL
V_DISP
=
11'd800;
=10'd480;
parameter
parameter
V_FRONT
V_SYNC
=
10'd10;
=10'd2;
parameter
parameter
V_BACK
V_TOTAL
=10'd33;
10'd525;
=
`endif
`ifdefVGA_800_600_72FPS_50MHz
parameterDUTY_CYCLE=50;
parameterDIVIDE_DATA=1;
parameter
parameter
MULTIPLY_DATA=1;
H_DISP
=11'd800;
parameter
parameter
H_FRONT
H_SYNC
=
11'd56;
=11'd120;
parameter
parameter
H_BACK
H_TOTAL
=11'd64;
11'd1040;
=
parameter
parameter
V_DISP
V_FRONT
=10'd600;
10'd37;
=
parameter
parameter
V_SYNC
V_BACK
=10'd6;
=10'd23;
parameter
`endif
V_TOTAL
=
10'd666;
`ifdefVGA_1024_768_60FPS_65MHz
parameter
DUTY_CYCLE=50;
parameter
parameter
DIVIDE_DATA=10;
MULTIPLY_DATA=13;
parameter
parameter
H_DISP
H_FRONT
=11'd1024;
11'd24;
=
parameter
parameter
H_SYNC
H_BACK
=11'd136;
=11'd160;
parameter
parameter
H_TOTAL
V_DISP
=
11'd1344;
=10'd768;
parameter
parameter
V_FRONT
V_SYNC
=
10'd3;
=10'd6;
parameter
parameter
V_BACK
V_TOTAL
=10'd29;
10'd806;
=
`endif
1、彩條
(1)代碼
always@(posedgeclkornegedgerst_n)
begin
if(!rst_n)
vga_data<=16'h0;
else
begin
if(vga_xpos>=0&&vga_xpos<(H_DISP>>3))
vga_data<=RED;
elseif(vga_xpos>=
(H_DISP>>3)*1
&&
vga_xpos
<
(H_DISP>>3)*2)
vga_data<=GREEN;
elseif(vga_xpos>=
(H_DISP>>3)*2
&&
vga_xpos
<
(H_DISP>>3)*3)
vga_data<=BLUE;
elseif(vga_xpos>=
(H_DISP>>3)*3
&&
vga_xpos
<
(H_DISP>>3)*4)
vga_data<=WHITE;
elseif(vga_xpos>=
(H_DISP>>3)*4
&&
vga_xpos
<
(H_DISP>>3)*5)
vga_data<=BLACK;
elseif(vga_xpos>=
(H_DISP>>3)*5
&&
vga_xpos
<
(H_DISP>>3)*6)
vga_data<=YELLOW;
elseif(vga_xpos>=
(H_DISP>>3)*6
&&
vga_xpos
<
(H_DISP>>3)*7)
vga_data<=CYAN;
else//if(vga_xpos>=(H_DISP<<3)*7&&vga_xpos
<(H_DISP<<3)*8)
vga_data<=ROYAL;
end
end
通過簡單的對X坐標(biāo)地址的分割,來得到彩條。
(2)效果圖
2、花型矩陣
(1)代碼
wire[19:0]vga_result=vga_xpos*vga_ypos;
always@(posedgeclkornegedgerst_n)
begin
i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黃岡中學(xué)(含黃岡中學(xué)實(shí)驗(yàn)學(xué)校)專項(xiàng)公開招聘教師16人備考題庫有答案詳解
- 小學(xué)教師數(shù)字教學(xué)能力評價(jià)與智能評價(jià)系統(tǒng)在生物教育中的應(yīng)用研究教學(xué)研究課題報(bào)告
- 合肥市醫(yī)療器械檢驗(yàn)檢測中心有限公司2025年下半年第二批社會招聘備考題庫及參考答案詳解1套
- 3D可視化技術(shù)對神經(jīng)外科術(shù)后并發(fā)癥的預(yù)防作用
- 四川托普信息技術(shù)職業(yè)學(xué)院2025-2026學(xué)年第二學(xué)期師資招聘備考題庫含答案詳解
- 2025年保山市隆陽區(qū)瓦房彝族苗族鄉(xiāng)中心衛(wèi)生院鄉(xiāng)村醫(yī)生招聘備考題庫及一套完整答案詳解
- 2025年杭州之江灣股權(quán)投資基金管理有限公司招聘備考題庫及1套參考答案詳解
- 2025年四川省教育融媒體中心(四川教育電視臺)公開招聘編外工作人員備考題庫及參考答案詳解
- 統(tǒng)編七年級上第3課 遠(yuǎn)古的傳說 課件
- 2025年凱欣糧油有限公司招聘備考題庫完整答案詳解
- 2024年青海省中考生物地理合卷試題(含答案解析)
- 大學(xué)美育-美育賞湖南智慧樹知到期末考試答案章節(jié)答案2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院
- JT-T-915-2014機(jī)動車駕駛員安全駕駛技能培訓(xùn)要求
- JJG 393-2018便攜式X、γ輻射周圍劑量當(dāng)量(率)儀和監(jiān)測儀
- 黃金期貨基礎(chǔ)知識培訓(xùn)資料
- FANUC數(shù)控系統(tǒng)連接與調(diào)試實(shí)訓(xùn) 課件全套 1.0i –F系統(tǒng)規(guī)格 -10.機(jī)床動作設(shè)計(jì)與調(diào)試
- 宇電溫控器ai 500 501用戶手冊s 6中文說明書
- 成立易制爆危險(xiǎn)化學(xué)品治安保衛(wèi)機(jī)構(gòu)
- 軌道交通PIS系統(tǒng)介紹
- 二次結(jié)構(gòu)鋼筋工程施工方案
- 地產(chǎn)設(shè)計(jì)總結(jié)(優(yōu)選14篇)
評論
0/150
提交評論