首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2025泰克杭州测试论坛
2025中国低空经济产业创新发展大会
【直播】芯片设计工艺仿真全解析
西门子数字化工业软件资源中心
嵌入式设计资源库
智能楼宇/家电控制应用全解析
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
责任全在软件
修改
文章:
72
阅读:
58733
评论:
0
赞:
500
每天都学习,快乐我自己
好友
私信
个人主页
每天都学习,快乐我自己
文章
72
原创
0
阅读
58733
评论
0
赞
500
原创
【数字IC】高级数字 IC 设计(3)VGA 彩色条显示设计(480P)
2023-3-18 21:29
757
6
6
分类:
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
医疗电子
工业电子
管理
写博文
点赞(
6
)
收藏
分享到:
上一篇:
【数字IC】技能拓展(2)Xilinx_Vivado_SDK_2019.1 开发指导
下一篇:
【数字IC】高级数字 IC 设计(4)灰度转二值化设计
PARTNER CONTENT
换一换>
更多>
提升汽车电子浪涌耐受性:SWM+TVS解决方案通过ISO 16750-2 Pulse 5a测试
firstohm
2025-04-14
AI时代的氮化镓:市场与技术将走向何方?
黄烨锋
2025-04-24
ST移动安全解决方案:构建全场景安全连接生态
赵明灿
2025-05-12
文章评论
(
0
条评论)
登录
后参与讨论
您需要登录后才可以评论
登录
|
立即注册
发布
责任全在软件
修改
文章:
72
阅读:
58733
评论:
0
赞:
500
每天都学习,快乐我自己
好友
私信
个人主页
每天都学习,快乐我自己
文章
72
原创
0
阅读
58733
评论
0
赞
500
个人文集
数字IC
(19)
单片机基础
(20)
FPGA
(33)
最新评论
更多
开发工匠 : 认证齐全电源,设计原边,副边都用上,电子器件用料很足,产品余量充足,过充,过放,适合,产品安全第一,很好电 ...
liweicheng
评论博文
2025-5-13
【拆解】一款某公司的开关电源,用料相当过 ...
不管是小公司还是大公司,做事要认真,但是职场很多事不是自己可以把控的,有些人就是吊儿郎当,没办法的,日本人的TQM管理模式 ...
bruce小肥羊 ...
评论博文
2025-5-13
【工程师故事】+2024年总结之做技术不能想 ...
世界很大,多接触更多优秀的人。见贤思齐,不断总结进步。
bruce小肥羊 ...
评论博文
2025-5-13
【工程师故事】为什么一定要考本科?一位大 ...
最新
博文
电磁数据管理系统软件平台设计方案 ...
电磁数据展示系统软件平台全面解析 ...
【意法半导体 STM32 WL55】1、开箱+介 ...
资料下载
本周热帖
高速电路传输线效应分析与处理 ...
超强超全布线经验教程大全 ...
CBI液压磁极式断路器介绍
LC滤波电路使用TSMI一体成型贴片电感 ...
HDMI2.0滤波保护叠层共模滤波器 ...
氩离子技术之电子显微镜样品制备技术 ...
有没有耐压60V,电流200ma的线性恒流 ...
电子元器件的定义、选用与控制要点解 ...
FIB-SEM双束系统:多领域应用的前沿技 ...
并联还是串联?MDD稳压二极管多颗配置 ...
最新资讯
芯语最新
荣耀AI转型人事大调整,涉及38个关键 ...
沙特成立AI价值链投资公司“HUMAIN” ...
为旌科技: VS859 赋能具身智能,重塑 ...
万有引力EB100芯片亮相,空间计算走向 ...
爱芯元智:AX8850 以边缘算力赋能具身 ...
警鸿操作系统明日亮相:基于开源鸿蒙 ...
苹果iOS18.5正式版发布:国行AI仍未上 ...
小米官方针对海信Vidda“米【mei】有 ...
华为Pura80工程机镜头膜首曝:依然三 ...
128G丐版iPhone16Pro被抢空都2025年了 ...
EE直播间
更多
中小数字IC云仿真加速方案:弹性资源与验证效率提升
直播时间: 05月22日 10:00
在线研讨会
更多
ADMT4000重新定义多圈编码器设计
NSSine™系列实时控制MCU在数字电源和电机控制领域的应用
ST 在大功率热管理系统中的电机控制系统方案(AI 数据中心/暖通空调/电池储能系统/变频制冷)
利用氮化镓技术打造高效电机驱动——人形机器人、无人机与电动汽车应用
热门
推荐
一站式登记香港贸易发展局各个商贸展览
芯片验证资源焦虑?云方案一招破解
即开即用:IC云仿真极简方案
STM32开发板、小米手环、华为耳机,等你来赢!
我要评论
0
6
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/3
【直播】从周级到天级:IC 云仿真加速实战
算力自由!中小IC团队如何用云仿真抢跑3个月流片? 验证效率翻倍的秘密:零成本体验英诺达云仿真黑科技
2025第1期拆解活动:赢示波器、运动相机、热像仪等!
示波器、影石运动全景相机、大疆无人机、高清红外热成像仪;树莓派5等等
【2025面包板社区内容狂欢节】发帖/回帖赢25万E币!
活动时间:即日起——2025年全年(发完20万E币为止!)
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2025泰克杭州测试论坛
2025中国低空经济产业创新发展大会
【直播】芯片设计工艺仿真全解析
西门子数字化工业软件资源中心
嵌入式设计资源库
智能楼宇/家电控制应用全解析
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
帖子
博文
返回顶部
×
文章评论(0条评论)
登录后参与讨论