电子设计自动化课程设计报告材料_第1页
电子设计自动化课程设计报告材料_第2页
电子设计自动化课程设计报告材料_第3页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、电子设计自动化课程设计报告学生姓名:学 号:课设题目: VGA 彩条信号显示控制器设计同组人:电子设计自动化课程设计报告郝欣欣一、课程设计内容1、 使用Verilog 语言和Modelsim仿真器完成可显示横彩条、竖彩条、棋盘格相间的VGA 控制器的设计和验证2、 设计并验证可显示英语单词”HIT”的VGA控制器3、使用Quartus II 和SOPC实验箱验证设计的正确性4、Verilog 代码要符合微电子中心编码标准二、FPGA原理CPLD FPGA是在PAL GAL等基础上发展起来的一种具有丰富的可编程I/O引脚、逻辑宏单元、门电路以及RAM空间的可编程逻辑器件,几乎所有应用门阵 列、P

2、LD和中小规模通用数字集成电路的场合均可应用FPGA和 CPLD器件。CPLD的设计是基于乘积项选择矩阵来实现的,而 FPGAS于查找表来设计的。查找表 就是实现将输入信号的各种组合功能以一定的次序写入RAM中,然后在输入信号的作用下,输出特定的函数运算结果。其结构图如图1所示:徊入器输入4T-图1. FPGA查找表单元一个N输入查找表(LUT,Look Up Table)可以实现N个输入变量的任何逻辑功 能,如N输入“与”、N输入“异或”等。输入多于N个的函数、方程必须分开用几个查找表(LUT)实现(如图2 所示)o16x1RAMi r图2 FPGA查.找表单元内部结构该系统设计中,FPGA

3、芯片用的是ALTERA公司的EP1K30QC208-2它的系统结构 如图3所示。它由若干个逻辑单元和中央布线池加 I/O端口构成快速通道互连函I固逻辑单兀逻辑阵列块图3 EP1K30QC20站部结构三、VGA接口VGA勺全称为Video Graphic Array,即显示绘图阵列。在 PC行业发展的初 期,VGA以其支持在640X480的较高分辨率下同时显示16种色彩或256种灰度, 同时在320X240分辨率下可以同时显示256种颜色的良好特性得到广泛支持。后 来,厂商们纷纷在VGA基础上加以扩充,如将显存提高至1M并使其支持更高分 辨率如800X600或1024X768,这些扩充的模式就称

4、之为 VESA(VideoElectronics Standards Association ,视频电子标准协会)的Super VGA模式,简称SVGA 现在的显卡和显示器都支持 SVGA莫式。MgCiti10tot15临址地聊1VGA图4 VGA接口VGA接口就是显卡上输出模拟信号的接口,也叫 D-Sub接口。VGA接口是- 种D型接口,上面共有15针空,分成三排,每排五个。VGA接口是显卡上应用 最为广泛的接口类型,绝大多数的显卡都带有此种接口。表1 VGA管脚定义管脚定义1红基色red2绿基色gree n3蓝基色blue4地址码ID Bit5自测试(各家定义不同)6红地7绿地8蓝地9保留

5、(各家定义不同)10数字地11地址码12地址码13行同步14场同步15地址码(各家定义不同)通过模拟VGAS口和计算机连接的显示器的工作原理,是计算机内部以数字方式 生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G B三原色信号 和行、场同步信号,信号通过电缆传输到显示设备中。对于模拟显示设备,如模 拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。而 对于LCD DLP等数字显示设备,显示设备中需配置相应的 A/D(模拟/数字)转换 器,将模拟信号转变为数字信号。在经过 D/A和A/D2次转换后,不可避免地造 成了一些图像细节的损失。VGAS口应用于CRT显示器

6、无可厚非,但用于连接液 晶之类的显示设备,则转换过程的图像损失会使显示效果略微下降。CRT显示器 因为设计制造上的原因,只能接受模拟信号输入,也就是我们为什么在CRT显示 器上只看到VGA接口的原因。四、VGAS示接口原理计算机显示器的显示有许多标准,常见的有VGA SVGA等。本系统采用FPGA 来实现图像显示控制器,这在产品开发设计中有许多实际应用。常见的彩色显示器,一般由CRT(阴极射线管)构成,彩色是由G R、B(绿: Green,红:Red,蓝:Blue)三基色组成。显示是用逐行扫描的方式解决,阴极 射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRBE基色,合成一个彩色像素。扫描从

