These were another S4C auction find - a friend picked up a box of five, and gave me two to play with.
They were built in the early 2000s by Broadcast Projects Research Ltd., for ITFC (Independent Television Facilities Centre). ITFC was ITV's subtitling and post-production facility, and was sold to Elektrofilm (part of Medici Group) in 2007, and then to Deluxe Digital in August 2010 after going into administration in June of that year.
The BPR product page on the SID has been archived by the Internet Archive.
Build quality is best described as “rough and ready”. The PCBs are covered in bodge-wires, added-on ICs and black epoxy. Through-hole capacitors are soldered onto pads which were clearly intended for surface-mount parts. The Teletext IC (and only the Teletext IC) in one of my units had had its label removed with sandpaper.
The power supply is a Friwo FW7400/10 plug-pack, which is held in place with double-sided foam tape. These had failed in both of my units.
Despite all this … they work, and they're quite hackable. They're also quite useful as standard definition 270M SDI-to-PAL converters.
There are two DIP switches on the rear panel:
I modified my unit to fit an Arduino Nano (16MHz, 5V version) in place of the Teletext Controller PIC (see below). The following connections need to be made:
Arduino pin | Connect to |
---|---|
+5V | +5V (Teletext PIC pin 1) |
GND | 0V (Teletext PIC pin 8) |
A5 | I2C SCL (Teletext PIC pin 7) |
A4 | I2C SDA (Teletext PIC pin 6) |
A1 | DIP switch: BOX/#OFF (Teletext PIC pin 2) |
A0 | DIP switch: 888/#889 (Teletext PIC pin 3) |
This adds a lot of flexibility in terms of what the unit can do. I programmed the Arduino to replace the on-board PIC, but also added an external RS232 serial port and a command-line interface. This means I can use the BPL receiver as a generic Teletext receiver, display, and overlay generator – making it useful for testing Teletext tools like VBIT2 and my various Databridges.
The architecture is fairly straightforward, and is covered in a block diagram on the top lid of the Teletext monitor.
SDI input. The SDI input takes priority if it is present. The Gennum SDI receiver converts this from SDI to digital video, which is then converted to RGB analog video by the ADV7171.
PAL input. The PAL input goes into the TDA8310A PIP processor and the STV5347 Teletext decoder. The STV5347 generates Teletext graphics, which are overlaid onto the incoming video by the TDA8310A.
Y, R-Y and B-Y outputs. The Y output is produced by the TDA8310A. A pair of Elantec EL5146 ICs produce R-Y and B-Y signals from the TDA8310A's outputs.
PAL output. The RGB outputs from the TDA8310A are passed into the AD725AR PAL encoder, which produces the colour PAL video output.
Two PIC microcontrollers configure the ICs – one configures the STV5346 Teletext decoder, while the other configures the ADV7171.
Function | Pin | Pin | Function | |
---|---|---|---|---|
Vdd | 1 | –\_/– | 8 | Vss |
888/!809 | 2 | 7 | SCL | |
BOX/!OFF | 3 | 6 | SDA | |
4 | 5 |
The Teletext PIC is code protected… not that it does anything particularly interesting.
On boot, with page 888 and BOX selected, the PIC waits 128ms from power on. After that delay, the following I2C transactions are sent at an I2C clock rate of around 34kHz:
W 22 00 01 84 00 18 18 18 ; R0/Mode 0 = 0x01 ; Select Register 11B ; ODD/EVEN is EVEN signal output ; Rolling Header enabled ; PLL locked to line frequency ; Packet X/24 stored to chapter 4 to 7/row 20 ; ; R1/Mode 1 = 0x84 ; 312.5/312.5 line MIX - mode with interlace ; TCS mode: pin 5 is !TCS ; Field flyback mode ; Ghost row disabled ; Acquisition on ; Receive 8 bits without parity ; ; R2/Page Req Addr = 0x00 ; Address 0 ; ; R3/Page Req Data = 0x18 0x18 0x18 ; All bytes are do-care, request page 888 ; ; ;;;;;;;;;;;;;;;; ; 32ms delay here ; ;;;;;;;;;;;;;;;; W 22 05 47 47 07 ; R5/Display Control for Normal Op ; Picture on - both inside and outside the BOX ; Text on - only inside the box ; Contrast reduction on ; Background on - only inside the box ; ; R6/Display Control for Newsflash ; Picture on - both inside and outside the BOX ; Text on - only inside the box ; Contrast reduction on ; Background on - only inside the box ; ; R7/Display Mode ; Boxing on, rows 0 to 24 ; Top/bottom double-height off ; Conceal ; Cursor off ; Status row is at the bottom ;
With the BOX switch set to “OFF”, the second write command changes to:
W 22 05 17 17 07 ; R5/Display Control for Normal Op ; Picture on - both inside and outside the BOX ; Text on - only inside the box ; Contrast reduction off inside the box, on outside ; Background off ; ; R6/Display Control for Newsflash ; Picture on - both inside and outside the BOX ; Text on - only inside the box ; Contrast reduction off inside the box, on outside ; Background off ; ; R7/Display Mode ; Boxing on, rows 0 to 24 ; Top/bottom double-height off ; Conceal ; Cursor off ; Status row is at the bottom ;
If the Page switch is set to 889, there is an extra 32ms delay, then another packet is sent:
; ;;;;;;;;;;;;;;;; ; 32ms delay here ; ;;;;;;;;;;;;;;;; W 22 02 00 18 18 19 ; R2/Page Req Addr = 0x00 ; Address 0 ; ; R3/Page Req Data = 0x18 0x18 0x19 ; All bytes are do-care, request page 889 ;
Function | Pin | Pin | Function | |
---|---|---|---|---|
Vdd | 1 | –\_/– | 8 | Vss |
2 | 7 | ADV SCLOCK | ||
3 | 6 | ADV SDATA | ||
ADV !RESET | 4 | 5 | Vss |
I haven't tried sniffing the ADV7171 data bus to see what this is sending.
The front panel is held on with three black countersunk M2.5×5 screws.
The base and lid are held on with four silver countersunk M3x6 screws.
The rear panel is held on with two pan-head M3x10 screws.
To disassemble – remove all the screws, and pull the PCB and tray forwards. The lid slides all the way back, then the back panel lifts through the slot in the lid. Reassembly is the reverse of disassembly, but a bit more fiddly.