VGA显示控制器_第1页
VGA显示控制器_第2页
VGA显示控制器_第3页
VGA显示控制器_第4页
VGA显示控制器_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、VGA显示控制器摘要前 言3一、课程设计要求和设计目的41.1 课程设计要求41.2.课程设计目的4二、课程设计方案论证和设计原理42.1课程设计方案论证42.2课程设计原理42.2.1VGA扫描原理42.3外围电路原理5三、电路原理分析和系统设计63.1、系统原理框图63.1.1 时钟分频模块(PLL)63.1.2 VGA行列控制模块(VGA)63.1.3 VGA色彩显示控制模块(R_G_B)63.2、系统电路Magicsopc实验箱中VGA电路原理图和管脚分配7四、系统各模块及其工作原理84.1、系统设计流程84.2、PLL锁相环模块设计84.3、VGA控制模块设计94.3.1 VGA时序

2、分析94.3.2 显示标准与参数分段94.3.3 VGA扫描控制流程图114.3.4 RGB模块设计流程图124.3.5 顶端模块12五、编译、仿真以及Magicsopc实验箱实现13 5.1程序编译135.2下载试验箱验证145.3测试仿真155.3.1测试仿真软件Modelsim155.3.2仿真结果及分析155.3.2.1 PLL模块155.3.2.2 VGA显示控制模块155.3.2.3 RGB控制模块16六、实验心得16七、参考文献17附件17VGA模块程序17RGB模块程序19TOP顶层模块程序20测试模块程序21前 言 Verilog HDL是目前应用最为广泛的硬件描述语言Ver

3、ilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。Verilog HDL进行设计最大的优点是其工艺无关性这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。Verilog HDL是一种硬件描述语言为了制作数字电路而用来描述ASICs和FPGA的设计之用。是以 C编程语言为基础设计一种语言。1995年12月,IEEE制定了Verilong HDL的标准。VGA(Video Graphics Array)即视频图形阵列,具有分辨率高、显示速率快、颜色丰富等优点,

4、在彩色显示器领域得到了广泛的应用,VGA支持在640X480的较高分辨率下同时显示16种色彩或256种灰度,现在的VGA有着更高分辨率如800X600或1024X768,这些扩充的模式就称之为Super VGA模式,简称SVGA,本实验采用的是800X600,, VGA接口就是显卡上输出模拟信号的接口,传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个,是应用最为广泛的接口类型。实验是基于FPGA设计,并且采用Verilog HDL硬件描述语言描述的VGA显示控制器,将Quartus集成开发环境作为软件编程实现,将MgicSOP

5、C实验箱作为设计的硬件实现资源, FPGA控制了分辨率为800x600VGA显示器的显示色彩和显示区域,分别输出的是红绿蓝三根色彩控制线vga_r、vga_g和vga_b,行信号控制线和列信号控制线vga_vs和vga_hs。实验的重心放在了显示控制器的系统层面的设计,采用了自顶向下的思路进行设计。课程设计报告中给出了完整的设计思路和过程,并将系统分模块进行了详细的设计;绘出带有外围电路示意图的总框图,系统功能描述以及方案对比的详细说明,采用可编程逻辑器件进行设计,给出了电路原理分析和状态转换图,并且给出了Verilog HDL语言源代码和测试代码;完成了状态机和核心模块以及系统整体的仿真验证

6、,并且给出仿真波形及说明。最终下载到MgicSOPC实验箱上调试和测验,得出课程设计成果。 关键词:VGA显示控制;FPGA; Verilog; Quartus; 一、课程设计要求和设计目的1.1 课程设计要求利用 Verilog HDL 设计 VGA 显示控制模块,并在 Magic SOPC 实验箱上实现,该控制模块,可以根据 VGA 国际显示标准,设定屏幕显示像素和刷新频率,在 PC 液晶显示器上显示出多种彩色条纹或类似电脑屏幕检测程序那样的纯色切换。基本细节要求如下:1) 采用显示模式为 800×600 的VGA显示器;2) 可以通过逻辑编写产生所设定的彩色条纹信号。1.2.课

7、程设计目的1) 学习 VGA 标准;2) 学习 VGA 显示控制器的设计。二、课程设计方案论证和设计原理2.1课程设计方案论证 本设计采用Verilog HDL硬件描述语言描述的VGA显示控制器,将开发软件采用Altera公司的Quartus 13.0集成开发环境作为软件编程实现,将MgicSOPC实验箱作为设计的硬件实现资源,箱上包含VGA接口,并可提供50MHZ的时钟频率经过锁相环PLL产生系统要求的40MHZ的频率即(像素输出频率); FPGA控制了分辨率为800x600VGA显示器的显示色彩和显示区域,分别输出的是红绿蓝三根色彩控制线vga_r、vga_g和vga_b,行信号控制线和列

