首页 理论教育 如何设置视频显示寄存器?

如何设置视频显示寄存器?

时间:2023-07-02 理论教育 版权反馈
【摘要】:表6-7列举了几种视频显示控制寄存器。图6-28视频显示状态寄存器VDXPOS和VDYPOS位记录下最近的显示像素。图6-30视频显示帧大小寄存器FPCOUNT在重新计数之前,从0开始计数直到FRMWIDTH-1。图6-31视频显示水平消隐寄存器每次帧像素计数器等于HBLNKSTART,都会发出HBLNK信号。图6-36视频显示区域1图像位移寄存器在首个图像行,即当FLCOUNT=VBLNKYSTOP1+IMGVOFF1时,要将图像行计数器重置为1。

如何设置视频显示寄存器?

表6-7列举了几种视频显示控制寄存器。TMS320DM642有3个视频端口外围设备,分别为VP0、VP1和VP2,基准地址分别为01C40000、01C44000和01C48000,表中缩写名称最后的x表示VP0~VP2中的一个,该寄存器的绝对地址=基准地址+地址偏移量。例如,VD_STAT0、VD_STAT1和VD_STAT2的绝对地址分别为01C40200、01C44200和01C48200。

表6-7 视频显示控制寄存器

978-7-111-37346-9-Chapter06-39.jpg

(续)

978-7-111-37346-9-Chapter06-40.jpg

1.视频显示状态(VDSTAT)寄存器

视频显示状态(VDSTAT)寄存器如图6-28所示,代表了视频端口的当前显示状态。

978-7-111-37346-9-Chapter06-41.jpg

图6-28 视频显示状态寄存器

VDXPOS和VDYPOS位记录下最近的显示像素。F1D、F2D和FRMD表示区域或帧已经完整显示,为了防止产生DCNA中断,DSP要将这些位清除。根据选择的模式,当相应区域的最后一个像素发送到输出端时,要设置F1D、F2D和FRMD位。

2.视频显示控制(VDCTL)寄存器

视频显示控制(VDCTL)寄存器如图6-29所示,实现对视频显示的控制。

978-7-111-37346-9-Chapter06-42.jpg

图6-29 视频显示控制寄存器

3.视频显示帧大小(VDFRMSZ)寄存器

视频显示帧大小(VDFRMSZ)寄存器如图6-30所示,通过设置帧行计数器(FP-COUNT)和帧像素计数器(FLCOUNT)的终止值来设置显示通道帧大小。

978-7-111-37346-9-Chapter06-43.jpg

图6-30 视频显示帧大小寄存器

FPCOUNT在重新计数之前,从0开始计数直到FRMWIDTH-1。FLCOUNT在重新计数之前,从0开始计数直到FRMHEIGHT。

4.视频显示水平消隐(VDHBLNK)寄存器

视频显示水平消隐(VDHBLNK)寄存器如图6-31所示,控制显示水平消隐。

978-7-111-37346-9-Chapter06-44.jpg

图6-31 视频显示水平消隐寄存器

每次帧像素计数器(FPCOUNT)等于HBLNKSTART,都会发出HBLNK信号。HBLNK-START也可以决定在BT.656和Y/C输出中插入EAV码的位置。

每次FPCOUNT=HBLNKSTOP,都要消除信号。在BT.656和Y/C模式下,HBLNKSTOP决定SAV码的插入点和HBLNK的消除点。还可以利用HBDLA位,将HBLNK的无效边界延迟4个像素时钟。

5.视频显示区域1垂直消隐起始(VDVBLKS1)寄存器

视频显示区域1垂直消隐起始(VDVBLKS1)寄存器如图6-32所示,控制区域1内垂直消隐的起始。

978-7-111-37346-9-Chapter06-45.jpg

图6-32 视频显示区域1垂直消隐起始寄存器

在原始数据模式下,只要帧行计数器(FLCOUNT)等于VBLNKYSTART1且帧像素计数器等于VBLNKXSTART1,就会发出VBLNK信号。

