NTSC和PAL制同步信号模拟输出

2023-10-30

NTSC和PAL制同步信号模拟输出

原由:由于我想输出一个NTSC制和PAL制的同步黑场,只需要输出同步信号,之后输出rgb信号给ADV(7123)后输出到显示屏。下面是我的心路历程和知识总结

一、了解NTSC和PAL

  • PAL:电视标准,每秒25帧,电视扫描线为625线,奇场在前,偶场在后,标准的数字化PAL电视标准分辨率为720*576, 24比特的色彩位深,画面的宽高比为4:3, PAL制电视的供电频率为50Hz,场频为每秒50场,帧频为每秒25帧,扫描线为625行。
  • NTSC:电视的供电频率为60Hz,场频为每秒60场,帧频为每秒30帧,扫描线为525行,图像信号带宽为6.2MHz。采用NTSC制的国家美国、日本等国家

当然若没有任何知识储备,这两段话很难理解,不过这里不做过多的解释,网络上的详解有很多,大家可以自行查看,也可以查看下面是我推荐的比较详细易懂的文章。

PAL与NTSC制式的详解

二、NTSC和PAL时序参数

大致了解NTSC和PAL概念内容之后,我们需要找到具体 的时序参数,为之后写代码打下基础,大部分的时序参数我上传到文档里,大家可以自行查看,这个有规定的标准,只需找到文档即可

  • NTSC制→720*480i60HZ
  • PAL制→720*576i50HZ
    480i60
    576i50
    由图片可知NTSC和PAL制的时序参数如下
  • NTSC:
    H_TOTAL=1716
    V_TOTAL=525
    H_ACT=1440
    V_ACT=480
    H_FRONT = 38
    HS_WIDTH = 124
    H_BACK_POCH = 114
  • PAL
    H_TOTAL=1728
    V_TOTAL=625
    H_ACT=1440
    V_ACT=576
    H_FRONT = 24
    HS_WIDTH = 126
    H_BACK_POCH = 138

三、垂直同步波形详细信息

在整个同步模拟信号输出中最重要的一步,我们需要将垂直同步波形和水平同步波形叠加到一起,直接输出一个同步信号模拟波形,首先我们先看垂直同步波形的详细信息
如果大家有《数字电视基础-视频和音频系统的设计与安装》这本书也可以查看这本书的P11-P24,了解复合视频信号的组成。
下面的基准时钟都为27M
- NTSC制垂直同步波形的详细信息
NTSC垂直同步波形详细信息
由图像可以得出:一个长度为9行的块被划分为长度为3行的3个段。第一段包含6个预均衡脉冲,第二段包含具有6个锯齿的垂直同步脉冲,第三段包含6个后均衡脉冲。由NTSC制的时序参数我们可以将各个脉冲宽度计算出来。
在这里插入图片描述
图中的H=1716,0.5H=858
1s=1000000us
27mhz=27000000hz
经过单位换算可知
1us的宽度为27
4.7us宽度为27×4.7=127
2.3us宽度为27×2.3=62
- PAL制垂直同步波形的详细信息
 PAL垂直同步波形的详细信息
图中的H=1728,0.5H=864
1s=1000000us
27mhz=27000000hz
经过单位换算可知
1us的宽度为27
4.7us宽度为27×4.7=127
27.1us宽度为27×27.1=731
2.3us宽度为27×2.3=62

四、水平同步波形详细信息

大家在上面垂直的图中应该都看到了,由于是复合视频信号,所以水平和垂直都复合到一块了,水平就是在每个hs的位置有一个类似于垂直锯齿的东东。
水平同步波形详细信息
这里这个宽度可以参考时序参数,当然通过波形计算也可以。

  • NTSC:
    H_FRONT = 38
    HS_WIDTH = 124
    H_BACK_POCH = 114
  • PAL
    H_FRONT = 24
    HS_WIDTH = 126
    H_BACK_POCH = 138

五、代码

  • NTSC制
