基于FPGA的GV7600驱动控制器设计,按照BT1120协议传输YCbCr数据

基于FPGA的GV7600驱动 最近项目上用到FPGA驱动GV7600输出SDI信号,输出分辨率1920*1080p,首先,了解GV7600芯片的特性功能,按照bt1120协议传输10位Y,Cb,Cr数据;其次,我的项目中用的是10位通道分时复用传输Y,Cb,Cr数据;配置引脚很重要,当初verilog代码写好了,因为硬件引脚配置错误,导致调试一直不通;同时,sof文件也要一直更新, 根据10bit HD模式,在硬件pcb 阅读详情
AI摘要

介绍基于FPGA的GV7600驱动控制器设计,实现10bit SDI高清信号输出,涵盖模块功能、行为描述与时序说明。重点讨论了BT1120协议下的1080p分辨率数据传输。

目录

一、基于FPGA的GV7600驱动控制器设计,按照BT1120协议传输YCbCr数据

二、模块名称

三、模块输入输出端口定义(interface)

四、模块功能(functions)

五、模块行为描述(behavior descriptions)

六、时序说明图(diagrams)

七、注意事项

八、参考文献及代码

九、经验总结



一、基于FPGA的GV7600驱动控制器设计,按照BT1120协议传输YCbCr数据

二、模块名称

SDI Data Interface

三、模块输入输出端口定义(interface)

PCB板号:176-A-1,根据10bit HD模式,在硬件pcb上配置如下4个引脚(红色字体)

信号名称

信号属性

信号说明

Sys_clk

input

系统时钟:30 MHz

Pclk

output

锁相环输出给GV7600时钟:148.5MHZ

Reset

output

GV7600低电平复位1.8ms

Sdi_data

output

输出数据给GV7600

 

 

 

DETECT_TRS

硬件拉高

将H:V:F timing信号嵌入到并行输入数据流

656_BYPASS

硬件拉高

选择video模式

20BIT/10BIT

硬件拉低

选择输入10bit数据位数

RATE_SEL0

硬件拉低

根据分辨率要求

 

 

 

 

四、模块功能(functions)

根据项目需求,通过FPGA驱动GV7600输出SDI信号

五、模块行为描述(behavior descriptions)

  1. 顶层模块:端口定义

(输入:Sys_clk,

输出:Pclk,Sdi_data,Reset);

 

  1. 驱动模块:端口定义

(输入:Clk,Sys_rstn,BT1120_data_out,

输出:Pclk,Sdi_data,Reset,);

 

  1. BT1120模块:端口定义

(输入:Clk,Sys_rstn,

输出:BT1120_data_out,);

 

  1. PLL调用模块:端口定义

(输入:Sys_clk,

输出:c0,locked,);

 

模块分为4个子模块:1.顶层模块:做例化;2.驱动模块:驱动GV7600芯片,FPGA输出GV7600复位,时钟和数据信号;3. BT1120模块:按照BT1120协议传输数据;4.锁相环调用模块:输出148.5Mhz时钟(根据分辨率决定时钟频率);

 

                                                      图1 SDI接口流程图

 

六、时序说明图(diagrams)

                          图2 10bit复用 SDI接口时序

 

 

根据《GV7600-SDI并转串datasheet》,FPGA主要实现驱动GV7600功能,具体需求如下:

  1. 选择模式:10-bit data input HD format      <文档P30>   

  

  1. 选择分辨率:1920*1080,1080p/30Hz Format      <文档P36>

 

七、注意事项

  1. FPGA内部通过锁相环倍频输出给GV7600 148.5MHz时钟;
  2. 注意选择10bit模式和输入数据位宽
  3. 特别注意有效像素点开始数值(参考bt1120文档(P12):数据流定时规范)
  4. GV7600低电平复位:1.8ms;
  5. 在1080p分辨率下:VIDEO_START=559/560画面正常,561画面立刻抖动;在720p分辨率下:VIDEO_START=4039/ 4040画面正常,4041画面立刻抖动

 

 

1080p

 

20位

10位复用

并行数据流中的数字行

2200

4400

