首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
责任全在软件
修改
文章:
72
阅读:
52020
评论:
0
赞:
427
每天都学习,快乐我自己
好友
私信
个人主页
每天都学习,快乐我自己
文章
72
原创
0
阅读
52020
评论
0
赞
427
原创
【数字IC】高级数字 IC 设计(3)VGA 彩色条显示设计(480P)
2023-3-18 21:29
688
4
4
分类:
FPGA/CPLD
文集:
数字IC
本文分享一下
VGA
显示的代码范例,480P满足一般需求。
通过代码注释可以快速了解到
寄存器
的使用和水平竖直
像素
定位的方式和方法,适合初学者入门学习
module VGA(
input clk, // pixel clock
input rst_n,
output hs,
output vs,
output de,
output [23:0] RGB
);
// 640x480 25.175Mhz
parameter H_ACTIVE = 16'd640;
parameter H_FP = 16'd16 ;
parameter H_SYNC = 16'd96 ;
parameter H_BP = 16'd48 ;
parameter V_ACTIVE = 16'd480;
parameter V_FP = 16'd10 ;
parameter V_SYNC = 16'd2 ;
parameter V_BP = 16'd33 ;
parameter HS_POL = 1'b0 ;
parameter VS_POL = 1'b0 ;
parameter H_TOTAL = H_ACTIVE + H_FP + H_SYNC + H_BP; // horizontal total time (pixels)
parameter V_TOTAL = V_ACTIVE + V_FP + V_SYNC + V_BP; // vertical total time (lines)
reg hs_reg; // horizontal sync register
reg vs_reg; // vertical sync register
reg hs_reg_d0; // delay 1 clock of 'hs_reg'
reg vs_reg_d0; // delay 1 clock of 'vs_reg'
reg [11:0] h_cnt; // horizontal counter
reg [11:0] v_cnt; // vertical counter
reg [11:0] active_x; // video x position
reg [11:0] active_y; // video y position
reg [23:0] rgb_reg; // output color bar
reg h_active; // horizontal video active
reg v_active; // vertical video active
wire video_active; // video active(horizontal active and vertical active)
reg video_active_d0; // delay 1 clock of video_active
assign hs = hs_reg_d0;
assign vs = vs_reg_d0;
assign video_active = h_active & v_active;
assign de = video_active_d0;
assign RGB = rgb_reg;
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
begin
hs_reg_d0 <= 1'b0;
vs_reg_d0 <= 1'b0;
video_active_d0 <= 1'b0;
end
else
begin
hs_reg_d0 <= hs_reg;
vs_reg_d0 <= vs_reg;
video_active_d0 <= video_active;
end
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
h_cnt <= 12'd0;
else if(h_cnt == H_TOTAL - 1) // horizontal counter maximum value
h_cnt <= 12'd0;
else
h_cnt <= h_cnt + 12'd1;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
active_x <= 12'd0;
else if(h_cnt >= H_FP + H_SYNC + H_BP - 1) // horizontal video active
active_x <= h_cnt - (H_FP[11:0] + H_SYNC[11:0] + H_BP[11:0] - 12'd1);
else
active_x <= active_x;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
v_cnt <= 12'd0;
else if(h_cnt == H_FP - 1) // horizontal sync time
if(v_cnt == V_TOTAL - 1) // vertical counter maximum value
v_cnt <= 12'd0;
else
v_cnt <= v_cnt + 12'd1;
else
v_cnt <= v_cnt;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
hs_reg <= 1'b0;
else if(h_cnt == H_FP - 1) // horizontal sync begin
hs_reg <= HS_POL;
else if(h_cnt == H_FP + H_SYNC - 1) // horizontal sync end
hs_reg <= ~hs_reg;
else
hs_reg <= hs_reg;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
h_active <= 1'b0;
else if(h_cnt == H_FP + H_SYNC + H_BP - 1) // horizontal active begin
h_active <= 1'b1;
else if(h_cnt == H_TOTAL - 1) // horizontal active end
h_active <= 1'b0;
else
h_active <= h_active;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
vs_reg <= 1'd0;
else if((v_cnt == V_FP - 1) && (h_cnt == H_FP - 1)) // vertical sync begin
vs_reg <= HS_POL;
else if((v_cnt == V_FP + V_SYNC - 1) && (h_cnt == H_FP - 1)) // vertical sync end
vs_reg <= ~vs_reg;
else
vs_reg <= vs_reg;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
v_active <= 1'd0;
else if((v_cnt == V_FP + V_SYNC + V_BP - 1) && (h_cnt == H_FP - 1)) // vertical active begin
v_active <= 1'b1;
else if((v_cnt == V_TOTAL - 1) && (h_cnt == H_FP - 1)) // vertical active end
v_active <= 1'b0;
else
v_active <= v_active;
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
rgb_reg <= 24'h000;
else if(video_active) begin
if(active_x == 12'd0)
rgb_reg <= 24'hF00;
else if(active_x == 12'd120)
rgb_reg <= 24'h0F0;
else if(active_x == 12'd240)
rgb_reg <= 24'h00F;
else if(active_x == 12'd360)
rgb_reg <= 24'h0F0;
else if(active_x == 12'd410)
rgb_reg <= 24'hF00;
else
rgb_reg <= rgb_reg;
end
else
rgb_reg <= 24'h000;
end
endmodule
复制代码
写原创有奖励!2025面包板原创奖励正在进行中
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
点赞(
4
)
收藏
分享到:
上一篇:
【数字IC】技能拓展(2)Xilinx_Vivado_SDK_2019.1 开发指导
下一篇:
【数字IC】高级数字 IC 设计(4)灰度转二值化设计
PARTNER CONTENT
换一换>
更多>
全球知名科技公司正在出售一批未使用的IC载板先进封装工艺生产设备
ALLSURPLUS
2025-02-14
德中技术发布数控设备操作系统MOS V1.0版本软件
德中技术
2025-02-06
文章评论
(
0
条评论)
登录
后参与讨论
您需要登录后才可以评论
登录
|
立即注册
发布
责任全在软件
修改
文章:
72
阅读:
52020
评论:
0
赞:
427
每天都学习,快乐我自己
好友
私信
个人主页
每天都学习,快乐我自己
文章
72
原创
0
阅读
52020
评论
0
赞
427
个人文集
数字IC
(19)
单片机基础
(20)
FPGA
(33)
最新评论
更多
写的好,学习了,多层板,做的质量一流,很难
开发工匠 ...
评论博文
2025-2-21
PCB多层板为何偏爱偶数层:一场关于平衡的 ...
写的好,大师之作,学习榜样
开发工匠 ...
评论博文
2025-2-20
我与EET的缘分,以及2025年打算在这里分享 ...
7sms : 涨薪1%呢,也就是每个月多拿了有1000元呢———— 楼主10万一个月? 一般的,月薪10W只能在菊花厂能拿到 ...
liweicheng
评论博文
2025-2-19
【工程师故事】勇敢的人先享受世界 ...
最新
博文
Deepseek评OKR是职场人士最应学习的管 ...
从智能手机到服务器,贴片散热器如何 ...
高难度PCB一站式:技术与服务的双重保 ...
资料下载
本周热帖
FP7153PDF规格说明书
FT60F02X芯片手册
[40周全]物联网/嵌入式全能工程师(提 ...
电子工程师入门手册
软件工程知识体系(SWEBOK)v4.0 ...
【赚E币,兑大奖】用AI来分析电路或编 ...
无线充电发射板TYPEC接口快充输入,支 ...
富芮坤FR3068E开发板使用评测 ...
【富芮坤FR3068x-C】学习开发 ...
过压保护元件的典型应用市场 ...
最新资讯
芯语最新
资本市场的“疯狂星期四”,宇树科技 ...
利用解决方案供应商的优势加速自主移 ...
微软量子芯片掀桌子:“幽灵粒子”让 ...
铠侠携手闪迪开发出第10代3D NAND闪 ...
华为成立新公司“北京引望”,聚焦汽 ...
鸿利显示荣获“广东省MiniLED新型显示 ...
富采2024年亏损13.9亿新台币,旗下两 ...
加速视效制作全流程:英特尔以全栈软 ...
芯片巨头,人均年薪65万元! ...
突破极限!1mm³存储TB级!
EE直播间
更多
高效协同与版本管理:是德科技设计数据管理软件助力现代芯片设计
直播时间: 02月26日 10:00
第三代功率半导体器件测试解决方案
直播时间: 03月06日 10:00
利用高性能源表和强大的软件, 实现半导体参数的测试和分析
直播时间: 04月17日 10:00
在线研讨会
更多
使用新型光耦隔离栅极驱动器优化系统效率及EMI表现
Allegro电流传感器替代采样电阻解决方案—实现更高效、更可靠的电流检测
迈来芯电流传感器:从汽车到工业与消费电子全面应用
如何在隔离的状态监控系统中捕获同步数据
热门
推荐
详解状态监控系统的数据采集技术
智能EDA技术揭秘:如何用AI优化芯片设计与制造流程
百万设备≠唯一解!精密测量成本砍半秘籍
芯片现货市场行情分析
我要评论
0
4
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/1
面包板社区有奖活动汇总楼
1. 拆解活动即将上线!2. 写原创,有奖励!3. 免费申领:开发板试用、书籍试读...
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
帖子
博文
返回顶部
×
文章评论(0条评论)
登录后参与讨论