NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条
vga彩条显示,640*480模式可以显示1600*900
- 1. VGA显示
- 1.1 VGA的端口定义
- 1.2 VGA的显示时序
- 1.3 像素点与时序
- 1.4 此处选择DELL_E2016HV型显示器,分辨率1600*900;显示模式为640*480@60
- 2. vivado设计与仿真
- 2.1 总体框图
- 2.2 clk_gen模块,主要实现100MHz转25MHz
- 2.3 vga_pic模块,实现坐标位置与数据的转换
- 2.3.1 vga_pic.v文件
- 2.4 vga_ctrl模块,实现数据的转换显示
- 2.4.1 色彩565与444的转换
- 2.4.2 vga_ctrl框图
- 2.4.3 时序图
- 2.4.4 vga_ctrl.v文件
- 2.4.5 tb_vga_ctrl.v文件
- 2.5 顶层vga_colorbar模块
- 2.5.1 vga_colorbar.v文件
- 2.5.2 tb_vga_colorbar.v文件
- 2.6 vivado生成的框图
- 3. NEXYS4_DDR迪芝伦XC7A100TCSG324-1型的原理图与管脚绑定
- 3.1 原理图
- 3.2 vga_colorbar.xdc文件
- 4. 上板验证的实物图与效果图一致
1. VGA显示
1.1 VGA的端口定义
1.2 VGA的显示时序
扫描显示的过程
行同步时序
场同步时序
二维时序图
1.3 像素点与时序
1.4 此处选择DELL_E2016HV型显示器,分辨率1600900;显示模式为640480@60
2. vivado设计与仿真
2.1 总体框图
2.2 clk_gen模块,主要实现100MHz转25MHz
引入locked和rst_n的必要性,IP核产生的时钟有延时,可以利用locked信号作为标识
在vivado中使用pll,使用的时候直接调用IP核
搜索clk,选择红色框
设置PLL,其他选项默认
仿真图
clk_25mhz产生的时候需要注意的点
1.复位信号sys_rst_n高电平有效,这里的低电平有效是对输入时的数据进行了取反操作
2.clk_25mhz并不是立即产生的,复位信号无效后的第2个周期产生了一个高电平,下图可以看出;
延时 1655-115=150ns 后产生正常的50MHz信号
2.3 vga_pic模块,实现坐标位置与数据的转换
2.3.1 vga_pic.v文件
利用坐标位置 pix_x 赋值时使用到了 casez 语句,增强代码可读性和节省资源;
使用 if-else 多层嵌套也是可以的;
亦可使用 case 语句在关键点赋值,例如 pix_x = 63,…;其他时间保持不变即可
module vga_pic
(input wire vga_clk ,input wire sys_rst_n ,input wire [9:0] pix_x ,input wire [9:0] pix_y ,output reg [11:0] pix_data
);parameter H_VALID = 10'd640,V_VALID = 10'd480;parameter RED = 12'hF00,ORANGE = 12'hF80,YELLOW = 12'hFF0,GREEN = 12'h0F0,CYAN = 12'h0FF,BLUE = 12'h00F,PURPLE = 12'hF0F,BLACK = 12'h000,WHITE = 12'hFFF,GRAY = 12'hDDD;always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)pix_data <= RED;else casez(pix_x)10'b00_00??_???? : pix_data <= RED ;10'b00_01??_???? : pix_data <= ORANGE;10'b00_10??_???? : pix_data <= YELLOW;10'b00_11??_???? : pix_data <= GREEN ;10'b01_00??_???? : pix_data <= CYAN ;10'b01_01??_???? : pix_data <= BLUE ;10'b01_10??_???? : pix_data <= PURPLE;10'b01_11??_???? : pix_data <= BLACK ;10'b10_00??_???? : pix_data <= WHITE ;10'b10_01??_???? : pix_data <= GRAY ;endcaseendmodule
2.4 vga_ctrl模块,实现数据的转换显示
2.4.1 色彩565与444的转换
从NEXYS4_DDR的原理图可以看出,其使用权电阻网络,且红、绿、蓝的色深为4位
对比565,将多余的低位除去,可得444的编码
2.4.2 vga_ctrl框图
2.4.3 时序图
2.4.4 vga_ctrl.v文件
module vga_ctrl
(input wire vga_clk ,input wire sys_rst_n ,input wire [11:0] pix_data ,output wire [9:0] pix_x ,output wire [9:0] pix_y ,output wire hsync ,output wire vsync ,output wire [11:0] vga_rgb
);//hsync800
parameter H_SYNC = 10'd96 ,H_BACK = 10'd40 ,H_LEFT = 10'd8 ,H_VALID = 10'd640,H_RIGHT = 10'd8 ,H_FRONT = 10'd8 ,H_TOTAL = 10'd800;
//vsync525
parameter V_SYNC = 10'd2 ,V_BACK = 10'd25 ,V_TOP = 10'd8 ,V_VALID = 10'd480,V_BOTTOM = 10'd8 ,V_FRONT = 10'd2 ,V_TOTAL = 10'd525;reg [9:0] cnt_h ;
reg [9:0] cnt_v ;
wire pix_data_req;
wire rgb_valid ;//cnt_h
always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)cnt_h <= 10'd0;else if(cnt_h == H_TOTAL - 1'b1)cnt_h <= 10'd0;elsecnt_h <= cnt_h + 1'b1;
//cnt_v
always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)cnt_v <= 10'd0;else if((cnt_v == V_TOTAL - 1'b1) && (cnt_h == H_TOTAL - 1'b1))cnt_v <= 10'd0;else if(cnt_h == H_TOTAL - 1'b1)cnt_v <= cnt_v + 1'b1;elsecnt_v <= cnt_v;
//rgb_valid
assign rgb_valid = (((cnt_h >= H_SYNC + H_BACK + H_LEFT)&& (cnt_h < H_SYNC + H_BACK + H_LEFT + H_VALID))&&((cnt_v >= V_SYNC + V_BACK + V_TOP)&& (cnt_v < V_SYNC + V_BACK + V_TOP + V_VALID)))? 1'b1 : 1'b0;
//pix_data_req
assign pix_data_req = ((cnt_h >= H_SYNC + H_BACK + H_LEFT - 1'b1)&& (cnt_h < H_SYNC + H_BACK + H_LEFT + H_VALID - 1'b1)&& (cnt_v >= V_SYNC + V_BACK + V_TOP)&& (cnt_v < V_SYNC + V_BACK + V_TOP + V_VALID))? 1'b1 : 1'b0;assign pix_x = (pix_data_req == 1'b1) ? (cnt_h - (H_SYNC + H_BACK + H_LEFT - 1'b1)) : 10'h3ff;assign pix_y = (pix_data_req == 1'b1) ? (cnt_v - (V_SYNC + V_BACK + V_TOP)) : 10'h3ff;assign hsync = (cnt_h <= H_SYNC - 1'b1) ? 1'b1 : 1'b0;assign vsync = (cnt_v <= V_SYNC - 1'b1) ? 1'b1 : 1'b0;assign vga_rgb = (rgb_valid == 1'b1) ? pix_data : 12'h000;endmodule
2.4.5 tb_vga_ctrl.v文件
显示模式设定为60帧,由于仿真速度较慢,且图像的实际显示只有1帧,可直接仿真17ms(1000/60=16.67ms)
此处将三个.v文件的例化集中到一个,可以不用编写 tb_vga_pic.v 文件
`timescale 1ns/1ns
module tb_vga_ctrl();reg sys_clk ;
reg sys_rst_n ;
wire [11:0] pix_data ;wire vga_clk ;
wire locked ;
wire rst_n ;wire [9:0] pix_x ;
wire [9:0] pix_y ;
wire hsync ;
wire vsync ;
wire [11:0] vga_rgb ;initialbeginsys_clk = 1'b1;sys_rst_n <= 1'b0;#20sys_rst_n <= 1'b1;endalways #5 sys_clk = ~sys_clk;assign rst_n = sys_rst_n && locked;always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)pix_data <= 12'h000;else if(pix_x >= 10'd0 && pix_x <= 10'd639&& pix_y >= 10'd0 && pix_y <= 10'd479)pix_data <= 12'hfff;elsepix_data <= 12'h000;clk_gen clk_gen_inst
(.clk_in1 (sys_clk ), // input clk_in1.reset (~sys_rst_n ), // input reset.clk_out1 (vga_clk ), // output clk_out1.locked (locked ) // output locked
); vga_ctrl vga_ctrl_inst
(.vga_clk (vga_clk ),.sys_rst_n (rst_n),.pix_data (pix_data ),.pix_x (pix_x ),.pix_y (pix_y ),.hsync (hsync ),.vsync (vsync ),.vga_rgb (vga_rgb )
);vga_pic vga_pic_inst
(.vga_clk (vga_clk ),.sys_rst_n (rst_n ),.pix_x (pix_x ),.pix_y (pix_y ),.pix_data (pix_data )
);endmodule
2.5 顶层vga_colorbar模块
2.5.1 vga_colorbar.v文件
module vga_colorbar
(input wire sys_clk ,input wire sys_rst_n ,output wire hsync ,output wire vsync ,output wire [11:0] vga_rgb
);wire vga_clk ;
wire locked ;
wire rst_n ;wire [9:0] pix_x ;
wire [9:0] pix_y ;
wire [11:0] pix_data ;assign rst_n = (sys_rst_n && locked);clk_gen clk_gen_inst
(.clk_in1 (sys_clk ), // input clk_in1.reset (~sys_rst_n ), // input reset.clk_out1 (vga_clk ), // output clk_out1.locked (locked ) // output locked
); vga_ctrl vga_ctrl_inst
(.vga_clk (vga_clk ),.sys_rst_n (rst_n),.pix_data (pix_data ),.pix_x (pix_x ),.pix_y (pix_y ),.hsync (hsync ),.vsync (vsync ),.vga_rgb (vga_rgb )
);vga_pic vga_pic_inst
(.vga_clk (vga_clk ),.sys_rst_n (rst_n ),.pix_x (pix_x ),.pix_y (pix_y ),.pix_data (pix_data )
);endmodule
2.5.2 tb_vga_colorbar.v文件
`timescale 1ns/1ns
module tb_vga_colorbar();reg sys_clk ;
reg sys_rst_n ;wire hsync ;
wire vsync ;
wire [11:0] vga_rgb ;initialbeginsys_clk = 1'b1;sys_rst_n <= 1'b0;#20sys_rst_n <= 1'b1;endalways #10 sys_clk = ~sys_clk;vga_colorbar
(.sys_clk (sys_clk ),.sys_rst_n (sys_rst_n),.hsync (hsync ),.vsync (vsync ),.vga_rgb (vga_rgb )
);endmodule
2.6 vivado生成的框图
3. NEXYS4_DDR迪芝伦XC7A100TCSG324-1型的原理图与管脚绑定
3.1 原理图
板子上的引脚提示
R (A4 C5 B4 A3)
G (A6 B6 A5 C6)
B (D8 D7 C7 B7)
HS (B11)
VS (B12)
3.2 vga_colorbar.xdc文件
set_property IOSTANDARD LVCMOS33 [get_ports hsync]
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
set_property IOSTANDARD LVCMOS33 [get_ports sys_rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports vsync]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {vga_rgb[0]}]
set_property PACKAGE_PIN A4 [get_ports {vga_rgb[11]}]
set_property PACKAGE_PIN C5 [get_ports {vga_rgb[10]}]
set_property PACKAGE_PIN B4 [get_ports {vga_rgb[9]}]
set_property PACKAGE_PIN A3 [get_ports {vga_rgb[8]}]
set_property PACKAGE_PIN A6 [get_ports {vga_rgb[7]}]
set_property PACKAGE_PIN B6 [get_ports {vga_rgb[6]}]
set_property PACKAGE_PIN A5 [get_ports {vga_rgb[5]}]
set_property PACKAGE_PIN C6 [get_ports {vga_rgb[4]}]
set_property PACKAGE_PIN D8 [get_ports {vga_rgb[3]}]
set_property PACKAGE_PIN D7 [get_ports {vga_rgb[2]}]
set_property PACKAGE_PIN C7 [get_ports {vga_rgb[1]}]
set_property PACKAGE_PIN B7 [get_ports {vga_rgb[0]}]
set_property PACKAGE_PIN B11 [get_ports hsync]
set_property PACKAGE_PIN B12 [get_ports vsync]
set_property PACKAGE_PIN E3 [get_ports sys_clk]
set_property PACKAGE_PIN J15 [get_ports sys_rst_n]
4. 上板验证的实物图与效果图一致
NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条相关推荐
- NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管
简化版动态点亮 1. vivado文件编写,根据模块设计图 1.1 点亮数码管之前首先产生一个100ms自增长的数据data[26:0] 1.1.1 时序图 1.1.2 data_gen.v 文件 1 ...
- NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,ADT7420测温
ADT7420测温 0. 未理解的点 1. ADT7420简介 1.1 特性 1.2 引脚配置与原理图 1.3 寄存器 1.4 读写等操作时序 1.4.1 写单字节数据 1.4.2 写双字节数据 1. ...
- FPGA—VGA 显示器显示彩条(附代码)
目录 1. 理论 2. 实操 2.1 顶层设计 2.1.1 模块框图 2.1.2 代码编写 2.1.3 仿真验证 2.2 时钟生成模块 2.3 VGA时序控制模块 2.3.1 模块框图 2.3.2 波 ...
- 戴尔3040计算机没有VGA接口,电脑没有vga接口怎么办
电脑没有vga接口怎么办 VGA接口就是显卡上输出模拟信号的接口,VGA(Video Graphics Array)接口,也叫D-Sub接口.虽然液晶显示器可以直接接收数字信号,但很多低端产品为了与V ...
- 高速接口之VGA接口
原理介绍 VGA(Video Graphics Array)即视频图形阵列,是IBM在1987年推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高.显示速率快.颜色丰富等优点,在彩色显示器领域得 ...
- hdmi 计算机 接口类型,计算机的 VGA 接口和 HDMI 接口在显示上有什么区别
[VGA] 就是显卡上输出模拟信号的接口,也叫 D-Sub 接口,其实就是把显示转移的接口.从外观上讲,VGA 接口是一种 D 型接口,上面共有 15 针孔,分成三排,每排五个.其中,除了 2 个 N ...
- 显卡上的VGA接口和高清接口有什么区别?
显卡上的VGA接口和高清接口有什么区别? 1.VGA接口是模拟视频接口,一般只能输出1200P,无法输出4K等高清视频,高清视频接口有HDMI.DVI.DP等,可以输出更高质量的视频,像HDMI还可以 ...
- 一文读懂HDMI和VGA接口针脚定义
一文读懂HDMI和VGA接口针脚定义 摘自:http://www.elecfans.com/yuanqijian/jiekou/20180423666604.html HDMI概述 HDMI是高清 ...
- 基于FPGA的VGA显示彩条、字符、图片
目录 一.VGA介绍 (一) VGA协议 (二) VGA端口介绍 (三) 色彩原理 (四)VGA显示原理 VGA通信协议: VGA时序解析 时钟分频 二.实现 1.彩条显示 2.字符显示 3.图片显 ...
最新文章
- html前台截取/以后的字段,截取html字符串之后补全标签 (closetag) 的新方法
- 淘淘商城 @Autowired 装配失败
- python库和模块的区别_在函数中导入python库与全局导入之间有何区别?
- Go聊天室的思路:一个拨号 一个监听
- [转]语音报警.NET开发初探
- MySQL的FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别
- 这才是程序员该有的桌面壁纸!
- 谷歌卫星地图下载器与万能地图下载器功能比较
- github清华大学计算机系课程攻略,GitHub 项目推荐|清华大学计算机系课程相关资源集合|内容丰富...
- 华为数据存储用户精英论坛,信心与合作的故事
- 中小企业如何选择OA协同办公产品?最全的对比都在这里了
- Laravel 6 结合网易/阿里邮箱基本邮件发送功能使用
- 在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,2按名次输出每个学生的姓名与分数。
- VS编译运行时出现exe文件无法打开的原因
- html5 手机uc浏览器 复制链接,删除手机UC浏览器强制插入关键词链接的方法
- 分布式认知工业互联网赋能工业企业数字化转型
- U盘制作Ubuntu系统启动盘的官方推荐软件
- Vue2 Vue UI组件库
- 微信小程序的制作方法步骤和流程
- 斗兽棋java程序,Java 斗兽棋算法 帮优化一下解决办法
热门文章
- 使用Javascript实现Dropdownlist级联操作中遇到的两个错误
- AVRWARE++开发笔记8:Atmel Studio去除拼写检查
- 软件人才从这里飞翔——访北京大学软件学院院长陈钟博士
- vs code里面的less插件一直报错_ipad4现在怎么登微信?一直显示微信版本过低怎么办...
- 1.3双摇杆遥控器电路部分--基本外设电路(ST-link下载、串口、按键、摇杆、电量检测、LED指示灯、0.96寸OLED、NRF24L01)
- MySQL必知必会(2)
- 华南师范大学计算机学院学硕,华南师范大学计算机学院研究生导师简介肖菁
- ear的英语怎么念_高中英语快速记忆法有哪些?
- python咋念_python怎么念
- Xmind怎么打开?在线转换成PNG,JPG图片格式,无需安装其他软件