微型机与应用
MICROCOMPUTER & ITS APPLICATIONS
2000 Vol.19 No.3 P.21-23



图文电视中大容量数字存储器的设计
邓庆林　高平　李晓飞
　　摘　要：图文电视的基本概念、图文电视中接收端的大容量数字存储器设计的基本思想和2个FPGA功能模块的具体实现。
    关键词：图文电视 字符显示 DRAM存储器
　　图文电视是将各类图形和文字信息,以数字信号形式叠加在广播电视信号场消隐期（场逆程）的若干行上,是与正常的广播电视信号一起播出的一种新型的数据广播系统。使图文电视进入信息产业具有投资小、成本低、便于功能扩展、传输速度快等特点。图文电视及数据广播可以为各行各业如行政管理、金融、商务、交通、个人购物提供有效服务。
　　图文电视系统的基本结构由发送端、接收端及传送通道3部分组成。发送端由图文电视节目制作和播出系统组成。节目制作设备是由节目制作计算机构成的。其功能是将来自四面八方的信息或信息源数据库的信息进行编辑,制作成符合中国图文电视（CCST）规范的图文电视页,并能进行修改、更新、删除和页文件整理。播出系统由装有播出卡的播出计算机和数据桥组成。播出计算机可与节目制作计算机共用,其功能是将编辑好的图文电视页按序变成图文电视数据行。数据桥则将数据行叠加到场消隐期中指定的行上,与电视信号一起送到发射机发送出去。数据桥也可将图文电视数据行从1个频道的电视信号中取出,插入到其它频道的电视信号上。接收端为装有图文电视解码器的电视接收机,或由电视接收机和外装型图文电视解码器组成的接收终端。用户通过电视遥控器上的TV/TT（电视/图文电视）键,可以选看广播电视或图文电视。若选图文电视,再按INDEX键,则可在屏幕上得到循环播出的节目单与其相应的页号。按所要选页的页号后,图文电视解码器则将该页的数据取出,进行视频处理,最后显示在电视屏幕上。另外,图文电视解码器还可将所接收的页,通过并口打印出来。由于图文电视信号是搭载在电视信号上传输的,其传输通道就是广播电视通道,它可以是无线电视广播网、CATV网、卫星电视网等。
　　本课题是图文电视的1个子项目,即设计图文电视中的大容量数字存储器。本文将详细介绍接收端的大容量数字存储器的基本设计思想,其中包括单片机控制系统和FPGA功能模块的具体实现。系统框图如图1所示。

图1 系统框图
1 系统框图
　　该系统分为几个部分,首先是串行通信,然后是对大缓存的写入,最后是根据缓存的内容在显示器上显示出来,并能按红外遥控器的红外信号给出正确的操作。其中单片机负责将微机串口送出的图文信息写入图中的DRAM数字存储器。DRAM控制模块完成DRAM的读写和刷新。字符显示模块较为复杂,完成DRAM信息在电视接收机上的显示。它包括基本计数电路、点计数电路、水平/垂直地址计数电路、光栅地址计数电路、并/串转换电路计数电路等。2个模块都采用ALTERA公司的FPGA器件设计而成。这里使用EPM7128JC系列的芯片。
　　下面将介绍RAM控制模块和字符显示模块的具体实现。
2 DRAM控制电路设计
　　本设计使用的存储芯片为韩国LGS公司的GM71C4403CJ60,它是一种0.7μsCMOS高速动态RAM,其编制为1048576（即1MB）个4位字,并采用CMOS硅门阵列技术组装。该芯片仅需10根地址线,行地址和列地址的输入是多路复用的,三态数据输出,1024个周期刷新,刷新周期为16ms。该内存条上共有8片GM71C4403CJ60,构成32位宽,分成4个8位区,由/CAS0～CAS3和/RAS0、/RAS2组合选择此4个区。具体组合为:/RAS0与/CAS0、/RAS0与/CAS1、/RAS2与/CAS2、/RAS2与/CAS3。注意:由于本设计的DRAM容量为4MB,所以用不到/RAS1和/RAS3,且该内存条也无奇偶校验位。该DRAM存储器既作为输入数据的缓存（存储的是电视显示1屏数据）,又作为视频显示的VRAM。
　　DRAM控制电路如图2所示。该模块电路包括DRAM的行列地址生成和刷新电路。关键在于行列地址生成电路要使输入数据在DRAM中顺序存储,因此要连续产生4MB的地址信号。在DRAM刷新电路周期内不允许对DRAM进行读写。