8、信号控制线vga_vs和vga_hs。设计重点考虑的是VGA时序控制的准确性,只要VGA时序控制正确,那么就可以很容易的实现彩条、单色图像的显示,同时输出红绿蓝三根色彩输出线控制着不同色彩显示,我们可以根据色彩编码表来设计我们想显示的颜色。2.2课程设计原理2.2.1VGA扫描原理 VGA显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是从屏幕左上角第一个点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT 对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始

9、下一帧。隔行扫描是指电子束扫描时每隔一行扫一线,扫完一屏后再返回来扫描剩下的线,隔行扫描的显示器闪烁快速,(本实验采用逐行扫描的方式)。 2.3外围电路原理外围电路主要是VGA接口,VGA接口共有15针,分成3排,每排5个孔,是显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。一般在VGA接头上,会1,5,6,10,11,15等标明每个接口编号,VGA接口15根针,其对应接口定义如下:图2-1 VGA接口定义在本设计中,FPGA分别输出的是红绿蓝三根色彩控制线vga_r3、vga_g3和vga_b2,行信号控制线和列信号控制线vg

10、a_vs和vga_hs,连接到VGA所对应的接口,其中外围电路原理图如下:图2-2 开发板外围电路原理图三、电路原理分析和系统设计3.1、系统原理框图我们本次的任务是设计VGA控制器,驱动液晶屏显示器显示3x2方块,每个方块显示的颜色不同,通过设计需要对FPGA编程可输出RGB三基色信号和HS 、VS行列控制线。通过Verilog编写响应的彩条控制器程序,根据试验箱上的晶振频率50MHZ和像素输出频率40MHZ进行对比,首先设计锁相环PLL模块产生系统要求的40MHZ的频率即(像素输出频率);然后设计VGA模块产生显示行控制线和列控制线,产生VGA显示的行、列时序,并且生成一个使能信号en和行

11、范围控制信号10:0v和列范围控制信号10:0h,使能信号en和行范围控制信号10:0v和列范围控制信号10:0h再输入到RGB模块当中,控制RGB三基色信号的输出2:0 vga_r、2:0 vga_g、1:0 vga_b。图3-1 系统原理框图3.1.1 时钟分频模块(PLL) 开发板上使用的晶振为50MHZ,VGA显示标准为800*600*60Hz,该显示模式需要的系统时钟频率为40MHz,即像素输出频率因此我们通过调用锁相环分频来实现。3.1.2 VGA行列控制模块(VGA) VGA显示标准需要设定行列控制信号,来显示有效显示区域,这也是整个VGA显示模块最为核心的一部分。3.1.3 V

12、GA色彩显示控制模块(R_G_B) 图像有效显示区域(使能信号en=1)内,输出控制颜色控制的r、g、b信号。3.2、系统电路Magicsopc实验箱中VGA电路原理图和管脚分配根据Magicsopc实验箱的datasheet, VGA显示部分的系统电路原理图如图3-2所示:其中U47为转换芯片,两根行列控制线,三根色彩控制线。图3-2 Magicsopc实验箱中VGA电路原理图同时也根据试验箱datasheet可以得到VGA显示管脚图分配,如图3-3所示,CLK信号接到A13管脚,复位信号RET_N接到A13,列控制信号vga_h接到N18,行控制信号接到E22管脚,采用的是256色VGA

13、,(IO电压为2.5V)。图3-3 Magicsopc实验箱中VGA电路管脚分配四、系统各模块及其工作原理4.1、系统设计流程PLL锁相环R_G_B颜色控制输出VGA控制器VGA显示颜色信号同步信号40MHZ时钟50MHZ图4-1 系统设计流程图如图4-1所示:首先设计锁相环PLL模块产生系统要求的40MHZ的频率即(像素输出频率);然后设计VGA模块产生显示行控制线和列控制线,产生VGA显示的行、列时序,并且生成一个使能信号en使再输入到R_G_B模块当中,控制RGB三基色信号的输出,其中VGA模块为设计的核心。4.2、PLL锁相环模块设计图4-2 PLL模块框架FPGA中含有高性能的嵌入式