在BT.656和Y/C模式下,只要FLCOUNT等于VBLNKYSTART1且FPCOUNT等于VBLNKXSTART1,也要发出VBLNK信号。VBLNK输出控制完全独立于时序控制码。区域1的EAV/SAV码中的V位由VDVBIT1寄存器控制。

6.视频显示区域1垂直消隐终止(VDVBLKE1)寄存器

视频显示区域1垂直消隐终止(VDVBLKE1)寄存器如图6-33所示,控制区域1内垂直消隐的终止。

978-7-111-37346-9-Chapter06-46.jpg

图6-33 视频显示区域1垂直消隐终止寄存器

在原始数据模式下,只要帧行计数器(FLCOUNT)等于VBLNKYSTOP1且帧像素计数器等于VBLNKXSTOP1,就会消除VBLNK信号。

在BT.656和Y/C模式下,只要FLCOUNT等于VBLNKYSTOP1且FPCOUNT等于VBLNKXSTOP1,就消除VBLNK信号。VBLNK输出控制完全独立于时序控制码。区域1的EAV/SAV码中的V位由VDVBIT1寄存器控制。

7.视频显示区域2垂直消隐起始(VDVBLKS2)寄存器

视频显示区域2垂直消隐起始(VDVBLKS2)寄存器如图6-34所示,控制区域2内垂直消隐的起始。

978-7-111-37346-9-Chapter06-47.jpg

图6-34 视频显示区域2垂直消隐起始寄存器

在原始数据模式下,只要帧行计数器(FLCOUNT)等于VBLNKYSTART2且帧像素计数器等于VBLNKXSTART2,就会发出VBLNK信号。

在BT.656和Y/C模式下,只要FLCOUNT等于VBLNKYSTART2且FPCOUNT等于VBLNKXSTART2,也要发出VBLNK信号。VBLNK输出控制完全独立于时序控制码。区域2的EAV/SAV码中的V位由VDVBIT2寄存器控制。

8.视频显示区域2垂直消隐终止(VDVBLKE2)寄存器

视频显示区域2垂直消隐终止(VDVBLKE2)寄存器如图6-35所示,控制区域2内垂直消隐的终止。

978-7-111-37346-9-Chapter06-48.jpg

图6-35 视频显示区域2垂直消隐终止寄存器

在原始数据模式下,只要帧行计数器(FLCOUNT)等于VBLNKYSTOP2且帧像素计数器等于VBLNKXSTOP2,就会消除VBLNK信号。

在BT.656和Y/C模式下,只要FLCOUNT等于VBLNKYSTOP2且FPCOUNT等于VBLNKXSTOP2,也要消除VBLNK信号。VBLNK输出控制完全独立于时序控制码。区域2的EAV/SAV码中的V位由VDVBIT2寄存器控制。

9.视频显示区域1图像位移(VDIMGOFF1)寄存器

视频显示区域1图像位移(VDIMGOFF1)寄存器如图6-36所示,定义区域1图像位移,并指定显示图像起始位置与有效显示起始之间的相对位移。

978-7-111-37346-9-Chapter06-49.jpg

图6-36 视频显示区域1图像位移寄存器

在首个图像行,即当FLCOUNT=VBLNKYSTOP1+IMGVOFF1时,要将图像行计数器(ILCOUNT)重置为1。如果设置了NV位,那么当LCOUNT=VBLNKYSTOP1-IMGVOFF1时,也要把ILCOUNT重置为1。如果在某个行中ILCOUNT=1,就要从该行的起始处输出区域1中的显示图像像素。对于反向位移,IMGVOFF1绝不能大于VBLNKYSTOP1,区域1有效图像绝不能与区域2有效图像重叠。