图2 DRAM控制电路框图
2.1 DRAM行列地址生成电路
　　将单片机输出的/WR和/RD相“与”后作为DRAM行选通信号/RAS,此时SEL信号为1,所以多路选择器2×10MUX（141）选择通过的是低10位地址（A0～A9）,即行地址,由/RAS信号的下降沿锁存入DRAM。SEL信号由/RAS延迟2个CLK时钟周期（CLK为系统时钟,27MHz）得到,使得行地址被锁存后,经过2个系统时钟周期,SEL变为0,2×10MUX（141）选择通过高10位地址,即列地址,再将SEL信号延迟2个系统时钟周期产生列地址选通信号/CAS,目的是确保列地址稳定后,才由/CAS下降沿锁存入DRAM。
　　上面产生的20位地址,用于寻址1MB地址空间。实际使用的内存条其实由4个同样1MB存储空间组成,即4个8位区。如前所述,通过/CAS0～/CAS3和/RAS0、/RAS2的不同组合选择不同的8位区,可通过最高2位地址（A20、A21）译码/CAS0～/CAS3和/RAS0、/RAS2,但须/RAS、/CAS等信号配合。
2.2 DRAM刷新电路
　　DRAM的刷新方式分为:集中刷新、分散刷新和透明刷新。在本设计中,采用第3种刷新方式,即当刷新时,/CAS保持位高,由/RAS的下降沿DRAM中CMOS硅门阵列的一整行共1024个单元同时进行刷新,共刷新1024行,只需给出相应行地址并在确保行地址稳定后令/RAS产生下降沿即可。
　　2×10MUX（140）是用于选择刷新地址的,在刷新周期内,不允许对DRAM进行读写。因此REF=1,表示执行刷新操作,选择刷新行地址计数器地址REF［9..0］通过;REF=0,表示正常读写操作,选择行列地址通过。
3 字符显示控制电路
　　字符显示控制电路如图3所示。在电视接收机上显示字符,只要对扫描电子束简单地进行“开”或“关”,就可以用点阵在屏幕上组成字符（这里不考虑彩色信号）。通常把有效的显示屏幕划分成许多方块,每个方块被称为字符窗口,要显示的字符就位于字符窗口中。在本设计中,使用电视扫描帧中的一场:352列×288行。同时,所要显示的字符的代码是存放在DRAM中,此时DRAM充当VRAM。为了保证4MB内存条直接用作VRAM,服务器端发送过来的信息均是按所规定的电视显示格式处理的、以屏为单位的数据,这样将许多工作交由服务器软件完成之后,便大大节约了接收端的硬件资源。在VRAM中存放的是汉字字符点阵信息在字符发生器中的地址码,它只是记住显示屏幕的某个字符窗口中要显示哪个字符,而字符的形状（即字型）则由字符发生器产生。本设计中,字符发生器（ROM）是自己烧录的,烧入的是取自UCDOS的16×16点阵汉字字库GB2312-80,总容量约为262KB,字符窗口大小定为18×18（象素）,这样就可以保证相邻行列间的字符有一定间隔。

