1080P60视频源---verilog
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的更多相关文章
- C站投稿189网盘视频源(UP主篇)
C站投稿189网盘视频源(UP主篇) 现在C站(吐槽弹幕网)的视频来源基本靠的都是189网盘,比如番剧区的每个视频基本来源于此,不像AB两站,拥有自己的资源服务器,为啥呢?没钱啊.都是外来的视频.本站 ...
- 视频处理控件TVideoGrabber中如何混合多个视频源(2)
在前面的<视频处理控件TVideoGrabber混合多个视频源(1)>一文中,已经对TVideoGrabber中混合视频源做了一些内容的说明,本文将继续前文: >>>TV ...
- 视频处理控件TVideoGrabber中如何混合多个视频源(1)
其实一个或是几个作为普通的视频源使用的TVideoGrabber组件,可以进行混合来作为一个TVideoGrabber组件使用,这些普通的组件可以是视频捕捉设备或是视频剪辑等.同时这个混合的组件独立于 ...
- PC电脑运行Android模拟器总是弹出“视频源”窗体的原因和解决方案
原因: PC电脑运行Android模拟器时弹出“视频源”窗体,会让你"选择视频设备",如:HP TruevIsion HD,而这个视频设备就是你电脑中的内置摄像头,这个内置摄像头在 ...
- Python开发技术详解(视频+源码+文档)
Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...
- 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...
- 安卓TV开发(七) 移动智能终端多媒体之在线解析网页视频源
载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 结束了所有UI绘制的学习,智能设备常用的应用音视频类, ...
- 使用pjsip传输已经编码的视频,源码在github
pjsip功能很强,做sip rtp语音通话库首选.在2.0之后,也支持视频.不过,它的视频功能缺省是从视频设备采集,然后进行编译,再发送出去的.假设,我们已经有了视频源,比如IP摄像机,不需要采集和 ...
- EasyPlayer RTSP Android安卓播放器实现视频源快速切换
EasyPlayer现在支持多视频源快速切换了,我们介绍一下是如何实现的. 这个需求通常应用在一个客户端需要查看多个视频源的情况,比如多个监控场景轮播. 由于EasyPlayer的播放端已经放在Fra ...
随机推荐
- 修改VScode行号区的背景颜色
vs code是相当不错的一个编辑器,现阶段我用来编写nim程序. vs code非常丧心病狂一点就是行号区和编辑区的背景颜色都是一样, 这样会导致要看行首有没有对齐会非常吃力.这个问题让我纠结了非常 ...
- MyBatis通过Mapper动态代理来实现curd操作
MyBatis官方推荐使用mapper代理方法开发mapper接口,程序员不需要编写mapper实现类,使用mapper代理方法时,输入参数可以使用pojo包装对象或者map对象,保证dao的通用性 ...
- Java学习——方法
在这一次的学习中我觉得首先要了解: 什么是方法呢 方法又怎么定义与调用 上面这段代码是我们经常写到的,其实它就是一个方法,其中 public 是修饰符 void是返回值类型 main就是方法名 arg ...
- OpenStack源码分析 Neutron源码分析(一)-----------Restful API篇
原文:https://blog.csdn.net/happyanger6/article/details/54586463 首先,先分析WSGI应用的实现. 由前面的文章http://blog.csd ...
- python爬虫套件在mac上的安装-bs的安装
1,首先安装pip gem install pip 这种方式会报错: ERROR: While executing gem ... (Gem::FilePermissionError) You do ...
- 解决npm ERR! Please try running this command again as root/Administrator. 问题
win10下,使用npm 安装插件时报npm ERR! Please try running this command again as root/Administrator的错误, 解决方案:需要删 ...
- 【Spring】文件上传
一:引入所需jar包 // https://mvnrepository.com/artifact/commons-fileupload/commons-fileuploadcompile group: ...
- 【证明】【一题多解】布尔不等式(union bound)的证明
布尔不等式(Boole's inequality)也叫(union bound),即并集的上界,描述的是至少一个事件发生的概率(P(⋃iAi)" role="presentatio ...
- windows7 安装pytorch
这几天为了运行python的图像转换的项目,不得不安装pytorch,安装了两天,最后把经验记录一下. 如果版本不匹配会抛出很多错误,而网上的各种解决方式有大部分也解决不了问题. 在安装pytorch ...
- mysql数据库查询和聚合函数
1.模糊查询 like % 表示多个任意字符 _ 表示任意一个字符 例如:查询黄姓同学 select * from student where name '黄%' select * from stud ...