在有效行图像起始处,图像像素计数器(IPCOUNT)要重置为0。只要ILCOUNT=1,当FPCOUNT=IMGHOFF1时,图像像素从FIFO输出到区域1中每行起始处。如果设置了NH位,那么当FPCOUNT=FRMWIDTH-IMGHOFF1时,在输出IMGHOFF1之前的有效像素期间,要输出默认输出值或消隐值。

10.视频显示区域1图像大小(VDIMGSZ1)寄存器

视频显示区域1图像大小(VDIMGSZ1)寄存器如图6-37所示,定义区域1图像面积,并指定有效显示内显示图像的大小。

978-7-111-37346-9-Chapter06-50.jpg

图6-37 视频显示区域1图像大小寄存器

图像像素计数器(IPCOUNT)对每个显示图像像素输出进行计数。当IPCOUNT=IMGHSIZE1时,要停止显示图像像素输出,有效行的剩余部分要输出默认输出值或消隐值。

图像行计数器(ILCOUNT)对显示图像行进行计数。当ILCOUNT=IMGVSIZE1时,要停止显示图像输出,有效区域的剩余部分要输出默认输出值或消隐值。

11.视频显示区域2图像位移(VDIMGOFF2)寄存器

视频显示区域2图像位移(VDIMGOFF2)寄存器如图6-38所示,定义区域2图像位移,并指定显示图像起始位置与有效显示起始之间的相对位移。

978-7-111-37346-9-Chapter06-51.jpg

图6-38 视频显示区域2图像位移寄存器

在首个图像行(当FLCOUNT=VBLNKYSTOP2+IMGVOFF2时),要将图像行计数器(ILCOUNT)重置为1。如果设置了NV位,那么当LCOUNT=VBLNKYSTOP2-IMGVOFF2时也要把ILCOUNT重置为1。如果在某个行中ILCOUNT=1,那么要从该行的起始处输出区域2中的显示图像像素。对于反向位移,IMGVOFF2绝不能大于VBLNKYSTOP2。区域2有效图像绝不能与区域1有效图像重叠。

在有效行图像起始处,图像像素计数器(IPCOUNT)要重置为0。只要ILCOUNT=1,当FPCOUNT=IMGHOFF2时,图像像素从FIFO输出到区域2中每行起始处。如果设置了NH位,那么当FPCOUNT=FRMWIDTH-IMGHOFF2时,在输出IMGHOFF2之前的有效像素期间,要输出默认输出值或消隐值。

12.视频显示区域2图像大小(VDIMGSZ2)寄存器

视频显示区域2图像大小(VDIMGSZ2)寄存器如图6-39所示,定义区域2图像面积,并指定有效显示内显示图像的大小。

978-7-111-37346-9-Chapter06-52.jpg

图6-39 视频显示区域2图像大小寄存器

图像像素计数器(IPCOUNT)对每个显示图像像素输出进行计数。当IPCOUNT=IMGHSIZE2时,要停止显示图像像素输出。有效行的剩余部分要输出默认输出值或消隐值。

图像行计数器(ILCOUNT)对显示图像行进行计数。当ILCOUNT=IMGVSIZE2时,要停止显示图像输出。有效区域的剩余部分要输出默认输出值或消隐值。

13.视频显示区域1时序(VDFLDT1)寄存器

视频显示区域1时序(VDFLDT1)寄存器如图6-40所示,设置区域标识信号的时序。

978-7-111-37346-9-Chapter06-53.jpg

图6-40 视频显示区域1时序寄存器

在原始数据模式下,只要帧行计数器(FLCOUNT)等于FLDIYSTART且帧像素计数器(FPCOUNT)等于FLD1XSTART,就要消除FLD信号。

在BT.656和Y/C模式下,只要FLCOUNT等于FLD1YSTART且FPCOUNT等于FLD1XSTART,就要消除FLD信号。FLD输出完全独立于时序控制码。EAV/SAV码中的F位由VDFBTT寄存器控制。

14.视频显示区域2时序(VDFLDT2)寄存器