图3 字符显示控制电路框图
　　ROM的高位地址是来源于VRAM中的地址代码。即地址码作为字符发生器中这个字形点阵字节的高位地址用来指向这个字形点阵的首字节（相当于基地址）;而ROM的低位地址则来自称为光栅地址计数器（或排地址计数器）的输出,它具体指向这个字形点阵中的某个字节（相当于偏移量）。
　　为了在电视机上显示,必须按照电视信号规范设计电路。PAL制电视信号,水平扫描周期为64μs,分奇偶场,每帧2场,共625行。基本计数电路包含2个计数器,分别完成1行64μs计数和1帧625行计数。在后面的具体设计中,就以这2个计数器作为框架,为以后各模块提供时钟。利用其计数值作为约束条件,使用ALTERA提供的几种编辑器即可以设计所需要的各种信号。
　　水平地址和垂直地址计数器是用来跟踪电子束扫描在水平方向和垂直方向的窗口位置,而光栅地址计数器则用来跟踪电子束在窗口的哪一条光栅线上。把水平地址和垂直地址计数器的输出用作访问VRAM的地址,可以读取与电子束所在窗口相对应的VRAM单元中的字符地址码。把该地址码用作访问ROM字符发生器的高位地址,即可读取该字符代码的字形。因为光栅地址计数器是用来跟踪电子束在窗口的光栅线位置,所以用光栅地址计数器的输出作为访问ROM字符发生器的低位地址,可以读取与所在光栅线相对应的字形字节。
　　对应于屏幕上的每个字符窗口,当扫描电子束即将进入时,水平地址计数器和垂直地址计数电路输出地址到VRAM中取出与这个字符窗口相对应的存储单元中的字符代码,将其作为字符发生器的高位地址送往ROM,按照光栅地址计数器给出的光栅线数（作为ROM的低位地址）,把字形点阵中与字符窗口内的光栅线相对应的1排点从ROM中取出,加载到移位寄存器中。移位寄存器在点时钟的控制下移位,把由ROM送来的1排点进行并/串转换,在字符窗口相应的光栅线位置上加以显示。由水平地址计数器跟踪的1行所有19个字符,依次从VRAM中取出时,只能显示1行所有19个字符的1排,此后水平地址计数器仍继续计数,留出规定宽度的消隐区域,并在此区域中产生水平同步信号。待电子束扫描到下1条光栅线的开始位置时,水平地址计数器又重复计数,再依次从VRAM中读取这1行的所有19个字符,把这所有19个字符的下1排点显示出来。这样,对16×16的字形点阵,从VRAM中重复取出19个字符的过程要一直进行16次,才能够把这1行字形的16排点全部显示出来。此后,光栅地址计数器仍继续计数,但不再显示,要留出2条光栅线的行间距,再向垂直地址计数器进位,显示下1行字符。同样,垂直地址计数器在垂直方向对显示字符的行数和消隐区所占的行数进行控制,并在规定的位置上产生垂直同步信号。垂直地址计数每循环计数1次,1幅画面就扫描完了。显示的定时控制电路就是这样以固定的速率对显示屏幕不断地进行扫描,从而对屏幕进行刷新。由于电视机屏幕上的荧光材料在被电子轰击之后发光的时间很短,所以,只有连续不断地进行屏幕刷新,才能保持稳定而不消失的图像。
　　本设计定义字符窗口宽18个象素,点频为系统时钟CLK的1/4。18×4=72=48H,以计数范围0～47H设计的点计数电路,实现VRAM中取所需要显示的汉字,在字符发生器（ROM）中的地址码,再由该地址码去ROM中取其点阵信息,并锁存,最后将点阵信息置位给移位寄存器。其中,LATCHADD1和LATCHADD2信号分别用于锁存（上升沿有效）地址码的低8位和高8位。在LATCHADD2上升沿后,汉字在字符发生器中的基地址就准备就绪了。此时,字符发生器选通信号/CEROM为低电平,使字符发生器输出相应的点阵信息（由基地址和光栅地址计数器给出的地址偏移量决定）。因为使用16×16汉字点阵,汉字的1线需要2B,而字符发生器数据输出线只有8根,所以必须分2次读出。ROMADDSEL作为字符发生器地址的最低位,它首先为低电平,选择低8位点阵信息,用第1个/CEROM低电平输出,并用LATCHDOT1锁存;然后ROMADDSEL信号变为高电平,选择高8位点阵信息,用第2个/CEROM低电平输出,并用LATCHDOT2锁存。这样2B点阵信息便全部准备好了,接着由S/L信号将它们置入移位寄存器。这以后,ADDCK信号再次出现上升沿,开始对下1个字符窗口进行操作。
　　并/串转换电路由2片74377锁存器构成,用于在LATCHDOT1和LATCHDOT2信号控制下锁存字符发生器送来的汉字点阵信息。每次锁存16位、2B,对应字符显示窗口中某线的16个点。锁存后的数据置入移位寄存器,并在点时钟（系统时钟CLK四分频得到）控制下,串行输出。设计规定,汉字点阵信息为“1”代表前景,规定其色彩为R=1,G=0,B=1;为“0”代表背景,规定其色彩为R=0,G=1,B=1。
　　在本设计中,作者根据各模块的特点综合使用了这几种设计方法:基本计数电路是用图形和文本（AHDL语言）设计方法设计的。点计数电路采用文本（AHDL语言）设计方法。其它模块则用图形设计方法设计。
4 功能演示
　　编写好单片机程序,先在4MB内存条中以117A38H开始的304（130H）个内存单元（指16位宽）中写入汉字“串”在字符发生器中的地址代码（基地址）“E0E0”H,紧接着在从117B68H开始的304和内存单元写入汉字“鼻”的地址代码“C0C0”H（由于单片机只有8位宽,所以必须分别对低8位区和高8位区进行操作）。然后,给FPGA送去屏首地址117A38H,在将对DRAM的控制权交给FPGA后（CLR P3.4表示将DRAM控制权交给FPGA;SETB P3.4表示将控制权交给单片机）,此时屏幕显示1屏“串”字,查询等待遥控器信号。当有信号时（单片机P1.6脚为高电平）,控制权重交回单片机,置屏首地址为117B68,再将控制权交给FPGA,在屏幕上显示1屏“鼻”,延迟一段时间后会自动跳回显示“串”,再次查询等待遥控器信号。
　　本设计能够在电视接收机上显示发送端传来的文字信息。需进一步研究和改进的地方是增加 彩色信号,以便效果更加逼真。
邓庆林（南京邮电学院信息工程系210003）
高平（南京邮电学院信息工程系210003）
李晓飞（南京邮电学院信息工程系210003）
收稿日期：1999-10-12
