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

  • 一、bt1120介绍
  • 二、代码
  • 三、bt1120中文建议书

一、bt1120介绍

bt1120的标准时序为1080p@60hz,其一帧数据主要是由消隐和有效数据构成,有效数据为YCbCr 4:2:2方式输出,在数字行消隐还有两种定时基准码,一种在每个视频数据块的起始(SAV),另一种在每个视频数据块
的结束(EAV),其一帧数据还有两场和一场两种方式输出,一帧格式如下图所示。

逐行扫描系统中的帧时间期定时规范

图像定时基准码的比特分配
在EAV 和SAV输出,其格式如下,在这两个基准码前还有三个固定数据其格式为 ff 00 00 EAV、
ff 00 0 SAV.

二、代码

bt1120

module bt1120(//inputsclk,rst_n,data_in,//outputshcnt,vcnt,hsync,vsync,data_out,clk_out);input         clk;
input         rst_n;
input  [15:0] data_in;output [11:0] hcnt;
output [10:0] vcnt;
output [15:0] data_out;
output          clk_out;
output          hsync;
output          vsync;reg    [15:0] data_out;parameter HNUM          = 12'd2200;  // 1080p @30Hz  2200  @25hz 2640
parameter VNUM          = 11'd1125;
parameter HSYNC_END     = 12'd276;
parameter VSYNC_START   = 11'd1121;
parameter VSYNC_END     = 11'd41;
parameter EAV           = 12'd4;
parameter SAV           = 12'd280;
parameter EAV_PRE       = 12'd1;
parameter SAV_PRE       = 12'd277;assign clk_out = ~clk;reg              hsync;
reg              vsync;
reg    [11:0]    hcnt;
reg    [10:0]    vcnt;always @(posedge clk or negedge rst_n) beginif(!rst_n) beginhcnt<=12'd1;vcnt<=11'd1;endelse if(hcnt==HNUM) beginhcnt<=12'd1;if(vcnt==11'd1125)vcnt<=11'd1;elsevcnt<=vcnt+11'd1;endelsehcnt<=hcnt+12'd1;
endalways @(posedge clk or negedge rst_n) beginif(!rst_n)hsync<=1'b0;else if(hcnt==HNUM)hsync<=1'b1;else if(hcnt==HSYNC_END)hsync<=1'b0;else;
endalways @(posedge clk or negedge rst_n) beginif(!rst_n)vsync<=1'b0;else if(hcnt==HNUM) beginif(vcnt==VSYNC_START)vsync<=1'b1;else if(vcnt==VSYNC_END)vsync<=1'b0;else;endelse;
endassign p3 = 1'b0^vsync^hsync;
assign p2 = 1'b0^hsync;
assign p1 = 1'b0^vsync;
assign p0 = vsync^hsync;always @(posedge clk or negedge rst_n) beginif(!rst_n)data_out<=16'd0;else if(hcnt==SAV_PRE || hcnt==EAV_PRE)data_out<=16'hffff;else if(hcnt==EAV || hcnt==SAV)data_out<={1'b1,1'b0,vsync,hsync,p3,p2,p1,p0,1'b1,1'b0,vsync,hsync,p3,p2,p1,p0};else if(hcnt==SAV_PRE+12'd1 || hcnt==SAV_PRE+12'd2 || hcnt==EAV_PRE+12'd1 || hcnt==EAV_PRE+12'd2)data_out<=16'd0;else if(hcnt==EAV+12'd1)data_out<={~vcnt[6],vcnt[6:0],~vcnt[6],vcnt[6:0]};else if(hcnt==EAV+12'd2)data_out<={4'b1000,vcnt[10:7],4'b1000,vcnt[10:7]};else if(hsync==1'b0 && vsync==1'b0)data_out<=data_in;elsedata_out<=16'h1080;
endendmodule

下面展示一些 内联代码片

test_img

module test_img(//inputsclk          ,rst_n      ,hcnt       ,vcnt       ,img_ctrl   ,//outputsdata_out  );input           clk               ;
input           rst_n           ;
input  [11:0]   hcnt            ;
input  [10:0]   vcnt            ;
input  [3:0]    img_ctrl        ;output [15:0]   data_out       ;reg    [15:0]   data_out       ;/********************************************************/
reg    [15:0]   data_checker    ;
reg    [15:0]   data_grayscale_c;
reg    [15:0]   data_grayscale_l;//输出
always @(*)begin if(img_ctrl == 4'b0000)begin               //checkerboarddata_out = data_checker;end else if(img_ctrl == 4'b0001)begin             //gray scale crosswisedata_out = data_grayscale_c;end else if (img_ctrl == 4'b0010) begin       //gray scale lengthwaysdata_out = data_grayscale_l;    endelse begin data_out <= data_checker;end
end//checkerboard
always @(posedge clk or negedge rst_n) beginif(!rst_n)data_checker<=1'b0;else if(vcnt[6]) beginif(hcnt[6])data_checker<={8'd16,8'd128};//{8'd16,8'd128};16'ha040;elsedata_checker<={8'd235,8'd128};//{8'd235,8'd128};16'h60a0;endelse beginif(hcnt[6])data_checker<={8'd235,8'd128};//{8'd235,8'd128};16'h4050;elsedata_checker<={8'd16,8'd128};//{8'd16,8'd128};16'hb0c0;end
end//gray scale//crosswise
reg         [7:0]                   cnt         ;
wire                                add_cnt     ;
wire                                end_cnt     ;reg        [3:0]                   cnt_12      ;
wire                                add_cnt_12  ;
wire                                end_cnt_12  ;always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt <= 8'd1;end else if (hcnt == 12'd280) begincnt <= 8'd1;endelse if(add_cnt)begin if(end_cnt)begin cnt <= 8'd1;endelse begin cnt <= cnt + 8'd1;end endelse  begincnt <= cnt;end
end assign add_cnt = end_cnt_12;
assign end_cnt = add_cnt && cnt == 8'd160;always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_12 <= 4'd1;end else if (hcnt == 12'd280) begincnt_12 <= 4'd1;endelse if(add_cnt_12)begin if(end_cnt_12)begin cnt_12 <= 4'd1;endelse begin cnt_12 <= cnt_12 + 4'd1;end endelse  begincnt_12 <= cnt_12;end
end assign add_cnt_12 = hcnt>12'd280;
assign end_cnt_12 = add_cnt_12 && cnt_12 == 4'd12;always @(posedge clk or negedge rst_n)begin if(!rst_n)begindata_grayscale_c <= 16'd0;end    else begin data_grayscale_c <= {cnt,8'd128};end
end//lengthwaysreg      [7:0]                   cnt_l           ;
wire                                add_cnt_l       ;
wire                                end_cnt_l       ;reg        [3:0]                   cnt_12_l        ;
wire                                add_cnt_12_l    ;
wire                                end_cnt_12_l    ;always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_l <= 8'd1;end else if (vcnt == 11'd41) begincnt_l <= 8'd1;endelse if(add_cnt_l)begin if(end_cnt_l)begin cnt_l <= 8'd1;endelse begin cnt_l <= cnt_l + 8'd1;end endelse  begincnt_l <= cnt_l;end
end assign add_cnt_l = end_cnt_12_l;
assign end_cnt_l = add_cnt_l && cnt_l == 8'd108;always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_12_l <= 4'd1;end else if (vcnt == 11'd41) begincnt_12_l <= 4'd1;endelse if(add_cnt_12_l)begin if(end_cnt_12_l)begin cnt_12_l <= 4'd1;endelse begin cnt_12_l <= cnt_12_l + 4'd1;end endelse  begincnt_12_l <= cnt_12_l;end
end assign add_cnt_12_l = vcnt>11'd41 && hcnt == 12'd2200;
assign end_cnt_12_l = add_cnt_12_l && cnt_12_l == 4'd10;always @(posedge clk or negedge rst_n)begin if(!rst_n)begindata_grayscale_l <= 16'd0;end else begin data_grayscale_l <= {cnt_l,8'd128};end
end

三、bt1120中文建议书

https://blog.csdn.net/li_lys/article/details/124870664?utm_source=app&app_version=5.4.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

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

  1. (20)FPGA面试题时序设计的实质

    1.1 FPGA面试题时序设计的实质 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题时序设计的实质: 5)结束语. 1.1.2 本节引言 "不积 ...

  2. 国产智多晶FPGA基于Verilog的设计开发流程

    大家好,我是小梅哥,这里给大家介绍国产FPGA厂家"西安智多晶"微电子的FPGA基于Verilog进行逻辑设计的开发流程,步骤详细,可作为大家的评估参考.本博客将陆续发表更多国产F ...

  3. FPGA之OV7725摄像头采集与VGA显示实验--4--摄像头数据输出VAG协议分析

    大家好,前面几节给大家介绍了OV7725摄像头通过SCCB协议进行配置的内容,这一节我们来聊一下关于OV7725摄像头的VAG协议的知识,为后面的数据采集模块做铺垫. 学习目标 理解VGA协议传输数据 ...

  4. 基于FPGA的IIR滤波器设计

    基于FPGA的IIR滤波器设计,使用VHDL语言. 本设计是毕设,包括论文 下面是论文目录截图: 各模块VHDL程序 时序控制模块程序 library ieee; use ieee.std_logic ...

  5. 基于FPGA的电子计算器设计(下)

    今天给大侠带来基于FPGA的电子计算器设计,由于篇幅较长,分三篇.今天带来第三篇,下篇,话不多说,上货. 导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系 ...

  6. 基于FPGA的LSTM加速器设计(MNIST数据集为例)

    摘要 本文以MNIST手写数字识别任务为例,使用FPGA搭建了一个LSTM网络加速器,并选取MNIST数据集中的10张图片,通过vivado软件进行仿真验证.实验结果表明,本文设计的基于FPGA的LS ...

  7. 基于FPGA的信号发生器的设计

    基于FPGA的信号发生器的设计 首先先要介绍的是本设计的主芯片是ALTERA的一款芯片,芯片名称是EP2C5T144C8N.该芯片的LE单元有4608个,PLL锁相环具有2个,IO口管脚具有142个, ...

  8. 基于 FPGA 的 UART 控制器设计(VHDL)(下)

    今天给大侠带来基于FPGA的 UART 控制器设计(VHDL)(下),由于篇幅较长,分三篇.今天带来第三篇,下篇,使用 FPGA 实现 UART.话不多说,上货. 之前有关于 Veriliog HDL ...

  9. 基于FPGA的电子计算器设计(上)

    今天给大侠带来基于FPGA的电子计算器设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,话不多说,上货. 导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系 ...

  10. 【FPGA实例】基于FPGA的DDS信号发生器设计

    原文链接来源:www.runoob.com 基于FPGA的DDS信号发生器设计 DDS 原理 ------DDS(直接频率合成) 技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真 ...

最新文章

  1. 观察者模式(Observer)
  2. 自己动手写C语言编译器(暂停)
  3. matlab算法时间复杂度,关于降低算法时间复杂度问题的探讨和总结
  4. 各种音频编码方式的对比
  5. 码农口述:AI创业两年,积蓄花光,重回职场敲代码
  6. SQLServer 2005删除无主键表中的重复项
  7. (视频+图文)机器学习入门系列-第15章
  8. json 字符串反序列化成DataSet
  9. 【2016年第1期】基于大数据的玉米田四代棉铃虫发生量的预测模型
  10. 全新拟态个人主页/引导页源码
  11. mac下自带apache
  12. 秋色园网站转移过程记录篇
  13. goreman 多进程管理工具
  14. Fix Bug的五个阶段
  15. 电力系统仿真软件python_电力系统PSS@E仿真软件
  16. 昨天熬夜整了一波,值了!
  17. 版权符号--如何在页面完美显示版权符号,版权符号字体
  18. c语言围棋报告,C++围棋程序实现报告.doc
  19. 《哈利波特》购书最低折扣
  20. 上帝模式代码_生产代码中的上帝模式

热门文章

  1. pl2303hxa串口线驱动_Prolific PL2303 USB转串口线驱动
  2. GD32VF103启动流程分析
  3. 手机通讯录整理excel2csv2vcf
  4. vue 圆形 水波_canvas 水滴图、液体进度条、仿加速球、圆球水波图
  5. java程序cpu突然飚高_简单排查java应用CPU飙高的线程问题
  6. 基于SSM实现的房屋租赁系统【附源码】(毕设)
  7. ask调制流程图_ASK调制及解调实验报告 - 范文中心
  8. 我的数据分析入门整理(一)
  9. sklearn中digits手写字体数据集
  10. 俄罗斯方块(C语言实现)