视频显示区域2时序(VDFLDT2)寄存器如图6-41所示,用于设置区域标识信号的时序。(www.xing528.com)

978-7-111-37346-9-Chapter06-54.jpg

图6-41 视频显示区域2时序寄存器

在原始数据模式下,只要帧行计数器(FLCOUNT)等于FLD2YSTART且帧像素计数器(FPCOUNT)等于FLD2XSTART,就要发出FLD信号。

在BT.656和Y/C模式下,只要FLCOUNT等于FLD2YSTART且FPCOUNT等于FLD2XSTART,就发出FLD信号。FLD输出完全独立于时序控制码。EAV/SAV码中的F位由VDFBIT寄存器控制。

15.视频显示门阈(VDTHRLD)寄存器

视频显示门阈(VDTHRLD)寄存器如图6-42所示,用于设置显示FIFO门阈值,决定何时载入更多的显示数据。

978-7-111-37346-9-Chapter06-55.jpg

图6-42 视频显示门阈寄存器

VDTHRLDn位决定在相应的DMA事件发生前,显示FIFO中必须有多少可用空间。Y FIFO直接使用VDTHRLDn值,而Cb和Cr值使用1/2VDTHRLDn的值整除下一个双倍字(1/2(VDTHRLDn+VTHRLDn mod2))。DMA传输器必须小于每个FIFO使用的VDTHRLDn值。通常情况,VDTHRLDn设置为水平行长度整除下一个双倍字边界。对于非行长度门阈,显示数据拆分机制要有严格的约束条件判断什么VDTHRLDn值是有效的。

VDTHRLD2位与VDTHRLD1的用法相同,但要用于区域2俘获期间。只有在因为某些原因(例如区域1和区域2中显示行的长度不同)区域2DMA的大小与区域1DMA的大小不同时,才会使用VDTHRLD2位。

在原始数据模式下,INCPIX位决定帧像素计数器(FPCOUNT)的值何时增加。例如,如果每个输出值都代表一个显示像素的R、G或B,那么将INCPIX位设置为3h,这样每3个输出时钟脉冲像素计数器才增加一次。如果INCPIX的值为0h,则表示16计数,而不是0。

16.视频显示水平同步(VDHSYNC)寄存器

视频显示水平同步(VDHSYNC)寄存器如图6-43所示,用于控制视频同步信号的时序。

978-7-111-37346-9-Chapter06-56.jpg

图6-43 视频显示水平同步寄存器

只要帧像素计数器(FPCOUNT)等于HSYNCSTART,就发出HSYNC信号,表示水平同步脉冲开始。只要FPCOUNT=HSYNCSTOP,就消除HSYNC信号,表示水平同步脉冲终止。

17.视频显示区域1垂直同步起始(VDVSYNS1)寄存器

视频显示区域1垂直同步起始(VDVSYNS1)寄存器如图6-44所示,用于控制区域1内垂直同步的起始。

978-7-111-37346-9-Chapter06-57.jpg

图6-44 视频显示区域1垂直同步起始寄存器

只要帧行计数器(FLCOUNT)等于VSYNCYSTART1,且帧像素计数器(FPCOUNT)等于VSYNCXSTART1,就会发出VSYNC信号。

18.视频显示区域1垂直同步终止(VDVSYNE1)寄存器

视频显示区域1垂直同步终止(VDVSYNE1)寄存器如图6-45所示,用于控制区域1内垂直同步的终止。

978-7-111-37346-9-Chapter06-58.jpg

图6-45 视频显示区域1垂直同步终止寄存器

只要帧行计数器(FLCOUNT)等于VSYNCYSTOP1且帧像素计数器(FPCOUNT)等于VSYNCXSTOP1,就会发出VSYNC信号。

19.视频显示区域2垂直同步起始(VDVSYNS2)寄存器

视频显示区域2垂直同步起始(VDVSYNS2)寄存器如图6-46所示,控制区域2内垂直同步的起始。

