- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SOPC实验:硬件描述语言驱动VGA
——电信1301 秦行U201313480
实验目的:
通过友晶DE2多媒体开发板驱动VGA显示出各种颜色效果,从而掌握DE2
开发板的使用,以及VGA的接口控制方法。
实验内容:
通过老师提供的完整的工程文件,把程序烧到开发板上,然后连接显示器,然后通过DE2开发板上的开关控制实现对显示器颜色的改变。在这个过程中,要读懂代码,搞清楚代码是如何实现VGA接口控制的。
实验过程及结果:
打开工程文件
编译并运行(Program,程序烧到DE2板子上)
运行结果
小组按照指导书依次拨动开关,按下按键,载入了不同颜色到SRAM,这里为了避免结果的冗余,只取了3次的结果。
1)DE2电源第一次打开时,SRAM中含有随机数据流,显示结果如下:
按下KEY1KEY1 把20x15 格子的颜色比特流写入SRAM中,结果如下:
按住KEY2的同时按下KEY1能写入单一颜色到SRAM
把 SW[15:12]拨到ON,然后按KEY2时安下KEY1,显示结果如下:
发现单一颜色红色被写入。
把SW[7:4]拨到ON,然后按住KEY2的同时,按下KEY1,显示结果如下:
发现单一颜色蓝色被写入。
实验原理及分析:
VGA驱动的原理和时序
显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。隔行扫描是指电子束扫描时每隔一行扫一线,完成一屏后在返回来扫描剩下的线,隔行扫描的显示器闪烁的厉害,会让使用者的眼睛疲劳。
本实验实现的VGA驱动程序分辨率为480X640@60hz,一场总共包括525行其中有效行为480行,每行包括800个像素点,实际有效像素点为680点,60hz*800*525=25.2Mhz
时序图
VGA控制器(主要的核心模块)
图像数据存储模块
时钟模块,产生不同扫描频率和不同分辨率要求的像素时钟
3)列计数器和行计数器分别对行同步信号和场同步信号以像素和行周期为单位进行计数,
分别产生行同步和场同步信号
4)显示区域输出有效的SRAM地址,因为显示的图像来源与SRAM模块
相应代码及理解
代码主要集中在Reset_Delay,VGA_Audio_PLL和VGA_Controller这三个部分,由DE2_Default.v文件实现对它们的调用
Reset_Delay和VGA_Audio_PLL
分辨率为480X640@60hz的情况下,时钟频率为25MHz,而DE2的频率为50MHz,所以必须增加分频模块。Reset_Delay和VGA_Audio_PLL就为分频的实现提供了帮助。
例:Reset_Delay模块如下
module Reset_Delay(iCLK,oRESET);
input iCLK;
output reg oRESET;
reg [19:0] Cont;
always@(posedge iCLK)
begin
if(Cont!=20hFFFFF)
begin
Cont = Cont+1;
oRESET = 1b0;
end
else
oRESET = 1b1;
end
Endmodule
主要的VGA_Controller部分
行列同步信号和计数的实现:
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
always@(posedge iCLK or negedge iRST_N)
begin
if(!iRST_N)
begin
V_Cont = 0;
oVGA_V_SYNC = 0;
end
else
begi
您可能关注的文档
最近下载
- 保险学结课论文.docx VIP
- 2025四川广安安辑项目管理有限公司第二批次招聘劳动合同工5人笔试参考题库附答案解析.docx VIP
- 呆呆鲨可爱卡通风AI应用科普模版.pptx VIP
- 中考数学复习重难题型真题再现及题型预测(全国通用)专题01简单计算题(实数混合计算、整式分式化简、解分式方程、解不等式及方程)(原卷版+解析).docx VIP
- 实验室废物处理培训.pptx VIP
- 2025四川广安安辑项目管理有限公司第二批次招聘劳动合同工5人笔试备考题库及答案解析.docx VIP
- 劳力士培训课件.ppt VIP
- 医学大数据分析与挖掘方法及应用研究综述.pptx VIP
- 第一视角与第三视角.ppt VIP
- 窗口人员劳务派遣投标方案模板(345).doc VIP
原创力文档


文档评论(0)