首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
责任全在软件
修改
文章:
72
阅读:
48470
评论:
0
赞:
382
每天都学习,快乐我自己
好友
私信
个人主页
每天都学习,快乐我自己
文章
72
原创
0
阅读
48470
评论
0
赞
382
原创
【数字IC】高级数字 IC 设计(3)VGA 彩色条显示设计(480P)
2023-3-18 21:29
659
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
写原创有奖励!2024面包板原创奖励正在进行中
点赞(
4
)
收藏
分享到:
上一篇:
【数字IC】技能拓展(2)Xilinx_Vivado_SDK_2019.1 开发指导
下一篇:
【数字IC】高级数字 IC 设计(4)灰度转二值化设计
PARTNER CONTENT
换一换>
更多>
新蓝牙6.0协议扩展应用范围
Silicon Labs(芯科科技)蓝牙产品经理Parker Dorris
2024-12-16
概伦电子:以开放心态共绘EDA产业新蓝图
概伦电子
2024-12-30
SK海力士开发出适用于AI数据中心的高容量固态硬盘‘PS1012 U.2’
SK海力士
2024-12-18
SK海力士将在CES2025亮相‘全方位面向AI的存储器供应商’的新蓝图
SK海力士
2025-01-03
新一代MCU向着边缘AI和实时控制发展
赵明灿
2024-12-11
文章评论
(
0
条评论)
登录
后参与讨论
您需要登录后才可以评论
登录
|
立即注册
发布
责任全在软件
修改
文章:
72
阅读:
48470
评论:
0
赞:
382
每天都学习,快乐我自己
好友
私信
个人主页
每天都学习,快乐我自己
文章
72
原创
0
阅读
48470
评论
0
赞
382
个人文集
数字IC
(19)
单片机基础
(20)
FPGA
(33)
最新评论
更多
物也有命
自做自受 ...
评论博文
2025-1-9
富士通环保行为准则之切身感受 ...
行情不坏,手机火,写的好
开发工匠 ...
评论博文
2025-1-9
2024年全球智能手机面板出货量突破22亿片, ...
查到的原文,图3图片不是文中图。 https://www.semanticscholar.org/paper/A-Technical-View-of-Bokeh-Hawk/b0bd7787fd3e799a8e2 ...
Xutg
评论博文
2025-1-9
用三角形的镜头光圈会怎样?聊聊焦外的弥散 ...
最新
博文
POS机连接中断问题如何改善? ...
HDMI规范2.2版即将登场, 96Gbps开启新 ...
晶圆的环吸方案相比其他吸附方案,对 ...
资料下载
本周热帖
Processing-processing3.5.4
ESP32TFT常用字体库.zip
自动增益控制放大器设计与实现 ...
无线传能充电器设计与实现论文 ...
基于单片机自动电阻测试仪设计论文 ...
《极简图解 半导体技术基本原理》+半 ...
【工程师故事】+2024年:资深嵌入式工 ...
浪拓电子小课堂:TVS与TSS的工作原理 ...
锡须生长现象
电气安全测试项目详解
最新资讯
芯语最新
将人工智能应用于射频设计 ...
来看看在这个电源,能通过单个PWM输出 ...
IGBT 模块在颇具挑战性的逆变器应用 ...
外媒:Arm 正考虑收购服务器CPU企业Am ...
一个月内收购两家公司!恩智浦豪掷9亿 ...
小型化背后的科学:充分发挥小型坚固 ...
MCU软件开发训练营
蓝牙:“你已加入群聊”
ChatGPT是老师吗?
招募|特约撰稿人(兼职)
EE直播间
更多
第三代功率半导体器件测试解决方案
直播时间: 03月06日 10:00
在线研讨会
更多
重塑机器人未来:揭秘创新芯片解决方案的颠覆力量
多路有光·精准不凡——KSW-SGM01模拟信号源发布会
迈来芯Triaxis® 3D磁传感器:汽车安全应用的优选方案
适用于安全连接的新一代PIC32CK SG/GC系列单片机
热门
推荐
【TI资料】基于新型C29内核的MCU技术资料
构建AI未来,Arm计算平台无处不在
如何提升高压系统的实时性能?
【免注册下载】创新MCU提升高压系统的实时性能
我要评论
0
4
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/3
工程师写总结,送示波器、稳压电源、螺丝刀!
分享你的:职业生涯中故事、2024年年终总结、工作中的小故事,丰富多样的礼品等你哦!
面包板社区有奖活动汇总楼
1. DIY赢大奖!2. 写原创,有奖励!3.参与话题,奖励E币!4. 免费申领:开发板试用、书籍试读...
电子工程师DIY来分享,赢大疆无人机、小米手机、NAS存储、万用表 ...
展示您的 DIY 电子设计作品,社区将有丰富奖励送给您!
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
帖子
博文
返回顶部
×
文章评论(0条评论)
登录后参与讨论