978-7-111-37346-9-Chapter06-59.jpg

图6-46 视频显示区域2垂直同步起始寄存器

只要帧行计数器(FLCOUNT)等于VSYNCYSTART2且帧像素计数器(FPCOUNT)等于VSYNCXSTART2,就会发出VSYNC信号。

20.视频显示区域2垂直同步终止(VDVSYNE2)寄存器

视频显示区域2垂直同步终止(VDVSYNE2)寄存器如图6-47所示,用于控制区域2内垂直同步的终止。

978-7-111-37346-9-Chapter06-60.jpg

图6-47 视频显示区域2垂直同步终止寄存器

只要帧行计数器(FLCOUNT)等于VSYNCYSTOP2且帧像素计数器(FPCOUNT)等于VSYNCXSTOP2,就会发出VSYNC信号。

21.视频显示计数器重载(VDRELOAD)寄存器

视频显示计数器重载(VDRELOAD)寄存器如图6-48所示,当使用外部水平或垂直同步时,决定在外部同步信号有效时,计数器应该载入什么值。

978-7-111-37346-9-Chapter06-61.jpg

图6-48 视频显示计数器重载寄存器

22.视频显示事件(VDDISPEVT)寄存器

要根据显示区域1和区域2所要产生的DMA事件的数量设置视频显示事件寄存器(VDDISPEVT)。寄存器如图6-49所示。

978-7-111-37346-9-Chapter06-62.jpg

图6-49 视频显示事件寄存器

23.视频显示剪辑(VDCLIP)寄存器

视频显示剪辑(VDCLIP)寄存器如图6-50所示。

978-7-111-37346-9-Chapter06-63.jpg

图6-50 视频显示剪辑寄存器

在BT.656和Y/C模式下,视频模块执行可编程的剪辑。视频流水线的最后一道工序就是剪辑。在有效视频区域中(不会剪辑消隐值),只有通过VDIMGSZn和VDIMGOFFn定义的图像区域才能应用剪辑。只能在VDCLIP指定的数值范围内进行输出。BT.601指定的默认值为:对于亮度,黑色电平峰值为16,白色电平峰值为235;对于色度,最大量化电平为16和240。对于10位模式下的剪辑,要2LSBs清除,保留8MSBs。例如,如果Y值为FF.8h,可剪辑为EB.0h;如果Y值为0F.4h,可剪辑为10.0h。

24.视频显示默认显示值(VDDEFVAL)寄存器

视频显示默认显示值(VDDEFVAL)寄存器定义了向有效视频窗口中不属于显示图像的部分输出的默认值。BT.656和Y/C模式下的VDDEFVAL寄存器如图6-51所示;原始数据模式下的VDDEFVAL寄存器如图6-52所示。

978-7-111-37346-9-Chapter06-64.jpg

图6-51 BT.656和Y/C模式下的视频显示默认显示值寄存器

978-7-111-37346-9-Chapter06-65.jpg

图6-52 原始数据模式下的视频显示默认显示值寄存器

当有效视频中无图像显示时,显示窗口输出默认值。该区间的垂直范围从ILCOUNT=0到ILCOUNT=IMGVOFFn,水平范围从IPCOUNT=0到IPCOUNT=IMGHOFFn。在BT.656模式下,按照标准CbYCrY方式复合输出CBDEFVAL、YDEFVAL和CRDEFVAL。在该模式下,VDOUT[9∶0]总线输出YDEFVAL,VDOUT[19∶10]总线复合输出CBDEFVAL和CRDEFVAL。在所有的情况下,默认值都从总线([9∶2]或[19∶12])的8MSBs输出,而2LSBs([1∶0]或[11∶10])都变为0。

在原始数据模式下,要根据总线的宽度输出DEFVAL的8、10、16或20位。在原始数据模式的水平和垂直消隐期间也要输出默认值。当设置了VDCTL中的BLKDIS位且FIFO为空时,在整个有效视频区域也要输出默认值。