并行数据流中的数字行消隐

4+272+4

8+544+8

并行数据流中的有效行

1920

3840

 

10bit

552

553

554

555

556

557

558

559

SAV0

SAV1

SAV2

SAV3

SAV4

SAV5

SAV6

SAV7

`ifdef BT1120_1080P_30HZ

parameter ROW_MAX = 1124;           //每场总计行数

parameter COL_MAX = 4399;            //每行总计像素点数

 

parameter ROW_BLACK_S = 41;      //开始场有效

parameter ROW_BLACK_E = 1121; //开始场消隐

 

parameter SAV_COL = 552;                 //276*2

 

parameter BLANK_START = 7;         //开始272*2=544个消隐区域

parameter SAV_START     = 551;      //开始4*2=8个SAV定时基准码

parameter VIDEO_START = 559;    //开始每行有效像素点区域,560也可以正常显示图像 

parameter EAV_START     = 4399;    //开始4*2=8个EAV定时基准码

 

parameter DATA_CNT     = 1919;     //每行有效像素点

parameter VCNT_SUM      = 1079;     //每场有效行

`endif

八、参考文献及代码

文档一:ITU-R BT.1120-7 建议书 
高清晰度电视演播室信号数字接(https://wenku.baidu.com/view/920afe2d2af90242a895e501.html)

文档二:SMPTE  STANDARD  for Television — 1280 × 720 Progressive Image Sample Structure — Analog and Digital Representation and Analog Interface(https://wenku.baidu.com/view/8de63ec22cc58bd63186bd93.html)

文档三:GV7600 Aviia™ Transmitter 芯片手册(http://www.doc88.com/p-2456927070001.html)

附核心模块代码(通过BT1120协议将YCbCr转换SDI输出)

// BT1120 Encoder
//****************************************************************//
//Company :		##
//Author : 		MZH
//Version :	    1.0
//Data of Creation :2017/05/22 
//****************************************************************//
//BT1120 EAV, SAV Description
//BIT6:F ODD EVEN Sign	(ODD=0)
//BIT5:V FIELD BLANKING Sign (1=BLANKING)
//BIT4:H EAV SAV Sign	(1=EAV)
//BIT3-0 CRC BIT3=V(XOR)H;BIT2=F(XOR)H;BIT1=F(XOR)V;BIT0=F(XOR)V(XOR)H
//
//Bit7	 		Bit6	  Bit5	  	  Bit4			Bit3-0(P3P2P1P0)			Hex		Description
//	1			0			0			0				0000					0x80	Odd,Active,SAV		10'h200
//	1			0			0			1				1101					0x9d	Odd,Active,EAV		10'h274
//	1			0			1			0				1011					0xab	Odd,Blank, SAV		10'h2AC
//	1			0			1			1				0110					0xb6	Odd,Blank, EAV		10'h2d8
 
//
// Every line(4400Bytes):
//						 EAV(8Bytes:3FF 3FF 000 000 000 000 XYZ XYZ) 
//						 LineBlanking(560Bytes: 80 10 80 10....)
//						 SAV(8Bytes:3FF 3FF 000 000 000 000 XYZ XYZ) 
//						 ActiveVideo(3840Bytes:Cb0 Y0 Cr0 Y1 Cb2 Y2 Cr2 Y3 Cb4 Y4 Cr4 Y5 .... Cb1918 Y1918 Cr1918 Y1919 )
//
// Every Field = 1125Lines
//	Line 0 - 40:odd field blanking
//	Line 41 - 1121:odd field active
//	Line 1122 - 1124:odd field blanking
 
//	
//	Clk:
//	2200*1125 = 2475000 
//	2475000  * 60 = 148.5M
//****************************************************************//  
 
// COLORBAR DEFINE				//生成颜色测试数据
//`define COLOR_HOR_TEST		//横向渐变条纹
`define COLOR_VER_TEST			//竖向渐变条纹
`define TB_DATA
 
`define BT1120_1080P_30HZ 		//选用1280p 30hz
 
//`define BT1120_720P_30HZ			//选用720p 30hz
		
 
module BT1120_1080p_720p (
					input Sys_rstn,
					input Clk,
					//input [7: 0] DataY_input,
					//input [7: 0] DataCb_input,
					//input [7: 0] DataCr_input,
					output	reg	 Field_sync,				//Odd signal
					output	reg	 DataY_req,					//1280x720 每场
					output	reg	 DataCr_req,				//640x720 每场
					output	reg	 DataCb_req,				//640x720 每场
					output [9: 0] BT1120_data_out
					
 
					);
		
`ifdef BT1120_1080P_30HZ
parameter ROW_MAX = 1124; 		//每场总计行数
parameter COL_MAX = 4399; 		//每行总计像素点数
 
parameter ROW_BLACK_S = 41; 	//开始场有效
parameter ROW_BLACK_E = 1121; 	//开始场消隐
 
parameter SAV_COL = 552;		//276*2
 
parameter BLANK_START = 7; 		//开始272*2=544个消隐区域
parameter SAV_START	  = 551; 	//开始4*2=8个SAV定时基准码
parameter VIDEO_START = 559;    //开始每行有效像素点区域,560也可以正常显示图像  
parameter EAV_START	  = 4399; 	//开始4*2=8个EAV定时基准码
 
parameter DATA_CNT 	  = 1919;	//每行有效像素点
parameter VCNT_SUM	  = 1079;	//每场有效行
`endif
 
 
 
`ifdef BT1120_720P_30HZ
parameter ROW_MAX = 749;
parameter COL_MAX = 6599;
 
parameter ROW_BLACK_S = 25;
parameter ROW_BLACK_E = 745;
 
parameter SAV_COL = COL_MAX - 2567;// SAV_COL = 4032
 
parameter BLANK_START = 7;
parameter SAV_START	  = 4031;
parameter VIDEO_START = 4039;
parameter EAV_START	  = 6599;
 
parameter DATA_CNT 	  = 1279;
parameter VCNT_SUM	  = 719;
`endif
 
`ifdef TB_DATA	
 
reg[7:0]	DataY,DataCr,DataCb;
reg[11:0]	cnt_Y;				//计数:每行有效像素点数
reg[11:0]	cntt;				//计数:每场有效行数
 
wire[7:0]	DataY_input,DataCr_input,DataCb_input;
assign  	DataY_input  = DataY;		
assign		DataCr_input = 8'd128;
assign		DataCb_input = 8'd128;
`endif
 
`ifdef COLOR_VER_TEST										//竖条纹
always@(posedge Clk or negedge Sys_rstn)begin 				//create tb data
	if(!Sys_rstn)begin
		DataY 	<= 	255;
		cnt_Y	<=	12'd0;
	end   
	else if (DataY_req) begin
		if (cnt_Y==DATA_CNT) begin
			DataY	<=	255;
			cnt_Y	<=	12'd0;
	
		end
		else begin
			DataY	<=	DataY-1;
			cnt_Y	<=	cnt_Y+1;
		end
	end  
end
`endif
 
`ifdef COLOR_HOR_TEST									//横条纹
always @(posedge Clk or negedge Sys_rstn) begin 		//creat tb data
	if (!Sys_rstn) begin
		cnt_Y	<=	12'd0;
	end
	else if (DataY_req) 
	begin
		if (cnt_Y==DATA_CNT) 
		begin
			cnt_Y	<=	12'd0;
		end	
		else 
		begin
			cnt_Y	<=	cnt_Y+1;
		end
	end
end
always @(posedge Clk or negedge Sys_rstn) begin 		//creat tb data
	if (!Sys_rstn) begin
		DataY 	<= 	8'd0;
		cntt	<=  12'd0;
	end
	else if (DataY_req) 
	begin
		if (cnt_Y==DATA_CNT) 
		begin
			DataY	<=	DataY+1;
			cntt 	<=	cntt+1;	
		  if (cntt==VCNT_SUM) 
		  begin
			  DataY	<=	0;
			  cntt 	<=	0;
		  end
		end
	end
end
`endif
 
 
reg [12:0] hcnt;
reg [11:0] vcnt;
reg [9:0] data_out_temp;
 
assign BT1120_data_out = data_out_temp;
 
 
wire [9: 0] dataY_input_temp;
wire [9: 0] dataCb_input_temp;
wire [9: 0] dataCr_input_temp;
 
 
// REAL DATA
assign  dataCb_input_temp = {DataCb_input,2'b00};
assign  dataY_input_temp  = {DataY_input,2'b00};
assign  dataCr_input_temp = {DataCr_input,2'b00};
 
 
always @ (posedge Clk or negedge Sys_rstn ) 					 //行场计数
begin
	if (!Sys_rstn) begin		
		hcnt <= 13'd0;
		vcnt <= 12'd0;	
	end
	else begin
		if (hcnt == COL_MAX) begin	
			hcnt <= 13'd0;
			vcnt <= (vcnt == ROW_MAX) ? 12'd0: (vcnt + 1'b1);     
		end
		else begin
			hcnt <= hcnt + 1'b1;
		end
	end
end
 
 
always@(posedge Clk or negedge Sys_rstn)begin 			//输出奇偶场同步
	if(!Sys_rstn)begin
		Field_sync	<= 1'b0;
	end
	else begin
		Field_sync	<=	((hcnt==13'd0)&&((vcnt==12'd0)))?	1:0; 
	end
end	
 
 
reg V_VALID;
always @ (posedge Clk or negedge Sys_rstn )				//输出有效标志
begin
	if (!Sys_rstn) begin		
		V_VALID = 1'b1;
	end
	else begin
		case (vcnt)
		0:           V_VALID = 1'b1;
		ROW_BLACK_S: V_VALID = 1'b0;					//偶场有效区
		ROW_BLACK_E: V_VALID = 1'b1;
		default:     V_VALID = V_VALID;
		endcase
	end
end
 
 
reg[1:0]	h_state;
always@(posedge Clk or negedge Sys_rstn)begin 			//表示每行四个不同区间
	if(!Sys_rstn)begin
		h_state	<= 2'd0;
	end
	else if(hcnt==10'd0)begin
		h_state	<= 2'd0;
	end
	else begin
		case(h_state)
			2'd0:begin		//EAV
				h_state	<= (hcnt==BLANK_START)?	2'd1:2'd0;
			end
			2'd1:begin		//BLANK
				h_state	<= (hcnt==SAV_START)?	2'd2:2'd1;
			end				
			2'd2:begin		//SAV
				h_state	<= (hcnt==VIDEO_START)?	2'd3:2'd2;
			end						
			2'd3:begin		//VIDEO
				h_state	<= (hcnt==EAV_START)?	2'd0:2'd3;	//每行有效数据区
			end	
			default:begin
				h_state	<= 2'd0;
			end
		endcase
	end
end				
 
always@(posedge Clk or negedge Sys_rstn)begin 				//产生输入请求信号
	if(!Sys_rstn)begin
		DataY_req		<= 1'b0;
		DataCr_req		<= 1'b0;
		DataCb_req		<= 1'b0;
	end
	else begin
		if( h_state==2'd3 )begin
		DataY_req		<= 	( V_VALID == 1'b0 )?		hcnt[0]:1'b0;			
		DataCb_req		<= 	( V_VALID == 1'b0 )?		(hcnt[1:0]==2'b00):1'b0;
		DataCr_req		<= 	( V_VALID == 1'b0 )?		(hcnt[1:0]==2'b10):1'b0;  
	end 
	else begin
		DataY_req		<= 1'b0;
		DataCr_req		<= 1'b0;
		DataCb_req		<= 1'b0;
	end
end			
end
 
 
always @ (posedge Clk or negedge Sys_rstn ) 			 //BT_1120协议
begin
	if (!Sys_rstn) begin			
		data_out_temp  <= 10'h200;
	end
	else begin										
											//发EAV和SAV前两个数据
		if ((hcnt == 0 )|| (hcnt == 1) || (hcnt == SAV_COL) || (hcnt == (SAV_COL+1))) begin 
			data_out_temp  <= 10'h3FF;
		end
		else if ( (hcnt == 2) || (hcnt == 3) ||(hcnt == 4) ||(hcnt == 5) || (hcnt == (SAV_COL+2)) || (hcnt == (SAV_COL+3))|| (hcnt == (SAV_COL+4))|| (hcnt == (SAV_COL+5)) ) begin
			data_out_temp <= 10'h000;
		end		
		else if ((hcnt == 6) || (hcnt == 7)) begin	//发EAV最后两个数据
 
			//if (((vcnt >= 0) && (vcnt <= ROW_BLACK_S)) || ((vcnt >= ROW_BLACK_E) && (vcnt <= ROW_MAX))) begin	
			if (V_VALID) begin	
				data_out_temp <= 10'h2D8;			//{8'hB6,2'b00}; EAV odd field blanking				
			end
			else begin
				data_out_temp <= 10'h274;			//{8'h9D,2'b00}; EAV odd field active			
			end
		end	
		// BLACKING
		else if ((hcnt > 7) && (hcnt < SAV_COL) ) begin
			data_out_temp <= 10'h200;
		end											
		else if ((hcnt == (SAV_COL+6)) || (hcnt == (SAV_COL+7))) begin				//发SAV最后两个数据	
			if (V_VALID) begin	
				data_out_temp <= 10'h2AC;   	 	//{8'hAB,2'b00}; SAV odd field blanking				
			end
			else begin
				data_out_temp <= 10'h200;			//{8'h80,2'b00};  SAV odd field active
			end
		end		
		// DATA
		else begin			
			if (V_VALID) begin	
				data_out_temp <= 10'h200;
			end
			else begin
				case (hcnt[1:0])
				2'd0: begin
					data_out_temp <= dataCb_input_temp;
				end	
				2'd1,2'd3: begin
					data_out_temp <= dataY_input_temp;
				end	
				2'd2: begin
					data_out_temp <= dataCr_input_temp;
				end	
				default: begin
					data_out_temp <= 10'h200;
				end
				endcase
			end		
		end					
	end		
end
 
endmodule
					
 
 
 
/*-----------------------------------------------
 

————————————————
版权声明:本文为优快云博主「Davemissyou」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/Davemissyou/article/details/89016374

九、经验总结

SDI总结(调试包括:在不同分辨率下的BT656,BT1120)

      SDI调试的关键是行计数,每行EAV和SAV的起始计数至关重要;10bit SDI_1080p和10bit SDI_sd存在两方面差异:1、bt656和bt1120的协议不同,2、硬件Pcb上RATE_SEL0引脚配置不同;

1、每一行的组成

行(line)=结束码(EAV)+水平消隐(Horizontal blanking)+起始码(SAV)+有效数据(Active Video)

起始码(SAV)和结束码(EAV),它是标志着一行开始结束的重要标记,bt656协议:

      图3 10bit复用 SDI_sd接口时序

2、为什么一行中的有效数据是 1440 字节,因为PAL制式的SDTV的分辨率为 720*576,即一行有720个有效点,由于采集的是彩色图像,那么一行就是由亮度信息(Y)和色差信息(CbCr)组成的,由于YCbCr是422格式,故一行中有720列Y,720列CbCr,因此,一行的有效字节数就为 720 x 2 = 1440 字节。bt1120协议:

    图4  10bit复用 SDI_hd接口时序

3、定义行计数器时,需要明确每行的总数据和有效数据,总数据和有效数据即(EAV和SAV的起始计数)正确与否决定了是否显示图像,在整个模块代码编写中查阅总数据和有效数据的数值花费了80%的时间,最终在(bt1120文档(P12):数据流定时规范)中找到确定数值;

4、10bit复用时,每行有4400个数据,3840个有效数据,故一行中有1920列Y,1920列CbCr,分辨率:1920*1080

 

 

 

 

 

 

 

 

 

使用FPGA驱动GS2972(3G-SDI模式)外同步(HSYNC VSYNC DE)或内同步(BT1120)输出SDI彩条调试 GS2972初始化为SMPTE模式,在SMPTE模式下芯片有两种视频数据组织形式,一种是芯片根据所给的视频数据自动检测并生成行场同步信号,还有一种是需要将写好的行场同步信号传给芯片。需要了解相关视频标准、传输标准、显示标准,协议较多,版本较多,彻底了解并非一件简单的事情。后续,作者会陆续记录视频相关标准的学习。1.结合上下时序图可知,line1-line41为场消隐,line1122-line1125为场消隐,共45行场消隐。3.此处的行场同步并非,我理解的在行同步时,行同步拉高,在场同步时场同步拉高。 阅读详情

相关推荐

基于FPGA的SDI发送接口调试,FPGA+GV7700实现1080p和720p的显示

上一篇文章已经调试了bt11200接口,本章将基于bt1120接口完善代码,实现1080p60Hz和720p60Hz的显示兼容。

weixin_45637597的博客 4717

国产SDI/功能与GV7600/GS2972类似

是一款传递数字标清和高清信号的数字视频发送器,功能与GV7600/GS2972类似,集成了线缆驱动器,可以使用 75 欧姆的同轴线缆传递525i,625i,720P,1080P。如需更多资料请留言哦~

suki1226的博客 1305

基于FPGA的1080P 60Hz BT1120接口调试过程记录

基于FPGA 的BT1120接口

weixin_45637597的博客 8044

ADV7611调试的一些细节

1、使用internal edid 一定不能外接EEPROM,即使接也不能地址设置为0xA0。hdmi host主动去读EDID时,在DDC总线上就是使用0xA0这个地址的。 2、对于STC的单片机,只能下降沿中断,不能检测hdmi的hot plug上跳沿。也就是说,对于一个hdmi host的hot plug管脚,HDMI线接入之前为逻辑低电平,接入之后拉高,表示一个hdmi设备接入。 3、

skyplain1984的博客 7178

采集fpga送dvp(BT1120)信号的linux 驱动

dvp采集的linux驱动

GV7600_01-design-guide.zip_HD-SDI_SDI_SDI转换芯片_bt1120_bt1120转HD-S

GV7600 SDI转换芯片,可实现BT1120转HD-SDI,可应用在安防,广电行业

高清接口芯片---gv7600、sii9135

http://www.travellinux.com/download/海思Hi3516%20demo单板使用指南.pdf gv7600  sdi 串行数字接口 parrlar 并行数字接口 http://info.secu.hc360.com/2013/03/281535718329.shtml 应用实例...

weixin_34117211的博客 1954

〖Python接口自动化测试实战篇④〗- 接口自动化测试详解

[接口测试] 是相对来说和我们的功能测试 [最为接近的一种自动化测试手段] ,所以我们首先来学习接口测试的内容。 实现接口的开发与接口的测试,在我们的思维上、想法上、面向的态度上都是不一样的。所以大家要有一个思维上的转换,要认识了解一下 接口测试到底是做什么的、它的功能、意义在哪里。...

易编橙 · 终身成长社群,相遇已是上上签! 5万+

flex 资源

http://sourceforge.net/adobe/wiki/Projects/

onnwll的专栏 761

华为OD机试:查找接口成功率最优时间段 (C/C++/Py/Java/JS/GO)

华为OD机试双机位C卷 查找接口成功率最优时间段,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 4687

从菜鸟到大神:VSCode助力HTML开发全攻略

本文全面介绍 VSCode 在 HTML 开发中的高效应用。先引导读者完成 VSCode 的安装与个性化设置,助其快速适应开发环境;接着推荐 Live Server、Prettier 等实用插件,实现实时预览、代码格式化等功能,提升开发效率。通过详细的开发实战步骤,从新建文件到添加样式,带领读者掌握 HTML 基础结构与常用标签使用。还分享代码片段管理、多人协作等进阶技巧,解决常见开发问题。旨在帮助开发者利用 VSCode,轻松高效完成 HTML 开发,打造优质网页。

邓邓子的博客 3365

HD-SDI芯片方案选择及其应用与发展方向

视频监控在经历模拟时代、数字时代、网络时代的发展后,现在已经逐步走入了高清与智能时代。与传统标清视频相比,高清在视频质量上有了质的飞跃,但就目前而言,要实现监控系统高清呈现,也并非一蹴而就之易事。从视频监控系统中模拟到数字的转化中,从CIF到D1是一个重要的阶跃,从效果来看数字化视频影像也可与模拟视频影像相当,即使达到标准清晰度(即“标清”),其存储和传输的增加几乎是翻两番。若要达到高级清晰度(即

phoenixtree7的专栏 9321

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1104

Hi3516A开发--视频接口

参看:几种常用的视频接口 我们经常在家里的电视机、各种播放器上,视频会议产品和监控产品的编解码器的视频输入输出接口上看到很多视频接口,这些视频接口哪些是模拟接口、哪些是数字接口,哪些接口可以传输高清图像等,下面就做一个详细的介绍。   目前最基本的视频接口是复合视频接口、S-vidio接口;另外常见的还有色差接口、VGA接口、接口、HDMI接口、SDI接口。   1、复合

不积跬步,无以至千里 1万+

自抗扰控制(ADRC)理论与工程实践:8.2 模糊ADRC、神经网络ADRC等智能融合变体

智能融合ADRC变体概述 自抗扰控制(ADRC)与智能控制方法(如模糊逻辑、神经网络)的融合,旨在突破传统ADRC在非线性、时变系统中的应用局限。智能融合ADRC主要通过以下方式实现性能提升: 模糊ADRC 参数自整定:利用模糊推理在线调节ADRC带宽参数,实现自适应控制。 非线性反馈:用模糊控制器替代线性PD,灵活设计非线性控制策略。 优势:融入专家经验,无需精确模型;局限:依赖规则库设计,稳定性分析困难。 神经网络ADRC 增强ESO:用神经网络学习扰动动态,提高估计精度。

技术工作者 226

SoulX-FlashHead 加速实践,提升3倍。

SoulX-FlashHead 加速实践,提升3倍。

jacke121的专栏 221

基于BT1120协议生成SDI(HDMI)彩条

【代码】基于BT1120协议生成SDI(HDMI)彩条。

FPGAer_QQ742875810的博客 1464

【Bluetooth蓝牙开发】九、BLE协议之GATT

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 4760

BT1120接口及协议

因为项目上用到的是 海思3536的bt1120接口对接 FPGA。项目上用到的是 1920 x 1080,60Hz.逐隔.                         上图看到, BT1120的接口 有 16根 数据线 和 一根 时钟线。 下面说一下接口的时序及说明。 对于一帧视频图像,有视频帧消隐区和 行消隐区。这些概念首先得明白,才能往下看。 上图我们看到视

视频拼接器 8万+

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3907

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LMH0341接收SDI视频并转化为BT1120

LMH0341接收SDI视频并转化为BT1120

Cesaroy的博客 3801

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

bt1120

添加链接描述

tanfuz的博客 1447

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

BT.1120协议简介

BT.1120规定了HDTV的接口协议,详细了解BT1120请参考《ITU-R BT.1120-7建议书——高清晰度电视演播室信号数字接口》,目前已更新至第8版,本文资料全部来源于官方文档;容易搞混淆的是BT609和BT1120的关系,类似BT601是SDTV的数据结构,BT656是SDTV的接口定义,BT709是HDTV的数据结构,BT1120是HDTV的接口定义,可看作是BT709的延伸应用;...

学飞的鸟博客 1万+

bt1120时序详解

可以利用HD_SDI协议进行高速传输,具有传输距离远,造价便宜,传输稳定等特点,常用于直播,以及一些高端电子设备上。input [3:0] i_src_sel , //选择输出数据的格式。output reg [15:0] o_data //数据。output [12:0] o_col , //列。output [12:0] o_row , //行。

weixin_48313568的博客 4144

【FPGA】基于bt1120时序设计实现棋盘格横纵向灰阶图数据输出

bt1120

li_lys的博客 4282
上一篇: 视频时序与BT1120的关系 && FPGA实现BT.1120编码
下一篇: 网段划分 && 教你如何在一个有500台PC以上的局域网配置IP、子网掩码
USB_ABC
博客等级 码龄16年 319粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值