用Verilog实现视频信号的检测(采用外部低频时钟)

本文介绍了作者使用Verilog在没有外部时钟信号的情况下,通过CPLD检测VGA视频信号并输出高低电平的过程。设计中利用了视频信号的行场脉冲,结合MCU提供的复位信号,解决了无时钟源的问题。
摘要由CSDN通过智能技术生成

小弟初学Verilog,确实不太习惯,此文只是作为处级入门总结,高手请不要见笑。同时此文仅作为自己小小的经验总结,设计思路及程序仅供参考。

    这几天遇到一个令自己比较头痛的问题,一个设计要求使用cpld来检测视频信号的有无,并通过输出高低电平来传递给mcu处理。最值得考虑的就是该cpld在工作时没有外部提供时钟信号,也许是为了节约成本吧。刚开始觉得应该没啥问题的,VGA视频信号是有行场脉冲信号的,用这个来触发不就是了。但在实际中却发现这样行不通啊,万一在输出高电平之后就没有脉冲了,怎么办,那不是一直为高吗。考虑了很久,也问了几个朋友,都没得到解决。也许是时间太短了吧,大家还没仔细考虑。其实现在想想这确实是个最基础最基础的问题了。期间有想过要是加了外部时钟的话,给个高频的晶振,如50M,不断采样检测也是可以实现的,但现在硬件不允许啊,还是想想其他办法。在一个朋友的提醒下(他学的比我久,层次是不一样啊),说可以再给个外部复位信号,因为之前我想的是就用行场信号来复位,后来才发现这更是个低级错误,不能在两个触发进程中操作同一个寄存器变量的(这也许是受mcu编程思维的影响太深吧)。咋一听,果然有点眉目了,于是理清思路重新设计了程序,这次是用mcu来给cpld提供复位信号,cpld使用下降沿复位,并且在上升沿判断是否有视频信号,哈哈,编译通过,下载到板子完全OK!!!在此小小庆祝一下,同时也是对自己的警醒,学东西一定要多思考啊,这么简单的问题就被难到了,唉。


module VGA_Detect(Clk,Vin0,Vin1,Vin2,Vin3,Hin0,Hin1,Hin2,Hin3,Vout,Hout,Sel,En,Detect_Out); 


input Clk;
input En;
input Vin0;
input Vin1;
input Vin2;
input Vin3;
input Hin0;
input Hin1;
input Hin2;
input Hin3;
input[2:0] Sel;


output Vout;
output Hout;
output Detect_Out;


reg Vout;
reg Hout;
reg[3:0] Detect_Out;


reg Hin0_reg;
reg Hin1_reg;
reg Hin2_reg;
reg Hin3_reg;


reg Detect_Flag0;
reg Detect_Flag1;
reg Detect_Flag2;
reg Detect_Flag3;


always@(Hin0 or Hin1 or Hin2 or Hin3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值