7、屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫完一行, 电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同 步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。对于普通的VGA显示器,其引出线共含5个信号:G R、B:三基色信号; HS:行同步信号;VS:场同步信号。对于5个信号的时序驱动,对于 VGA显示器要严格遵循“ VGA工业标准”, 即640X480X 60Hz模式。通常我们用的显示器都满足工业标准,因此我们设计 VGA控制器时要参考显示器的技术规格。图5是VGA行扫描、场扫描

8、的时序图:j_r幻BLANKVijTKThft scBLANKrHtyifiQBJLA3MKDCLK匕dim图5 VGA行扫描、场扫描时序图行时序祯时序(lintis)abcdi abd1024x76SXGA(75Ih)L.212.20.2328768I1024x768X0 A(60Hz)2.12.5 '15.80.462976838tX)x600SVGA(60Hz)3.22.220,01.04h6001640x480VGA(75Hz)2.0工8 I20 30.5316帧1表2 VGA参考时序设计VGAT业标准所要求的频率:时钟频率(Clock frequency ): 25.175M

9、Hz (像素输出的频率);行频(Line frequency ): 31469Hz场频(Field frequency ): 59.94Hz (每秒图像刷新频率)。五、FPGA勺设计实现设计VGA图像显示控制需要注意两个问题:一个是时序的驱动,这是完成设 计的关键,时序稍有偏差,显示必然不正常,甚至会损坏彩色显示器;另一个是 VGA言号的电平驱动。显示控制器设计提示:显示器的技术规格提供的行频一般都满足在 30-45KHZ (保守数据),场频一般满足在50-75HZ (保守数据),针对以上保守数 据,我们以30KHZ的行频进行扫描时所需时钟频率为:30KHZX 800 (行周期) =24MHz

10、则场频为:30KHz 525 (场周期)=57.14Hz,针对实验箱的条件,可以 用12MHz的信号经过倍频(EP1K30QC208-芯片特有的功能,在 MaxPlusll软件 中调用参数可设置兆功能元件库 mega_lpm的CLKLOC元件来倍频)来产生24MHz 的时钟频率,参考设计的顶层文件如下图所示::CL0CKB0aST=2:IINFLIT FREQIUENCY=Z4HS &H> hs '¥Q3(fotl27 -VS:阿时-|/ VS 打"dot 侦 128,RESETIR:QU7PVT 、0 一raiBia-innraiaiiBiaiiii

11、iraiaiBiii4> r-HD石:dUTPirr>.aiaiBJbiii. jibH> Q madot砂站:卅rprr1> b ;¥gadat126;ff.图6.VGA接口实现顶视图VGACOR模块包含了扫描时序产生模块、图像描述模块。时序产生模块的设 计可参考图5所示来设计,图像描述模块主要通过 640X 480个像素点来描述图 像。如本项设计的彩条信号发生器可通过图像描述模块产生如下表所示的3种显示模式,共6种显示变化的图像。表3 VGA图形编码1行彩条1白黄青绿品红监黑2:黑蓝红品绿青黄白2r竖彩条11白黄青绿品红监黑2:黑蓝红品绿青黄白3棋盘格1棋

12、盘格显示模式12 :棋盘格显示模式2上表颜色对应的编码为:表4 VGA颜色编码颜色黑八、蓝红品绿青黄白G00001111R00110011B01010101在设计完彩条信号发生器的基础上很容易完成汉字 /图像的设计。由于本设 计是对视频数据进行处理,用普通的设计方法(不使用专用芯片) ,在单芯片上 实现是不可思议的,而在此用 FPGA设计,轻松地达到了面积和速度上的要求。六、程序及仿真(一)、管脚分配本设计米用主板上的VGA接口实验模式:模式5时钟及控制clk->pin_29 clock9实验要求采用12M的时钟rst>pin_240键8,低电平有效,作为使能信号MD ->p

13、in_233 键1,模式选择信号,共有6种模式 显示器输出R ->pin_180PIO29G ->pin_181PIO30B ->pin_182PIO31HS ->pin_183PIO32VS ->pin_185PIO34(二八彩条发生器程序实现及仿真1、主程序module vga( clk_25m,rst_n, / 系统控制 hsync,vsync,vga_rgb,MD/ VGA 控制);in put clk_25m;/ 25MHzin put rst_n;/低电平复位in put MD;/ FPGA 与 VGAS 口信号output hsync; /行同步信号

14、output vsync; /场同步信号output2:0 vga_rgb;/坐标计数reg9:0 x_cnt;/ 行坐标reg9:0 y_cnt;/ 列坐标always (posedge clk_25m or n egedge rst_n) if(!rst_n) x_cnt <= 1O'dO;else if(x_cnt = 1O'd799) x_cnt <= 10'd0; else x_cnt <= x_cn t+1'b1;always (posedge clk_25m or n egedge rst_n) if(!rst_n) y_cnt

