当前位置: 首页 > news >正文

网站建设公司济宁装饰设计培训

网站建设公司济宁,装饰设计培训,西安人才网官网,如何用域名建网站目录1、前言2、硬件电路解析SDI摄像头Gv8601a单端转差GTX解串SDI解码VGA时序恢复YUV转RGB图像输出FDMA图像缓存HDMI输出3、工程1详解#xff1a;无缓存输出4、工程2详解#xff1a;缓存3帧输出5、上板调试验证并演示6、福利#xff1a;工程代码的获取1、前言 FPGA实现SDI视… 目录1、前言2、硬件电路解析SDI摄像头Gv8601a单端转差GTX解串SDI解码VGA时序恢复YUV转RGB图像输出FDMA图像缓存HDMI输出3、工程1详解无缓存输出4、工程2详解缓存3帧输出5、上板调试验证并演示6、福利工程代码的获取1、前言 FPGA实现SDI视频编解码目前有两种方案 一是使用专用编解码芯片比如典型的接收器GS2971发送器GS2972优点是简单比如GS2971直接将SDI解码为并行的YCRCB缺点是成本较高可以百度一下GS2971的价格 另一种方案是使用FPGA实现编解码利用FPGA的GTP/GTX资源实现解串优点是合理利用了FPGA资源GTP/GTX资源不用白不用缺点是操作难度大一些对FPGA水平要求较高。 本文详细描述了FPGA纯verilog解码SDI视频的实现设计方案工程代码编译通过后上板调试验证文章末尾有演示视频可直接项目移植适用于在校学生做毕业设计、研究生项目开发也适用于在职工程师做项目开发可应用于医疗、军工等行业的数字成像和图像传输领域 提供完整的、跑通的工程源码和技术支持 工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后 本设计提供两套vivado工程 一是SDI 1080P30Hz帧视频输入解码后无缓存直接HDMI 1080P30Hz帧输出 二是SDI 1080P30Hz帧视频输入解码后缓存3帧后HDMI 1080P60Hz帧输出 关于SDI的理论知识部分可自行搜索一下很多大佬讲得很详细也可以参考我之前写的文章点击查看SDI解码详解 2、硬件电路解析 硬件电路连接如下 SDI摄像头 我用到的SDI摄像头输出视频分辨率1080P30Hz根据不同相机有所区别 Gv8601a单端转差 Gv8601a起到均衡 EQ 功能这里选用Gv8601a是因为抄袭了Xilinx官方的板子当然也可以用其他型号器件。 GTX解串 GTX负责解串将原始SDI视频解为20位的并行数据我的板子是K7所以用GTX如果是A7的板子则用GTP这里使用GTX并没有调用IP而是直接调用GTXE2_CHANNEL和GTXE2_COMMON源语这一点可谓将Xilinx的GTX资源用到了极致水平值得好好品读其实调用IP无非也就是把调用源语变得界面化而已直接调用源语或许理解更为深刻这一点在市面上的所谓FPGA教程里都学不到。 SDI解码 调用SMPTE-SDI IP核实现GTX只是将高速串行数据解为了并行但并没有解析SDI协议SMPTE-SDI IP核则完成了SDI协议的解码去掉了SDI协议中的数据包信息和控制信息解析出有效的视频数据详细的SMPTE-SDI IP核接口定义请参考官方的使用手册; VGA时序恢复 此模块的作用就是解码恢复出hs、vs以及de信号即恢复正常的VGA视频时序 要恢复正常的VGA视频时序首先得看懂下面这张图 根据这张表即可恢复出图像时序具体看代码这里一两句话实在讲不清楚如果要完全讲明白写5本书都搓搓有余 YUV转RGB 这里就简单了YUV4:4:4转RGB8:8:8几条公式和几行代码的事儿属于低端操作 至此SDI解码过程就完成了接下来就是图像输出过程 图像输出 图像输出有两种通路 一种是无缓存直接输出这种方式的优点是没有延迟适用于做图传的项目缺点是不能对图像进行其他处理了 另一种是缓存输出这种方式的优点是可以平衡和同步后端的接收比如后端接收不过来时就可以缓存几帧再输出另外如果还需要对图像进行其他处理时也需要缓存适用于做图像处理的项目缺点是输出有延迟根据设置可以延迟多帧本设计是延迟3帧 既然需求是多样的所以我们直接做两个工程。 FDMA图像缓存 我常用的FDMA数据缓存架构详情请参考我之前的文章点击查看FDMA图像缓存 HDMI输出 纯verilog代码实现HDMI发送输出时序1920x1080P输出帧率由输入HDMI时钟决定 HDMI输出顶层接口如下 module helai_hdmi_out(input clk_hdmi ,input clk_hdmix5 ,input reset_n ,input i_vga_hs ,input i_vga_vs ,input i_vga_de , input [23:0] i_vga_rgb , output o_hdmi_clk_p ,output o_hdmi_clk_n ,output [2: 0] o_hdmi_data_p,output [2: 0] o_hdmi_data_n );3、工程1详解无缓存输出 开发板Xilinx Kintex7开发板 开发环境Vivado2019.1 输入SDI摄像头分辨率1080p30帧 输出HDMI分辨率1080p30帧 工程代码架构如下 顶层源码如下 module helai_sdi_decode_2023(input I_SDI_2_N ,input I_SDI_2_P , input SDI_GTX_CLK_148_5_N , // MGT REFCLKs 148.5 MHz clockinput SDI_GTX_CLK_148_5_P , input SDI_GTX_CLK_148_35_P, // MGT REFCLKs 148.35 MHz clockinput SDI_GTX_CLK_148_35_N,output HDMI_CLK_P ,output HDMI_CLK_N ,output [2:0] HDMI_DATA_P ,output [2:0] HDMI_DATA_N );wire o_vout_clk ; wire o_vout_hs ; wire o_vout_vs ; wire o_vout_de ; wire [23:0] o_vout_rgb ; wire clk_hdmi ; wire clk_hdmix5; wire hdmi_rstn ;helai_sdi_driver u_helai_sdi_driver(.I_SDI_2_N (I_SDI_2_N ),.I_SDI_2_P (I_SDI_2_P ), .O_SDI_2_N (),.O_SDI_2_P (), .SDI_GTX_CLK_148_5_N (SDI_GTX_CLK_148_5_N ), // MGT REFCLKs 148.5 MHz clock.SDI_GTX_CLK_148_5_P (SDI_GTX_CLK_148_5_P ), .SDI_GTX_CLK_148_35_P(SDI_GTX_CLK_148_35_P), // MGT REFCLKs 148.35 MHz clock.SDI_GTX_CLK_148_35_N(SDI_GTX_CLK_148_35_N),.o_vout_clk (o_vout_clk ),.o_vout_hs (o_vout_hs ),.o_vout_vs (o_vout_vs ),.o_vout_de (o_vout_de ),.o_vout_rgb (o_vout_rgb ) );clk_wiz_1 clk_hdmi (.clk_hdmi(clk_hdmi), // output clk_hdmi.clk_hdmi_clkx5(clk_hdmix5), // output clk_hdmi_clkx5.locked(hdmi_rstn), // output locked.clk_in1(o_vout_clk) // input clk_in1 ); helai_hdmi_out(.clk_hdmi (clk_hdmi ),.clk_hdmix5 (clk_hdmix5 ),.reset_n (hdmi_rstn ),.i_vga_hs (o_vout_hs ),.i_vga_vs (o_vout_vs ),.i_vga_de (o_vout_de ), .i_vga_rgb (o_vout_rgb ), .o_hdmi_clk_p (HDMI_CLK_P ),.o_hdmi_clk_n (HDMI_CLK_N ),.o_hdmi_data_p(HDMI_DATA_P),.o_hdmi_data_n(HDMI_DATA_N) ); endmodule资源消耗和功耗预估如下 4、工程2详解缓存3帧输出 开发板Xilinx Kintex7开发板 开发环境Vivado2019.1 输入SDI摄像头分辨率1080p30帧 输出HDMI分辨率1080p60帧 工程BD如下 工程代码架构如下 顶层源码如下 module helai_sdi_decode_2023(input clk_27m ,input I_SDI_2_N ,input I_SDI_2_P , input SDI_GTX_CLK_148_5_N , // MGT REFCLKs 148.5 MHz clockinput SDI_GTX_CLK_148_5_P , input SDI_GTX_CLK_148_35_P, // MGT REFCLKs 148.35 MHz clockinput SDI_GTX_CLK_148_35_N,input i_uart_rx , output o_uart_tx , // DDR3 output [12:0]DDR3_0_addr ,output [2:0] DDR3_0_ba ,output DDR3_0_cas_n ,output [0:0] DDR3_0_ck_n ,output [0:0] DDR3_0_ck_p ,output [0:0] DDR3_0_cke ,output [3:0] DDR3_0_dm ,inout [31:0] DDR3_0_dq ,inout [3:0] DDR3_0_dqs_n ,inout [3:0] DDR3_0_dqs_p ,output [0:0] DDR3_0_odt ,output DDR3_0_ras_n ,output DDR3_0_reset_n ,output DDR3_0_we_n ,output ddr3_ok , // HDMI_OUT output HDMI_CLK_P ,output HDMI_CLK_N ,output [2:0] HDMI_DATA_P ,output [2:0] HDMI_DATA_N );wire ui_clk_200m; wire rst_n ;wire ud_r_0_ud_rclk ; wire [31:0] ud_r_0_ud_rdata ; wire ud_r_0_ud_rde ; wire ud_r_0_ud_rvs ; wire ud_w_0_ud_wclk ; wire [31:0] ud_w_0_ud_wdata ; wire ud_w_0_ud_wde ; wire ud_w_0_ud_wvs ;wire o_vout_clk ; wire o_vout_hs ; wire o_vout_vs ; wire o_vout_de ; wire [23:0] o_vout_rgb ; wire o_vga_hs ; wire o_vga_vs ; wire o_vga_de ; wire [23:0] o_vga_rgb; wire [23:0] i_vga_rgb; wire clk_hdmi ; wire clk_hdmix5; wire hdmi_rstn ;assign ud_r_0_ud_rclk clk_hdmi ; assign ud_r_0_ud_rde o_vga_de ; assign ud_r_0_ud_rvs o_vga_vs ; assign i_vga_rgb ud_r_0_ud_rdata[23:0];assign ud_w_0_ud_wclk o_vout_clk; assign ud_w_0_ud_wdata o_vout_rgb; assign ud_w_0_ud_wde o_vout_de ; assign ud_w_0_ud_wvs o_vout_vs ; design_1 u_design_1 (.DDR3_0_addr (DDR3_0_addr ),.DDR3_0_ba (DDR3_0_ba ),.DDR3_0_cas_n (DDR3_0_cas_n ),.DDR3_0_ck_n (DDR3_0_ck_n ),.DDR3_0_ck_p (DDR3_0_ck_p ),.DDR3_0_cke (DDR3_0_cke ),.DDR3_0_dm (DDR3_0_dm ),.DDR3_0_dq (DDR3_0_dq ),.DDR3_0_dqs_n (DDR3_0_dqs_n ),.DDR3_0_dqs_p (DDR3_0_dqs_p ),.DDR3_0_odt (DDR3_0_odt ),.DDR3_0_ras_n (DDR3_0_ras_n ),.DDR3_0_reset_n (DDR3_0_reset_n ),.DDR3_0_we_n (DDR3_0_we_n ),.ddr3_ok (ddr3_ok ), .clk_in1_0 (clk_27m ),.ui_clk_0 (ui_clk_200m ),.rst_n (rst_n ),.ud_r_0_ud_rclk (ud_r_0_ud_rclk ),.ud_r_0_ud_rdata(ud_r_0_ud_rdata),.ud_r_0_ud_rde (ud_r_0_ud_rde ),.ud_r_0_ud_rvs (ud_r_0_ud_rvs ),.ud_w_0_ud_wclk (ud_w_0_ud_wclk ),.ud_w_0_ud_wdata(ud_w_0_ud_wdata),.ud_w_0_ud_wde (ud_w_0_ud_wde ),.ud_w_0_ud_wvs (ud_w_0_ud_wvs ) ); helai_sdi_driver u_helai_sdi_driver(.I_SDI_2_N (I_SDI_2_N ),.I_SDI_2_P (I_SDI_2_P ), .O_SDI_2_N (),.O_SDI_2_P (), .SDI_GTX_CLK_148_5_N (SDI_GTX_CLK_148_5_N ), // MGT REFCLKs 148.5 MHz clock.SDI_GTX_CLK_148_5_P (SDI_GTX_CLK_148_5_P ), .SDI_GTX_CLK_148_35_P(SDI_GTX_CLK_148_35_P), // MGT REFCLKs 148.35 MHz clock.SDI_GTX_CLK_148_35_N(SDI_GTX_CLK_148_35_N),.o_vout_clk (o_vout_clk ),.o_vout_hs (o_vout_hs ),.o_vout_vs (o_vout_vs ),.o_vout_de (o_vout_de ),.o_vout_rgb (o_vout_rgb ) );clk_wiz_1 clk_hdmi (.clk_hdmi(clk_hdmi), // output clk_hdmi.clk_hdmi_clkx5(clk_hdmix5), // output clk_hdmi_clkx5.locked(hdmi_rstn), // output locked.clk_in1(o_vout_clk) // input clk_in1 ); video_timing_control vga(.i_clk (clk_hdmi ), .i_rst_n(hdmi_rstn), .i_rgb (i_vga_rgb),.o_hs (o_vga_hs ),.o_vs (o_vga_vs ),.o_de (o_vga_de ),.o_rgb (o_vga_rgb) );helai_hdmi_out(.clk_hdmi (clk_hdmi ),.clk_hdmix5 (clk_hdmix5 ),.reset_n (hdmi_rstn ),.i_vga_hs (o_vga_hs ),.i_vga_vs (o_vga_vs ),.i_vga_de (o_vga_de ), .i_vga_rgb (o_vga_rgb ), .o_hdmi_clk_p (HDMI_CLK_P ),.o_hdmi_clk_n (HDMI_CLK_N ),.o_hdmi_data_p(HDMI_DATA_P),.o_hdmi_data_n(HDMI_DATA_N) ); endmoduleFPGA逻辑资源消耗和功耗如下 5、上板调试验证并演示 输出演示视频如下 FPGA纯verilog解码SDI视频6、福利工程代码的获取 福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下
http://www.dnsts.com.cn/news/119502.html

