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 ...
随机推荐
- GBDT的数学原理
一.GBDT的原理 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树 ...
- elasticsearch(2) 数据操作——查询
一 文档 ES面向文档,并且使用JSON作为文档序列化格式,对于ES来说,文档特指根对象序列化成的JSON数据,以唯一ID标识并存储于ES中. 文档元数据 三个必须的元数据节点 1._index ...
- 2018-2019-1 20165318 20165326 实验五 通讯协议设计.md
目录 实验内容 问题及解决 参考资料 实验内容 任务一 在Ubuntu中完成作业 openSSL OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/L ...
- vim/network/ssh语法
一.编辑器——vim vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界面,vi是效率很高的文本编辑器.尽管在Linux上也有很多图形界面的编辑器可用,但vi在系 ...
- 命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用
在学习廖老师的Python教程的时候,遇到命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用的情况, 这种情况可能是由于在本地安装了多个Python版本的缘故(只是可能的情况之一 ...
- 关于shell命令的一些用法和技巧
#!/bin/bash #第一种写法 #date=`date "+%Y-%m-%d %H:%M:%S"` #第二种写法 date=$(date "+%Y-%m-%d %H ...
- 周强、张季跃,马凯军《面向对象与程序设计Java》第十四周学习总结
实验十四 Swing图形界面组件 实验时间 20178-11-29 理论部分:不使用布局管理器 有时候可能不想使用任何布局管理器,而只 是想把组件放在一个固定的位置上.下面是将一 个组件定位到某个绝 ...
- JQuery图片自适应窗口轮播图(淡入淡出效果)
<script>var w = $(window).width();//获取窗口宽度var h = $(window).height();//获取窗口高度 $(".box&quo ...
- Linq语句的认识
LINQ语句的使用小结: 1.将数组看做一张表来查询的情况: from d in countyIsCityLevel where d.Equals(AreaCode) select d 2.只查询 ...
- ODI Scenario 场景
ODI中,场景的作用类似发布版本,当映射最终修改版完成时,可以生成场景.无论是映射(Mapping)还是包(Package)都可以生成场景. 包调用映射和调用场景的区别: 1,包直接调用映射,当映射修 ...