本帖最后由 66077003 于 2015-8-8 21:48 编辑
下面是友晶官方提供的PAL与NTSC信号格式的检测代码:
module TD_Detect(
iTD_VS,
iTD_HS,
iRST_N,
oTD_Stable,
oNTSC,
oPAL
);
input iTD_VS;//垂直同步信号
input iTD_HS;//水平同步信号
input iRST_N;
output oTD_Stable;//判断信号是否稳定
output oNTSC;//NTSC视频格式标志位
output oPAL;//PAL视频格式标志位
reg NTSC;
reg PAL;
reg Pre_VS;//通过判断垂直同步信号来判断视频格式
reg [7:0] Stable_Cont;
assign oTD_Stable = NTSC || PAL;
assign oNTSC = NTSC;
assign oPAL = PAL;
always@(posedge iTD_HS or negedge iRST_N)//检测水平同步信号上升沿
begin
if(!iRST_N)
begin
Pre_VS <= 1'b0;
Stable_Cont <= 4'h0;
NTSC <= 1'b0;
PAL <= 1'b0;
end
else
begin
Pre_VS <= iTD_VS;
if(!iTD_VS)//低电平有效
Stable_Cont <= Stable_Cont+1'b1;
else
Stable_Cont <= 0;
if({Pre_VS,iTD_VS}==2'b01)//检测垂直同步信号上升沿
begin
if((Stable_Cont>=4 && Stable_Cont<=14))//4-14???
NTSC <= 1'b1;
else
NTSC <= 1'b0;
if((Stable_Cont>=8'h14 && Stable_Cont<=8'h1f))//20-31
PAL <= 1'b1;
else
PAL <= 1'b0;
end
end
end
endmodule
请大神结合水平信号同步与垂直信号同步给讲解一下上面代码标红部分的意思。
8'h1 8'h1f 是怎么得来的?
还有
if(!iTD_VS)//低电平有效
Stable_Cont <= Stable_Cont+1'b1;
else
Stable_Cont <= 0;
这部分不是当 来一个垂直同步信号(低电平有效) 开始计数,由于其always中的敏感信号是iTD_HS,所以我的理解就是 Stable_Cont只能是0或者1,Stable_Cont不能继续执行计数。
请大神指点。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>