FPGA 图像处理模块输出端恢复场同步信号Verilog代码

根据输出端有效数据信号计数恢复

`timescale 1ns / 1ps
//恢复场同步信号

module recovery_vsync (

    input        clk,        // 时钟信号
    input        reset,      // 复位信号
    input        valid_i,    // 输入数据有效信号
    input [15:0] rgb_565_i,  // 输入的16位RGB图像数据
    input [10:0] img_width,
    input [ 9:0] img_height,

    output reg        vsync_o,   // 输出场同步信号    
    output reg        valid_o,   // 输出数据有效信号
    output reg [15:0] rgb_565_o  // 输出的16位RGB图像数据

);

  reg [15:0] rgb_565_i_d1;
  reg valid_i_d1;
  reg [10:0] out_x_cnt;
  reg [9:0] out_y_cnt;

  always @(posedge clk or negedge reset) begin
    if (!reset) begin
      rgb_565_i_d1 <= 0;
      valid_i_d1 <= 0;
      rgb_565_o <= 0;
      valid_o <= 0;
    end else begin
      rgb_565_i_d1 <= rgb_565_i;
      valid_i_d1 <= valid_i;
      rgb_565_o <= rgb_565_i_d1;
      valid_o <= valid_i_d1;
    end
  end


  always @(posedge clk or negedge reset) begin
    if (!reset) begin
      out_x_cnt <= 0;
      out_y_cnt <= 0;
      vsync_o   <= 0;
    end else begin
      out_x_cnt <= valid_i ? ((out_x_cnt == img_width - 1) ? 0 : out_x_cnt + 1) : out_x_cnt;
      out_y_cnt <=valid_i&&(out_x_cnt == img_width - 1) ? ((out_y_cnt == img_height - 1) ? 0 : out_y_cnt + 1) : out_y_cnt;
      vsync_o <= (out_y_cnt == img_height - 1) ? 1 : 0;
    end
  end


endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值