1080P60视频源---verilog

 `timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer: chensimin
//
// Create Date: 2019/03/15 10:09:21
// Design Name:
// Module Name: video_source
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module video_source ( input wire clk,
input wire rest,
output reg [:] video_y = 'h3FF,
output reg [:] video_c = 'h3FF,
output wire data_enable,
output reg sync_h = ,
output reg sync_v = ); //--------------------------------------------------------------------------------------------------------------- reg [:] h_count = ; always @(posedge clk or posedge rest)
begin
if(rest)
h_count <= 'd2199;
else if(h_count == 'd2199)
h_count <= 'd0;
else
h_count <= h_count + 'd1;
end //--------------------------------------------------------------------------------------------------------------- reg h_end = ; always @(posedge clk or posedge rest)
begin
if(rest)
h_end <= 'b0;
else if(h_count == 'd2198)
h_end <= 'b1;
else
h_end <= 'b0;
end //--------------------------------------------------------------------------------------------------------------- reg [:] v_count = ; always @(posedge clk or posedge rest)
begin
if(rest)
v_count <= 'd1;
else if(v_count == 'd1125 & h_count == 12'd2199)
v_count <= 'd1;
else if(h_end)
v_count <= v_count + 'd1;
end //--------------------------------------------------------------------------------------------------------------- wire b0, b1, b2, b3, b4, b5, b6, b7;
wire [:] condition_b; assign b0 = v_count >= 'd1 & v_count < 12'd41 ;
assign b1 = v_count == 'd41 & h_count <= 12'd2198 ;
assign b2 = v_count >= 'd42 & v_count < 12'd1121 ;
assign b3 = v_count == 'd1121 & h_count <= 12'd2198 ;
assign b4 = v_count == 'd1121 & h_count == 12'd2199 ;
assign b5 = v_count >= 'd1122 & v_count < 12'd1125 ;
assign b6 = v_count == 'd1125 & h_count <= 12'd2198 ;
assign b7 = v_count == 'd1125 & h_count == 12'd2199 ; assign condition_b = {b0, b1, b2, b3, b4, b5, b6, b7}; //--------------------------------------------------------------------------------------------------------------- reg v = ; always @(posedge clk or posedge rest)
begin
if(rest)
v <= 'b0;
else
begin
case(condition_b)
'b1000_0000:
v <= 'b1;
'b0100_0000:
v <= 'b1;
'b0010_0000:
v <= 'b0;
'b0001_0000:
v <= 'b0;
'b0000_1000:
v <= 'b1;
'b0000_0100:
v <= 'b1;
'b0000_0010:
v <= 'b1;
'b0000_0001:
v <= 'b1;
default:
v <= 'b0;
endcase
end
end //--------------------------------------------------------------------------------------------------------------- wire [:] condition_a ; assign a0 = h_count == 'd2199 ; // 3FF
assign a1 = h_count == 'd0 ; // 000
assign a2 = h_count == 'd1 ; // 000
assign a3 = h_count == 'd2 ; // EAV
assign a4 = h_count >= 'd3 & h_count <= 274 ; // Blank
assign a5 = h_count == 'd275 ; // 3FF
assign a6 = h_count == 'd276 ; // 000
assign a7 = h_count == 'd277 ; // 000
assign a8 = h_count == 'd278 ; // SAV
assign a9 = h_count >= 'd279 & h_count <= 2198 ; // Active assign condition_a = {a0, a1, a2, a3, a4, a5, a6, a7, a8, a9}; //--------------------------------------------------------------------------------------------------------------- reg eav = ;
reg sav = ; always @(posedge clk or posedge rest)
begin
if(rest)
begin
video_y <= 'h3FF;
eav <= 'b0;
sav <= 'b0;
end
else
begin eav <= 'b0;
sav <= 'b0; case(condition_a)
'b100_0000_000:
video_y <= 'h3FF;
'b010_0000_000:
video_y <= 'h000;
'b001_0000_000:
video_y <= 'h000;
'b000_1000_000:
begin
eav <= 'b1;
if( v_count >= & v_count <= )
video_y <= {'b1, 1'b0, 'b0, 1'b1, 'b0^1'b1, 'b0^1'b1, 'b0^1'b0, 'b0^1'b0^'b1, 1'b0, 'b0};
else
video_y <= {'b1, 1'b0, 'b1, 1'b1, 'b1^1'b1, 'b0^1'b1, 'b0^1'b1, 'b0^1'b1^'b1, 1'b0, 'b0};
end
'b000_0100_000:
video_y <= 'h040;
'b000_0010_000:
video_y <= 'h3FF;
'b000_0001_000:
video_y <= 'h000;
'b000_0000_100:
video_y <= 'h000;
'b000_0000_010:
begin
sav <= 'b1;
if( v_count >= & v_count <= )
video_y <= {'b1, 1'b0, 'b0, 1'b0, 'b0^1'b0, 'b0^1'b0, 'b0^1'b0, 'b0^1'b0^'b0, 1'b0, 'b0};
else
video_y <= {'b1, 1'b0, 'b1, 1'b0, 'b1^1'b0, 'b0^1'b0, 'b0^1'b1, 'b0^1'b1^'b0, 1'b0, 'b0};
end
'b000_0000_001:
video_y <= 'h0CD;
default:
video_y <= 'h040;
endcase
end
end //--------------------------------------------------------------------------------------------------------------- always @(posedge clk or posedge rest)
begin
if(rest)
video_c <= 'h3FF;
else
begin case(condition_a)
'b100_0000_000:
video_c <= 'h3FF;
'b010_0000_000:
video_c <= 'h000;
'b001_0000_000:
video_c <= 'h000;
'b000_1000_000:
begin
if( v_count >= & v_count <= )
video_c <= {'b1, 1'b0, 'b0, 1'b1, 'b0^1'b1, 'b0^1'b1, 'b0^1'b0, 'b0^1'b0^'b1, 1'b0, 'b0};
else
video_c <= {'b1, 1'b0, 'b1, 1'b1, 'b1^1'b1, 'b0^1'b1, 'b0^1'b1, 'b0^1'b1^'b1, 1'b0, 'b0};
end
'b000_0100_000:
video_c <= 'h040;
'b000_0010_000:
video_c <= 'h3FF;
'b000_0001_000:
video_c <= 'h000;
'b000_0000_100:
video_c <= 'h000;
'b000_0000_010:
begin
if( v_count >= & v_count <= )
video_c <= {'b1, 1'b0, 'b0, 1'b0, 'b0^1'b0, 'b0^1'b0, 'b0^1'b0, 'b0^1'b0^'b0, 1'b0, 'b0};
else
video_c <= {'b1, 1'b0, 'b1, 1'b0, 'b1^1'b0, 'b0^1'b0, 'b0^1'b1, 'b0^1'b1^'b0, 1'b0, 'b0};
end
'b000_0000_001:
video_c <= 'h0CD;
default:
video_c <= 'h040;
endcase
end
end //--------------------------------------------------------------------------------------------------------------- reg h = ; always @(posedge clk or posedge rest)
begin
if(rest)
h <= 'b0;
else if(h_count == | ( h_count >= & h_count <= ))
h <= 'b0;
else
h <= 'b1;
end //--------------------------------------------------------------------------------------------------------------- assign data_enable = h & ~v; //--------------------------------------------------------------------------------------------------------------- always @(posedge clk or posedge rest)
begin
if(rest)
sync_h <= 'b0;
else if(h_count >= & h_count <= )
sync_h <= 'b1;
else
sync_h <= 'b0;
end //--------------------------------------------------------------------------------------------------------------- always @(posedge clk or posedge rest)
begin
if(rest)
sync_v <= 'b0;
else if(v_count >= & v_count < )
sync_v <= 'b1;
else if(v_count == & h_count <=)
sync_v <= 'b1;
else
sync_v <= 'b0;
end //--------------------------------------------------------------------------------------------------------------- endmodule /* add_force {/video_source/clk} -radix hex {1 0ns} {0 50000ps} -repeat_every 100000ps
add_force {/video_source/rest} -radix hex {1 0ns} {0 200ns} */

仿真结果:

1080P60视频源---verilog的更多相关文章

  1. C站投稿189网盘视频源(UP主篇)

    C站投稿189网盘视频源(UP主篇) 现在C站(吐槽弹幕网)的视频来源基本靠的都是189网盘,比如番剧区的每个视频基本来源于此,不像AB两站,拥有自己的资源服务器,为啥呢?没钱啊.都是外来的视频.本站 ...

  2. 视频处理控件TVideoGrabber中如何混合多个视频源(2)

    在前面的<视频处理控件TVideoGrabber混合多个视频源(1)>一文中,已经对TVideoGrabber中混合视频源做了一些内容的说明,本文将继续前文: >>>TV ...

  3. 视频处理控件TVideoGrabber中如何混合多个视频源(1)

    其实一个或是几个作为普通的视频源使用的TVideoGrabber组件,可以进行混合来作为一个TVideoGrabber组件使用,这些普通的组件可以是视频捕捉设备或是视频剪辑等.同时这个混合的组件独立于 ...

  4. PC电脑运行Android模拟器总是弹出“视频源”窗体的原因和解决方案

    原因: PC电脑运行Android模拟器时弹出“视频源”窗体,会让你"选择视频设备",如:HP TruevIsion HD,而这个视频设备就是你电脑中的内置摄像头,这个内置摄像头在 ...

  5. Python开发技术详解(视频+源码+文档)

    Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...

  6. 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...

  7. 安卓TV开发(七) 移动智能终端多媒体之在线解析网页视频源

    载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 结束了所有UI绘制的学习,智能设备常用的应用音视频类, ...

  8. 使用pjsip传输已经编码的视频,源码在github

    pjsip功能很强,做sip rtp语音通话库首选.在2.0之后,也支持视频.不过,它的视频功能缺省是从视频设备采集,然后进行编译,再发送出去的.假设,我们已经有了视频源,比如IP摄像机,不需要采集和 ...

  9. EasyPlayer RTSP Android安卓播放器实现视频源快速切换

    EasyPlayer现在支持多视频源快速切换了,我们介绍一下是如何实现的. 这个需求通常应用在一个客户端需要查看多个视频源的情况,比如多个监控场景轮播. 由于EasyPlayer的播放端已经放在Fra ...

随机推荐

  1. flask 登录验证码 字母和数字

    captcha.py #!/usr/bin/env python# -*- coding: utf-8 -*- # refer to `https://bitbucket.org/akorn/whee ...

  2. Python第三章(北理国家精品课 嵩天等)

    一.数字类型及其操作 整数:pow(x,y),想算多大,就算多大:以0b或0B开头表示二进制:以0o或0O开头表示八进制:以0x或0X开头表示十六进制. 浮点数:取值范围-10^308至10^308, ...

  3. centos搭建ftp服务器的方法

    FTP操作 一.查看是否安装vsftpd rpm –qa|grep vsftpd 二.下载vsftpd yum install -y vsftpd 三.查看是否开启服务 service vsftpd ...

  4. C 设计模式:装饰模式

    最近在公司分享了下C语言版的设计模式,记录一下吧. 参考:<设计模式之禅>中“装饰模式”章节. 上面书中是用C++来实现的,我使用了书中的例子,改用C语言来实现. 一.基础知识 面向对象最 ...

  5. PHP 出现中文乱码的问题

    在代码中添加 <?php //设置页面显示的文字编码 头部就写header函数处理成utf-8 header("Content-Type:text/html;charset=utf-8 ...

  6. div不固定高度垂直居中

    父容器的css属性 display:table;overflow:hidden;子容器的css属性 vertical-align:middle;display:table-cell; <!DOC ...

  7. 2019-04-22-day037-数据库的安装

    内容回顾 进程 线程 协程之间的相同点和不同点 进程 : 内存隔离 操作系统级别 开销大 可以利用多核 计算机中资源分配的最小单位 线程 : 内存共享 操作系统级别 开销中 Cpython解释器下不能 ...

  8. CSS3 正方体

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. KMP算法详细分解

    1. 引言 给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题. Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的 ...

  10. 在Raspbian Stretch系统上设置Home Assistant开机启动

    较新的Linux发行版趋向于用systemd管理守护进程,如果您不确定系统是否正在使用systemd,您可以使用以下命令进行检查: -o comm= 如果上述命令返回字符串systemd,说明系统正在 ...