15、<= 10'd0;else if(y_cnt = 10'd524) y_cnt <= 10'd0; else if(x_cnt = 10'd799) y_cnt <= y_cnt+1'b1;/产生VGA场同步,行同步信号 reg hsyn c_r,vs ync_r;always (posedge clk_25m or n egedge rst_n) if(!rst_n) hsync_r <= 1'b1;/产生hsync信号/产生vsync信号else if(x_cnt = 10'd0) hsy nc_r <=

16、 1'b0; else if(x_cnt = 10'd96) hsy nc_r <= 1'b1;always (posedge clk_25m or n egedge rst_n) if(!rst_ n) vsync_r <= 1'b1;else if(y_c nt = 10'd0) vsy nc_r <= 1'b0; else if(y_c nt = 10'd2) vsy nc_r <= 1'b1;assig n hsync = hsync_r; assig n vsync = vsync_r;/有效显示

17、标志位产生reg valid_yr; /行显示有效信号 always (posedge clk_25m or n egedge rst_n)if(!rst_n) valid_yr <= 1'b0;else if(y_cnt = 10'd32) valid_yr <= 1'b1; else if(y_c nt = 10'd512) valid_yr <= 1'b0;wire valid_y = valid_yr;reg valid_r; / VGA有效显示区标志位always (posedge clk_25m or n egedge rs

18、t_n) if(!rst_n) validl_r <= 1'b0;else if(x_cnt = 10'd141) && valid_y) valid<=1'b1; else if(x_cnt = 10'd781) && valid_y) valid<=1'b0;wire valid = valid_r;wire9:0 x_dis;/横坐标显示有效区域相对坐标值 0-639wire9:0 y_dis;/竖坐标显示有效区域相对坐标值 0-479assign x_dis = x_cnt - 10'd1

19、42;assig n y_dis = y_cnt - 10'd33;/reg2:0 cnt;always (posedge MD or n egedge rst_ n) beg in if(!rst_n)cnt <= 3'd0;else if(cn t=3'd5)cn t<=3'd0;elsecn t<=c nt+3'd1;end/ VGA色彩信号产生/*RGB = 000黑色RGB = 100红色=001蓝色=101紫色=010绿色=110黄色=011青色=111白色*/reg2:0 vga_rgb;always( posedge c

20、lk_25m)beg inif(!valid) vga_rgb <= 3'd0;else beg inif (cnt=3'd0)begin / 竖彩条模式if(x_dis >= 10'd0 && x_dis < 10'd80) vga_rgb <= 3'd0;else if(x_dis >= 10'd80 && x_dis < 10'd160) vga_rgb <= 3'd1;else if(x_dis >= 10'd160 &&

21、; x_dis < 10'd240) vga_rgb <= 3'd2;else if(x_dis >= 10'd240 && x_dis < 10'd320) vga_rgb <= 3'd3;else if(x_dis >= 10'd320 && x_dis < 10'd400) vga_rgb <= 3'd4;else if(x_dis >= 10'd400 && x_dis < 10'd480) vga_

22、rgb <=3'd5;else if(x_dis >= 10'd480 && x_dis < 10'd560) vga_rgb <= 3'd6;else if(x_dis >= 10'd560 && x_dis < 10'd640) vga_rgb <= 3'd7; endif (cnt=3'd1)begin /竖彩条模式if(x_dis >= 10'd0 && x_dis < 10'd80) vga_rgb &l

