3.2 扫描时序的产生
视频图像应用广泛而且技术非常成熟,X射线成像、超声成像、γ射线成像等,成像的形式大多采用图像的形式。因此,在诸多的成像技术中,都涉及扫描时序的问题。
3.2.1 扫描时序规范
电视扫描方式的确定是和人的视觉特性密切相关的。当光脉冲进入人的视觉器官时,其感觉并非瞬时发生,而是有一些时间上的延迟。光脉冲停止以后,光的感觉还会暂留一个短的时间,这种视觉延迟和视觉暂留的现象可以认为是人的神经系统时间响应限制的缘故。在电影技术里,电视拷贝片是由一幅幅不动的画面组成,在播放时为了使人感觉不出画面的不连续,则要求电影放映的速度不少于24幅/s,为了消除画面的不连续性,又要求电影放映的速度不少于48幅/s。在实现上,每秒只放映24幅独立的画面,而每幅画面在放映时用遮光板挡一下,使同一幅画面在屏幕上重复出现两次,从而起到了每秒放映48幅画面的效果。在放电影时,整幅画面是同时出现在屏幕上的,而在电视技术里,无论是电视摄像机把光信号变成电信号,还是监视器把电信号变成光信号,其过程都是逐点逐行按一定扫描方式顺序实现的。在人们观察电视图像时,由于荧光屏的余辉作用以及人眼的视觉延迟和视觉暂留的影响,人们可以看到连续的图像。电视技术里的光到电、电到光的转换过程是按照电子扫描的规律来实现的。
在光导管摄像机里,要拍摄的图像成像在光电靶上,利用电子束依次轰击靶上各点,根据被轰击点的明暗程度,转变成强弱不同的视频信号。电子束的这种作用称为扫描。这种扫描是自左向右均匀地扫过光电靶,再自左向右达到右端后迅速地从右端折回到左端,再开始下一行的扫描。这种沿着水平方向的扫描称为行扫描,或者称为水平扫描。在进行水平扫描的同时,也缓慢地进行着从上到下的扫描,当从上到下扫描完一场后又迅速地从下到上返回,再开始下一场的扫描,这种沿着垂直方向的扫描称为场扫描,或者称为垂直扫描。在显像管中的扫描也是这样从左到右、从上到下地进行。
扫描方式有逐行扫描和隔行扫描之分。在逐行扫描里,扫描行是逐行进行的,图3.2.1给出了逐行扫描的示意图。
图3.2.1 逐行扫描示意图
图3.2.1中从a点到b点是行的正程,记作Ths;从b点到c点这段时间称为行逆程,记作Thr;整个行周期记作TH,则
在完成了第8个行扫描以后到达d点,从a点到d点的从上往下的扫描过程称为场正程,记作Tvs(图中共8行时间)。到达d点以后,电子束开始自下向上快速地返回到a点,此过程称为场逆程,记作Tvr(图中2行时间),整个场周期记作TV,则
图3.2.2给出了隔行扫描的示意图。
图3.2.2 隔行扫描示意图
在隔行扫描里,扫描分奇偶两场进行,第二场的扫描线均匀地插在第一场相邻扫描线中间,扫描线从a点到b点,这段时间为行正程。当扫描达到b点后,经过行逆程时间,扫描迅速地从b点到达c点,第一场扫描到e点,经场逆程后回到h点,再开始第二场的扫描。第二场扫描到m点,经场逆程后回到a点,从而完成了一帧图像的扫描。奇数场的扫描行为奇数行(1、3、5、7、9行),偶数场的扫描行为偶数行(2、4、6、8行),两场合为一帧。
必须指出,要想使图像的垂直分辨率高,就必须把第二场的扫描线准确地嵌在第一场的扫描线的正中间,否则就要发生并行现象,从而降低了图像的垂直分辨率。
要使人眼察觉不出画面的翻滚,场频必须大于12场/s;要使人眼察觉不出画面的闪烁,场频则不低于40场/s,若帧频为50且每帧的扫描行数为600行,那么视频带宽将超过10MHz,这样势必使电视频道过宽,同时电视设备的工艺水平和成本也将大幅度提高。类似电影遮光板的思想,Schroter(1972)发明了一个简单的方法,即采用隔行扫描的方法来解决上述问题。利用这种方法,可在25Hz帧频时获得50Hz的场频。至于每帧图像的扫描线数,历史上曾有405行、525行、625行、919行等,相应的场频也不同,由此形成了一些电视制式。随着时间的推移,经过筛选,目前世界上主要有3种成熟的广播电视制式:
(1)NTSC制,1953年研制成功;
(2)PAL制,1962年研制成功;
(3)CECAM制,1966年研制成功。
电视信号由水平扫描和垂直扫描形成,要重现发送端所传送来的电视图像,就要求接收端也按照发送端的扫描方式再现电视图像,即要求接收端的行、场扫描频率和发送端的一样,行场扫描信号的相位也保持一致,做到同频同相,称为同步。扫描分为水平扫描和垂直扫描,水平方向的扫描同步称为水平同步,也称为行同步;垂直方向的扫描同步称为垂直同步,也称为场同步,两种同步混合一起称为复合同步。前面已经提到,在电视扫描中有行正程、行逆程、场正程、场逆程,早期在行逆程里不传送电视图像,而只播送一个零电平(黑电平,也称为行消隐电平);同理,早期在场消隐期间也不传送电视图像,而是送一个黑电平信号,称为场消隐电平。表3.2.1给出了PAL-D和NTSC-M扫描制式的行同步、场同步、行消隐、场消隐标准信号的参数在NTSC-M列中,括号内的数值是由美国NTSC-M制式使用的数值。
表3.2.1 行场同步、行场消隐标准信号的参数
为了便于理解,我们用图3.2.3来描述隔行扫描中行同步、行消隐和屏幕的对应关系。
图3.2.3 行时序和屏幕的对应关系
其中,AB为屏幕中第N行的行扫描正程时间,CD为第N+2行的行扫描正程时间,BC是第N行的逆程时间,BE之间为前肩时间。同理,也可以用图示来描述场同步、场消隐和屏幕的对应关系。
对于隔行扫描来说,相邻两场的扫描时间必须相等,而且一帧里的扫描行数也必须是奇数。从图3.2.2可以看出,在隔行扫描里,偶数场的第一行必须从上部的正中央开始先扫描半行,才有可能保证正确的隔行扫描而不发生并行现象。为了准确地在电视信号接收端里从复合同步信号中分离出场同步信号,所以在复合同步中增加了开槽脉冲和前后均衡脉冲。
3.2.2 数值波形法
我们在设计时序电路时,所依赖的是时序波形图,而描述一个时序波形的基本参数是时间,常用的术语如周期、脉宽等,都是以时间为单位来具体加以说明的。在数字电路中,我们可以用数值来描述一个波形,由此产生了重要的数值波形法。
数值波形法的三要素是单位时钟、数值波形图和逻辑实现。
定义3.2.1 单位时钟
数值为1的一个时钟周期信号,称为单位时钟。
图3.2.4表示一个周期波形,其周期时间W为20μs,脉宽τ为200ns。
图3.2.4 一个周期波形的描述
我们用数值来描述类似于图3.2.4所示的周期波形时,首先要选取单位时钟的频率。令该波形的最小脉宽为τmin,单位时钟频率的最小值为fmin,则
对于图3.2.4所示一个周期波形,如最小脉宽τmin为200ns,则单位时钟的频率的最小值为5MHz。在实际应用中,所选取单位时钟的频率f0往往高于单位时钟的频率的最小值,其选择需遵循式(3.2.4)。
式中,N为正整数。
在实际设计时,N的选择要考虑系统的时钟数值,如果系统时钟是10MHz,则N=2。如果系统时钟不是fmin的整倍数,在允许的情况下,可以考虑对所设计的时序适当地进行修改,以便直接使用系统时钟而避免为了满足这一时序要求而设置独立的时钟电路。
对于那些有不同脉宽的时序设计,则可以对不同的脉宽求出单独的单位时钟的频率的最小值fmin,最后对不同的fmin求最小公倍数并以最小公倍数作为最终的单位时钟的频率f0。
选定单位时钟的频率后,确定好零点,再根据式(3.2.5)来计算各点的具体数值M。
式中,N为该点和零点之间的距离。
确定了单位时钟的频率和距离N之后,就可以用确定的数值来描述时序波形。如图3.2.4所示的时序,选定单位时钟的频率f0为10MHz,以D1点为0点,根据式(3.2.5)计算出D2=2,D3=200,将这些数值表标在波形图上,就形成了数值波形图。值得一提的是,D1、D2、D3均是十进制的数。
逻辑实现主要采用两种方法:查表方法和逻辑编程方法。查表方法的逻辑电路主要由计数器和存储体组成,逻辑编程方法的逻辑电路主要由计数器和可编程逻辑芯片组成。
查表方法和逻辑编程方法的逻辑电路框图分别如图3.2.5和图3.2.6所示。
图3.2.5 查表式时序电路框图
图3.2.6 逻辑编程式时序电路框图
在图3.2.5中,由于点时钟为10MHz,最大的数值为200,所以计数器为8位,时序表可用半导体存储芯片构成,地址容量不低于256单元,字长不低于2bit,设置1比特位为时序信号C0,设置另1比特位为清零脉冲C1。要预先制作时序表,即在0~3单元内写“3”(二进制数),在199单元写“0”(二进制数),其余单元全写“2”(二进制数)。在查表时,计数器在0~199之间周而复始地计数,时序表的C0位就输出图3.2.4所示的波形。整形器由D触发器组成,目的是去除输出波形的毛刺。
图3.2.6和图3.2.5有许多相似之处,只是用可编程逻辑阵列的芯片代替了图3.2.5中所用的半导体存储芯片。计数器也为8位计数器,其输出端00~07连到可编程逻辑阵列的芯片的输入端I0~I7,可编程逻辑阵列的芯片的输出为时序信号V和清零信号Z。我们采用组合逻辑式时序电路来实现图3.2.4波形,简化电路图如图3.2.7所示。
图3.2.7 组合逻辑式时序的简化电路
其中,IC1是一个8位的同步计数器,IC2是一个逻辑阵列芯片,CK0的频率为10MHz, Z是计数器的清零信号,V是输出波形。
为了便于书写可编程逻辑阵列芯片的逻辑表达式,可以先把输入变量的权重列成如图3.2.8所示的权重对应表。
图3.2.8 逻辑阵列芯片输入变量的权重对应表
根据图3.2.8所示的权重对应表,图3.2.7的IC2输出信号逻辑表达式可写为
V = !O7&!O6&!O5&!O4&!O3&!O2&!O1 !Z = O7&O6&!O5&!O4&O3&!O2&O1&!O0
在设计逻辑表达式时,应注意各码位的连续性问题,如时序信号V,其表达式中07~01的所有项都要写上。如果某一位缺失,则表示该位既可能是“0”,又可能是“1”。其次,要注意各个码位的持续性问题,如01,权重为2,意味着持续2个单位时钟。
系统所要求的时序有周期性的和非周期性的区别。对于周期性的时序,计数器的输入时钟始终都是效的,计数器在清零脉冲的作用下周而复始地计数;而对于非周期的时序,计数器的输入时钟(或其他控制端)是受控的,计数器受触发脉冲的作用而开始计数,再因清零脉冲而计数停止。
3.2.3 扫描时序的设计
扫描时序电路是数字视频系统中最基本的时序电路,我们采用数值波形法来设计扫描时序电路。扫描时序的设计可以归纳为以下4个步骤。
1.确定选用的扫描方式
我们选用PAL-D扫描制式,行频为15625Hz,场频为50Hz,隔行扫描。
2.确定单位时钟
首先,所选用单位时钟的频率必须满足半行频是点时钟频率的整数倍这一要求,只有这样,才能得到准确的行、场时序。如单位时钟的频率为10MHz。
3.确定行、场时序的数值波形
我们确定如下设计条件:行频为15 625Hz,场频为50Hz,点时钟为10MHz。行、场时序的时间关系可以用计数器的数值来描述。图3.2.9给出了简化的行时序数值波形图。图3.2.10给出了简化的场时序数值波形。在图3.2.9中,/HZ是行计数器的清零脉冲,/HS是行同步,/HB是行消隐脉冲。在图3.2.10中,/FZ是场计数器的清零脉冲,/Y0是奇偶场信号,/VS和/VB分别是场同步和场消隐信号。
图3.2.9 简化行时序数值波形图
图3.2.10 场时序数
值得指出的是,图3.2.9中的/HB和图3.2.10中的/VB并不是标准电视中的行场消隐信号,而是在图像处理系统中由图像点阵决定的数据消隐信号,这个信号一般要比电视中行场消隐信号的时间长,在这个设计例子里,行消隐期为:64μs-51.2μs=12.8μs。场消隐期为:20ms-256×0.064ms=1.8ms。之所以做这种设计,是出于整个系统设计的需要。
4.确定逻辑电路及编程
形成行、场时序,主要有两种方式:查找表方式和编程逻辑方式。
1)查找表方式
在图像处理系统中,查找表的种类较多,有扫描时序查找表、输入查找表、彩色指定查找表以及反馈查找表。查找表主要由存储芯片构成,常使用SRAM、EPROM、PROM芯片。查找表采用的方法是:先在存储单元里写入确切的数(用SRAM芯片时可由计算机写入,用EPROM、PROM芯片时需预先由专用编程器对该芯片进行编程,在芯片内写入相应的数据),查表时再从表内读出对应存储单元的数值,以形成扫描时序。扫描时序查找表分为行扫描时序查找表和场扫描时序查找表,其电路框图分别如图3.2.11和图3.2.12所示。
图3.2.11 查表式行时序发生器框图
图3.2.12 查表式场时序发生器框图
根据在第4步中所确定的图3.2.9行时序数值图和图3.2.10场时序数值图,再来设计相应的时序电路。我们知道,10MHz时钟的640分频为行频,行频的625分频为帧频,这种分频关系确定了图3.2.11、图3.2.12中所使用的查找表容量的大小以及各自的计数器位数。在图3.2.11中,其计数器至少应为10位计数器,考虑到10MHz钟频的频率比较高,这里的计数器宜选用同步计数器,且采用同步清零方式,行时序表输出同步清零脉冲,由此形成640分频器。同时,也考虑到10MHz钟频的频率比较高,行时序表应使用高速芯片,可以选用双极型PROM芯片,其存储容量应不低于1KB。PROM芯片的内容称为码表,是预先编制好的,生成码表是一件很细致的工作,例如要形成行同步/HS信号的波形,根据图3.2.9给定的行时序数值图,则在行时序表的某个比特位的0~527单元里写入“1”码,而在528~575单元里写入“0”码,在正常工作时,同步计数器的输出数值由0~639周而复始地顺序变化,行时序表的某个比特位则输出一个标准的行同步信号。类似地,行时序的其他信号也这样编入码表,最终形成所有的行时序波形。行时序表输出的同步清零脉冲是至关重要的,它的作用是使点计数器成为640分频器。主要由于计数器输出波形的沿不一定对得很齐这一原因,行时序表输出的波形不一定很干净,常常有一些毛刺,由此影响系统的正常工作,因此需要一个整形器来整形。整形器可用D触发器来构成,实际设计中,应恰当地选取合适的锁存脉冲。当然,如果以10MHz钟频的分频(或倍频)作为点计数器的输入时钟,则同步计数器的位数和PROM芯片的容量及PROM芯片的码字都应发生相应的变化。应该指出,输入时钟的改变,不仅要考虑这种改变能够形成行频,还应考虑能否形成所要求的波形,如输入时钟选用10MHz,那么就不能形成4.7μs脉宽的标准行同步信号了。
图3.2.12所示的查表式场时序发生器的原理与查表式行时序发生器的原理类似,由于行计数器的输入时钟为行频,频率较低,所以可由异步计数器构成,场时序表也可由速度较低的EPROM芯片构成。值得指出的是,这里所讲的场时序,是统指垂直方向的时序,其中也包括了帧频的奇偶场信号,行计数器的清零脉冲同样也是帧频的。
有了行、场时序以后,就可以合成复合同步和复合消隐信号。
2)编程逻辑方式
用查找表来形成扫描时序的方法存在一些缺点,如体积大、成本高等,用一些计数器加一些常规的与或门等芯片构成扫描时序,这样构成的时序行电路体积也较大且不灵活。随着可编程逻辑芯片的出现,用这些芯片替代那些组合逻辑的具体芯片,由此组成的扫描时序发生器电路显得电路简洁,具有成本低、功能强等优点。与查表式扫描时序发生器类似,我们也有图3.2.13和图3.2.14所示的编程逻辑行场时序发生器框图。
图3.2.13 组合逻辑行时序发生器框图
图3.2.14 组合逻辑场时序发生器框图
在这两个框图中,我们采用了可编程逻辑阵列芯片来形成行场扫描时序。可以看出,这两个框图和图3.2.11、图3.2.12所示的框图区别在于一个是采用存储芯片组成时序查找表,另一个采用可编程逻辑阵列芯片来形成扫描时序。
随着技术的进步,现在更多地选择编程逻辑方式来设计扫描时序电路。
采用编程逻辑方式来设计扫描时序,最重要的工作是设计可编程逻辑阵列芯片的逻辑表达式。图3.2.15给出了实现图3.2.9所示的简化行时序数值波形图的逻辑电路。图中,IC1是10位同步计数器,输入时钟CLK的频率为10MHz, R是计数器清零端。IC2是可编程逻辑阵列芯片。IC1的输出端H1,H2,…,H10连到IC2的输入端,IC2的输出信号为行同步信号/HS、行消隐信号/HB、行计数器清零信号/HZ。
图3.2.15 行扫描时序的简化电路示意图
图3.2.16给出了图3.2.15中IC2芯片输入变量的权重对应表。
图3.2.16 IC2芯片输入变量的权重对应表
图3.2.15中IC2输出信号的逻辑表达式为
!HZ = H10&!H9&H8&!H7&!H6&!H5&!H4; !HS = H10&!H9&!H8&!H7&!H6&H5 # H10&!H9&!H8&!H7&H6; !HB = H10&!H9&!H8&!H7 # H10&!H9&!H8&H7&!H6 # H10&!H9&!H8&H7&H6&!H5 # H10&!H9&!H8&H7&H6&H5&!H4 # H10&!H9&!H8&H7&H6&H5&H4&!H3&!H2
在设计PAL制场扫描时序时,考虑到每帧包含625行,而每场包含312.5行,存在“半”的问题。场时序计数器由11位同步计数器组成。CLK的频率是半行频,单位时钟的频率为行频。图3.2.17给出了实现图3.2.10所示场时序数值波形图的逻辑电路。图中,场时序计数器的11位输出送入可编程逻辑阵列芯片IC2。IC2的输出信号/FZ是场时序计数器的清零信号,/VB是场消隐信号,/VS是场同步信号,/Y0是奇偶场信号。
图3.2.17 简化的场扫描时序电路示意图
图3.2.18给出了图3.2.17中IC2芯片输入变量的权重对应表。
图3.2.18 IC2芯片输入变量的权重对应表
H0的权重为0.5,表示是单位时钟(行频)的1/2,即半行频。
图3.2.17中IC2输出信号的逻辑表达式为
!FZ = !H10 # H10&!H9&!H8&!H7 # H10&!H9&!H8&H7&!H6 # H10&!H9&!H8&H7&H6&!H5 # H10&!H9&!H8&H7&H6&H5&!H4&!H3&!H2&!H1; S = !H10&!H9&!H8&!H7&!H6 # H10&!H9&!H8&H7&H6 # H10&!H9&!H8&H7&!H6&H5&H4&H3 # H10&!H9&!H8&H7&!H6&H5&H4&!H3&H2 # H10&!H9&!H8&H7&!H6&H5&H4&!H3&!H2&H1; VB = !H10&H9&!H8&!H7&H6 # !H10&H9&!H8&H7&!H6&!H5 # !H10&H9&!H8&H7&!H6&H5&!H4 # !H10&H9&!H8&H7&!H6&H5&H4&!H3&!H2&!H1 # S; Y0 = !H10&!H9&!H8&!H7&!H6&!H5&!H4&!H3&!H2 # !H10&!H9&!H8&!H7&!H6&!H5&!H4&!H3&H2&!H1&!H0 # !H10&H9&!H8&!H7&H6&H5&H4&!H3&H2&H1 # !H10&H9&!H8&!H7&H6&H5&H4&H3 # !H10&H9&!H8&H7 # !H10&H9&H8 # H10; !VS = !H10&!H9&!H8&!H7&!H6&!H5&!H4&!H3&H2&!H1&H0 # !H10&!H9&!H8&!H7&!H6&!H5&!H4&!H3&H2&H1 # !H10&!H9&!H8&!H7&!H6&!H5&!H4&H3&!H2&!H1 # !H10&H9&!H8&!H7&H6&H5&H4&!H3&H2&H1 # !H10&H9&!H8&!H7&H6&H5&H4&H3&!H2&!H1 # !H10&H9&!H8&!H7&H6&H5&H4&H3&!H2&H1&!H0;
值得指出的是,扫描时序标准中,规定了各扫描时序的误差。下面举例给出了考虑误差的扫描时序数值波形的数值计算方法。在视频图像数值化中,14.75MHz是一个重要的频率。这里,取14.75MHz为单位时钟的频率为例,来设计PAL制的行清零、行同步和行消隐时序。行清零、行同步、行消隐时序和前肩的数值表如表3.2.2所示。
表3.2.2 行扫描时序中,行清零、行同步、行消隐时序和前肩的数值表
表3.2.2的数据来源于表3.2.1所给的标准,其中,行消隐宽度的范围为12±0.3,12×14.75=177,0.3×14.75=4.425。行消隐宽度的取值为172.575~181.425,确定数值可选择176(并不唯一)。前肩数值的范围为22.125±4.425,确定数值可选择24(并不唯一)。同理,行同步宽度可选择68(并不唯一)。根据最终确定数值,可先任意设计出行消隐信号的数值波形,再根据前肩的数值,进而设计出如图3.2.19所示的行时序数值波形图。
图3.2.19 单位时钟频率为14.75MHz的行时序数值波形图1
表3.2.2的设计是以各时序的中心点和误差的数值来确定参考数值的。实际上,可以直接采用式(3.2.5)计算出各波形的起始点和终点的具体数值。计算如下:
(1)清零信号波形:
M=14.75×64=944
(2)行消隐信号波形:
起点M1:
M1=14.75×52=767
终点M2:
M2=14.75×64=944
(3)行同步信号波形:
前肩的起点比行消隐的起点延后1.5μs,因此起点应为53.5μs。前肩的宽度为4.7μs,则终点应为58.2μs。由此算得
M1=14.75×53.5=789(起点)
M2=14.75×58.2=858(终点)
根据式(3.2.5)设计的行时序数值波形图如图3.2.20所示。
图3.2.20 单位时钟频率为14.75MHz的行时序数值波形图2
比较图3.2.19和图3.2.20,二者均在误差范围之内,而图3.2.20数值波形图比图3.2.19更为准确。从表达式来讲,图3.2.19在表达式上更简单一些。以图3.2.19给出的行时序数值波形图设计的IC2芯片各输出信号的逻辑表达式为
!HZ = H10&H9&H8&!H7&H6&H5&!H4; !HS = H10&H9&!H8&!H7&!H6&H5&H4 (792~800) # H10&H9&!H8&!H7&H6; (800~832) # H10&H9&!H8&H7&!H6&!H5 (832~848) # H10&H9&!H8&H7&!H6&H5&!H4 (848~856) # H10&H9&!H8&H7&!H6&H5&H4&!H3 (856~860) !HB = H10&H9&!H8 (768~896) # H10&H9&H8&!H7&!H6 (896~928) # H10&H9&H8&!H7&H6&!H5 (928~944)
为便于设计逻辑表达式,这里,我们在逻辑表达式后面给了每一个“与项”的持续时间标注。如!HB信号,第一个“与项”得到持续低电平的数值是768~896;第二个“与项”得到持续低电平的数值是896~928;第三个“与项”得到持续低电平的数值是928~944。无疑,这种标注方法对正确设计逻辑表达式是有益的。
应该说,用EPLD(或称CPLD)芯片来设计扫描时序,所占用芯片的资源是非常少的。