SOPC硬件语言驱动VGA要点.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档