14、模拟锁相环,此锁相环PLL可以与一输入时钟信号同步,作为参考实现锁相。将输入的50MHZ时钟信号inclk0锁相为40MHZ的像素输入时钟c0,来满足VGA显示要求。需要注意锁相环使用的以下几点:1) 锁相环必须在工程的顶层模块文件中使用;2) 锁相环的输入时钟必须是外部时钟输入,不能是由FPGA内部信号引入锁相环。4.3、VGA控制模块设计4.3.1 VGA时序分析VGA列同步时序:VGA行同步时序:图4-3 VGA行列同步时序VGA 中定义行时序和列时序都需要同步脉冲(a 段)、显示后沿(b 段)、显示时序段(c 段)和显示前沿(d 段)四部分。VGA 工业标准显示模式要求:行同步、列同步

15、都为负极性,即同步脉冲要求是负脉冲。由 VGA 行时序可知:每一行都有一个负极性行同步脉冲(a 段),是数据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿(b段),在显示时序段(c 段)为显示器亮的过程,RGB 数据驱动一行上的每一个像素点,从而显示一行。在一行的最后为显示前沿(d 段)。在显示时间段c之外没有图像投射到屏幕,而是插入消隐信号。同步脉冲、显示后沿和显示前沿都是在行消隐间隔内,当消隐有效时,RGB 信号无效,屏幕不显示数据。4.3.2 显示标准与参数分段本实验的显示标准为 800*600*60Hz 。(800 为列数,600 为行数,60Hz为刷新一屏的频率)输

16、入像素时钟频率为40MHZ,还有其它指定的国际标准,如图4-4所示: 图4-4 VGA显示标准行时序:屏幕对应的行数为 628(a+b+c+d=e 段),其中 600(c 段)为显示行;每行均有行同步信号(a 段),为4 个行周期的低电平;显示后沿(b段),23个周期的高电平,和显示前沿(d 段),1个周期的高电平。 列时序:每个显示行包括1056列(a+b+c+d=e段),其中800(c段)为有效显示区,每列均有列同步信号(a段),为128个列周期的低电平;显示后沿(b段),88个周期的高电平,和显示前沿(d 段),40个周期的高电平。 屏幕显示有效区域如图4-5所示:图4-5 VGA显示有

17、效区域示意图4.3.3 VGA扫描控制流程图Rst_n为0cnt_h、cnt_v清零vga_vs、vga_hs为高电平vga_vs为高电平是 vga_hs为低电平复位状态否cnt_h+1判断cnt_h是否为hy_a?否是 否vga_hs为高电平判断cnt_h是否为1055?vga_vs为低电平cnt_v+1是 判断cnt_v 是否为vy_a? 判断cnt_v是否为627?扫描结束图4-6 VGA显示控制流程图设计思路分析:如图4-6所示,cnt_h为列计数器、cnt_v为行计数器,当rst_n复位时候,行计数器列计数器清零,同时行同步信号和列同步信号vga_vs、vga_hs为高电平,当列计数

18、器开始计时,vga_vs、vga_hs为低电平,直到cnt_h等于列同步区段hy_a时候,vga_hs置为高电平,当cnt_h等于1055时候,列计数器计满,cnt_v加1,同样cnt_v等于行同步区段vy_a时候,vga_vs置为高电平, 当cnt_v等于627时候扫描完毕。4.3.4 RGB模块设计流程图输入en=1h <= 11'd625&&v <= 11'd200?显示绿色显示淡绿色显示淡红色h >= 11'd625&&v <=11'd200?h <= 11'd625&&

