SOPC硬件语言驱动VGA_第1页
SOPC硬件语言驱动VGA_第2页
SOPC硬件语言驱动VGA_第3页
SOPC硬件语言驱动VGA_第4页
SOPC硬件语言驱动VGA_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SOPC实验:硬件描述语言驱动VGA 电信1301 秦行U201313480实验目的:通过友晶DE2多媒体开发板驱动VGA显示出各种颜色效果,从而掌握DE2开发板的使用,以及VGA的接口控制方法。实验内容:通过老师提供的完整的工程文件,把程序烧到开发板上,然后连接显示器,然后通过DE2开发板上的开关控制实现对显示器颜色的改变。在这个过程中,要读懂代码,搞清楚代码是如何实现VGA接口控制的。实验过程及结果:1、 打开工程文件2、 编译并运行(Program,程序烧到DE2板子上)3、 运行结果 小组按照指导书依次拨动开关,按下按键,载入了不同颜色到SRAM,这里为了避免结果的冗余,只取了3次的结

2、果。1)DE2电源第一次打开时,SRAM中含有随机数据流,显示结果如下:2) 按下KEY1KEY1 把20x15 格子的颜色比特流写入SRAM中,结果如下:3) 按住KEY2的同时按下KEY1能写入单一颜色到SRAM 把 SW15:12拨到ON,然后按KEY2时安下KEY1,显示结果如下: 发现单一颜色红色被写入。4) 把SW7:4拨到ON,然后按住KEY2的同时,按下KEY1,显示结果如下: 发现单一颜色蓝色被写入。实验原理及分析:1. VGA驱动的原理和时序 显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行

3、的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。隔行扫描是指电子束扫描时每隔一行扫一线,完成一屏后在返回来扫描剩下的线,隔行扫描的显示器闪烁的厉害,会让使用者的眼睛疲劳。本实验实现的VGA驱动程序分辨率为480X64060hz,一场总共包括525行其中有效行为480行,每行包括800个像素点,实际有效像素点为680点,60hz*800*525=25.2Mhz时序图2. VGA控制器(主要的核心模块)1) 图像数据存储模块2) 时钟模块,产生不同扫描频率和不同分

4、辨率要求的像素时钟3)列计数器和行计数器分别对行同步信号和场同步信号以像素和行周期为单位进行计数,分别产生行同步和场同步信号4)显示区域输出有效的SRAM地址,因为显示的图像来源与SRAM模块3. 相应代码及理解 代码主要集中在Reset_Delay,VGA_Audio_PLL和VGA_Controller这三个部分,由DE2_Default.v文件实现对它们的调用1. Reset_Delay和VGA_Audio_PLL分辨率为480X64060hz的情况下,时钟频率为25MHz,而DE2的频率为50MHz,所以必须增加分频模块。Reset_Delay和VGA_Audio_PLL就为分频的实现

5、提供了帮助。例:Reset_Delay模块如下moduleReset_Delay(iCLK,oRESET);inputiCLK;output regoRESET;reg19:0Cont;always(posedge iCLK)beginif(Cont!=20'hFFFFF)beginCont<=Cont+1;oRESET<=1'b0;endelseoRESET<=1'b1;endEndmodule2. 主要的VGA_Controller部分1) 行列同步信号和计数的实现:always(posedge iCLK or negedge iRST_N)beg

6、inif(!iRST_N)beginH_Cont<=0;oVGA_H_SYNC<=0;endelsebegin/H_Sync Counterif( H_Cont < H_SYNC_TOTAL )H_Cont<=H_Cont+1;elseH_Cont<=0;/H_Sync Generatorif( H_Cont < H_SYNC_CYC )oVGA_H_SYNC<=0;elseoVGA_H_SYNC<=1;endendalways(posedge iCLK or negedge iRST_N)beginif(!iRST_N)beginV_Cont&

7、lt;=0;oVGA_V_SYNC<=0;endelsebegin/When H_Sync Re-startif(H_Cont=0)begin/V_Sync Counterif( V_Cont < V_SYNC_TOTAL )V_Cont<=V_Cont+1;elseV_Cont<=0;/V_Sync Generatorif(V_Cont < V_SYNC_CYC )oVGA_V_SYNC<=0;elseoVGA_V_SYNC<=1;endendEnd2)像素查找表地址生成逻辑:always(posedge iCLK or negedge iRST_N

8、)beginif(!iRST_N)beginoCoord_X<=0;oCoord_Y<=0;oAddress<=0;endelsebeginif(H_Cont>=X_START && H_Cont<X_START+H_SYNC_ACT &&V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )beginoCoord_X<=H_Cont-X_START;oCoord_Y<=V_Cont-Y_START;oAddress<=oCoord_Y*H_SYNC

9、_ACT+oCoord_X-3;endendend3) 颜色信息分配:assignmCursor_EN=iCursor_RGB_EN3;assignmRed_EN=iCursor_RGB_EN2;assignmGreen_EN=iCursor_RGB_EN1;assignmBlue_EN=iCursor_RGB_EN0;assignoVGA_R=(H_Cont>=X_START+9 && H_Cont<X_START+H_SYNC_ACT+9 &&V_Cont>=Y_START && V_Cont<Y_START+V_SY

10、NC_ACT )?(mRed_EN?Cur_Color_R:0):0;assignoVGA_G=(H_Cont>=X_START+9 && H_Cont<X_START+H_SYNC_ACT+9 &&V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )?(mGreen_EN?Cur_Color_G:0):0;assignoVGA_B=(H_Cont>=X_START+9 && H_Cont<X_START+H_SYNC_ACT+9 &&V_Cont>=Y_START && V_Cont<Y_START+V_SYNC_ACT )?(mBlue_EN?Cur_Color_B:0):0;实验感想本次实验操作过程比较简单,因为老师提供了整个工程的文件还有相关操作的资料,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论