资源描述:
《基于vhdl的同步信号产生探讨》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、4月14日基于VHDL的同步信号产生探讨本文介绍了通过VHDL语言,利用Max-plusII软件设计一个图象同步信号处理电路,产生视频图形信号中的复合同步信号波形,并且从复合同步信号中分拣出行同步、场同步、行消隐、场消隐和奇偶场标志信号。关键词:VHDL视频图像复合同步信号Max-plusII作为一个仿真软件现在已经基本不用了,淘汰了。现在的主流是使用QuartusII0VHDL语言是一种硬件描述语言,而且这种语言极为复杂和正式,很多人会选择使用veriloghdl语言,它相对于VHDL较为接近C语言的风格,
2、所以很容易被接受。但是,只有能学会VHDL,veriloghdl就很容易上手。内容一本实验要求产生的视频图象复合同步信号rtl奇偶2场(1帧)重复组成,每场312.5行,rtl均衡脉冲、槽脉冲、行同步信号组成。设计的屮心思想是以计数器分别设计出均衡脉冲信号J、开槽脉冲信号K、行同步信号H,然后再合成所需要的复合同步信号。实验中,输入为频率为10M的的时钟脉冲CLK,根据设计需要,定义J、K、H、ss为输入输出信号,并在构造体中设定计数器屮的中I'可变量cl、c2、ent,s为输出信号。均衡脉冲信号的周期为32
3、us,脉宽为2.4uSo所以定义c2为320的计数器。以elk为时钟信号,只要c2小于320,每来一个elk的上升沿时c2=c2+l,当c2=320时置c2=lo然后以c2(半行)作为计数周期,在1Wc2W24时置J为0,否则置J为1。此时均衡信号设计完成。以同样的方法设计出行同步信号和开槽脉冲信号。然后需要将这三组信号复合成需要的信号。具体的做法是以半行为计数周期,设计一个1250的计数器ent。再以ent为计数周期,由于奇数场的两个均衡和槽脉冲共占7.5行,为了保证波形的正确性,奇数场的前均衡脉冲从cn匸
4、2开始。到这时,复合同步信号的设计已基本完成。然而波形中存在毛刺。因此在定义H、J、K信号吋需要对准elk吋钟。当clk±升沿到来吋,信号才发生变化。最后当clk±升沿来临时,将输入输出信号ss赋予s信号,s信号就是最终的复合同步信号。具体程序如下:libraryieee;useieee.std」ogic_l164.all;entityssisport(clk:instdjogic;hj,k,ss:inoutstd」ogic;s:outstd_logic);endss;architectureaofssiss
5、ignalcl:integerrange1to640;signalc2:integerrange1to320;signalent:integerrange1to1250;beginprocess(clk)beginifclkreventandelk-Tthenifc1=640thencl<=l;elsecl<=cl+l;endif;endif;endprocess;process(cl,clk)beginifclVeventandelk-Tthenifcl>=landcl<=48thenh<=*0';else
6、h<=,r;endif;endif;endprocess;process(clk)beginifclkreventandelk二Tthenifc2=320thenc2<=l;elsec2<=c2+l;endif;endif;endprocess;process(c2,clk)beginifelkeventandelk-1thenifc2>=landc2<=24thenj<=,0,;elsej<=T;endif;endif;endprocess;process(c2,clk)beginifclkfeventan
7、dclk=Tthenifc2>=landc2<=272thenk<=,0,;elsekv二T;endif;endif;endprocess;process(j)beginifj'eventandj='O'thenifcnt=1250thencnt<=l;elsecnt<=cnt+l;endif;endprocess;process(cnt)beginifcnt>=2andcnt<=6thenss<=j;elsifcnt>=7andcnt<=llthenss<=k;elsifcnt>=12andcnt<=16t
8、henss<=j;elsifcnt>=17andcnt<=626thenss<=h;els讦cnt>=627andcntv=631thenss<=j;elsifcnt>=632andcnt<=636thenss<=k;elsifcnt>=637andcnt<=641thenss<=j;elsess<=h;endif;endprocess;process(clk)beginifclk'eventand