25.视频显示垂直中断(VDVINT)寄存器

视频显示垂直中断(VDVINT)寄存器如图6-53所示,用于控制区域1和区域2中垂直中断的产生。

978-7-111-37346-9-Chapter06-66.jpg

图6-53 视频显示垂直中断寄存器

区域中可以指定当某行完成时(FLCOUNT=VINTn)可以产生一个中断,这样软件就可以与帧或区域进行同步。通过对VIF1和VIF2位编程,中断可以在任意一个区域或两个区域中出现,也可以完全不出现。

26.视频显示区域位(VDFBIT)寄存器

视频显示区域位(VDFBIT)寄存器如图6-54所示,用于控制EAV和SAV时序控制码中的F位的值。

978-7-111-37346-9-Chapter06-67.jpg

图6-54 视频显示区域位寄存器

FBITCLR和FBITSET位控制EAV和SAV时序控制码中的F位的值。只要帧行计数器(FLCOUNT)等于FBITCLR,就把位于该行起始位置的EAV码中的F位清除为0,表示区域1显示。在后续的EAV/SAV码中,F位仍然为0,直到FLCOUNT=FBITSET时,才把该行起始位置的EAV码中的位改成1(表示区域2显示)。F位操作方式完全独立于FLD控制信号。

对于隔行扫描模式,通常情况下FBITCLR和FBITSET与F位的变化保持一致,或者某些时候当V位从1变为0时,FBITCLR和FBITSET也要发生变化。对于连续扫描模式,因为没有区域2输出,所以编程时FBITSET的值应该比FRMHEIGHT大,这样永远也不会满足FLCOUNT=FBITSET条件,F位也总是为0。

27.视频显示区域1垂直消隐位(VDVBIT1)寄存器

视频显示区域1垂直消隐位(VDVBIT1)寄存器如图6-55所示,用于控制区域1的EAV和SAV时间控制码中的V位。

VBITSET1和VBITCLR1位控制EAV和SAV时序控制码中的V位的值。只要帧行计数器(FLCOUNT)等于VBITSET1,就把位于该行起始位置的EAV码中的V位置为1,表示区域1数字垂直消隐的起始。在所有的EAV/SAV码中V位仍然为1,直到FLCOUNT=VBIT-CLR1时,才把该行起始位置的EAV码中的位改成0,表示区域1数字有效显示的起始。V位操作方式完全独立于VBLNK控制信号。

978-7-111-37346-9-Chapter06-68.jpg

图6-55 视频显示区域1垂直消隐位寄存器

对VBITSET1和VBITCLR1位编程,控制在区域1垂直消隐期间把FLCOUNT置为1。当FLCOUNT=1时,硬件只能产生区域1DMA事件。

28.视频显示区域2垂直消隐位(VDVBIT2)寄存器

视频显示区域2垂直消隐位(VDVBIT2)寄存器如图6-56所示,用于控制区域2的EAV和SAV时间控制字中的V位。

978-7-111-37346-9-Chapter06-69.jpg

图6-56 视频显示区域2垂直消隐位寄存器

VBITSET2和VBITCLR2位控制EAV和SAV时序控制码中V位的值。只要帧行计数器(FLCOUNT)等于VBITSET2,就把位于该行起始位置的EAV码中的V位置为1,表示区域2数字垂直消隐的起始。在所有的EAV/SAV码中V位仍然为1,直到FLCOUNT=VBIT-CLR2时,才把该行起始位置的EAV码中的位改成0,表示区域2数字有效显示的起始。V位操作方式完全独立于VBLNK控制信号。

对于纠错隔行扫描模式,VBITSET2和VBITCLR2定义的区域绝不能与VBITSET1和VBITCLR1定义的区域重叠。对于连续扫描模式,编程时VBITSET2和VBITCLR2的值要大于FRMHEIGHT。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