19、;(v >= 11'd225&&v <= 11'd400?h <= 11'd625&&v >= 11'd425?显示蓝色h>= 11'd625&&(v >= 11'd225&&v <= 11'd400?显示青色显示红色h >= 11'd625&&v>= 11'd425?结束图4-7 RGB模块设计流程图RGB模块设计分析,当使能信号输出为1,即为VGA显示有效区域时候,我们通过行计数v和列计

20、数h控制显示区域,将区域分为6块显示区域,6块显示区域显示不同颜色,通过三根颜色控制线输出。4.3.5 顶端模块顶层模块端口介绍端口名端口说明clk系统时钟输入rst_n低电平复位输入vga_vs VGA行同步信号输出vga_hs VGA列同步信号输出vga_r 红色输出信号vga_g 绿色输出信号vga_b 蓝色输出信号内部连线说明连线名连线说明clk_40clk_40与模块vga的输入信号clk相连en使能信号输入到RGB模块v行计数控制显示区域信号h列计数控制显示区域信号五、编译、仿真以及Magicsopc实验箱实现5.1程序编译建立工程,选择目标器件型号,工程建立完毕之后,调用FPGA

21、嵌入式锁相环PLL,然后通过Verilog硬件描述语言编写RGB模块和VGA模块代码,编写顶端模块TOP,用于模块端口和内部信号连接;最后编写测试模块,用于模块端口测试和仿真,最后编译结果成功,如图6.1所示:图5-1 程序编译结果5.2下载试验箱验证编译成功之后,在工程目录下会生成一个output_file文件夹,生成的可下载文件,sof文件可以直接下载到Magicsopc试验箱的FPGA当中,我们将自己的PC机同试验箱通过USB串口相连之后,安装相应的USB驱动,然后将管脚按照datasheet分配完毕,我们将可下载文件,sof文件下载到试验箱,如果成功,结果如图5-2所示:图5-2 下载

22、试验箱成功结果示意图同样我们将Magicsopc试验箱的输出VGA端口同VGA显示器相连,让显示器通电之后,我们在程序当中点击start,进行下载文件到试验箱,在显示器上显示要显示的结果,如图5-3所示,同样我们将FPGA试验箱断电之后,将显示器关闭,再重新打开显示器和试验箱,显示器上将不再显示我们的色彩分区图,这是因为选择的FPGA器件型号是基于SRAM可编程,RAM有一个特性就是断电之后数据就会丢失,所以存放在RAM当中的源程序和管脚分配信息丢失,需要重新下载.sof文件到试验箱中即可。图5-3 VGA显示结果图5.3测试仿真5.3.1测试仿真软件ModelsimModelsim是一个基于

23、内核的Verilog HDL/VHDL混合仿真器,是Mentor Graphics的产品,Modelsim可以在一个设计中单独或混合使用Verilog HDL和VHDL,允许Verilog HDL模块调用VHDL实体,或反之。由于Modelsim是编译型仿真器,使用编译后的HDL库来进行仿真,因此在进行仿真之前,必须编译所有的HDL文件成为HDL仿真库。作为专业仿真器,Modelsim提供了易于实现的EDA工具接口,可以方便的与EDA工具相连接。5.3.2仿真结果及分析5.3.2.1 PLL模块仿真器默认信号端口为模块端口输入和输出,我们需要将其删除,重新添加模块端口和内部信号,先添加PLL模

24、块,其中输入为inclk0,输出为clk,进过PLL锁相环分频之后,原输入时钟频率为50MHZ,周期为20ns,分配之后为40MHZ输出,周期为25ns,如图5-4所示:图5-4 PLL锁相环模块仿真图5.3.2.2 VGA显示控制模块图5-5 VGA控制显示模块仿真图1图5-6 VGA控制显示模块仿真图2VGA模块仿真分析:如图5-6,当cnt_h计数器不断计数,直到计满1056个数时候,也就是01055,cnt_v加1;同样如图5-5,当行cnt_v计满28,cnt_h计满216(即列a段与b段之和),en=1,为显示有效区域,与设定相符。5.3.2.3 RGB控制模块图5-7 RGB模块

25、仿真图2RGB模块仿真分析:通过设定行计数范围与列计数范围,来限定显示区域,v和h分别是行计数器和列计数器,当en=1时候,显示有效区域,通过v和h的值来将有效区域划分为6块(3x2),不同区域的颜色由rgb得设定不同而不同。六、实验心得对VGA的学习以及设计,我认识到了VGA的工作原理以及关于VerilogHDL的简单语言思维。从建立project建立new source到写模块源代码,测试代码等,并且成功进行了仿真。也学习了如何添加文件程序,如何将已编好的仿真程序以添加到modelsim进行仿真。运用modlesim可以观察到仿真结果,验证了程序编写的正确,也验证了对程序的理解与猜想。掌握

26、基本组合逻辑电路的实现方法;初步了解基本组合逻辑电路的生成方法;学习测试模块的编写;通过综合和布局布线了解不同层析仿真的物理意义。这段时间的课程设计,我学到了很多知识,也有许多的体会:首先,我明白了其实认真学习一门语言或者一个软件应用并不困难,关键是所追求的学习方法和途径。这次的程序编写培养了我分析问题、编程和动手的能力,使我掌握了程序设计的基本技能,提高了我实践编程的能力。有很多不明白的东西,但通过老师培训讲解,自己上网查阅信息以及理解老师提供的资料,我们学会了在解决问题时要学会自己分析思考,动手查找,耐心认真,合作解决问题。在解决问题的过程中,收获颇多 七、参考文献1. EDA技术实用教程

27、VerilogHDL第五版,潘松,黄继业等编著,科学出版社。2. Verilog数字系统设计教程,夏宇闻编著,第三版,北航出版社。3. EDA技术与Verilog ,潘松,黄继业编著,清华大学初版设。4. Verilog硬件描述语言与数字逻辑电路设计,侯伯亨,顾新编著。西安电子科技大学。5. Verilog电路设计技术,王道宪编著,国防工业出版社。附件VGA模块程序module vga( /显示分辨率为800 * 600 *60 MHZ/端口信号:模块的输入输出接口inputclk, /连接至分频时钟,为40MHzinput rst_n, /低电平复位output 10:0v ,output

28、10:0h,output regvga_hs,/VGA列同步信号output reg vga_vs,/VGA行同步信号output en /显示有效区域的使能信号);/-VGA时序-/800*60060 40Mhz/同步后沿有效前沿周期/hs12888800401056/vs4236001628/VGA显示相应参数parameter hy_all = 11'd1056,/列时序hy_a = 11'd128,hy_b = 11'd88,hy_c = 11'd800,hy_d = 11'd40,vy_all = 11'd628,/行时序vy_a =

29、11'd4,vy_b = 11'd23,vy_c = 11'd600,vy_d = 11'd1;/用计数器限定VGA显示相应区域reg 10:0 cnt_h;/列计数器reg 10:0 cnt_v;/行计数器/-列计数-always(posedge clk or negedge rst_n) if(!rst_n)cnt_h<= 11'd0;/列计数器复位elseif(cnt_h = (hy_all-1)/所有列扫描完毕cnt_h<= 11'd0;/列计数器清零elsecnt_h <= cnt_h + 1'b1;/列计数器

30、累加/-行计数-always(posedge clk or negedge rst_n)/在一列计数完之后将行加1if(!rst_n)cnt_v<= 11'd0;/行计数器复位elseif(cnt_v = (vy_all-1)/所有行扫描完毕cnt_v<= 11'd0;/行计数器清零elseif(cnt_h =(hy_all-1)/所有列扫描完毕cnt_v <= cnt_v + 1'b1;/行计数器加一/-限定列同步信号-always(posedge clk or negedge rst_n) if(!rst_n)vga_hs<= 1'b

31、1;/复位时置列同步信号为高电平else if(cnt_h = 0) /列开始扫描vga_hs<= 1'b0;/置列同步信号为低电平else if(cnt_h = hy_a)/保持hy_a个时钟周期,为什么不是减一vga_hs<= 1'b1;/置列同步信号为高电平/-限定行同步信号-always(posedge clk or negedge rst_n)if(!rst_n) vga_vs<= 1'b1;/复位时置行同步信号为高电平else if(cnt_v =0) /行开始扫描vga_vs<= 1'b0;/置行同步信号为低电平else i

32、f(cnt_v = vy_a)/保持vy_a个时钟周期vga_vs<= 1'b1;/置行同步信号为高电平/-限定显示有效区域,设定使能信号-wire 12:0 en0;/列有效标志wire 12:0 en4;/行有效标志assign en0 = (cnt_h >= hy_a + hy_b && cnt_h <= hy_a + hy_b + hy_c)?(cnt_h-hy_a-hy_b):11'd0;/列有效区域assign en4 = (cnt_v >= vy_a + vy_b && cnt_v <= vy_a +

33、vy_b + vy_c)?(cnt_v-vy_a-vy_b):11'd0;/行有效区域assign en = (en0 > 0 && en4 > 0 )?1'b1:1'b0;/行、列共同有效区域800*600assign h = cnt_h;assign v = cnt_v;endmoduleRGB模块程序module r_g_b(inputen,input 10:0 v,input 10:0 h,output 2:0 vga_r,output 2:0 vga_g,output 1:0 vga_b);reg 2:0 r;reg 2:0 g;r

34、eg 1:0 b;always (en)if(h <= 11'd625&&v <= 11'd200) begin r <= 3'b101; g <= 3'b000; b <= 2'b10; endelse if(h >= 11'd625&&v <=11'd200) begin r <= 3'b000;g <= 3'b110;b <= 2'b00;endelse if(h <= 11'd625&&

35、(v >= 11'd225&&v <= 11'd400) begin r <= 3'b000;g <= 3'b111; b <= 2'b00; endelse if(h >= 11'd625&&(v >= 11'd225&&v <= 11'd400) begin r <= 3'b001;g <= 3'b010;b <= 2'b10; endelse if(h <= 11'd625&

36、amp;&v >= 11'd425) begin r <= 3'b011;g <= 3'b000;b <= 2'b0; end else if(h >= 11'd625&&v >= 11'd425) begin r <= 3'b011; g <= 3'b000;b <= 2'b0; end else if(h >= 11'd625&&v >= 11'd425) begin r <= 3'b010;g <= 3'b100;b <= 2'b00; endassign vga_r = en ? r : 3'b000;assign vga_g =

温馨提示

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

评论

0/150

提交评论