23、t;= 3'd7;else if(x_dis >= 10'd80 && x_dis < 10'd160) vga_rgb <= 3'd6;else if(x_dis>=10'd160 && x_dis <10'd240) vga_rgb<=3'd5;else if(x_dis>=10'd240 && x_dis <10'd320) vga_rgb<=3'd4;else if(x_dis>=10'd32

24、0 && x_dis <10'd400) vga_rgb<=3'd3;else if(x_dis >= 10'd400 && x_dis < 10'd480) vga_rgb <=3'd2; else if(x_dis>=10'd480 && x_dis <10'd560) vga_rgb<=3'd1;else if(x_dis>=10'd560 && x_dis <10'd640) vga_

25、rgb<=3'd0;endif(cnt=3'd2)begi n /横彩条模式if(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd0;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd1;else if(y_dis>=10'd120 && y_dis <10'd180) vga_rgb<=3

26、9;d2;else if(y_dis>=10'd180 && y_dis <10'd240) vga_rgb<=3'd3;else if(y_dis>=10'd240 && y_dis <10'd300) vga_rgb<=3'd4;else if(y_dis>=10'd300 && y_dis <10'd360) vga_rgb<=3'd5;else if(y_dis>=10'd360 &&

27、 y_dis <10'd420) vga_rgb<=3'd6;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <=3'd7;end if(cnt=3'd3)begi n/横彩条模式if(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd7;else if(y_dis >= 10'd60 && y_dis <

28、 10'd120) vga_rgb <= 3'd6;else if(y_dis>=10'd120 && y_dis <10'd180) vga_rgb<=3'd5;else if(y_dis>=10'd180 && y_dis <10'd240) vga_rgb<=3'd4;else if(y_dis>=10'd240 && y_dis <10'd300) vga_rgb<=3'd3;else if(

29、y_dis>=10'd300 && y_dis <10'd360) vga_rgb<=3'd2;else if(y_dis>=10'd360 && y_dis <10'd420) vga_rgb<=3'd1;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <=3'd0; end if(cnt=3'd4)begi n /棋盘格模式case(x_dis)10&#

30、39;d0: beginif(y_dis >= 10'd0 && y_dis < 10'd60) vga_rgb <= 3'd0;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd1;else if(y_dis >= 10'd120 && y_dis < 10'd180) vga_rgb <= 3'd2; else if(y_dis >= 10'

31、;d180 && y_dis < 10'd240) vga_rgb <= 3'd3; else if(y_dis >= 10'd240 && y_dis < 10'd300) vga_rgb <= 3'd4; else if(y_dis >= 10'd300 && y_dis < 10'd360) vga_rgb <= 3'd5; else if(y_dis >= 10'd360 && y_dis <

32、 10'd420) vga_rgb <= 3'd6; else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <= 3'd7; end10'd80,10'd160,10'd240,10'd320,10'd400,10'd480,10'd560,10'd640:vga_rgb <= vga_rgb+3'd1; / 每80个横坐标像素点后显示色彩数据 增1变化default:;endcasee

33、ndif(cnt=3'd5)begi n/棋盘格模式case(x_dis)1O'dO: beginif(y_dis >= 1O'dO && y_dis < 10'd60) vga_rgb <= 3'd7;else if(y_dis >= 10'd60 && y_dis < 10'd120) vga_rgb <= 3'd6;else if(y_dis >= 10'd120 && y_dis < 10'd180) vga_r

34、gb <= 3'd5;else if(y_dis >= 10'd180 && y_dis < 10'd240) vga_rgb <= 3'd4;else if(y_dis >= 10'd240 && y_dis < 10'd300) vga_rgb <= 3'd3;else if(y_dis >= 10'd300 && y_dis < 10'd360) vga_rgb <= 3'd2;else if(y_di

35、s >= 10'd360 && y_dis < 10'd420) vga_rgb <= 3'd1;else if(y_dis >= 10'd420 && y_dis < 10'd480) vga_rgb <= 3'd0; end10'd80,10'd160,10'd240,10'd320,10'd400,10'd480,10'd560,10'd640:vga_rgb <= vga_rgb+3'd1; /

36、 每80个横坐标像素点后显示色彩数 据增1变化default:;endcaseendendenden dmodule2、验证程序'timescale 1 ns/ 1 ps module tb_vga ();reg t_clk_25m;reg t_rst_n;wire t_hs ync;wire 2:0 t_vga_rgb;wire t_vsync;wire t_MD;vgahct dut( .clk_25m(t_clk_25m),.hs yn c(t_hs yn c), .rst_n(t_rst_n), vga_rgb(t_vga_rgb), .vs yn c(t_vs ync), .

37、MD(t_MD);in itialbegi nt_clk_25m=0;t_rst_ n=1;t)MD=0;#20;t_rst_ n=0;#50;t_rst_ n=1;$display("R unning testbe nch");endalways #0.04 t_clk_25m=t_clk_25m;always #200 t_MD=t_MD;en dmodule3、仿真波形(三八 字符显示程序及仿真1、主程序'timescale 1ns / 1psmodule vga_char(clk_25m,rst_n,/ 系统控制hsync,vsyn c,vga_rgb /

38、VGA控制);in put clk_25m; / 25MHzin put rst_n;/低电平复位/ FPGA与VGA接口信号 output hsync;/行同步信号output vsync;/场同步信号output2:0 vga_rgb;/坐标计数reg9:0 x_cnt;/ 行坐标reg9:0 y_cnt;/ 列坐标always (posedge clk_25m or n egedge rst_n) if(!rst_ n) x_cnt <= 1O'dO;else if(x_cnt = 10'd799) x_cnt <= 1O'dO; else x_cnt

