CVO输出如果是一个像素并行输出,选择内嵌人插入同步码。如果两个像素并行输出是不能选择内嵌的,只能选择分离的方式。如果把输出的并行数据给VIP并且要求是内嵌,那只能在内部转或者外部转。

这里是实现外部转换的方式。

程序是比较简单的,只是防止以后找不到程序反复得写而已。

实现过程是:

1、先把两个像素转换成一个像素

  1. module sym2_2_sym1(
  2. input clk_i,
  3. input [:] h_sync_i,
  4. input [:] v_sync_i,
  5. input [:] de_i,
  6. input [:] vin,
  7.  
  8. input clk_o,
  9. output h_sync_o,
  10. output v_sync_o,
  11. output [:] vout
  12. );
  13. reg de_i_r = 'b0;
  14. reg cnt = 'b0;
  15. reg [:] din_r = 'd0;
  16. reg [:] h_sync_i_r = 'b00;
  17. reg [:] v_sync_i_r = 'b00;
  18. reg h_sync_r =;
  19. reg v_sync_r = ;
  20. reg [:] vout_r =;
  21. /*********************************************************
  22. 检测de信号上升沿,用于指示每行第一个有效数据
  23. **********************************************************/
  24. always @( posedge clk_o )
  25. begin
  26. de_i_r <= de_i[];
  27.  
  28. end
  29. wire pos_de = ({de_i_r,de_i[] } == 'b01 );
  30. always @( posedge clk_o )
  31. begin
  32. cnt <= pos_de ? : ~cnt;
  33.  
  34. end
  35. /*********************************************************
  36. 由于de上升沿延时一个时钟周期,所以对数据也延时一个时钟周期
  37. **********************************************************/
  38. always @( posedge clk_o )
  39. begin
  40. din_r <= vin;
  41. h_sync_i_r <= h_sync_i;
  42. v_sync_i_r <= v_sync_i;
  43. end
  44. /*********************************************************
  45. 2转1
  46. **********************************************************/
  47.  
  48. always @( posedge clk_o )
  49. begin
  50. vout_r <= cnt ? din_r[:] : din_r[:];
  51. h_sync_r <= cnt ? h_sync_i_r[]: h_sync_i_r[];
  52. v_sync_r <= cnt ? v_sync_i_r[] : v_sync_i_r[];
  53. end
  54.  
  55. assign h_sync_o = h_sync_r;
  56. assign v_sync_o = v_sync_r;
  57. assign vout = vout_r;
  58.  
  59. endmodule

2、在像素中插入同步码

  1. module seperate_2_embeded(
  2. input clk,
  3. input h_sync,//低电平有效
  4. input v_sync,//低电平为有效区间
  5. input f_sync,
  6. input [:] h_black_len,
  7. input [:] vin,
  8. output [:] vout
  9.  
  10. );
  11.  
  12. reg [:] h_r = ;
  13. reg [:] v_r = ;
  14. reg [:] vin_r1 = ;
  15. reg [:] vin_r2 = ;
  16. reg [:] vout_r = ;
  17. (*keep*)reg [:] cnt = ;
  18. wire [:] xyz ;
  19. wire black_len_m4;
  20. reg black_len_m4_dly = 'b0;
  21. /************************************************************************
  22. 把行消隐区间的长度去掉4个
  23. ************************************************************************/
  24. always @( posedge clk )
  25. begin
  26. h_r <= {h_r[:],h_sync};
  27. v_r <= {v_r[:],v_sync};
  28. end
  29. assign black_len_m4 = h_r[] & h_sync;
  30. /************************************************************************
  31. 找到上升沿与下降沿,即SAV与EAV的位置
  32. ************************************************************************/
  33. always @( posedge clk )
  34. begin
  35. black_len_m4_dly <= black_len_m4;
  36. end
  37.  
  38. assign pos_black_len_m4 = {black_len_m4_dly,black_len_m4} == 'b01;
  39. assign neg_black_len_m4 = {black_len_m4_dly,black_len_m4} == 'b10;
  40. /************************************************************************
  41. 在SAV 和EAV位置计数
  42. ************************************************************************/
  43. always @( posedge clk )
  44. begin
  45. if( pos_black_len_m4 | neg_black_len_m4 )
  46. cnt <= ;
  47. else if( cnt == )
  48. cnt <= cnt;
  49. else
  50. cnt <= cnt + 'b1;
  51. end
  52.  
  53. always @( posedge clk )
  54. begin
  55. case( cnt )
  56. 'h0 :
  57. vout_r <= 'hffff;
  58. 'h1 :
  59. vout_r <= 'h0000;
  60. 'h2 :
  61. vout_r <= 'h0000;
  62. 'h3 :
  63. vout_r <= {{xyz[:]}};
  64. default:vout_r <= data[];
  65. endcase
  66.  
  67. end
  68.  
  69. reg[:] data[:];
  70. reg [:] i;
  71. generate
  72. // genvar i;
  73. always @( posedge clk )
  74. begin
  75. for(i = ;i <= ;i= i + )
  76. data[i+] <= data[i];
  77. end
  78.  
  79. endgenerate
  80.  
  81. always @( posedge clk )
  82. begin
  83. data[] <= vin;
  84. end
  85.  
  86. assign xyz = calc_xyz({'b0,v_r[0],h_r[0]});
  87. assign vout = vout_r;
  88. function [:] calc_xyz;
  89. input [:] FVH;
  90. case (FVH)
  91. 'b000 : calc_xyz = 10'h200;
  92. 'b001 : calc_xyz = 10'h274;
  93. 'b010 : calc_xyz = 10'h2ac;
  94. 'b011 : calc_xyz = 10'h2d8;
  95. 'b100 : calc_xyz = 10'h31c;
  96. 'b101 : calc_xyz = 10'h368;
  97. 'b110 : calc_xyz = 10'h3b0;
  98. 'b111 : calc_xyz = 10'h3c4;
  99. endcase
  100. endfunction
  101.  
  102. endmodule

实现两个sym转一个sym的更多相关文章

  1. zeromq中两个dealer 通过一个router进行通信

    发现有童鞋不是很清楚ZMQ中的“请求-回复”模式中的ROUTER怎么用,所以简单介绍一下“请求-回复”模式的使用(最后付代码). 一.讲一讲 1.要使用zmq 通过一个router进行通信,你首先需要 ...

  2. C# 图片的裁剪,两个图片合成一个图片

    图片的裁剪,两个图片合成一个图片(这是从网上摘的) /// <summary>         /// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png  新图1_ne ...

  3. c# 写着玩的,两个Task并发,一个写队列一个读队列的异常情况

    class Program { class TestEnqueue { static Queue<string> str = new Queue<string>(); publ ...

  4. 两个dropDownList和一个GridView的选择与显示

    很久没有写ASP.NET了,今天有看到论坛上一个问题:"两个dropDownList和一个GridView,已经进行了数据绑定,现在想让第一个下拉菜单的数据改变时,第二个下拉菜单自动变到相应 ...

  5. java cache过期策略两种实现,一个基于list轮询一个基于timer定时

    最近项目要引入缓存机制,但是不想引入分布式的缓存框架,所以自己就写了一个轻量级的缓存实现,有两个版本,一个是通过timer实现其超时过期处理,另外一个是通过list轮询.       首先要了解下ja ...

  6. 客户端一个http连接包含两个方向,一个是这个http连接的输入,另一个是这个http连接的输出。

    1.客户端一个http连接包含两个方向,一个是这个http连接的输入,另一个是这个http连接的输出. 利用httpclient进行ip地址和端口号连接后,http的输出端作为http请求参数设置.h ...

  7. 《剑指Offer》附加题_用两个队列实现一个栈_C++版

    在<剑指Offer>中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即"用两个队列实现一个栈". 在计算机数据结构中,栈的特点是后进先出,即最后被压入(push ...

  8. 已知有两个水杯,一个11L一个7L,水可以任意使用,求怎么得到2L 的详细解法

    问题:有两个水杯,一个是11L一个是7L,水可以随便用,怎么得到2L 1.了解问题的本质 问题中给出了两个杯子,只有这两个杯子有量度,所以只能让杯中的水满进满出才能确定杯子中最后有多少水. 现在问题要 ...

  9. Python两个栈实现一个队列

    牛客网原题: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.   实现这个算法的方式有很多种,这里就写一种比较简单易懂的:虽然可能算法和效率上不太出色,当大多数人 ...

随机推荐

  1. YII2中添加自定义模块

    有些时候系统功能过于复杂,这时我们需要通过模块把一些功能区分开来,便于管理与维护. 我用的是Yii2的基本应用程序模板,程序其实已经给我们提供了一个模块,就是app本身.YII2中是可以无限嵌套模块的 ...

  2. Freemarker全部文档和具体实例

    自己查找到了一些相关的资料分享给大家,有兴趣的可以去看看! Freemarker全部文档:http://www.open-open.com/doc/list/101?o=p

  3. Jmeter常用脚本开发之Debug Sampler

    Debug Sampler编辑脚本时调试用的,跟Java项目打断点测试同理,它可以Debug Jmeter中所有自定义变量的值 如何添加Debug Sampler? 打开测试计划—>线程组—&g ...

  4. win10 x64中 windbg x64 安装配置符号库

    根据系统安装好x64版本,我的系统是win10 x64 ; windbg下载地址 https://developer.microsoft.com/zh-cn/windows/hardware/down ...

  5. Activity(活动)

  6. spring boot (三): 热部署

    介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded和使用spring-boot-devtools进行热部署. 热部署是什么 大家都知道在项目开发过程中, ...

  7. UVA 11324.The Largest Clique tarjan缩点+拓扑dp

    题目链接:https://vjudge.net/problem/UVA-11324 题意:求一个有向图中结点数最大的结点集,使得该结点集中任意两个结点u和v满足:要目u可以到达v,要么v可以到达u(相 ...

  8. 需求文件requirements.txt的创建及使用

    pip freeze >requirements.txt pip install -r requirements.txt

  9. SSH无法连上CentOS7的问题

    今天安装完带GNOME的CentOS后发现XShell无法连接上Linux. 原因是sshd服务没有开启.下面是解决办法: 1 ip addr 发现网卡名称为ens33 2 在/etc/sysconf ...

  10. Sliding Window Maximum LT239

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...