基于FPGA的VGA像显示与控制

上传人:jiups****uk12 文档编号:90797877 上传时间:2019-06-19 格式:DOC 页数:8 大小:948.54KB
返回 下载 相关 举报
基于FPGA的VGA像显示与控制_第1页
第1页 / 共8页
基于FPGA的VGA像显示与控制_第2页
第2页 / 共8页
基于FPGA的VGA像显示与控制_第3页
第3页 / 共8页
基于FPGA的VGA像显示与控制_第4页
第4页 / 共8页
基于FPGA的VGA像显示与控制_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于FPGA的VGA像显示与控制》由会员分享,可在线阅读,更多相关《基于FPGA的VGA像显示与控制(8页珍藏版)》请在金锄头文库上搜索。

1、基于FPGA的VGA像显示与控制 课程要求:采用verilog语言,基于FPGA的VGA像显示,即能够在显示器上实现动态彩像的显示。VGA显示接口的理论分析:硬件采用CycloneII系列的EP2C20Q240C8N,它含有240个引脚。对于VGA的显示器遵循800*60075模式,其中800是指每行中显示的像素的个数,而600是指屏幕每一列所包含的像素的个数。VGA工业标准规定了具体地,在扫描过程中的时序如下:行扫描时序场扫描时序每场信号对应625个行周期,其中600行为像显示行,每场有场同步信号,该脉冲宽度为3个行周期的负脉冲;每行显示行包括1056个点时钟,其中800点为有效显示区,每行

2、有一个行同步信号的负脉冲,该脉冲宽度为80个点时钟。这样我们可以知道,行频为625*75=46857Hz。需要的点时钟的频率为:625*1056*75=49.5MHz约为50MHz。由上可知,实际上在真正的实现过程中,每一行扫描所花的时间实际上比显示一行的像素所花的时间多了1056-800=256个像素点。同理,每一场的扫描时间多了625-600=25个行时间。设计思路:我们采用BmpToMif工具把BMP格式的像转换为.mif文件。利用QuartusII7.2自带的MegaWizard Plug-In Manager产生一个ROM存储器,并用其来初始时.mif文件。即将像文件写入到存储器里面

3、。然后利用编程来控制像的显示。设计步骤:1、 工程创建:创建一个Project取名字为vga,在创建工程的向导中选着CycloneII系列的EP2C20Q240C8。2、 代码书写:新建一个Verilog HDL File编写程序代码如下:timescale 1ns/1psmodule tupian (clk,rst_n,hsync,vsync,vga_r,vga_g,vga_b,addr); input clk,rst_n;output hsync,vsync,vga_r,vga_g,vga_b;reg hsync,vsync;output 14:0 addr;reg 14:0 addr;r

4、eg 10:0 x_cnt; /行坐标reg 9:0 y_cnt; /列坐标parameter h_Ta=80,h_Tb=128,h_Tc=32,h_Td=800,h_Te=8,h_Tf=8,h_Tg=1056;parameter v_Ta=3, v_Tb=14,v_Tc=7,v_Td=600,v_Te=0.8,v_Tf=0.2,v_Tg=625;/- 行场的计数-always (posedge clk)begin if(x_cnt = h_Tg-1) x_cnt=0; else x_cnt=x_cnt+1; endalways (posedge clk)begin if(y_cnt=v_Tg

5、-1) y_cnt=0; else if ( x_cnt = h_Tg-1 ) y_cnt=y_cnt+1; end/-同步信号产生-always (posedge clk)begin if(x_cnt=h_Ta-1) hsync=0; else hsync=1;endalways (posedge clk)begin if(y_cnt = v_Ta -1) vsync = 0; else vsync = 11d187) & (x_cnt = 10d31) & (y_cnt = 10d631);wire 9:0 xpos;wire 9:0 ypos;assign xpos = x_cnt-11

6、d187;assign ypos = y_cnt-10d31;/-显示像-reg27:0 k; always (posedge clk )begin if(k= 9d100 & ypos = 10d65 & xpos = 10d192)addr = (ypos-100)*128 + (xpos-65); else addr= 9d100 & ypos = 10d573 & xpos = 10d700)addr = (ypos-100)*128 + (xpos-65); else addr134217728) k=0; else k=k+1;end endmodule编写好程序后,点击保存,将文

7、件起名为tupian,并将其设置为顶层文件。点击start compilation按钮,进行汇编。3、 为tupian.v产生Symbol file(符号文件):编译完成后,点击File菜单Create/UpdateCreate symbol files for current file。4、 新建原理文件,并导入产生的符号文件:点击菜单FilenewBlock Diagram/Schematic File,双击原理的空白处,将Project目录下的刚产生的符号文件引入到原理。如下:5、 创建ROM并用它存储要显示的片文件:1) 采用BmpToMif工具将BMP格式的片转换为.mif文件如下,

8、打开软件,打开要转换的片,颜类型选为彩(8),点击生成Mif文件。给生产的文件起一个名字。2) 利用Quartus II7.2自带的MegaWizard Plug-In Manager产生一个ROM并将片引入进去。双击原理空白处,点击MegaWizard Plug-In Manager选择Creat a new custom megafunction variation,在安装的插件中找到Memory Compiler,选择ROM:1-PORT,选择Verilog语言,并为输出的文件 起一个名字。如设置如下:点击Next,在弹出的窗口中,设置输出总线为3位,并为其分配的存储空间能够存储片总的像

9、素点的大小。其他默认。设置如下:点击Next,前面一直默认,走到page 5 of 7,即第五步,点击Browse,将之前产生的.mif文件加入进来。如下:点击Next,直至完成。6、 将tupian 符号文件和刚生成的Rom进行连线。如下:7、 引脚的绑定和设置1) 点击菜单Assignmentspin,为各引脚绑定如下:2) 将绑定的管脚设置为I/O复用:点击菜单AssignmentsDevice点击Device and Pin Options,切换到标签Dual-Purpose Pins,将nCEO的值设置为常规的I/O口。如下:8、 将原理文件设置成为顶层文件,然后点击编译运行,运行后,引脚绑定如下:9、 将编译生成的.sof文件下载到硬件里:实验结果:实验效果如下,彩片能够在两个位置进行动态显示,可以在代码中控制。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号