39、 <= x_cn t+1'b1;always (posedge clk_25m or n egedge rst_n) if(!rst_ n) y_cnt <= 1O'dO;else if(y_cnt = 10'd524) y_cnt <= 1O'dO; else if(x_cnt = 10'd799) y_cnt <= y_cn t+1'b1;/ VGA场同步,行同步信号 reg hsync_r,vsync_r;/ 同步信号always (posedge clk_25m or n egedge rst_n) if(!rst

40、_n) hsync_r <= 1'b1;/产生hsync信号/产生vsync信号else if(x_cnt = 1O'dO) hsy nc_r <= 1'bO; else if(x_c nt = 10'd96) hsync_r <= 1'b1;always (posedge clk_25m or n egedge rst_n) if(!rst_n) vsync_r <= 1'b1;else if(y_cnt = 1O'dO) vsync_r <= 1'bO; else if(y_cnt = 10

41、9;d2) vsync_r <= 1'b1;assig n hsync = hsync_r;assig n vsync = vsync_r;/有效显示标志位产生reg valid_yr;/行显示有效信号always (posedge clk_25m or n egedge rst_n)if(!rst_ n) valid_yr <= 1'bO;else if(y_cnt = 10'd32) valid_yr <= 1'b1; else if(y_cnt = 10'd512) valid_yr <= 1'b0;wire val

42、id_y = valid_yr;reg valid_r;/ VGA有效显示区标志位always (posedge clk_25m or n egedge rst_n) if(!rst_ n) valid_r <= 1'b0;else if(x_cnt = 1O'd141) && valid_y) valid<=1'b1;else if(x_cnt = 10'd781) && valid_y) valid_r <= 1'bO;wire valid = valid_r;wire9:0 x_dis;/横坐标显示

43、有效区域相对坐标值wire9:0 y_dis;/竖坐标显示有效区域相对坐标值0-6390-479/assign x_dis = x_cnt - 10'd142;assig n y_dis = y_cnt - 1O'd33;/ VGA色彩信 口号丿生/*RGB=000黑色RGB :=100红色=001蓝色=:101紫色=010绿色=:110黄色=011青色=:111白色*/*HIT字模参数*/parameter char_li ne0=24'h000000, char_l ine仁 24'h000000, char_l in e2=24'h000000,

44、char_li ne3=24'he77cfe, char_l in e4=24'h421092, char_l in e5=24'h421010, char_l in e6=24'h421010, char_l in e7=24'h421010, char_l in e8=24'h7e1010, char_l in e9=24'h421010, char_l in ea=24'h421010, char_l in eb=24'h421010, char_l in ec=24'h421010, char_li ned

45、=24'he77c38, char_l in ee=24'h000000, char_l in ef=24'h000000;reg4:0 char_bit;/ 显示位计算always (posedge clk_25m or n egedge rst_n) if(!rst_ n) char_bit <= 5'h1f;/显示最高位数据else if(x_cnt = 10'd442) char_bit <= 5'd23;else if(x_cnt > 1O'd442 && x_cnt < 1O'd

46、466) char_bit <= char_bit-1'b1;/依次显示后面的数据reg2:0 vga_rgb;/ VGA 色彩显示寄存器always (posedge clk_25m)if(!valid) vga_rgb <= 3'dO;else if(x_cnt > 10'd442 && x_cnt < 10'd467) begincase(y_dis)10'd231: if(char_lineOchar_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <=

47、3'b010;/ 绿色10'd232: if(char_line1char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <= 3'b010;/ 绿色10'd233: if(char_line2char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <= 3'b010;/ 绿色10'd234: if(char_line3char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <= 3&#

48、39;b010;/ 绿色10'd235: if(char_line4char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <= 3'b010;/ 绿色10'd236: if(char_line5char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <= 3'b010;/ 绿色10'd237: if(char_line6char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb <= 3'b010;/ 绿色10'd238: if(char_line7char_bit) vga_rgb <= 3'b100;/ 红色else vga_rgb &

温馨提示

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

评论

0/150

提交评论