相关文章:

  • 洛阳建设信息网站建手机网站一年费用
  • 肃宁网站建设价格页游大全
  • 广州网站优化效果短网址统计
  • wordpress多语言网站四川网站建设设计公司
  • 织梦网站地图制作教程海南省海口市龙华区
  • 大型门户网站建设哪专业python做网站安全性
  • 网站建设销售好做嘛要怎样注册公司
  • 做网站代理怎么赚钱棋牌源码
  • 兰州网站设计哪个平台好赣州小程序开发公司
  • 满洲里建设局网站首页免费建微网站平台
  • 合肥网站设计goz中国建设造价工程协会网站
  • 邢台提供网站设计公司哪家专业广州市新闻发布会
  • 做机械外贸什么网站好如何建设和优化一个网站
  • wordpress电商网站html5的优点
  • 一页网站广州珠江工程建设监理有限公司网站
  • 关于电视剧的网站设计网页怎么样做跨境电商
  • 企业网站备案青岛网站制作工具
  • 建设厅执业注册中心网站网站建设营销模板
  • 中山做百度网站的公司名称企业网站视频栏目建设方案
  • 大同网站建设设计如何优化网站代码
  • 快速搭建网站系统一家专门做房产特卖的网站
  • 新手从零基础建站初级网站建设网站模板 可做采集站
  • 网站建设中中文模板谷歌网站流量统计
  • 厦门建设银行招聘网站汉中市建设局网站
  • 做网站导航站的注意点传媒有限公司
  • 网站没备案做淘宝客网站做分享链接
  • 唐山专业网站建设公司网站建设课程设计百度文库
  • 电子政务网站建设公司排行榜郑州自助建站软件
  • 搭建网站大概需要多少钱网站做下载页面
  • 温州做网站哪家比较好邢台做网站推广