module test_tpg(
	input	  		       clk_148m5,
	input                  rst_n,		
	output wire [9 :0]      dac_r,
	output wire [9 :0]      dac_g,
	output wire [9 :0]      dac_b			   
	
  );
  	parameter H_ACT		= 1440;//1200;//
	parameter H_TOTAL		= 1716;//2020;//
	parameter V_ACT		= 480;//1920;//
	parameter V_TOTAL		= 525;//1136;//
	parameter H_BACK_POCH	= 114;//16;//
	parameter HS_WIDTH		= 124;//8;//8;
	parameter VS_WIDTH		= 3;//2;//8;//
	parameter H_FRONT		= 38;
	parameter V_FRONT		= 19;
    parameter V_BACK_POCH	= 26;//20;

	(* keep = "true" *)reg [11:0]  h_cntr;
	(* keep = "true" *)reg [11:0]  v_cntr;
    (* keep = "true" *)reg         vs;
    (* keep = "true" *)reg         de;
    (* keep = "true" *)reg [9 :0]  test_r;
    (* keep = "true" *)reg [9 :0]  test_g;
    (* keep = "true" *)reg [9 :0]  test_b;
    

	always @ ( posedge clk_148m5 or negedge rst_n)begin
	   if(!rst_n)begin
	       h_cntr <= 12'h0;
	       v_cntr <= 12'h0;
	   end
    else
		begin
		    if( h_cntr == H_TOTAL - 12'h1 )
				h_cntr <= 12'h0;
			else
				h_cntr <= h_cntr + 12'h1;			
		    if((v_cntr == V_TOTAL) && (h_cntr == H_TOTAL -12'h1))
				v_cntr <= 12'h1;
			else if(h_cntr == H_TOTAL -12'h1)
				v_cntr <= v_cntr + 12'h1;
			else
				v_cntr <= v_cntr;	
		end
end
    always @ ( posedge clk_148m5 or negedge rst_n)begin
    if(!rst_n)
	   de <= 1'd0;
    else
	    if(h_cntr >= H_FRONT+HS_WIDTH+H_BACK_POCH && h_cntr < H_TOTAL && v_cntr >= V_FRONT+VS_WIDTH+V_BACK_POCH && v_cntr < V_TOTAL)
				de <= 1'd1;
			else
				de <= 1'd0;
end
	always @ ( posedge clk_148m5 or negedge rst_n)begin
	if(!rst_n)
	   vs <= 1'd0;
    else
	    begin
            if((v_cntr>=12'h1 && v_cntr <= 12'd9)||(v_cntr >= 12'd264 && v_cntr <= 12'd271)||(h_cntr >= 12'd857 && h_cntr <=12'd1715 && v_cntr==12'd263)||(h_cntr >= 12'd0 && h_cntr <=12'd857 && v_cntr==12'd272))
				vs <= 1'd1;                                     
			else 
				vs <= 1'd0;
	    end	 
end   


always @(posedge clk_148m5 or negedge rst_n)begin
    if(!rst_n)begin
	       test_r <= 10'd0;
           test_g <= 10'd0;
           test_b <= 10'd0;
    end
    else
//      if(vs)begin
        if((v_cntr >= 12'd1 && v_cntr <= 12'd3)||(v_cntr >= 12'd7 && v_cntr <= 12'd9)||(v_cntr >=12'd264 && v_cntr <= 12'd265)||(h_cntr >=12'd857 && h_cntr <= 12'd1715 &&v_cntr == 12'd263)||(h_cntr >=12'd0 && h_cntr <= 12'd857 &&v_cntr == 12'd266)||(v_cntr >=12'd270 && v_cntr <= 12'd271)||(h_cntr >=12'd857 && h_cntr <= 12'd1715 &&v_cntr == 12'd269)||(h_cntr >=12'd0 && h_cntr <= 12'd857 &&v_cntr == 12'd272))begin
            if((h_cntr >= 12'd0 && h_cntr <= 12'd61)||(h_cntr >= 12'd857 && h_cntr <= 12'd919))begin
                test_r <= 10'd0;
                test_g <= 10'd0;
                test_b <= 10'd0; 
            end
            else begin 
                test_r <= 10'd93;
                test_g <= 10'd93;
                test_b <= 10'd93;
            end 
        end
        else  if((v_cntr >= 12'd4 && v_cntr <= 12'd6)||(v_cntr >=12'd267 && v_cntr <= 12'd268)||(h_cntr >=12'd857 && h_cntr<=12'd1715&&v_cntr == 12'd266)||(h_cntr >=12'd0 && h_cntr <= 12'd857 &&v_cntr == 12'd269))begin
          if((h_cntr >= 12'd730 && h_cntr <=12'd857)||(h_cntr >= 12'd1588 && h_cntr <= 12'd1715))begin 
                test_r <= 10'd93;
                test_g <= 10'd93;
                test_b <= 10'd93;
          end
          else begin 
		        test_r <= 10'd0;
                test_g <= 10'd0;
                test_b <= 10'd0; 
          end
      end
//end
     else  begin
        if(h_cntr >= 12'h0 && h_cntr <= {12'd61,1'd0})begin
                test_r <= 10'd0;
                test_g <= 10'd0;
                test_b <= 10'd0;
           end
         else begin 
		         
                test_r <= 10'd100;
                test_g <= 10'd100;
                test_b <= 10'd100;
            end
        end 
end 
assign  dac_r = test_r;
assign  dac_g = test_g;
assign  dac_b = test_b;

endmodule 
         

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NTSC和PAL制同步信号模拟输出 的相关文章

  • gps模块协议NMEA-0183的解析----android4.2下的gps hal层

    这些天调试了一款GPS模组 对GPS的数据格式协议NMEA 0183有了一些了解 现把这些天的心得体会记录下来 GPS 模块硬件介绍 国内的一款GPS模组 使用uart接口与主控进行通信 这款GPS模组只需要供电 使能就能够工作 不需要下载
  • 树莓派3B+安装Debian系统,并配置ssh登录

    Table of Contents 1 需要准备的材料 2 下载镜像文件 3 清除SD卡并烧写系统 4 打开ssh登录权限 5 查看树莓派的IP地址 6 通过putty登录树莓派 1 需要准备的材料 SD卡 树莓派 读卡器 网线 2 下载镜
  • CRM巨头败走中国,Salesforce中国区或将解散?

    关注ITValue 看企业级最新鲜 最价值报道 作者丨海阳 出品丨ToB行业头条 ID wwwqifu Salesforce或将退出中国市场 海外软件在华遭遇 水土不服 ITValue 8月3日 相关传言称 美国最大客户关系管理SaaS供应
  • Centos开启SSH服务

    本篇文章为转载 原作者文章地址 Centos7开启SSH服务 KinwingHU 博客园 cnblogs com 在虚拟机 Vmware Workstation 下 安装了CentOS7 现在想通过SSH工具连接虚拟机中的CentOS7 1

随机推荐

  • vue实现聊天框自动滚动

    需求 1 聊天数据实时更新渲染到页面 2 页面高度随聊天数据增加而增加 3 竖向滚动 4 当用户输入聊天内容或者接口返回聊天内容渲染在页面后 自动滚动到底部 5 提供点击事件操控滚动条上下翻动 环境依赖 vue vue cli 5 0 8
  • Java VisualVM无法更新或安装插件解决办法

    Java VisualVM是JDK中的一个工具 可以实时查看Java程序内存变化的情况 今天在更新或安装时有时会出现建立连接时的问题 提示找不到系统文件 出现这种问题是因为地址出现了问题 整了半天 发现是原来的地址已经发生了改变 解决方法
  • html5实现有道翻译文字播报语音,H5实现文字语音播报

    前言 搜了一堆百度 搜狗 有道的 没有一个能用的 只能投机取巧了 实现 获取播放路径 html
  • Python实现文件编码转换GB2312、GBK、UTF-8

    Python实现文件编码转换GB2312 GBK UTF 8 1 查看文件编码格式 import chardet filename flash c with open filename rb as f data f read encodin
  • [BugKu Web]ez_serialize

    本writeup已经在bugku开放 根据题意 显然是一道JAVA反序列化的题 关于JAVA反序列化漏洞的成因 参见博客https zhuanlan zhihu com p 422314689 此处只说明解题思路 重复开启场景已经没金币了
  • flex布局,子元素设置flex: 1和nowrap,内容长度超出盒子

    解决方法 子元素设置宽度即可 flex 1 width 0 或者 flex 1 min width 0
  • Springboot 项目启动出现 Mysql Lock wait timeout exceeded; try restarting transaction 错误

    一 查询 你的当前数据是否有 Sleep 的事务 执行 sql 检查 在你的项目停止或关闭后检查 show full PROCESSLIST 如果有执行 kill 杀掉 kill id kill 3009 二 查询是否存在挂起的锁 sele
  • pc虚拟服务器,基于虚拟服务器的分布式PC共享平台设计及实现

    摘要 随着云计算等技术的不断发展 C S架构的计算能力在慢慢地向服务器端倾斜 公有云 私有云等产品的出现 代表着人们访问应用程序时不再依赖于传统PC而是借助瘦客户机等连接网络的设备 本文旨在构建基于虚拟服务器的分布式PC共享平台 将桌面虚拟
  • 毕业设计-基于生成对抗网络的图像风格迁移

    目录 前言 课题背景和意义 实现技术思路 一 相关工作 二 基于生成对抗网络的风格迁移模型 三 实验与结果分析 四 总结 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为
  • 计算机算法与程序设计 第一章 编程作业

    返回 所有测验 作业和考试都在2020年12月30日23点截止 请及时完成 编程作业题可以多次提交 取最高分作为本题成绩 依照学术诚信条款 我保证此作业是本人独立完成的 温馨提示 1 本次作业属于Online Judge题目 提交后由系统即
  • 解决Windows系统缺少comres.dll文件无法启动程序问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个comres
  • 类的静态成员变量初始化时间

    首先先搞明白 声明 定义 初始化 类的静态成员变量在类内声明 可以多次声明 类的静态成员必须在类外定义 定义就是给变量分配内存 初始化就是给一个变量赋初值 内置类型通常定义时默认初始化 类静态成员变量在main函数执行前完成初始化 有静态初
  • buck拓扑原理及仿真

    buck基本拓扑结构 开关管ON 电源向负载电阻提供电能 电感电流线性增大 变化率 变化量 开关管OFF 电感 电容中能量继续向负载电阻提供电能 电感电流线性减小 变化率 变化量 平衡状态时 由电感伏秒平衡得 推导得 理论电感电流在CCM
  • 快节奏多人在线游戏网络入门系列教程(2):客户端预测与服务器协调

    简介 在上一篇文章中 我们简单介绍了权威服务器的体系 客户端发送交互信息给服务器 服务器周期性的更新游戏状态 然后返回游戏状态给客户端 这个简单体系会导致用户发送命令时和屏幕渲染响应之间的延迟 产生延迟的原因是客户端发送命令给服务器 加上服
  • BIO/NIO/AIO

    IO模型 BIO BIO全称为 Blocking I O 是一种同步阻塞IO 最开始的网络通信就是BIO模型 服务端创建一个ServerSocket 客户端创建一个 Socket 去连接服务端 这样客户端与服务端便可以进行通信了 产生的问题
  • Mybatis中针对数据库日期JdbcType设置

    Mybatis中针对数据库日期JdbcType设置 在学习Mysql的时候 我们知道数据库类型有date datatime time类型 在用Mybatis进行插入数据的时候 我们实体一般都是直接指定java util Date类型 为了确
  • 机器学习中的相似性度量

    https www cnblogs com heaad archive 2011 03 08 1977733 html 1 欧氏距离 曼哈顿距离 切比雪夫距离 闵可夫斯基距离 标准化欧氏距离 马氏距离 夹角余弦 汉明距离 杰卡德距离 杰卡德
  • 菜鸟入门HTML

    标题HTML 一 1 单标签 一般单独完成某一功能的标签都为单标签 link 导入图片或css或其他资源 例 img src路径 插入一个图片到网页中 例 img src title 123 在这里插入图片描述 https img blog
  • 转:彻底搞定期货穿透式CTP API接入

    中信期货看穿式监管认证操作指南 CTP系统 https www citicsf com static download soft E4 B8 AD E4 BF A1 E6 9C 9F E8 B4 A7 E7 9C 8B E7 A9 BF E
  • NTSC和PAL制同步信号模拟输出

    NTSC和PAL制同步信号模拟输出 原由 由于我想输出一个NTSC制和PAL制的同步黑场 只需要输出同步信号 之后输出rgb信号给ADV 7123 后输出到显示屏 下面是我的心路历程和知识总结 一 了解NTSC和PAL PAL 电视标准 每