Amateur TV Teletext Pages
Teletext ICs can and are used in a number of Amateur TV beacons, home test patterns, and call-sign generators.
They are quite useful where the ability to place a page of text on screen is required. Various ATV Groups use such designs, which are based on the BATC's Teletext Pattern Generator as described in The ATV Compendium. Aside from a page of simple text, various images can be broadcast, by means of 'drawing' using selected block graphic characters.
Teletext has been around in ZL for some years now, transmitted by the state broadcaster, TVNZ, and the privately owned Canwest company TV3. Similar services are also available over much of Australia, Europe and many other countries throughout the world. It is not surprising then that a dedicated set of integrated circuits have been made available to satisfy the considerable demand, and it is these devices upon which this design is based.
The top few television lines of each television field are not used for carrying picture information as such, but for transmitter control data, specialised waveforms for checking system parameters (group delay, frequency responce etc) and for other purposes. Lines 7, 8, 11 to 15, 16, 18 and the second fields equivalents are used to transmit a data system known as Teletext, whereby television sets fitted with the appropiate decoder can be read this data and thus the relevant information contained in it, which comprises everything from TV programs, weather, travel, and shopping etc.
ZL1BQ and ZL1UX are the branch callsigns for the Ak VHF Group and the Hamilton Amateur Radio Club. Both branches operate TV repeaters as well as standard VHF and UHF voice repeaters which transmit a beacon in the form of a 'Test Pattern' based on a design by Trevor Brown G8CJS described in a project in the ATV Compendium by Mike Wooding G6IQM. This beacon presently has 64 pages and some examples converted to GIF images can be found throughout this page. Individual pages or a whole EPROMs worth can be obtained from ZL1VFO. The files correspond to the standard memory format as used in a SAA5050, or alternatively, Tandata / Viewdata formats are available, once used by a Prestel service in the U.K. The file format can be sent from a computer via the serial port to one of these Viewdata Terminals and displayed similarly to the images below.
The Teletext chipset that was originally used for this was the SAA5000 series, consisting of the SAA5020 Teletext Timing chain (TIC), or the SAA5025 525-line Teletext Timing chain (TIC), the SAA5030 Teletext Video Processor (VIP), the SAA5040 series of Teletext Acquisition and Control Circuit (TAC), and the SAA5050 Series Teletext Character Generator (TROM). For our application, the SAA5020 TIC and SAA5050 TROM are used along with a 27 series EPROM, ranging from a 2716 (2k x 8) type which can hold one page of information, up to a 27c080 (1M x 8) which can hold 512 pages.
SAA 5020 TIC
The divider stages in the TIC sub-divide the 6MHz clock signal down to 25Hz, the television frame rate, and generate all the timing signals for the teletext display. During the display period, a 1MHz clock signal RACK (Read Address Clock) takes over from the WACK (Write Address Clock) to step the character addresses. The 74LS393 address counter is cleared at the end of every line and reset to the first position. After every 10 lines during the display, the SAA5020 steps the row address on by one to access the next row of characters in the memory. In addition to providing all the timing signals for the display, the SAA5030 also generates a complete composite sync sugnal which is used to drive the PAL composite video encoder and provide a stand alone system free of any external sync requirements. The SAA5030 is capable of genlocking to an external msource, but this facility has notbeen implemented here in order to simplify the design. Frame lock could easily be added by the reset input on pin 10 which requires a positive TTL level pulse to reset the internal frame counter. Line lock could be achieved by a positive TTL level pulse on pin 6 to reset the internal line counter.
SAA5050 TROM Teletext Read Only Memory
The SAA5050 is a 28 pin device which incorporates a fast access character generator ROM (4.3k bits), the logic decoding for all the teletext control characters and decoding for some of the remote control functions.The circuit generates 96 alphanumeric and 64 graphic characters. In addition there are 32 control chracters which determine the nature of the display.
The basic input to the SAA5050 is the character data from the EPROM used here as the teletext page memory. This is a 7 bit code which represents a character dot matix pattern or control function. The character period is 1us and the character dot rate is 6 MHz. The timings are derived from 2 external clocks, F1 (1 MHz - pin 20) and TR6 (6 MHz - pin 19) which are amplified and re-synchonised internally. Each character rectangle is 6 dots wide by 10 lines high. One dot space is left between adjacent characters, and there is one line space left between rows.
Alphanumeric characters are generated on a 5 x 9 matrix, allowing space for decending characters. Each of the 64 graphic characters is decoded to form a 2 x 3 block arrangement which occupies the complete 6 x 10 dot matrix. Graphics characters may be either contiguous or separated. The alphanumeric characters are character rounded, i.e. a half dot is inserted before or after a whole dot in the presence of a diagonal in a character matrix. The character video output signals comprise a Y (Monochrome - Pin 21) signal and RGB (pins 24, 23, and 22) signals for a colour receiver. A blanking output (Pin 25) is provided to blank out the television video signal under the control of the PO (Picture On - Pin 27) and DE (Display Enable - Pin 28) inputs and the box control chracters. The monchrome data signal can be used to inlay characters into the television video, the use of the 32 control chracters provides information on the nature of the display, e.g. colour. These are also used to provide other facilities such as concealed display and flashing characters etc.
The circuit generates a 0.75 Hz signal with a 3:1 ON/OFF ratio to provide the flashing chracter facility.
Power On Reset
When the supply voltage is switched on, the chracters generator will reset to TV, conceal, and not superimpose mode.
The character rounding function id different for the small and double height characters. In both cases the ROM is accessed twice iduring the character period of 1 us. the dot information of two rows is then compared to detect the presence of any diagonal in the character matrix and to determine the positioning of the character rounding half dots.
For small characters rounding is always referanced in the same direction (i.e. row before in even fields, and row after in odd fields as determined by the CRS signal).
for double hieght charactersrounding is always referenced alternately up and down changing every line using an internally generated signal. (The CRS signal is '0' for the odd field and '1' for the even field of an interlaced TV picture).
The Display is arranged as 24 lines by 40 columns, the memory map rounds this up to 32 lines by 64 columns for ease of memory addressing. What ends up happening is that there are 976 bytes displayed, but 2048 bytes are required for each page. Anything that ends up in columns 40 to 63, or lines 24 to 31 won't get displayed. See below.
Also only 7 out of the 8 data bits are used so any value between &80h and &FFh is seen as &00h to &7Fh.
Building Teletext Pages
Column 0 1 2 3 4 5 6 6
0 0 0 0 0 0 0 3
Line 0 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (000-03F)
Line 1 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (040-07F)
Line 2 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (080-0BF)
Line 3 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (0C0-0FF)
Line 4 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (100-13F)
Line 5 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (140-17F)
Line 6 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (180-1BF)
Line 7 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (1C0-1FF)
Line 8 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (200-23F)
Line 9 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (240-27F)
Line 10 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (280-2BF)
Line 11 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (2C0-2FF)
Line 12 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (300-33F)
Line 13 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (340-37F)
Line 14 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (380-3BF)
Line 15 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (3C0-3FF)
Line 16 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (400-43F)
Line 17 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (440-47F)
Line 18 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (480-4BF)
Line 19 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (4C0-4FF)
Line 20 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (500-53F)
Line 21 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (540-57F)
Line 22 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (580-5BF)
Line 23 ........................................XXXXXXXXXXXXXXXXXXXXXXXXXX (5C0-5FF)
Line 24 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (600-63F)
Line 25 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (640-67F)
Line 26 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (680-6BF)
Line 27 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (6C0-6FF)
Line 28 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (700-73F)
Line 29 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (740-77F)
Line 30 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (780-7BF)
Line 31 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (7C0-7FF)
(.) = Viewable Picture Area, (X) = Wasted Space, Not Seen etc
There are several ways of designing up Eprom pages.
1) The Manual method (aka the hard way :)
I use the Dos program Edit that comes with Windows 95, and use it in a Dos box.
Type in Edit /64 Page1.rom where Page1.rom is the name of the file you want to create/modify. The /64 part arranges the file with a width of 64 columns which matches the memory arrangement of the SAA5050 (see above), and also shows the hex value of whatever character the cursor is presently on down in the bottom right corner. Versions of Edit prior to Windows 95, i.e Dos 5 thru to 6.22 don't allow you to use the /64 option and are virtually useless for this task. The advantage of this method is that you can load up to 10 files in memory with this version of Edit, and ' cut and paste ' bits from one line or file to another which is useful for copying control characters to a new page. It also allows you to ' see ' what characters are behind double height (on the next line down). If you insert x number of characters onto a line, you have to delete the same amount of characters on that line otherwise it will wrap the unseen part of the line around to the next line. These characters are typically &FFhex or 255dec and show up in the teletext images as white blocks. One method of checking is to save the file, exit out of the program, and re-enter again using the /64 switch. Any characters that have ' wrapped around ' will soon be apparent by their positioning in the display. They can then be removed, the file resaved and reloaded to check again.
Seeing as most Eproms are bigger than 2k x 8 (2716) we can store several pages and flip the high order address (A11 to whatever) to change pages. As a guide and so one doesn't have to continually work out how big a Eprom does how many pages, a list is below -.
In Dos, one can add files together by typing at a command prompt
Pages Eprom type Size Bytes
1 2716 2k x 8 2048
2 2732 4k x 8 4096
4 2764 8k x 8 8192
8 27c128 16k x 8 16384
16 27c256 32k x 8 32768
32 27c512 64k x 8 65536
64 27c010 128k x 8 131072
128 27c020 256k x 8 262144
256 27c040 512k x 8 524288
512 27c080 1024k x 8 1048576
copy file1.rom + file2.rom + file3.rom .... big_rom.rom
Alternatively one can add a file onto the end of another by going
type added_file.rom >> big_rom.rom
Note the double greater-than symbol - this adds one file to the end of the main file instead of just replacing it. A batch file can be written which tacks on one file after another to create a large file suitable for burning into an Eprom. Make sure that all file sizes are exact even multiples of 2048 bytes or 1 page, otherwise the information shown on the pages may end up looking very different to what was intended.
Now to actually see what it will all look like, we need to get the file into an Eprom, so it can be displayed for errors etc. Downside of this is that if one makes a mistake, it needs to be corrected, the eprom erased and re-programmed again. This leads us on to the next method.
2) The Tandata / Viewdata Method
The Tandata and Sony Viewdata machines allow one to construct and edit pages so you can see what you will actually end up with. Only problem is how to get the data out of the Viewdata and into an Eprom. Well, both these machines have a serial port on them so it's not too difficult to get the data out by connecting the Viewdata to a computer's serial port by a correctly wired lead. The Viewdata to Computer patch lead I have built up is described below.
The Tandata uses 0-5 volt logic levels, so a Maxim Max232 level translator is used to convert the 5 volt logic level to the +/- 12volt RS232 levels used by the computer. The Tandata also has a small problem where the data speed going out is 1200 baud, but the rate going in is only 75 baud. This is a problem if one needs to send data back to the Tandata for editing purposes as all the computers I have come across don't support 75 baud.
Computer Sony Viewdata
9-pin D Socket 25-pin D Plug
Pin Use Use Pin
1 CD -------x---------------------x------ DTR 20
2 RD ------ | ------------------- | ----- TD 2
3 TD ------ | ------------------- | ----- RD 3
4 DTR ----- | ------------------- | ----- CTS 5
5 GND ----- | ------------------- | ----- GND 7
6 DSR ------' '------ CD 8
7 RTS ---.
8 CTS ---'
9 RI -
9-pin D Socket 6-pin Din Plug
Pin Use Use Pin
1 CD ----\ | 16|---x-----x----------- +5V 2
| | | | |
2 RD --- | ---------------|7 10|-- | --- | ---------- Serial Out 3
| | | | |
3 TD --- | ---------------|8 9|-- | --- | ---------- Serial In 5
| | | | |
4 DTR -- | + /--|1 | |10uF | - Tape Out 6
| 10uF==== | | === |
5 GND -- | -\ \--|3 2|---/+ |+ - Tape In 4
| | | | ===10uF
6 DSR ---' | + /--|4 |---\10uF | /- GND 1
| 10uF==== | | === | |
7 RTS ---. | \--|5 | |+ | |
| | | 15 | | | |
8 CTS ---' | \--------/ | | |
| | | | |
9 RI - \-----------------x--------x-----x--------/
One way around this to some extent is to use the modem in the Tandata to receive pages and the Serial port just to send. The modem in the Tandata can be configured for 1200 baud receive, however another modem in the computer is needed and either 2 phone lines to join the 2 together, or a 50 volt supply and some sort of 'mini-exchange' emulator.
I personally use a Sony Viewdata so I don't tend to have this problem. It can be configured for either 1200/75 or 1200/1200 operation by pressing * HELP # then 3, then 2 on the Viewdata keyboard. I have a complete copy of both the Owner's and the Service Manual which comes in handy at times.
On the computer side of things, a dumb terminal with text capture can be used to funnel the incoming data to a file. The serial port needs to be set to 1200 baud, no parity, 7 data bits, and 1 stop bit. Once the file is captured, and upon inspecting the data you will notice that its format doesn't correspond to the format going into an Eprom. To send the captured file back to the Viewdata, one can either send the file back via a terminal program, or from a Dos prompt. At the Dos level, the com port needs to be set up for the right speed etc by using the mode command, i.e. Mode com1:1200,n,8,1 If you are using a different com port on the computer then com2 or com3 can replace the com1 part. Then the file can be sent using the copy command, i.e. Copy sample.tan com1:
The Tandata/Viewdata changes colours, goes into douple height or into graphics mode, sets the background etc, with an ESC character (&1Bh or 27dec) sent followed by an ASCII letter between A and - (&41h to &5Fh or 65 to 95dec). A List of control characters follows below.
The Esc codes are translatable to characters that can be programmed into an Eprom, whereas the Ctrl sequences just control the screen display on the Tandata / Viewdata etc. To convert from the type of files that a Tandata / Viewdata spits out, to the format used in an Eprom, I have written several QBasic programmes to do the conversion. Needs MS-DOS Qbasic in the path to run, and the *.bas file where you want to convert things, until I can iron out that requirement. One is a program that runs and asks what the file name is of the source file, where it's going to (another file or a COM port), and what should be done to it. The second is a mixture of a batch file and QBasic programme which runs at the command line level, and exits back to the command line when it's done. The conversion to / from Tandata / Viewdata to / from Eprom includes all the redundant data in columns 40 to 63, and lines 24 to 31 so it is ready to be burnt straight into an Eprom.
A Esc-A Alpha-numeric Red
B Esc-B Alpha-numeric Green
C Esc-C Alpha-numeric Yellow
D Esc-D Alpha-numeric Blue
E Esc-E Alpha-numeric Magenta
F Esc-F Alpha-numeric Cyan
G Esc-G Alpha-numeric White
H Esc-H Flash on
I Esc-I Steady
J Esc-J End Edit (Box off)
K Esc-K Start Edit (Box on)
L Esc-L Normal Height
M Esc-M Double Height
N Esc-N (Shift Out) - Not used
O Esc-O (Shift In) - Not used
P Esc-P (Mosaic Black)
Q Esc-Q Mosaic Red
R Esc-R Mosaic Green
S Esc-S Mosaic Yellow
T Esc-T Mosaic Blue
U Esc-U Mosaic Magenta
V Esc-V Mosaic Cyan
W Esc-W Mosaic White
X Esc-X Cancel Display
Y Esc-Y Continous Mosaics
Z Esc-Z Separated Mosaics
[ Esc-Esc (Escape - Escape - Not Used)
\ Esc-\ Black Background
] Esc ] New Background
^ Esc-^ Hold Mosaics
_ Esc-_ Release Mosaics
Ctrl-H Backspace (Cursor Left)
Crtl-I Horizontal tab (Cursor Right)
Crtl-J Line Feed (Cursor Down)
Crtl-K Vertical Tab (Cursor Up)
Crtl-L Clear Screen & Home
Ctrl-Q Cursor on
Crtl-T Cursor off
Crtl-Shift-6 Cursor Home
3) The Teletxt6 Computer method
||Page 62 - The status page displayed for 2 seconds when the 70 cm's North Aerial is selected
ZL2TOD has written several versions of this programme, which allows one to write directly into a teletext eprom compatible file. He has most of the bugs knocked out, however some of the foreground/background colour combinations end up a bit strange and the support for flashing text has yet to be added. Teletext ICs also have the ability for a box function, where text can be inserted into a blanked region of the screen with a video signal passing thru behind it. This requires the teletext chipset to be genlocked to the incomming video signal so that the text insertion stays in sync with it. Both the Teletxt6 program and Viewdata / Tandata systems don't provide for this function, although it would be handy to use at times to insert callsigns into outgoing video etc. One concept being considered is using a battery backed up Static Ram to hold the Page, which can then be changed by some circuitry attached so one can update it from a computer somehow. This however, is still very much a work in progress sort of thing, so circuits for this have not been designed as yet.
|Page 63 - The status page displayed for 2 seconds when the 70 cm's South Aerial is selected
||Page 64 - The status page displayed for 2 seconds when the 23 cm Aerial is selected
For a Philips Semiconductors (TM) program that talks to many IIC chips used in TV, click here. (177929 bytes)