ICS2008B
16
ICS2008B
Programming
The ICS2008B is a SMPTE time code input/output device
with a UART which can be used as a MIDI UART or transport
control UART. All of the time critical functions to read and gen-
erate time code are performed by the chip’s hardware, but all of
the intelligence for processing time codes and generating the
time code values are performed via an external processor. This
makes the ICS2008B flexible enough for a broad range of ap-
plications without making the processing requirements on the
host system too great.
Indirect Register Access
Indirect registers are accessed via the SMPTE2 (address) and
SMPTE3 (data) registers. To read an indirect register, the pro-
gram must first write its address to SMPTE2. Then the data is
read from SMPTE3. Writing to an indirect register is similar.
First, the address is written to SMPTE2. Then the data is writ-
ten to SMPTE3.
In order to minimize the number of accesses required to read
or write a block of registers, an auto-increment function is
provided. If the MSB of SMPTE2 is written to a one with the
address, the address is incremented after each read or write
access to SMPTE3. For example, if one wants to read the LTC
Read registers, IR0 to IR7, SMPTE2 is written to a 80h. Then
read SMPTE3 eight times. The first byte read is from IR0 fol-
lowed by IR1, etc.
Interrupt Processing
Interrupts can be generated from five sources, LTC receiver,
LTC generator, video line count, timer and UART. The inter-
rupt status of the first four interrupts, LRI, LXI, VLI and TMI
are in the SMPTE0 register. After this register is read, all four
interrupts are cleared. It is, therefore, necessary to save the
state of the interrupt status and process all active interrupts.
The UART interrupt status is in the UART0 register. The re-
ceive interrupt is cleared by reading the receive data register,
UART1. The transmit interrupt is cleared by writing data to
the transmit data register, UART1.
Reading LTC
When LTC data is received, it is placed into a temporary
buffer and transferred into the LTC read register (IR0 to IR7)
when the last bit of LTC data has been received. It should be
noted that the data is transferred before the SYNC pattern has
been received. Once the data is in the LTC receive buffer, the
LRI bit is set to one in the SMPTE0 register. If the LRIEN bit
(SMPTE0) is set to a one, an interrupt will be generated. The
interrupt is cleared when the SMPTE0 register is read. The
data in the LTC receive buffer remains valid until the next
LTC frame has been completely received.
LTC input data is available in the LTC Read registers after the
last LTC data bit has been received. It is not necessary to wait
for the LTC SYNC pattern to be complete. When LTC read
data is available the LRI bit in SMPTE0 is set to one. If
LRIEN is also set to one, an interrupt is generated. LRI and
the interrupt are cleared by reading SMPTE0. Data will re-
main valid until the last LTC data bit of the next frame has
been received.
The SMPTE1 register contains two status bits which indicate
whether LTC data is being received and if so which direction.
LTCLOCK is set to one when the LTC receiver has received a
valid LTC SYNC pattern and data is still coming in.
CODEDIR indicates the direction of the LTC SYNC pattern.
This is useful to tell whether a tape with LTC is shuttling for-
wards or backwards.
Generating LTC
The LTC generator transfers data from the LTC Write regis-
ters (IR8 to IRF) to the output buffer when the LTC generator
is enabled; LTCEN is set to one. Data transfers for subsequent
LTC frames occur eight bit times before the end of the LTC
frame being output. Remember that a LTC frame ends with a
16 bit SYNC pattern. The LXI interrupt bit in SMPTE0 is set
to one when LTC Write register data is transferred to the out-
put buffer.
A typical program for generating LTC output would first
setup the LTC control registers and the LTC bit time registers.
Then time code data would be written to the LTC Write regis-
ter. Once this setup is done the LTC output would be enabled
by setting LTCEN to a one. LTC output starts when a LTC
SYNC is received. The LTC SYNC source is selected as part
of the setup. While the LTC generator is waiting for SYNC,
the data in the LTC Write register is transferred to the output
buffer. When the transfer is complete the LXI status but is set
to a one. The data for the next LTC output frame can then be
loaded. The LXI status bit will be set to a one after the data
transfer at the end of the first LTC output frame. At this point
the LTC Write register is ready to receive data for a third LTC
output frame.
17
ICS2008B
ICS2008B
Reading VITC
To read VITC code one must first setup IR30 thru IR33. The
VITC Read Line registers, IR30 and IR31, select the video
line from which VITC code is to be read. The MSB is the en-
able for VITC reading. The Read Line field, bits 4 to 0, should
be programmed with the desired line number minus ten. So, if
line 15 is desired, a 5 should be programmed in the Read Line
field. If the read line field is set to 1Fh, this puts the VITC re-
ceiver into a scan mode. In scan mode, the VITC receiver
looks for a valid time code starting at line 10 for VITC1 or
VITC Read Line 1 for VITC2. The scan terminates when a
valid time code is received or the line count reads line 41.
IR32 selects the source and type of video. The GENLOCK
ENABLE bit must be set to a one, and the VTRES bit must be
set to a zero. The Video Interrupt Line register, IR33 should
be set to a line after all VITC read and write lines. This allows
all of the VITC receive and generate operations to be com-
plete before processing VITC.
The VLOCK bit in the SMPTE1 register indicates whether
the ICS2008B is genlocked to the selected video source.
Without the VLOCK status set to one, no VITC read will
occur.
When VLOCK is set to one and the control registers are prop-
erly initialized, VITC data are received a byte at a time from
the video signal and written to the VITC Read registers. At the
end of the VITC data frame the CRC byte is checked, and the
result reported in bit 5 of IR30 and IR31. In addition to the
CRC check, if a full VITC data frame is not received, the
NOCODE bit, bit 6, is set to a one.
Generating VITC
Like reading VITC, IR2E, IR2F, IR32 and IR33 must be setup
in order to generate VITC. The VITC Write Line registers,
IR2E and IR2F, select the video line to which VITC code is to
be written. The MSB is the enable for VITC generation. The
Write Line field, bits 4 to 0, should be programmed with the
desired line number minus ten. So, if line 12 is desired, a 2
should be programmed in the Write Line field. IR32 selects
the source and type of video. The GENLOCK ENABLE bit
must be set to a one, and the VTRES bit must be set to a zero.
The Video Interrupt Line register, IR33 should be set to a line
after all VITC read and write lines. This allows all of the
VITC receive and generate operations to be complete before
processing VITC.
With the VITC generator setup properly, when the selected
video line starts, the VITC data in the VITC Write buffer,
IR20 to IR27, is output. The video line interrupt, VLI in
SMPTE0, is provided to allow ample processing time for
VITC generation.
Burn-in Window
The burn-in window can be placed anywhere on the video
display. The position of the upper left corner of the window is
selected by the values written in IR28 and IR29. IR28 con-
trols the horizontal position. Values from 00h to 71h put the
corner in the first half of a video line (starting from the falling
edge of HSYNC). Values from 80h to F1h put the corner in
the second half of a video line. Any other values will not dis-
play the window. Care should be taken not to choose values
which put the window in any part of the blanking area. IR29
controls the vertical position. The value written here is the
video line number divided by 2.
IR3E controls the burn-in window character attributes. It con-
trols the size, normal and large, and the color of the characters
and background.
IR2A to IR2D, are the registers which control the characters
displayed in the burn-in window.
UART
The UART is accessed via two directly addressable registers,
the command/status register and the data register. On reset,
the UART is not operational. The command register must be
initialized before the UART will function.
Band rates are controlled in UART0 bits 1 and 0. 31.25 kHz
supports MIDI communications. 9600 Hz and 38.4 kHz sup-
port most serial VTR transport controls.
The UART has a four deep FIFO for its receive buffer. This
allows for relaxed interrupt latency requirements. In the case
of MIDI bit rates, the receiver will not overflow even if the
interrupt response delay is 1msec.
The UART’s transmitter has a buffer in front of the output
shift register so that a byte can be loaded and waiting for the
output shifter to be empty.
ICS2008B
18
ICS2008B
PLCC 44-PIN
PACKAGE
All Dimensions in Inches
LOBMYSLOBMYS
LOBMYS
LOBMYSLOBMYS
sehcnInIstinUsehcnInIstinU
sehcnInIstinU
sehcnInIstinUsehcnInIstinU
NIMNIM
NIM
NI
MNIMXAMXAM
XAM
XAMXAM
AA
A
AA561.081.
1A1A
1A
1A1A090.021.
2A2A
2A
2A2A260.380.
bb
b
bb310.120.
cc
c
cc5700.5210.
E/DE/D
E/D
E/DE/D586.596.
1E/1
D1E/1D
1E/1D
1E/1D1E/1D056.656.
2E/2D2E/2D
2E/2D
2E/2D2E/2D192.913.
NN
N
NNsnip44

ICS2008BY-10LFT

Mfr. #:
Manufacturer:
Description:
IC TIME CODE RCVR/GEN 44-TQFP
Lifecycle:
New from this manufacturer.
Delivery:
DHL FedEx Ups TNT EMS
Payment:
T/T Paypal Visa MoneyGram Western Union

Products related to this Datasheet