基于FPGA的VGA显示的设计程序

基于FPGA的VGA显示的设计程序,第1张

//module : VGA_controller.v

module VGA_controller(

// Host Side

iRed,

iGreen,

iBlue,

oAddress,

busy,

// VGA Side

oVGA_R,

oVGA_G,

oVGA_B,

oVGA_H_SYNC,

oVGA_V_SYNC,

oVGA_SYNC,

oVGA_BLANK,

oVGA_CLOCK,

// Control Signal

iCLK,

iRST_N )

// Horizontal Parameter ( Pixel )

parameter H_SYNC_CYC = 120

parameter H_SYNC_BACK = 61+3

parameter H_SYNC_ACT = 800 // 806

parameter H_SYNC_FRONT= 53+3

parameter H_SYNC_TOTAL= 1040

// Virtical Parameter ( Line )

parameter V_SYNC_CYC = 6

parameter V_SYNC_BACK = 21+2

parameter V_SYNC_ACT = 600 // 604

parameter V_SYNC_FRONT= 35+2

parameter V_SYNC_TOTAL= 666

// Start Offset

parameter X_START = H_SYNC_CYC+H_SYNC_BACK

parameter Y_START = V_SYNC_CYC+V_SYNC_BACK

// Host Side

output reg [13:0] oAddress

input [7:0] iRed

input [7:0] iGreen

input [7:0] iBlue

input busy //modify 2011.1.18

// VGA Side

output [9:0] oVGA_R

output [9:0] oVGA_G

output [9:0] oVGA_B

output reg oVGA_H_SYNC

output reg oVGA_V_SYNC

output oVGA_SYNC

output oVGA_BLANK

output oVGA_CLOCK

// Control Signal

input iCLK

input iRST_N

// Internal Registers and Wires

reg [9:0] H_Cont

reg [9:0] V_Cont

reg [7:0] Cur_Color_R

reg [7:0] Cur_Color_G

reg [7:0] Cur_Color_B

assign oVGA_BLANK = oVGA_H_SYNC &oVGA_V_SYNC

assign oVGA_SYNC = 1'b0

assign oVGA_CLOCK = iCLK

//output RGB

assign oVGA_R = (H_Cont>=X_START &&H_Cont<X_START+H_SYNC_ACT &&

V_Cont>=Y_START &&V_Cont<Y_START+V_SYNC_ACT )

?{2'b00,Cur_Color_R}:0

assign oVGA_G = (H_Cont>=X_START &&H_Cont<X_START+H_SYNC_ACT &&

V_Cont>=Y_START &&V_Cont<Y_START+V_SYNC_ACT )

?{2'b00,Cur_Color_G}:0

assign oVGA_B = (H_Cont>=X_START &&H_Cont<X_START+H_SYNC_ACT &&

V_Cont>=Y_START &&V_Cont<Y_START+V_SYNC_ACT )

?{2'b00,Cur_Color_B}:0

// Pixel Address Generator

wire [9:0] posx

wire [9:0] posy

assign posx=H_Cont-X_START

assign posy=V_Cont-Y_START

always@(posedge iCLK or negedge iRST_N)

begin

if(!iRST_N)

begin

oAddress <= 0

end

else

begin

if( H_Cont>=X_START &&H_Cont<X_START+H_SYNC_ACT &&

V_Cont>=Y_START &&V_Cont<Y_START+V_SYNC_ACT &&!busy) begin

oAddress <=posy*H_SYNC_ACT+posx

end

else oAddress <= oAddress

end

end

// Cursor Generator

always@(posedge iCLK or negedge iRST_N)

begin

if(!iRST_N)

begin

Cur_Color_R <= 0

Cur_Color_G <= 0

Cur_Color_B <= 0

end

else

begin

if( H_Cont>=X_START &&H_Cont<X_START+H_SYNC_ACT&&

V_Cont>=Y_START &&V_Cont<Y_START+V_SYNC_ACT )

begin

Cur_Color_R <= iRed

Cur_Color_G <= iGreen

Cur_Color_B <= iBlue

end

else

begin

Cur_Color_R <= Cur_Color_R

Cur_Color_G <= Cur_Color_G

Cur_Color_B <= Cur_Color_B

end

end

end

// H_Sync Generator, Ref. 50 MHz Clock

always@(posedge iCLK or negedge iRST_N)

begin

if(!iRST_N)

begin

H_Cont <= 0

oVGA_H_SYNC <= 0

end

else

begin

// H_Sync Counter

if( H_Cont <H_SYNC_TOTAL )

H_Cont <= H_Cont+1

else

H_Cont <= 0

// H_Sync Generator

if( H_Cont <H_SYNC_CYC )

oVGA_H_SYNC <= 0

else

oVGA_H_SYNC <= 1

end

end

// V_Sync Generator, Ref. H_Sync

always@(posedge iCLK or negedge iRST_N)

begin

if(!iRST_N)

begin

V_Cont <= 0

oVGA_V_SYNC <= 0

end

else

begin

// When H_Sync Re-start

if(H_Cont==0)

begin

// V_Sync Counter

if( V_Cont <V_SYNC_TOTAL )

V_Cont <= V_Cont+1

else

V_Cont <= 0

// V_Sync Generator

if( V_Cont <V_SYNC_CYC )

oVGA_V_SYNC <= 0

else

oVGA_V_SYNC <= 1

end

end

end

endmodule

你玩过简单的单片机吗?

如果是,那就很清楚了。单片机的仿真机,就是由电脑经过下载线下载程序到仿真机上。

而仿真机就能按照你设定的程序的顺序RUN。。

同样的,这种方法,一样适用到任何开发板上的。

所以说,8951,AVR,PIC,CPLD/FPGA,DSP,ARM,MIPS,PPC,只要是开发板,就都是一样的方法。

不对,你的方法不是这样的??我刚没看明白。

你是要把开发板的VGA接口,连接到笔记本的“VGA输出接口”??

然后,在笔记本本身的液晶显示器上,看到自己用FPGA写的程序的现象??

是不是这样??

这样是不对的,笔记本的“VGA接口”是输出型态的。

开发板的VGA接口,是要连接到另一台VGA显示器的“输入接口”。。

VGA显示控制器须提供R、G、B三基色图像信号,HS行同步信号和VS场同步信号。由于VGA接口显示器仅能处理串行模拟信号,因此,VGA控制器所产生的信号经D/A转换器将数字信号转变为模拟信号后发送给显示器使用。VGA显示器正确、完整地显示数字图像包括时序的构建和数字图像信息的模拟化两个方面。据此系统硬件实现框图如图4所示,系统硬件由ADC控制模块、波形稳定控制模块、RAM存储模块、VGA控制模块组成。在ADC控制模块的控制下将A/D转换器转换后的数字信号经波形稳定模块处理后,存入数据缓存器RAM内,而后VGA控制器在驱动显示器的时候,读取数据缓存器中的数据进行显示[5]。通常VGA显示器显示的数据量较大,而FPGA内置的片内存储器资源很难满足存储量的需求,因此,一般都需要通过外接存储器进行扩展,对于图像等大数据量处理系统通常选用SDRAM进行扩展[6],本系统只进行波形的显示,不进行数据处理等 *** 作,故片内存储器足够满足使用要求。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11930541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存