<41/ <162 -914&6'.'8+5+10%10641..'49+6*15& 241&7%652'%+(+%#6+10 2568% <K.1)914.&9+&'*'#&37#46'45 '*#/+.610#8'07' %#/2$'..%# 6'.'2*10' (#: *662999<+.1)%1/ &QEWOGPV&KUENCKOGT lD[<K.1)+PE#NNTKIJVUTGUGTXGF+PHQTOCVKQPKPVJKURWDNKECVKQPEQPEGTPKPIVJGFGXKEGUCRRNKECVKQPUQT VGEJPQNQI[FGUETKDGFKUKPVGPFGFVQUWIIGUVRQUUKDNGWUGUCPFOC[DGUWRGTUGFGF<K.1)+0%&1'5016 #557/'.+#$+.+6;(14142418+&'#4'24'5'06#6+101(#%%74#%;1(6*'+0(14/#6+10&'8+%'5 146'%*01.1);&'5%4+$'&+06*+5&1%7/'06<K.1)#.51&1'5016#557/'.+#$+.+6;(14 +06'..'%67#.2412'46;+0(4+0)'/'064'.#6'&+0#0;/#00'46175'1(+0(14/#6+10&'8+%'5 146'%*01.1);&'5%4+$'&*'4'+01416*'49+5''ZEGRVYKVJVJGGZRTGUUYTKVVGPCRRTQXCN<K.1)WUG QHKPHQTOCVKQPFGXKEGUQTVGEJPQNQI[CUETKVKECNEQORQPGPVUQHNKHGUWRRQTVU[UVGOUKUPQVCWVJQTK\GF0Q NKEGPUGUQTQVJGTTKIJVUCTGEQPXG[GFKORNKEKVN[QTQVJGTYKUGD[VJKUFQEWOGPVWPFGTCP[KPVGNNGEVWCNRTQRGTV[ TKIJVU <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& 6CDNGQH%QPVGPVU 1XGTXKGY $NQEM&KCITCO 2KP&GUETKRVKQP 1RGTCVKQP %27&GUETKRVKQPU /GOQT[ 41/CPF4#/ %NQEM%KTEWKV&GUETKRVKQP 4GUGV%QPFKVKQPU 2QYGT/CPCIGOGPV +12QTV%QPHKIWTCVKQPU +PVGTTWRVU 6KOGTU #&% 2WNUG9KFVJ/QFWNCVKQP +%+PVGTHCEG 1P5ETGGP&KURNC[ 15& %WTUQT %QNQT2CNGVVG#UUKIPOGPV 1VJGT(WPEVKQPU 4GIKUVGT)TQWRU 4GIKUVGT&GUETKRVKQP $CPM%QPVTQN4GIKUVGTU $CPM %QPVTQN4GIKUVGTU $CPM 29/4GIKUVGTU $CPM 1P5ETGGP&KURNC[=15&?4GIKUVGTU +PUVTWEVKQP5GV +PUVTWEVKQP5WOOCT[ +PUVTWEVKQP1RGTCPFU +PUVTWEVKQP(QTOCV +PUVTWEVKQP$KV%QFGU +PUVTWEVKQP(QTOCV'ZCORNGU +PUVTWEVKQP6KOKPI +PUVTWEVKQP1R%QFGU 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& 'NGEVTKECN%JCTCEVGTKUVKEU &%2GTKRJGTCNU #%%JCTCEVGTKUVKEU #0#.1)4)$ 5[UVGO&GUKIP%QPUKFGTCVKQPU 2CEMCIKPI 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& .KUVQH(KIWTGU (KIWTG %QFG&GXGNQROGPV'PXKTQPOGPV (KIWTG $NQEM&KCITCO (KIWTG 2KP5&+22KPQWV (KIWTG #44GIKUVGT(QTOCV (KIWTG 4#/41/CPF2QKPVGT#TEJKVGEVWTG (KIWTG 41//CR (KIWTG 4#/#NNQECVKQP (KIWTG %NQEM5YKVEJKPI$NQEM&KCITCO (KIWTG -*\1UEKNNCVQT4GEQOOGPFGF%KTEWKV (KIWTG $KFKTGEVKQPCN2QTV2KPU (KIWTG $KFKTGEVKQPCN2KPU/WNVKRNGZGFYKVJ+%2QTV (KIWTG $KFKTGEVKQPCN2KPU/WNVKRNGZGFYKVJ#&%+PRWVU (KIWTG +4%CRVWTG4GIKUVGT$NQEM&KCITCO (KIWTG #&%$NQEM&KCITCO (KIWTG #&%&CVC2CEMKPI (KIWTG /CUVGT/QFG (KIWTG 5NCXG/QFG (KIWTG &CVC(NQY (KIWTG $NCPMCPF8881WVRWVUKP&KIKVCN/QFG (KIWTG 88CPF81WVRWVUKP#PCNQI 2CNGVVG/QFG (KIWTG %JCTCEVGT'ZRCPUKQP (KIWTG 6CDNG5GVVKPIU (KIWTG %WTUQT (KIWTG 2TQITCOOCDNG2CNGVVG%QPVTQNCV#44GIKUVGT (KIWTG +4%CRVWTG4GIKUVGT+PRWV (KIWTG .QQR(KNVGT2KP%QPHKIWTCVKQP (KIWTG 2KRGNKPG'ZGEWVKQP (KIWTG 4GEQOOGPFGF#RRNKECVKQP5EJGOCVKEU (KIWTG 5[UVGO$NQEM&KCITCO (KIWTG 2KP5&+22CEMCIG&KOGPUKQPU 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& .KUVQH6CDNGU 6CDNG <QT<2KP&GUETKRVKQP 6CDNG +PVGTPCN4GIKUVGTU 6CDNG 5VCVWU4GIKUVGT 6CDNG 42.&GUETKRVKQP 6CDNG #FFKVKQPCN%QPVTQN4GIKUVGTU 6CDNG 4GUGV%QPFKVKQPU 6CDNG #&%+PRWVU6[RKECN4CPIG 6CDNG /CUVGT+%$WU$KV4CVGU 6CDNG /CUVGT+%$WU+PVGTHCEG%QOOCPFU 6CDNG 5NCXG+%$WU+PVGTHCEG%QOOCPFU 6CDNG %JCTCEVGT'ZRCPUKQP4GIKUVGT 6CDNG #VVTKDWVG#UUKIPOGPV 6CDNG %WTUQT2CTCOGVGTU 6CDNG /GOQT[#NNQECVKQPHQT%WTUQT U$KVOCR 6CDNG (KZGF2CNGVVG%QNQT#UUKIPOGPV %QNQTKU$NCEM%QNQTKU9JKVG 6CDNG 4 GF 5GVVKPIU 6CDNG 4GIKUVGT5WOOCT[ 6CDNG $CPM#UUKIPOGPVU 6CDNG 4GIKUVGT4 %WTUQT2CNGVVG 6CDNG 4GIKUVGT4 2..(TGSWGPE[&CVC4GIKUVGT 6CDNG 4GIKUVGT4 +%+PVGTHCEG4GIKUVGT 6CDNG 4GIKUVGT4 2QTV&CVC4GIKUVGT 6CDNG 4GIKUVGT4 2QTV&CVC4GIKUVGT 6CDNG 4GIKUVGT4 2QTV&KTGEVKQP4GIKUVGT 6CDNG 4GIKUVGT4 2QTV&KTGEVKQP4GIKUVGT 6CDNG 4GIKUVGT4 %NCOR2QUKVKQP4GIKUVGT 6CDNG 4GIKUVGT4 5RGGF%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 9&65612 YTKVGQPN[CPF $KV%QWPVGT TGCFQPN[%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 5VCPFCTF%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 #&%%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 6KOGT%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 %NQEM5YKVEJ%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 +PVGTTWRVU9&65/4%QPVTQN4GIKUVGT 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& 6CDNG +PVGTTWRV2TKQTKV[ 6CDNG 4GIKUVGT 4GIKUVGT4 4 29/ 4GIKUVGTU 6CDNG 4GIKUVGT4 5JCFQY%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 %)41/1HHUGV4GIKUVGT 6CDNG 4GIKUVGT 4GIKUVGT4GCF1RGTCVKQP 6CDNG 4GIKUVGT 4GIKUVGT9TKVG1RGTCVKQP4 4 5JKHV4GIKUVGTU 6CDNG 4GIKUVGT 6CDNG 4GIKUVGT4GCF1RGTCVKQP4 #VVTKDWVGU4GIKUVGT 6CDNG 4GIKUVGT4 9TKVG1RGTCVKQP#VVTKDWVG&CVC4GIKUVGT 6CDNG &KURNC[%JCTCEVGT(QTOCVHQT#VVTKDWVG&CVC4GIKUVGT4 6CDNG %QPVTQN%JCTCEVGT(QTOCV 6CDNG &KURNC[%JCTCEVGT(QTOCV 6CDNG %QPVTQN%JCTCEVGT(QTOCV#VVTKDWVG&CVC4GIKUVGT4 %%&/QFG9TKVG1RGTCVKQP 6CDNG 4GIKUVGT 4 #VVTKDWVGU4GIKUVGT9TKVG1RGTCVKQP 4 15&%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 %CRVWTG4GIKUVGT4GCF1RGTCVKQP 6CDNG 4GIKUVGT4 2CNGVVG%QPVTQN4GIKUVGT 6CDNG 4GIKUVGT4 1WVRWV2CNGVVG%QPVTQN4GIKUVGT 6CDNG +PUVTWEVKQP(QTOCV/PGOQPKEU 6CDNG #EEWOWNCVQT/QFKHKECVKQP+PUVTWEVKQPU 6CDNG #TKVJOGVKE+PUVTWEVKQPU 6CDNG $KV/CPKRWNCVKQP+PUVTWEVKQPU 6CDNG .QCF+PUVTWEVKQPU 6CDNG .QIKECN+PUVTWEVKQPU 6CDNG 2TQITCO%QPVTQN+PUVTWEVKQPU 6CDNG 4QVCVGCPF5JKHV+PUVTWEVKQPU 6CDNG +PUVTWEVKQP1RGTCPF5WOOCT[ 6CDNG +PUVTWEVKQP/PGOQPKEU1RGTCPFU 6CDNG %QPFKVKQP%QFG$KVU 6CDNG #EEWOWNCVQT/QFKHKECVKQP$KVU 6CDNG (NCI/QFKHKECVKQP$KVU 6CDNG 4GIKUVGT2QKPVGT&CVC2QKPVGT$KVU 6CDNG 4GIKUVGT$KVU 6CDNG )GPGTCN+PUVTWEVKQP(QTOCV 6CDNG #EEWOWNCVQT/QFKHKECVKQP(QTOCV 6CDNG (NCI/QFKHKECVKQP(QTOCV 6CDNG &KTGEV+PVGTPCN#FFTGUUKPI(QTOCV 6CDNG 5JQTV+OOGFKCVG#FFTGUUKPI(QTOCV 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& 6CDNG .QPI+OOGFKCVG#FFTGUUKPI(QTOCV 6CDNG ,WOR%CNN(QTOCV 6CDNG +PUVTWEVKQP1R%QFGU 6CDNG +PUVTWEVKQP&GUETKRVKQPU 6CDNG +PUVTWEVKQP(QTOCV/PGOQPKEU 6CDNG #DUQNWVG/CZKOWOCPF/KPKOWO4CVKPIU 6CDNG &%%JCTCEVGTKUVKEU 6CDNG 88CPF8 4)$#PCNQI1WVRWV 6CDNG #&%5OCNN4CPIG 6CDNG #&%#&%(WNN4CPIG 6CDNG #%%JCTCEVGTKUVKEU 6CDNG 4)$8QNVCIG5RGEKHKECVKQP 6CDNG 4)$6KOG5RGEKHKECVKQP 6CDNG %QPVTQNNKPI&KOGPUKQPU 2568% <41/CPF<162 -9QTF6GNGXKUKQP%QPVTQNNGTYKVJ15& 2568% Z90356 ROM and Z90351 OTP 64 KWord Television Controller with OSD 2YHUYLHZ The Z90356 and Z90351 are the ROM and OTP versions of a Television Controller with On-Screen Display (OSD) that contains 64 KWords of program memory and 1K words of RAM. • The Z90351 is the one-time programmable (OTP) controller used to develop code and prototypes for specific television applications or initial limited production. Program ROM and Character Generation ROM (CGROM) in the Z90351 are both programmable. The Z90351 requires ZiLOG’s Z90369ZEM Emulator with its proprietary ZiLOG Developmental Studio (ZDS) software for programing. To view code effects, the emulator uses a ZOSD board that connects directly to a television screen. Refer to Figure 1. Z90369 In-Circuit Emulation Kit ZOSD Board Z90359 Z90351 Develop code on PC Download Code to Z90359 ICE chip Converts to Video Display Review Code on TV Display Program the Z90351 OTP )LJXUH &RGH'HYHORSPHQW(QYLURQPHQW =L/2*:25/':,'(+($'48$57(56 (+$0,/721$9(18( &$03%(//&$ 7(/(3+21( )$; +773:::=,/2*&20 =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' • The Z90356 incorporates the ROM code developed by the customer with the Z90351. Customer code is masked into both program ROM and CGROM. The Z90356 Television Controller with OSD is based on ZiLOG’s Z89C00 RISC processor core. The Z89C00 is a second-generation, 16-bit, fractional, two’s complement CMOS Digital Signal Processor (DSP). Most instructions are accomplished in a single clock cycle. This processor features a 24-bit Arithmetic Logic Unit (ALU) and a 24-bit Accumulator. The processor also contains a six-level stack and three vectored interrupts. 0QVG The Z89C00 multiplier is disabled in the Z90356 controller. The Z90356 contains 64 KWords of program ROM and 1 KWord of on-chip data RAM. Program ROM space can hold an unlimited number of characters with a 16x16, 16x18, and 16x20 programmable matrix in relocated Character Generation ROM (CGROM), which is only restricted by the available ROM. In addition, the Z90356 contains four external register banks with eight registers each. Additional Control Registers (AR) are available to control new peripheral blocks like palette banks and memory management. An internal 24-MHz/2 system clock has a Phase Lock Loop (PLL) driven by an external 32.768-KHz crystal. A six-channel, 4-bit Analog to Digital Converter (ADC) supports the following: • Analog front panel control • Audio level input • Vertical Blanking Interval (VBI) data capture Six Pulse Width Modulator (PWM) outputs allow low-cost digital-to-analog conversion (DAC). The PWMs have 8-bit resolution to control video and audio attributes. A Master/Slave I2C (Inter Integrated Circuit) bus interface provides serial system interconnect to common peripheral functions. Twenty-five programmable I/O pins provide flexibility for other digital input/output functions. An IR (InfraRed) remote capture register facilitates reliable remote data capture. On-chip Horizontal Synchronization (HSYNC) and Vertical Synchronization (VSYNC) circuits generate a video time base (typically used for VCR and set-top applications) in the absence of an available video signal. Micro-programmable OSD generation logic provides flexibility to tailor OSD features and functions. In addition to normal OSD functions, Closed Caption is supported in accordance with FCC Report and Order on GEN Docket No. 91-1, dated April 12, 1991. Expanded Data Service (XDS) capability is supported as well. The Z90356 is packaged in a 52-pin SDIP package. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Figure 2 is a block diagram of the internal structure of the chip. Figure 3 illustrates the pin locations, and Table 1 describes the function of each pin. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' %ORFN'LDJUDP 3:0 3:0 3:0 3:0 3:0 3:0 3:0 ,5 &$3785( &2817(5 ,5,1 $'& $'& $'& $'& $'& $'& $'& 3RUW 3RUW 3RUW 3RUW 3257 3257 3257 3257 3257 3257 3257 3257 3257 3257 3257 3257$ 3257% 3257& 3257' 3257( 3257) &21752/ ;7$/ ;7$/ /3) +6<1& 96<1& 4'5'6 ,& , &0& ,&0' ,&0& ,&0' ,&6& ,&6' 5HJ$GGU'DWD &38 5$0 $GGUHVV .:RUG 'DWD )LJXUH 3679& 3257 3257 3257 3257 3257 3257 3257 3257 3257 3257 =& &25( 520$GGU 520'DWD 26' 9 9 9 9%/$1. 69%/$1. 2QTV 2QTV 2QTV 2QTV 2QTV( 520 . :RUGV %ORFN'LDJUDP =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 3LQ'HVFULSWLRQ 3RUW6&/. ,5,1 3RUW& 3RUW% 3RUW$ 3RUW 3RUW' 3RUW&6<1& 3RUW&175 3RUW 3RUW,&6& 3RUW,&6' &9,$'& /3) $*1' $'& 3RUW$'& 3RUW$'& 3RUW$'& 3RUW$'& $*1' $9&& 3RUW)69%/$1. 9% 9* 95 Z90356 or Z90351 Top View )LJXUH 3LQ6',33LQRXW 7DEOH =RU=3LQ'HVFULSWLRQ 3RUW% 3RUW% 3RUW* 3RUW* 3RUW5 3RUW5 3:0+6<1& 3:0 3:0 3:0 3:0 3:0 $*1' 9&& *1' ;7$/ ;7$/ 5(6(7 ,&0& ,&0' 3RUW( 3RUW,&0& 3RUW,&0' 96<1& +6<1& 9%/$1. 6\PERO 3LQ )XQFWLRQ 'LUHFWLRQ 36&/. 3RULQWHUQDOSURFHVV6&/. ,2 ,5,1 ,QIUDUHGUHPRWHFDSWXUHLQSXW , 3& 3RUWELW& ,2 3% 3RUWELW% ,2 3$ 3RUWELW$ ,2 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH =RU=3LQ'HVFULSWLRQ &RQWLQXHG 6\PERO 3LQ )XQFWLRQ 'LUHFWLRQ 3 3RUWELW ,2 3' 3RUWELW' ,2 3&6<1& 3RUFRPSRVLWHV\QFRXWSXW ,2 3&175 3RUFRXQWHULQSXW ,2 3 ,2 3 3, &6& 3RUVODYH, &FORFN,2 ,2 3,&6' 3RUVODYH,&GDWD,2 ,2 &9,$'& $'&LQSXWRU&RPSRVLWH9LGHR,QSXW $, /3) /RRSILOWHU $,$2 $*1' $QDORJJURXQG 3RZHU $'& $'&LQSXW , 3$'& 3RU$'&LQSXW ,2RU$, 3$'& 3RU$'&LQSXW ,2RU$, 3$'& 3RU$'&LQSXW ,2RU$, 3$'& 3RU$'&LQSXW ,2RU$, $*1' $QDORJJURXQG 3RZHU $9&& $QDORJ9 3RZHU 3)69%/$1. 3)RU26'VHPLWUDQVSDUHQF\RXWSXW ,2 9% 26'YLGHRRXWSXWWRGULYH%OXH 2$2 9* 26'YLGHRRXWSXWWRGULYH*UHHQ 2$2 95 26'YLGHRRXWSXWWRGULYH5HG 2$2 9%/$1. 26'RYHUOD\RXWSXW 2 +6<1& +RUL]RQWDOV\QF ,2 96<1& 9HUWLFDOV\QF ,2 3,&0' 3RUPDVWHU,&GDWD,2 ,2 3, &0& 3RUPDVWHU, &FORFN,2 ,2 3( 3RUWELW( ,2 , &0' 0DVWHU, &GDWD,2 ,2 ,&0& 0DVWHU,&FORFN,2 ,2 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH =RU=3LQ'HVFULSWLRQ &RQWLQXHG 6\PERO 3LQ )XQFWLRQ 'LUHFWLRQ 5(6(7 5HVHW , ;7$/ &U\VWDORVFLOODWRULQSXW $, ;7$/ &U\VWDORVFLOODWRURXWSXW $2 *1' 'LJLWDOJURXQG 3RZHU 9&& 'LJLWDO9FF 3RZHU $*1' $QDORJJURXQG 3RZHU 3:0 ELW3:0RXWSXW 2 3:0 ELW3:0RXWSXW 2 3:0 ELW3:0RXWSXW 2 3:0 ELW3:0RXWSXW 2 3:0 ELW3:0RXWSXW 2 3:0 ELW3:0RXWSXW+6<1& ,2 35 3RURXWSXWRI5*%PDWUL[ ,2 35 3RURXWSXWRI5*%PDWUL[ ,2 3* 3RURXWSXWRI5*%PDWUL[ ,2 3* 3RURXWSXWRI5*%PDWUL[ ,2 3% 3RURXWSXWRI5*%PDWUL[ ,2 3% 3RURXWSXWRI5*%PDWUL[ ,2 2SHUDWLRQ &38'HVFULSWLRQV The Z89C00 core is a high-performance DSP that has a modified Harvard-type architecture with separate program and data memories. The design has been optimized for processing power and silicon space. The Z89C00 used in the Z90356 device has been modified. The multiplier is disabled and is not accessible. However, the X and Y registers in the multiplier are still available and can be used as general-purpose registers. Refer to ZiLOG’s Z89C00 documentation. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $/8 The 24-bit ALU has two input ports, one of which is connected to the output of the 24-bit Accumulator. The other input is connected to the 24-bit P-Bus; the upper 16 bits are connected to the 16-bit D-Bus. ,QVWUXFWLRQ7LPLQJ Several instructions are executed in one machine cycle. Long immediate instructions and Jump or Call instructions are executed in two machine cycles. When the program memory is referenced in internal RAM indirect mode, it requires three machine cycles. An additional machine cycle is required if the PC is selected as the destination of a data transfer instruction. This only occurs with a register indirect branch instruction. +DUGZDUH6WDFN A six-level hardware stack is connected to the D-Bus to hold subroutine return addresses or data. The CALL instruction pushes PC+2 onto the stack. The RET instruction returns the contents of the stack to the PC. &385HJLVWHUV The Z90356 has 11 physical internal registers and four banks of eight external registers. In addition, it has nine virtual registers. The 11 internal registers are defined in Table 2, and the status register is defined in Table 3. ,QWHUQDO5HJLVWHUV 7DEOH ,QWHUQDO5HJLVWHUV 5HJLVWHU 5HJLVWHU'HILQLWLRQ ; ;ELWV < <ELWV $ $FFXPXODWRUELWV 65 6WDWXV5HJLVWHUELWV 3QE 6L[5$0$GGUHVV3RLQWHUVELWVHDFK 3& 3URJUDP&RXQWHUELWV 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 6WDWXV5HJLVWHU %LW)LHOG %LW3RVLWLRQ 5: 'HVFULSWLRQ 1 5 $/81HJDWLYH 29 5 $/82YHUIORZ = 5 $/8=HUR / 5 &DUU\ 5HVHUYHG 5 5HVHUYHG 5HVHUYHG 5 5HVHUYHG 5HVHUYHG 5 5HVHUYHG 23 5: 2YHUIORZ3URWHFWLRQ ,( 5: ,QWHUUXSW(QDEOH 5HJLVWHU%DQN6HOHFWRU 5: 5HJLVWHU%DQN 5HJLVWHU%DQN 5HJLVWHU%DQN 5HJLVWHU%DQN 6)' 5: ³6KRUW)RUP'LUHFW´%LWV 53/ 5: 5$03RLQWHU/RRS6L]H X and Y are 16-bit general purpose registers. A is a 24-bit Accumulator. The output of the ALU is sent to this register. When 16-bit data is transferred into this register, it goes into the 16 MSBs and the least significant eight bits are set to zero. Only the upper 16 bits are transferred to the destination register when the Accumulator is selected as a source register in transfer instruction. SR is the Status Register that contains the ALU status and the control bits listed in Table 3. The status register is always read in its entirety. S15-S12 are set/reset by the hardware and can only be read through software. They are set or reset by the ALU after an operation. S8-S0 can be written by software. S8, if 0 (reset), allows the hardware to overflow. If S8 is set, the hardware clamps at maximum positive or negative values instead of overflowing. S7 enables interrupts. S6–S5 are used for “short form direct” addresses, which are described below. The definitions of S2-S0 are listed in Table 4. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 53/'HVFULSWLRQ 6 6 6 /RRS6L]H Pn:b are the pointer registers for accessing data RAM. (n= 0, 1, 2 refer to the pointer number) (b = 0, 1 refers to RAM bank 0 or 1). They can be read from or written to directly and can point directly to locations in data RAM or indirectly to Program Memory. PC is the Program Counter. When this register is assigned as a destination register, one NOP machine cycle is automatically added to adjust the pipeline timing. ([WHUQDO5HJLVWHUV The Z90356 module is capable of accessing eight external registers directly using only the three external register address signals that are normally available. Two user bits (Status register S6-S5) are combined with the register address signals to provide the ability to address four banks of eight registers each. The registers most critical for speed are located together in Bank 3. In this specification, all external registers are referred to as: RX(Y)<Z> where: X is a register number within a register bank; Y is a bank number; and Z is a bit field number An external register bank can be selected by setting bits 6 and 5 in the status register to define the bank, then specifying the address of the register on the external register address bus. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' External registers reside on the chip and are used to control the operation of all the peripheral modules in the device. By reading or writing to the fields in the external registers, the user can interact with the peripheral devices on the chip. 9LUWXDO5HJLVWHUV BUS is a read-only register that, when accessed, returns the contents of the D-Bus. It is a virtual register. (Physical RAM does not exist on the chip.) Dn:b These eight data pointers refer to possible locations in RAM that can be used as pointers to locations in program memory. The programmer decides which location to choose two bits from in the status register and which two bits in the operand. This means only the lower 16 possible locations in RAM can be specified. At any one time there are eight usable pointers, four per bank, and the four pointers are in consecutive locations in RAM. For example, if S3/S4 = 01 in the status register, then D0:0/D1:0/D2:0/D3:0 refers to locations 4/5/6/7 in RAM bank 0. 0QVG When the data pointers are being written to, a number is actually being loaded to Data RAM, so they can be used as a limited method for writing to RAM. $GGLWLRQDO&RQWURO5HJLVWHUV$5 Additional Control Registers (AR) control new peripheral blocks like palette banks and memory management. To activate ARs, R0(1)<b> must be set to “1.” ARs can be disabled by setting R0(1)<b> = 0, (POR) for software backward compatibility or if access to RAM location 1FFh is required. The 128 eight-bit control registers (referred as AR or ARx<y:z>) use RAM-mapped I/O access. Location 1FFh in RAM is used to address up to 128 byte-width ARs. The AR number and written data are encoded into the data field as illustrated in Figure 4. ':% )LJXUH $5QXPEHU 'DWD $55HJLVWHU)RUPDW When writing to address 1FFh, the Data Write Bit (DWB) and AR number are latched, depending on whether the DWB data field is either written to the selected port (latched) or discarded (not latched). The AR number and corresponding data are read after reading from the previously latched DWB address 1FFh. To write to the AR, the data must be written to address 1FFh; DWB must be set to “1,” the port number must be specified in bits 8–14, and actual data must be specified in bits 0–7. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH LD A, #(%8000 + 29*256 + %57); write 57 (hex) into the AR29 LD %1FF, A; 0QVG The DWB and port number are latched for further reading if necessary. To read from the AR, the address must be previously latched by writing it to address 1FFh with DWB set to “0.” Bits 0–7 have no meaning. Because the bits are not going to be written in this mode, only the port number is latched. ([DPSOH LD LD LD A, #%1E00; latch AR30, data is not written %1FF, A; A, %1FF; read from AR30-%1EXX, where XX is current content At least one cycle delay (NOP) is required between two consecutive accesses to the AR. If access is performed by a two-cycle instruction, no delay is necessary. External memory must exhibit access times of less than 60 ns. Table 5 lists the additional control registers. 7DEOH $GGLWLRQDO&RQWURO5HJLVWHUV %LW SRVLWLRQ $5 1DPH 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% 3679& 'DWD )XQFWLRQ =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH $GGLWLRQDO&RQWURO5HJLVWHUV &RQWLQXHG %LW SRVLWLRQ $5 1DPH 'DWD 3DOHWWHB 76------ ' --543210 '' 5HVHUYHG 3DOHWWH&RORU²55**%% ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± 3DOHWWHB 76543210 '' 6DPHDV$5±IRU3DOHWWH ± )XQFWLRQ 5HVHUYHG 3J/RFDWLRQ 7------- -6------ --543210 '' 3DJHLVORFDWHGLQWHUQDOO\±325 3DJHLVORFDWHGH[WHUQDOO\ ,QWHUQDO520LVHQDEOHG±325 ,QWHUQDO520LVGLVDEOHGORZSRZHU FRQVXPSWLRQ 3DJH²H[WHUQDOSK\VLFDOSDJHQXPEHU 3J/RFDWLRQ 7------- -6------ --543210 '' 3DJHLVORFDWHGLQWHUQDOO\±325 3DJHLVORFDWHGH[WHUQDOO\ 5HVHUYHG 3DJH²H[WHUQDOSK\VLFDOSDJHQXPEHU 3J/RFDWLRQ 76543210 '' 6DPHDVDERYHIRU3DJH 3J/RFDWLRQ 76543210 '' 6DPHDVDERYHIRU3DJH 5$0$GGUHVVLQJ The addresses in RAM can be specified in one of three ways. Refer to Figure 5. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5$0 5$03RLQWHUV 5$0 5$03RLQWHUV )) )) 3 3 3 ; 3 %,7 ; %,7 3 3 #3 66 'DWD3RLQWHUV ,QWHUQDO520 ' .[%LW ##3 ' ' ' ' ' ' ' # ' )LJXUH 5$0520DQG3RLQWHU$UFKLWHFWXUH 0HPRU\520DQG5$0 The Z90356 has 64K words of Read Only Memory (ROM) and 1K words of Random Access Memory (RAM). 520 The 64K words mask ROM is designed to provide storage for both program memory (PROGROM) and character set graphic pixel arrays (CGROM). The address boundary between these applications is dependent on the storage required for character graphics. The program ROM section can, in theory, be accessed anywhere in the addressable ROM space; however, because CGROM usually starts at location 0000h, program ROM resides in the higher address locations. The maximum available ROM space for program memory depends on the ROM reserved for CGROM (for an application) and the ROM size of the device selected. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' CGROM can be placed anywhere in the 64K ROM address space by setting the CGROM address offset register R7(2). This offset is added to the character address before accessing ROM. By modifying the CGROM offset, several fonts can be accessed (limited by ROM size only). When reset, R7(2) =0 (no offset) for backward compatibility with existing software. Refer to Figure 6. . ,QWYHFWRU )))) ,QWYHFWRU )))( ,QWYHFWRU 5HVHWYHFWRU )))' )))& 3URJUDP520RU&*520 8SWR. 8SWR. . 8SWR. )LJXUH 3679& &*520²%DQN6FDQOLQHV RU%DQNRU3URJUDP520 &*520²%DQN6FDQOLQHV RU%DQNRU3URJUDP520 3URJUDP520 Q &*520%DQNQ&KDUDFWHUV 6FDQOLQHV 5200DS =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5$0 The 1K words RAM is organized in four banks of 256 words consisting of 16 bits each. Bankl.0 is always accessible. Bank0.0 is mapped to other bank(s); only one gauge from 0.X is active through bit selection. See Figure 7. 256 256 256 words 256 words Bank0.2 Bank0.1 Bank1.0 )LJXUH Bank0.0 5$0$OORFDWLRQ &ORFN&LUFXLW'HVFULSWLRQ The processor is able to operate from several clock sources: • Primary Phase Lock Loop VCO source (PVCO) • Secondary Phase Lock Loop (SVCO) • 32.768-kHz oscillator clock (OSC) In addition, the processor clock can be halted temporarily to select the clock source or access ROM without disrupting normal operation of the processor. An external crystal controls the internal 32.768-kHz oscillator. The crystal is used as the clock reference for the internal Phase Locked Loop (PLL). The PLL provides the internal PVCO clock for processor operation. SCLK is generated internally by dividing the frequency of an appropriate oscillator (PVCO) by 2. The frequency of the SCLK after POR is 12.058 MHz. The SCLK signal can be sent to the Port16 output pin under software control by setting bit 9 in register R3(1). The SVCO must be used as the system clock when the OSD is generated. The clock switch control register R6(1) defines the source of the SCLK for the Z90356 core. The block diagram in Figure 8 represents the clock switch circuit. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 0+] 69&2 69&239&2 6:,7&+ 6:,7&+ N+] 0+] 3// RVFLOODWRU 39&2 )DVW6ORZ 1RB6ZLWFK 3// )LOWHU 6&/. 'LYLGHU 5! )LJXUH 6:,7&+ 5! 5! &ORFN6ZLWFKLQJ%ORFN'LDJUDP ,QSXW'ULYH&LUFXLWV The 32-KHz oscillator circuit in Figure 9 is suggested for proper clock operation. 32.768 KHz 22 pF 10 MW Z90356 XTAL1 68 KW XTAL2 47 pF )LJXUH 3679& .+]2VFLOODWRU5HFRPPHQGHG&LUFXLW =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HVHW&RQGLWLRQV Reset conditions including addresses and registers are listed in Table 6. 7DEOH 5HVHW&RQGLWLRQV 5HVHW &RQGLWLRQ $GGU 5HJLVWHU &RPPHQWV 5 UHVHUYHG [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 1RWDYDLODEOH 5 &XUVRU3DOHWWH [ [ [ [ [ [ [ [ [ [ [ [ [ [ &XUVRUSDOHWWH JDXJH 5 SOOBIUHT [ [ [ [ [ [ [ [ 3//IUHTXHQF\ FRQWURO 5 ,&BLQW [ [ [ [ [ [ [ [ [ [ [ ,&LQWHUIDFH UHJLVWHU 5 SRUW [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ ELW,2SRUW 5 SRUW [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ ELW,2SRUW 5 GLU ELWSRUW GLUHFWLRQ 5 GLU [ [ [ [ [ [ [ ELWSRUW GLUHFWLRQ 5 FODPSBSRV [ [ [ [ [ [ [ 5 VFONBIUHT [ [ [ [ 6WRSVOHHSQRUPDO PRGH 5 ELWFQWU [ [ [ [ [ [ [ [ [ 6WRSDQG:'7 ELWFRXQWHU 5 VWDQGDUGBFWO [ [ [ 2XWSXW+96<1& %OLQN&RQWURO 5 $'&BFWO [ [ [ [ $'FRQYHUWHU FRQWURO 5 FDSBVBFWO [ [ [ [ [ [ [ [ [ [ [ [ [ [ &RXQWHUWLPHUV FRQWURO 5 FORFNBFWO [ [ [ [ [ &ORFNFRQWURO VZLWFK9&2'27 5 ZGWBVPUBFWO [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 605DQG:'7 FRQWUROLQWHUUXSW 3679& 3RVLWLRQRIYLGHR FODPSSXOVH =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HVHW&RQGLWLRQV &RQWLQXHG 5 SZPBGDWD [ [ [ [ [ [ [ [ ELW3:0GDWD 5 SZPBGDWD [ [ [ [ [ [ [ [ ELW3:0GDWD 5 SZPBGDWD [ [ [ [ [ [ [ [ ELW3:0GDWD 5 SZPBGDWD [ [ [ [ [ [ [ [ ELW3:0GDWD 5 SZPBGDWD [ [ [ [ [ [ [ [ ELW3:0GDWD 5 SZPBGDWD [ [ [ [ [ [ [ [ ELW3:0GDWD 5 6KDGRZ&WUO [ [ [ [ [ [ [ [ 6KDGRZFRORUFWUO 5 &*520RIIVHW &*520RIIVHW UHJLVWHU 5 KLB[BKLB[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ &KDUDFWHUPXOWLSOH FXUUHQWGDWD 5 ORB[BPLGB[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ &KDUDFWHUPXOWLSOH QH[WRUSUHYLRXV GDWD 5 &KB[BORB[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ &KDUDFWHUPXOWLSOH FKDUDFWHUJUDSKLFV DWWULEXWH 5 DWWUBGDWD [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ &KDUDFWHUDWWULEXWH YLGHR5$0GDWD 5 RVGBFQWO [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 2QVFUHHQGLVSOD\ FRQWURO 5 FDSBGDWD [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ &DSWXUHUHJLVWHU GDWD 5 SDOHWWHBFRORU 'LVSOD\SDOHWWH FRORUXQGHUOLQH FRORU 5 RXWSXWSDOHWWH 2XWSXWSDOHWWH 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 3RZHU0DQDJHPHQW There are two low-power operating modes for Z90356: SLEEP mode and STOP mode. 6/((30RGH In SLEEP mode, the controller uses the 32.768-KHz clock for the SCLK to reduce power consumption. 67230RGH In STOP mode, the processor is suspended, and the power consumption is minimized. ,23RUW&RQILJXUDWLRQV User control can be monitored either through the keypad scanning port or the 16-bit remote control capture register. Two input/output port blocks are available for general-purpose digital I/O application. Each port bit can be programmed to be either an input or output port. To conserve the device pin count, some port pins are mapped to provide I/O to the ADC converter block and I2C interface block. The 25 configurable I/O pins are general-purpose pins for functions such as serial data I/O, LED control, key scanning, power control and monitoring, and I2C serial data communications. Port 0 and 1 directions are defined in R6(0) and R7(0), respectively. R4(0) and R5(0) are data registers for both Ports 0 and 1. Figure 10, Figure 11, and Figure 12 indicate I/O configuration and sharing with other functional units. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 'LUHFWLRQ ²,1 ²287 9&& 3DG 2XWSXW ,QSXW W )LJXUH %LGLUHFWLRQDO3RUW3LQV 'LUHFWLRQ ,1 && 9 287 3$' , & 2XWSXW 3257 2QSXW ,QSXW W )LJXUH %LGLUHFWLRQDO3LQV0XOWLSOH[HGZLWK,&3RUW 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 'LUHFWLRQ ²,1 ²287 9&& 3$' 2XWSXW W ,QSXW $QDORJ 08; )LJXUH %LGLUHFWLRQDO3LQV0XOWLSOH[HGZLWK$'&,QSXWV ,QWHUUXSWV The Z90356 has three external interrupt signals. There are four interrupt sources as follows: • Horizontal sync (HSYNC) • Vertical sync (VSYNC) • Capture timer • External event (Port09). All interrupts are vectored. The capture timer and Port09 are multiplexed to the same interrupt. Interrupt priorities are programmable. Each interrupt can be masked by setting fields in the external registers. When the Z90356 receives an interrupt request from one of the interrupt sources, it executes the interrupt service routine directly for that source. External register R7(1) controls interrupts. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7LPHUV :DWFK'RJ7LPHU The watch-dog timer resets the CPU when it times out. External register R7(1) controls the watch-dog timer. 5HDO7LPH&ORFN A clock timer, in real time, generates ticks every 1000, 250, 62.5 or 15.625 ms. External register R5(1) controls the real time clock. ,5&DSWXUH7LPHU A capture timer measures time between edges of the IR signal. This timer can be programmed to measure timing from rising-to-rising, falling-to-rising, rising-to-falling, or falling-to-falling edges. The IR capture timer is controlled by External register R5(1). Figure 13 is a block diagram of the IR capture register structure. &$3B*OLWFK &$3B(GJH ,5 *OLWFK )LOWHU 3UHVFDOHU +DOWFDSWXUHWLPHU 5! (GJH 'HWHFWRU &DSWXUH 7LPH &DSWXUH 5HJLVWHU &DSWXUH )ODJV CAP_speed R5(1)<1:0> &DSWXUHGGDWD 5 )DOOLQJHGJHLVFDSWXUHG 5HVHW5H! 5DLVLQJHGJHLVFDSWXUHG 5HVHW5I! 7LPHRXW 5HVHW5F! < )LJXUH ,5&DSWXUH5HJLVWHU%ORFN'LDJUDP 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $'& This function employs a 4-bit resolution, flash A-to-D converter. The six-to-one analog input multiplexor and conversion start circuits are controlled by the user program. The 4-bit conversion result is available to be read by the CPU at the end of each conversion. One input channel (ADC0) is dedicated for quantizing VBI (vertical blank interval) data for subsequent digital signal processing. Another channel, ADC5, is typically used for VSYNC separation from the composite TV signal. These channels (ADC0 and ADC5) feature a special video clamp circuit that provides DC restoration of the composite video input signal. Typical VBI applications include Line 21 Closed Caption, Electronic Data Services, and StarSight Telecast. The range of ADC0 and ADC5 is from 1.5 to 2.0 V. The four remaining channels of ADC (ADC1, ADC2, ADC3, and ADC4) are general purpose. They are typically used for tuner automatic frequency control and analog key entry. The range of ADC1–ADC4 is from 0 to 5.0 V. The 4-bit ADC in the Z90356 features six multiplexed inputs. The allowed range of the input signals is different for different ADC inputs according to Table 7. 7DEOH ,QSXW $'&,QSXWV7\SLFDO5DQJH 5DQJH9 &ODPSLQJ 7\SLFDODSSOLFDWLRQ &9,$'& ± <HV5HI± &&'VDPSOLQJLQSXW $'&3 ± 1R $)&LQSXW $'&3 ± 1R )URQWSDQHOFRQWUROEXWWRQ $'&3 ± 1R )URQWSDQHOFRQWUROEXWWRQ $'&3 ± 1R )URQWSDQHOFRQWUROEXWWRQ $'& ± <HV5HI 96<1&GHFRGHUVDPSOLQJ LQSXW Reference voltages that have been generated internally define the maximum range of the input signal for the ADC. Nominal values are as follows: Ref+ = 2.0 V Ref– = 1.5 V @ VCC = 5.0 V For other VCC values, the reference voltages must be prorated as follows: Ref+ = 0.4 * VCC 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Ref– = 0.3 * VCC The maximum sampling rate of the ADC converter is 3 MHz. It takes 4 SCLK cycles for valid output data from the ADC to become available. This is especially important if the application uses the single-shot mode. The ADC exhibits monotonous conversion characteristics with a nonlinearity of less than 0.5 LSB. ADC0. The ADC has a range of 0.5V (from 1.5V to 2.0V) and is directly multiplexed to the input of the ADC. The remaining ADC inputs (ranging from 0V to 5V) use AGND and AVCC voltage as a reference. Figure 14 is a block diagram of the ADC inner structure, and Figure 15 illustrates ADC input circuits. = 5() &/$03 $'&96<1&GHFRGHU $'&3 $'&3 $'&3 $'&3 [ 08; $'& &219(57(5 $'&&&'GHFRGHU &/$03 5()± )LJXUH $'&%ORFN'LDJUDP $'&'DWD3DFNLQJ Up to four 4-bit ADC data samples can be packed into one 16-bit word without software overhead. If R4(1)<9> = 1, every reading of R4(1) returns the result, where the High 12 bits are the three previous ADC samples and the Low 4 bits are the current one, as illustrated in Figure 15. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $'&VDPSOH7 $'&VDPSOH7 $'&VDPSOH7 $'&VDPSOH7 )LJXUH $'&'DWD3DFNLQJ NOPs between ADC accesses are omitted. LD LD OR LD LD LD LD LD LD SR,%#20; select RegBank1 A,EXT4; turn “ADC data packing” mode on A, #%0200; EXT4, A; A, EXT4; read first ADC sample, A = %0005 A, EXT4; read second ADC sample, A = %005E A, EXT4; read third ADC sample, A = %05E7 A, EXT4; read forth ADC sample, A= %5E74 A, EXT4; read fifth ADC sample, first sample is thrown away, A = %E741 The ADC is controlled by the external register R4(1). 3XOVH:LGWK0RGXODWLRQ Pulse Width Modulation is used in conjunction with external low-pass filters to perform digital-to-analog conversion. Six PWMs (8-bit resolution each) generate signals for the control of video and sound attributes. In case of a chassis employing a frequency synthesis tuner, these PWMs can also control video or sound attributes. Each PWM circuit features a data register whose contents are set under program control. The data in the register determines the ratio of PWM High to PWM Low time. PWM data registers are not initialized when reset. In order to eliminate a potential glitch on a PWM output, it is recommended to initialize PWM data registers before enabling the VCOs. External registers R0(2) to R5(2) are data registers for PWM1 to PWM6 accordingly. ,&,QWHUIDFH There are two hardware modules that support standard I2C bus protocol according to the I2C bus specification published by Phillips in 1992, entitled I2C Peripherals for Microcontrollers Data Handbook. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' The first module, the Master, can be configured for fast (400 kHz) or slow (100 kHz) bit rates and can be used in applications with a single master. The second module, the Slave, supports a 7-bit addressing format with both fast and slow bit rates. The Z90356 adds two additional nonstandard bit rates (50 kHz and 10 kHz) and an additional multiplexed master port that is controlled by the I2CM_mux control bit. Table 8 lists the bit rates for the Master I2C Bus. 7DEOH 0DVWHU,&%XV%LW5DWHV 0RGH ,&PRGH %LW5DWH $FWXDO%LW5DWH /26ORZ ² ±N+] N+] +,6ORZ ² ±N+] N+] /2)DVW 6ORZ ±N+] N+] +,)DVW )DVW ±N+] N+] To suppress possible problems on both data (SDA) and clock (SCL) lines, digital filters are available for all inputs of the I2C bus interface. These filters exhibit a time constant equal to 3TSCLK = 250 ns. If the Master or Slave I2C interface is enabled, corresponding I/Os (Port01 and Port02 for the slave, Port11 and Port12 for the master) must be assigned as outputs. Master and Slave modules cannot be used simultaneously because of the shared I2C data register (see the register R3(0) data field). The software activates I2C modules by writing appropriate commands into the control register. To control the I2C bus interface, the control register R3(0) toggle bit <c> must point to an appropriate interface (Master or Slave). M_disable or S_disable bits allow either the Master or Slave I 2C interface to be disabled so as not to interfere with any activity associated with the Port pins. At Power-on Reset (POR), both I2C interfaces are enabled. To use the I2C interface, the corresponding Port pin (multiplexed with the I2C Data and Clock) must be configured as an output, while M_disable or S_disable bits must be reset to 0. External register R3(0) controls the I2C. Table 9 lists the Master I2C bus interface commands. Table 10 lists the Slave I2C bus interface commands. Figure 16 and Figure 17 are flow charts of the Master and Slave modes. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 0DVWHU,&%XV,QWHUIDFH&RPPDQGV &RPPDQG 1RWHV)XQFWLRQ 7KLVFRPPDQGVHQGVDVWDUWELWIROORZHGE\DQDGGUHVVE\WHVSHFLILHGLQ WKH³GDWD´ILHOGELWV!WKHQIHWFKHVDQDFNQRZOHGJPHQWLQELW! 7KLVFRPPDQGLQLWLDOL]HVFRPPXQLFDWLRQDQGJHQHUDWHV6&/F\FOHV 7KLVFRPPDQGVHQGVRQHE\WHRIGDWDVSHFLILHGLQWKH³GDWD´ILHOGELWV !WKHQIHWFKHVDQDFNQRZOHGJPHQWLQELW!7KLVFRPPDQGLV XVHGLQD:5,7(IUDPHDQGJHQHUDWHV6&/F\FOHV 7KLVFRPPDQGVHQGVELW!DVDQDFNQRZOHGJPHQW$&. 1$. WKHQUHFHLYHVDGDWDE\WH7KLVFRPPDQGLVXVHGLQD5($'IUDPH ZKHQWKHQH[WGDWDE\WHLVH[SHFWHGDQGJHQHUDWHV6&/F\FOHV 5HFHLYHGGDWDDSSHDUVLQWKH³GDWD´ILHOGELWV! 7KLVFRPPDQGVHQGVELW!DVDQDFNQRZOHGJPHQW$&. 1$. 7KLVFRPPDQGLVXVHGLQD5($'IUDPHWRWHUPLQDWHGDWDWUDQVIHU DQGJHQHUDWHVRQH6&/F\FOH $18//RSHUDWLRQ7KLVFRPPDQGPXVWEHXVHGZLWKD³5(6(7´ELWE! DQGRUD³72**/(´ELWF! 8VLQJWKH³5(6(7´DQGRU³72**/(´ELWVZLWKDQ\RWKHUFRPPDQG LQWHUIHUHVZLWKWKHORJLFRIWKH,&LQWHUIDFH 7KLVFRPPDQGUHFHLYHVRQHGDWDE\WH,WLVXVHGLQD5($'IUDPHWR UHFHLYHWKHILUVWGDWDE\WHDIWHUWKHDGGUHVVE\WHLVWUDQVPLWWHG,W JHQHUDWHV6&/F\FOHV 7KLVFRPPDQGVHQGVDVWRSELWDQGJHQHUDWHVRQH6&/F\FOH 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 6ODYH,&%XV,QWHUIDFH&RPPDQGV &RPPDQG 1RWHV)XQFWLRQ 0 0 0 5HVHUYHG&DQQRWEHXVHG 0 0 1 7KLVFRPPDQGVHQGVELW!DVDQDFNQRZOHGJPHQW$&. RQO\ WKHQUHFHLYHVRQHGDWDE\WH7KLVFRPPDQGLVXVHGLQD:5,7(IUDPH DQGUHTXLUHV6&/F\FOHV5HFHLYHGGDWDLVUHDGDVD³GDWD´ILHOGELWV ! 0 1 0 7KLVFRPPDQGVHQGVRQHE\WHRIGDWDVSHFLILHGLQD³GDWD´ILHOGELWV !WKHQIHWFKHVDQDFNQRZOHGJPHQWLQELW!7KLVFRPPDQGLV XVHGLQD5($'IUDPHDQGUHTXLUHV6&/F\FOHV 0 1 1 5HVHUYHG&DQQRWEHXVHG 1 0 0 1 0 1 $18//RSHUDWLRQ7KLVFRPPDQGPXVWEHXVHGZLWKD³5(6(7´ELWE! DQGRU³72**/(´ELWF! 8VLQJWKH³5(6(7´DQGRU³72**/(´ELWVZLWKDQ\RWKHUFRPPDQG LQWHUIHUHVZLWKWKHORJLFRIWKH,&LQWHUIDFH 1 1 0 7KLVFRPPDQGVHQGVDELW!DVDQRWDFNQRZOHGJPHQW1$. RQO\ LQD:5,7(RU5($'IUDPH7KLVFRPPDQGWHUPLQDWHV,& FRPPXQLFDWLRQDQGUHTXLUHVRQH6&/F\FOH7KH³6XOIDQLODPLGH´ELWD! LVDXWRPDWLFDOO\UHVHWZKHQD³EXV\´ELW!JRHV/RZ 7KLVFRPPDQGVHQGVDELW!DVDQDFNQRZOHGJPHQW$&. RQO\LQ D5($'IUDPHDQGUHTXLUHVRQH6&/F\FOH7KH6HQGGDWDFRPPDQG PXVWEHH[HFXWHGQH[W7KLVFRPPDQGDFNQRZOHGJHVDQDGGUHVV E\WHLQD5($'IUDPH 1 1 1 5HVHUYHG&DQQRWEHXVHG 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 67$57 QR \HV 5HDG5! ³%XV\´ " 6HQGDVWDUWELWIROORZHG E\DELW$GGUHVVE\WH :ULWH5 ^[[[$GGU5:` QR ³%XV\´ \HV 5HDG5! 5HDG$FNELW 5! \HV $FN :ULWHIUDPH 0RUHE\WHV QR1DN " 5HDGIUDPH :ULWH5 QR ^[[[[[[[[[[[` WRVHQG" $VNVODYHWRVHQG'DWDE\WH \HV Write R3(0) \HV ^[[['DWD` ³%XV\´ (Send Data byte) " QR QR ³%XV\´ 5HDG5 ^[[[[[[[['DWD` \HV " 5HDG'DWDE\WH :ULWH5 ^[[[[[[[[[[` :ULWH5 ^[[[[[[[[[[` QR 5HFHLYHPRUHE\WHV" 1DN'DWDE\WH $FN'DWDE\WH \HV \HV ³%XV\´ " :ULWH5 QR ^[[[[[[[[[[` $FNQRZOHGJH'DWDE\WH :ULWH5 ^[[[[[[[[[[[` 1RWH 6HQGD³6WRS´ELW 6KDGHGEORFNVDUHH[HFXWHGLQVRIWZDUH )LJXUH 0DVWHU0RGH 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 67$57 QR \HV ³6WDUW´FRQGLWLRQ 6HW5! GHWHFWHG 5HVHW5! QR \HV $GGUHVVPDWFKHV 5HVHW5D! 6HWVODYHPRGH5D! +ROGWKHEXV 6WUHWFKFORFN 5HVHWVODYHEXV\5! 1DN0DVWHU ,JQRUHPDVWHU :ULWH5 $FNPDVWHU ^[[[[[[[[[[` 5HDGIUDPH :ULWHIUDPH R3(0)<0>=1 5! 5HDG5! 5:ELW $FN0DVWHU QR $FNPDVWHU 1DNPDVWHU :ULWH5 :ULWH5 :ULWH5 ^[[[[[[[[[[` [[[[[[[[[[ [[[[[[[[[[ 6ODYH %XV\ QR 5D! :DLWKHUHIRU³VHQG %XV\ 5D! \HV ILUVWE\WH´FRPPDQG 6ODYH \HV 6HQGGDWD KROGWKHEXV Write R3(0) VWUHWFKFORFN ^[[['DWD` QR 6ODYH %XV\ *HW'DWD 5D! :DLWIRU$FN IURPPDVWHU 5HDG5 yes JRWR$FN0DVWHU QR1DN 5HDG5! $FN " \HV$FN KROGWKHEXV 1RWH VWUHWFKFORFN 6KDGHGEORFNVDUHH[HFXWHGLQVRIWZDUH 0QVG If a “Stop” condition is detected at any point, the hardware resets the “Slave” bit (R3(0)<a>) and releases the I2C bus. )LJXUH 6ODYH0RGH 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 2Q6FUHHQ'LVSOD\26' The Z90356 provides sophisticated on-screen display features. On-Screen Display has the following two modes: • OSD Used to generate TV control OSD • CCD Used to display Closed Caption information OSD mode provides access to the full set of control attributes including latched and unlatched attributes. Unlatched attributes can be modified on a character-by-character basis. Control characters change latched attributes. Any 256-character set can be displayed with many display attributes, including underlining, italics, blinking, eight foreground and background colors, character position offset delay, and background transparency. A 16-bit display character represents foreground color, background color, and underline attributes, which can be modified character by character. In addition, the Z90351 supports eight fixed plus eight programmable color palettes out of 64 colors, independent left and right shadows with color control. Shadows are available on transparent and nontransparent backgrounds. Semitransparency is supported on a character-by-character basis. A character’s pixel array is stored as 16, 18, or 20 words in Character Generation ROM (CGROM). Additional hardware provides the capability to display characters at two and three times normal size. The smoothing logic contained in the on-screen display improves the appearance of two and three times normal size characters. Shadows can be activated to improve the visibility of characters by adding a border (one pixel wide) on each side. The Z90351 provides RGB signals and video blank signal. RGB outputs are available in two modes: digital and analog. In digital mode, the output RGB signals correspond to a primary colors palette. Analog mode supports 16 different palettes, which can be chosen under software control. In analog mode, each RGB output is generated by a 2-bit digitalto-analog converter. The user can switch the 2-bit digital inputs of the digital-to-analog converter to Port pins (P10, P13, P14, P15, P18 and P08) under software control by setting a bit in the control register. Video synchronization is normally obtained from H_FLYBACK and V_FLYBACK but can be generated by the Z90356 and driven to the external deflection unit using the bidirectional SYNC ports when external video synchronization signals are not present. OSD is completely software controlled. Hardware supports the optimum generation of the character-based OS; however, the CPU can bypass it and generate pixels and attributes directly. The block diagram in Figure 18 illustrates the OSD data flow. Figure 19 and Figure 20 indicate the V1, V2, V3, and Blank output circuits. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' P a l e t t e s R7(3) R6(3) R0(3) R1(3) R2(3) R0(3) R1(3) R2(3) Attribute R3(3) R4(3) Memory Rd Shift Register CGROM Pixels: 1x 2x 3x Full attrib R3(3) Video RAM OSD:At7Ch8 or Attr15 CCD:Char7 orAttr7 3 x D A C R G B CPU )LJXUH 'DWD)ORZ 9&& 3 3$' 2XWSXW 1 )LJXUH %ODQNDQG9992XWSXWVLQ'LJLWDO0RGH 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 9&& 9&& 9&& , P$ , , 9[! 9[! 3$' 5 . )LJXUH 99DQG92XWSXWVLQ$QDORJ3DOHWWH0RGH &ORVHG&DSWLRQ'DWD&DSWXUH Closed-caption text can be decoded directly from the composite video signal using the processor’s digital signal processing capabilities and displayed on the screen. The character representation in this mode provides simple attribute control by inserting control characters. Each word of video RAM specifies two displayed characters. The 4-bit flash A/D converter, with proper clamping, provides the ability to receive the composite video signal directly and process the closed-caption text embedded in the signal. Signal processing can be applied directly to the signal to improve decoder performance. &*5205HORFDWLRQ CGROM can be placed anywhere in the 64K ROM address space by setting the CGROM address offset register R7(2). This offset is added to the CGROM address before accessing the ROM. By modifying the CGROM offset, several fonts can be accessed (limited only by ROM size). When reset, R7(2) = 0 (no offset), making the Z90351 backwardcompatible with existing OSD control software. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' The character scan line from CGROM addressed by the character register is fetched and stored into the CGROM capture register. If a pixel is set to 1, it displays the foreground color. If a pixel is set to 0, it displays the background color. The scan line can be stretched by the character multiplier to be two or three times normal character size by duplicating each bit in the word. &RQWUROOLQJ&KDUDFWHU([SDQVLRQ The character size can be stretched to two or three times its size the size of the scan line. Hardware fetches data from CGROM and stretches the data to be read from registers R0(3), R1(3), and R2(3). Figure 21 is a block diagram of the structure of the character expansion multiplexor, and Table 11 lists bit functions. 520GDWD &*520GDWD FDSWXUHUHJLVWHU FRQWURO [[[ &KDUDFWHU ([SDQVLRQ 0XOWLSOH[RU 5 FKDUBPXOWBKLJK 5 5 FKDUBPXOWBPLG FKDUBPXOWBORZ 3URFHVVRU(;7(51$/EXV )LJXUH &KDUDFWHU([SDQVLRQ 7DEOH &KDUDFWHU([SDQVLRQ5HJLVWHU &DSWXUH 5HJLVWHU &RQWHQWV &KDUBPXOWBKLJK [RSHUDWLRQ abcdefghijklmnop [RSHUDWLRQ aabbccddeeffgghh 3679& &KDUBPXOWBPLG &KDUBPXOWBORZ iijjkkllmmnnoopp =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH &KDUDFWHU([SDQVLRQ5HJLVWHU &RQWLQXHG &DSWXUH 5HJLVWHU &RQWHQWV &KDUBPXOWBKLJK &KDUBPXOWBPLG [RSHUDWLRQ aaabbbcccdddeeef ffggghhhiiijjjkk klllmmmnnnoooppp &KDUBPXOWBORZ 'LVSOD\HG'DWD)RUPDWV The Z90356 hardware supports the following two different data formats: • OSD mode, R4(3)<d> = 1 supports a standard OSD with full set of features. • CCD mode, R4(3)<d> = 0 supports reduced features which comply with the recommendations of the FCC on Closed Caption support. In CCD mode, the background color of the characters cannot be changed and is always preset to BLACK. 26'0RGH In OSD mode, each character occupies a 16-bit word in VRAM. There are two possible character formats defined: a “display” character and a “control” character. The code stored in “display” character format defines a character code and up to 7 attributes of the character. The “control” character defines latched attributes and is presented on-screen as a space character. The combination of “display” and “control” characters provides versatile OSD generation. Smoothing is supported for double-size (x2) and triple-size (x3) characters only. &&'0RGH In CCD mode, each character occupies 8 bits (one byte) in VRAM. The CCD characters must be mapped into a 16-bit VRAM data field. The hardware supports compressed placement of characters in VRAM. Each word in VRAM is represented by a High byte and a Low byte. A currently active byte is selected by R4(3)<c>. The format and data representation in both bytes is exactly the same. There are two possible character formats defined: a “display” character and a “control” character. The code stored in “display” character format defines a character code. The “control” character defines up to five attributes (foreground color, italic, underline, blinking, and transparent). It is presented on screen as a space character. The combination of Display and Control characters provides the basis for a specified range of attributes defined by FCC specifications for CCD. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 6KDGRZV Shadows, if enabled, are active on both transparent and nontransparent backgrounds. Two bits in the AttributeWR and AttributeRD registers (R2(3)<1:0> and R3(3)<1:0>) control the type of shadow. Refer to Figure 22. %DFNJURXQG 5! 5! )XQFWLRQ 1RVKDGRZV /HIWVKDGRZ 5LJKWVKDGRZ %RWKVKDGRZVIULQJLQJ )RUHJURXQG 5LJKWVKDGRZ /HIWVKDGRZ )LJXUH 7DEOH6HWWLQJV The smoothing attribute has been moved to R7(3)<5>. The bit assignment in the Latched Attribute follows the bit assignment in R2(3). The left and right shadow colors are independently controlled by R6(2)<d:b> and R6(2)<a:8>. 0QVG The smoothing control bit R7(3)<5> must be set to a “1” in order to activate fringing. 6HPL7UDQVSDUHQW Both semi-transparency (pin name SOVL) and transparency (pin name OVL) attributes are supported. The semi-transparency mode can be enabled through either latched or unlatched attributes. Latched attributes remain set until they are reset. Unlatched attributes remain set for only one character, which means the attribute must be constantly refreshed on a character-by-character basis. $FWLYDWLRQ To activate semi-transparency output, two bits must be set properly. Port 0F must be in output mode [R6(0)<f> = 0], and the SOVL/port0F control bit must be in SOVL mode [R3(1)<6> = 1]. /DWFKHG6HPL7UDQVSDUHQF\ The latched semi-transparency attribute is controlled by bit [R2(3)<6>]. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 8QODWFKHG6HPL7UDQVSDUHQF\ The unlatched semi-transparency attribute is controlled by bit [R3(3)<8>]. This bit has one of four possible assignments depending on how it is set up in [R7(3)<7:6>]. The four assignments are underline, semi-transparency, blinking, and CGROM bank select. 0QVGU 1. The semi-transparency signal (SVBLANK), when active, is only valid with the background color. With the foreground color, SVBLANK is inactive. Therefore, characters do NOT take on a semi-transparent appearance (only the background does). This condition allows characters to be read without interference. 2. If both the transparency (background and foreground color are equal) and semitransparency are activated, the transparency takes precedence over the semitransparency. The VBLANK signal is High, and the SVBLANK signal is Low. $WWULEXWHB$VVLJQPHQW Depending on R7(3)<7:6>, bit 8 of the Attribute_Data register, R3(3) (in character mode) can be assigned to control either “1st underline,” “semi-transparency,” “blinking,” or “CGROM bank select,” as indicated in Table 12. 7DEOH $WWULEXWH$VVLJQPHQW 5! 5! VWXQGHUOLQH325 6HPLWUDQVSDUHQF\ %OLQNLQJ &*520EDQNVHOHFW &XUVRU The cursor is a one-line pixel buffer. The cursor buffer is loaded via the DMA on every line where the cursor is displayed (no software support is required). Horizontal size is programmable at 16, 32, or 48 pixels wide, and vertical size is programmable from 1 to 63 lines per field. The color depth is 2 bits per pixel, 3 programmable colors and the transparency. Depending on R1(0)<d>, the cursor’s colors can be selected either from a current palette (R1(0)<d> = 0) or from Palette #6 (R1(0)<d> = 1). Refer to Table 15. The cursor image is stored in ROM as a bitmap. The number of cursors is limited by ROM size only. The cursor is positioned by initializing cursor parameters in the beginning of every field. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization occurs by setting the Cursor_Info_Load bit R7(3)<4> to 1, then writing sequentially to the R3(3) 16-bit parameters (COLOR, HPARAM, VPARAM and CADDR, respectively). The cursor buffer is loaded from ROM at the leading edge of HSYNC wherever the horizontal line requires a cursor. This process halts the CPU for 3/5/7 cycles depending on the cursor’s horizontal size. The cursor bitmap address pointer (CADDR) is incremented automatically. Though the cursor can be displayed anywhere on the screen, limiting the cursor to the OSD area is best. Outside of the OSD area, the cursor can jitter or become distorted. The cursor bitmap is organized as pixel data placed sequentially in the ROM. The data format is described below. For the interlaced mode, even and odd cursor bitmaps must be defined separately. Proper selection occurs during the cursor initialization at the beginning of every field. See Figure 23, Table 13, and Table 14. )RFXV ;< 9HUWLFDO SRVLWLRQ <± WUDQVSDUHQW FRORU FRORU FRORU +RUL]RQWDOSRVLWLRQ;± OLQHVPD[ LQSURJUHVVLYH VFDQPRGH SL[HOVPD[ )LJXUH &XUVRU ([DPSOH LD OR LD LD LD LD AND 3679& SR,%#60; select RegBank3 EXT7,#%0010; enable Cursor_Info_Load EXT3,#(3*64 + 7*8 + 2); load CCOLOR: color3 = 3, color2 = 7, color1 = 2 EXT3,#(2*1024 + 120); load HPARAM: hsize = 2 (32 pixels), hpos = 120 EXT3,#(28*1024 + 55); load VPARAM: vsize = 28, vpos = 55 EXT3,#%6000; load CADDR—cursor bitmap address EXT7,#%FFEF; disable Cursor_Info_Load, ready for OSD =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH &XUVRU3DUDPHWHUV 3DUDPHWHU 5HJILHOG %LWSRVLWLRQ 'DWD 'HVFULSWLRQ &$''5 &$''5 fedcba9876543210 '''' &XUVRUELWPDSDGGUHVV SRLQWHUWRFXUVRUELWPDSLQ520 93$5$0 96,=( fedcba---------- ± 9HUWLFDOVL]HOLQHVLQRQHILHOG 9326 ------9876543210 ± 9HUWLFDOSRVLWLRQOLQHVLQRQHILHOG QD fedc------------ QD 5HVHUYHG +6,=( ----ba---------- 1RFXUVRU SL[HOVZLGH SL[HOVZLGH SL[HOVZLGH +326 ------9876543210 ± +RUL]RQWDOSRVLWLRQSL[HOVIURP WUDLOLQJHGJHRI+6<1& QD fedcba9--------- QD 5HVHUYHG &RORU -------876------ ± &XUVRU&RORUDVVLJQPHQW &RORU ----------543--- ± &XUVRU&RORUDVVLJQPHQW &RORU -------------210 ± &XUVRU&RORUDVVLJQPHQW +3$5$0 &&2/25 7DEOH 0HPRU\$OORFDWLRQIRU&XUVRU¶V%LWPDS 3L[HOV:LGH0RGH AddrN: L0_P15_B0, L0_P14_B0, L0_P13_B0, ... , L0_P1_B0, L0_P0_B0 AddrN+1: L0_P15_B1, L0_P14_B1, L0_P13_B1, ... , L0_P1_B1, L0_P0_B1 AddrN+2: L1_P15_B0, L1_P14_B0, L1_P13_B0, ... , L1_P1_B0, L1_P0_B0 AddrN+3: L1_P15_B1, L1_P14_B1, L1_P13_B1, ... , L1_P1_B1, L1_P0_B1 .................................................. AddrN+2n: Ln_P15_B0, Ln_P14_B0, Ln_P13_B0, ... , Ln_P1_B0, Ln_P0_B0 AddrN+2n+1: Ln_P15_B1, Ln_P14_B1, Ln_P13_B1, ... , Ln_P1_B1, Ln_P0_B1 3L[HOV:LGH0RGH AddrN: L0_P31_B0, L0_P30_B0, L0_P29_B0, ... , L0_P17_B0, L0_P16_B0 AddrN+1: L0_P31_B1, L0_P30_B1, L0_P29_B1, ... , L0_P17_B1, L0_P16_B1 AddrN+2: L0_P15_B0, L0_P14_B0, L0_P13_B0, ... , L0_P1_B0, 3679& L0_P0_B0 =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 0HPRU\$OORFDWLRQIRU&XUVRU¶V%LWPDS &RQWLQXHG AddrN+3: L0_P15_B1, L0_P14_B1, L0_P13_B1, ... , L0_P1_B1, L0_P0_B1 AddrN+4: L0_P31_B0, L0_P30_B0, L0_P29_B0, ... , L0_P17_B0, L0_P16_B0 AddrN+5: L0_P31_B1, L0_P30_B1, L0_P29_B1, ... , L0_P17_B1, L0_P16_B1 .................................................. AddrN+4n: Ln_P31_B0, Ln_P30_B0, Ln_P29_B0, ... , Ln_P17_B0, Ln_P16_B0 AddrN+4n+1: Ln_P31_B1, Ln_P30_B1, Ln_P29_B1, ... , Ln_P17_B1, Ln_P16_B1 AddrN+4n+2: Ln_P15_B0, Ln_P14_B0, Ln_P13_B0, ... , Ln_P1_B0, Ln_P0_B0 AddrN+4n+3: Ln_P15_B1, Ln_P14_B1, Ln_P13_B1, ... , Ln_P1_B1, Ln_P0_B1 3L[HOV:LGH0RGH AddrN: L0_P47_B0, L0_P46_B0, L0_P45_B0, ... , L0_P13_B0, L0_P32_B0 AddrN+1: L0_P47_B1, L0_P46_B1, L0_P45_B1, ... , L0_P33_B1, L0_P32_B1 AddrN+2: L0_P31_B0, L0_P30_B0, L0_P29_B0, ... , L0_P17_B0, L0_P16_B0 AddrN+3: L0_P31_B1, L0_P30_B1, L0_P29_B1, ... , L0_P17_B1, L0_P16_B1 AddrN+4: L0_P15_B0, L0_P14_B0, L0_P13_B0, ... , L0_P1_B0, L0_P0_B0 AddrN+5: L0_P15_B1, L0_P14_B1, L0_P13_B1, ... , L0_P1_B1, L0_P0_B1 AddrN+6: L0_P47_B0, L0_P46_B0, L0_P45_B0, ... , L0_P33_B0, L0_P32_B0 AddrN+7: L0_P47_B1, L0_P46_B1, L0_P45_B1, ... , L0_P33_B1, L0_P32_B1 .................................................. AddrN+6n: Ln_P47_B0, Ln_P46_B0, Ln_P45_B0, ... , Ln_P33_B0, Ln_P32_B0 AddrN+6n+1: Ln_P47_B1, Ln_P46_B1, Ln_P45_B1, ... , Ln_P33_B1, Ln_P32_B1 AddrN+6n+2: Ln_P31_B0, Ln_P30_B0, Ln_P29_B0, ... , Ln_P17_B0, Ln_P16_B0 AddrN+6n+3: Ln_P31_B1, Ln_P30_B1, Ln_P29_B1, ... , Ln_P17_B1, Ln_P16_B1 AddrN+6n+4: Ln_P15_B0, Ln_P14_B0, Ln_P13_B0, ... , Ln_P1_B0, Ln_P0_B0 AddrN+6n+5: Ln_P15_B1, Ln_P14_B1, Ln_P13_B1, ... , Ln_P1_B1, Ln_P0_B1 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' where /[B3\B%] OLQH;SL[HO<ELW= /LQH ILUVWWRSFXUVRU¶VOLQH 3L[HO ILUVWOHIWFXUVRU¶VSL[HO %LW%LW PRVWDQGOHDVWVLJQLILFDQWELWRIWKHFXUVRU¶VFRORUGHILQHGDV WUDQVSDUHQW &RORU &RORU &RORU &RORU3DOHWWH$VVLJQPHQW The Z90356 features a total of 16 color palettes, 8 of which are fixed and 8 of which are programmable. Palettes are selected by setting R7(3)<3:0>. Fixed palettes are defined in Table 15. 7DEOH )L[HG3DOHWWH&RORU$VVLJQPHQW &RORULV%ODFN&RORULV:KLWH &RORU &RORU &RORU &RORU &RORU &RORU 3DOHWWH 'HVFULSWLRQ 5 * % 5 * % 5 * % 5 * % 5 * % 5 * % 'LJLWDO5*% $QDORJ5*% *UH\VFDOHB *UH\VFDOHB 5*%B&\DQB*UH\ 5*%B0DJHQWDB*UH\ 5*%B<HOORZB*UH\ 6WDU6LJKW Programmable palettes (8–15) are mapped to AR0–AR63 (8 registers per palette). The register and bit assignments for Palette # 11 are listed in Figure 24. Programmable palettes are grouped into 2 banks (palettes 8–11 and 12–15). Palettes in the bank cannot be modified if another palette from the same bank is displayed. If on-the-fly palette modifications are required, an interleaving palette bank access must be created. One palette bank is used to display four colors, and the other bank is used for updates. See Figure 24. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7 6 5 4 3 2 1 0 1$ 5 * % 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 1$ 5 * % 1$ 5 * % 7 6 5 4 3 2 1 0 1$ 5 * % 7 6 5 4 3 2 1 0 1$ 5 * % 7 6 5 4 3 2 1 0 1$ 5 * % 7 6 5 4 3 2 1 0 1$ 5 * % 7 6 5 4 3 2 1 0 1$ 5 * % &RORU &RORU &RORU &RORU &RORU &RORU &RORU &RORU $5 $5 $5 $5 $5 $5 $5 $5 )LJXUH 3URJUDPPDEOH3DOHWWH&RQWURODW$55HJLVWHU 2WKHU)XQFWLRQV 9LGHRDQG6RXQG$WWULEXWH&RQWURO Basic receiver functions such as color and volume can be controlled directly by six 6-bit pulse-width modulated ports. ,QIUD5HG&DSWXUH)XQFWLRQ The Infrared Remote Control data capture feature uses a capture register to hold the time value from one transition of IR data to the next. Software periodically checks and reads the capture status and the value if a new capture occurs. Subsequent decoding and command passing of the received IR signal is under software control. Figure 25 illustrates the IR input circuit. W ,5,QSXW 3$' )LJXUH ,5&DSWXUH5HJLVWHU,QSXW /RRS)LOWHU The Loop Filter pin configuration is represented in Figure 26. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 9&& 9&& 3'³SRVLWLYH´RXW 3$' 3'³QHJDWLYH´RXW 7R9&2GULYHU W )LJXUH /RRS)LOWHU3LQ&RQILJXUDWLRQ +DUGZDUH$FFHOHUDWHG%LWDQG%LW6KLIWV Hardware-accelerated byte and nibble shifts significantly reduce software overhead. Shifts are created by assigning one particular RAM location (%1FE) a special meaning. Depending on the R4(1)<e:d> settings data read from this address is either unmodified, rotated 4 bits left, 4 bits right, or byte swapped. See Table 16. 7DEOH 5HG!6HWWLQJV 5HG! )XQFWLRQ 'LUHFWXQPRGLILHG±325 ELWOHIWURWDWH ELWULJKWURWDWH %\WHVZDS ([DPSOH LD LD 3679& SR,#%20; Select RegBank1 A,EXT4; turn “hardware-supported shift” mode on =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' AND OR LD LD LD LD LD OR LD LD A, #%9FFF; A, #%4000; EXT4, A; select “4-bit right rotate” A, #%3ED7; load A = %3ED7 %1FE, A; write A to the RAM A, %1FE; A = %73ED A,EXT4; turn “hardware-supported rotate” mode on A,#%6000; EXT4, A; select “byte swap” A, %1FE; A = %D73E 5HJLVWHU*URXSV Table 17 provides a summary of the registers in external banks. 7DEOH 5HJLVWHU6XPPDU\ %$1. %$1.6XE $GGUHVV 5($'5HJLVWHU %DQN GLU ELW,2SRUWGLUHFWLRQFRQWURO GLU ELW,2SRUWGLUHFWLRQFRQWURO SRUW ELW,2SRUW SRUW ELW,2SRUW , &BLQW ,&LQWHUIDFHUHJLVWHU SOOBIUHT 3//IUHTXHQF\FRQWURO ZULWHFRQWUROUHJLVWHU &XUVRUSDOHWWHJDXJH:ULWHFRQWUROUHJLVWHU 5HVHUYHG 5HVHUYHG ZGWBVPUBFWO,QWHUUXSW 605DQG:'7FRQWURODQGLQWHUUXSW FORFNBFWO &ORFNFRQWUROVZLWFK9&2'27 FDSBVBFWO &RXQWHUWLPHUVFRQWURO $'&BFWO $'FRQYHUWHUFRQWURO VWDQGDUGBFWO 2XWSXW+96<1&EOQNFRQWURO ELWFRXQWHU VFONBIUHT 6WRSVOHHSQRUPDOPRGH FODPSBSRV 'HILQHVSRVLWLRQRIYLGHRFODPSSXOVH %DQN 3679& :5,7( 5HJLVWHU 6723:'7 'HVFULSWLRQ 6WRSDQG:'7LQVWUXFWLRQVELWFRXQWHU =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU6XPPDU\ &RQWLQXHG %$1. %$1.6XE $GGUHVV 5($'5HJLVWHU %DQN &*520RIIVHWUHJLVWHU &*520RIIVHWUHJLVWHU 6KDGRZ&RQWUROUHJLVWHU 'HILQHVULJKWDQGOHIWVKDGRZFRORU SZPBGDWD ELW3:0GDWD SZPBGDWD ELW3:0GDWD SZPBGDWD ELW3:0GDWD SZPBGDWD ELW3:0GDWD SZPBGDWD ELW3:0GDWD SZPBGDWD ELW3:0GDWD RXWSXWSDOHWWH 2XWSXWSDOHWWH SDOHWWHBFRORU 'LVSOD\SDOHWWHFRORUXQGHUOLQHFRORU FDSWXUHBGDWD RVGBFRQWURO DWWULEXWHBGDWD YUDPBGDWD &KDUDFWHUDWWULEXWHYLGHR5$0GDWD FKB[BORB[ FJBDWWULEXWH &KDUDFWHUPXOWLSOHFKDUDFWHUJUDSKLFV DWWULEXWH ORB[BPLGB[ FJBQ[WBSUY &KDUDFWHUPXOWLSOHQH[WRUSUHYLRXVGDWD KLB[BKLB[ FJBFXUUHQW &KDUDFWHUPXOWLSOHFXUUHQWGDWD %DQN :5,7( 5HJLVWHU ,&VODYHDGGU 'HVFULSWLRQ &DSWXUHUHJLVWHUGDWD 2QVFUHHQGLVSOD\FRQWURO 5HJLVWHU'HVFULSWLRQ The register file in the Z90356 is organized into four banks that can be selected by writing to bits 5 and 6 (Register Bank Selector bits) in the Status Register of the Z90356 core. All registers are mapped into an external register space; each bank consists of 8 registers. The Status register is available to read or write at any time. The appropriate bank of registers must be selected before accessing the register. The software must keep track of which register bank is accessible at any time. Refer to Table 18 for register bank assignments. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH%DQN$VVLJQPHQWV %DQN 6WDWXV5HJLVWHU %DQN)XQFWLRQV %DQN xxxx xxxx x00x xxxx b ,2SRUWV,&LQWHUIDFH3//IUHTXHQF\FXUVRU %DQN xxxx xxxx x01x xxxx b &RQWUROUHJLVWHUV %DQN xxxx xxxx x10x xxxx b 3:0±3:0 %DQN xxxx xxxx x11x xxxx b 26'SDOHWWHFRQWURO %DQN,23RUWV,&,QWHUIDFH3//)UHTXHQF\&XUVRU&RQWURO5HJLVWHUV Table 19 defines the bits for Register1–R1(0) Cursor Palette Control Register. Table 20 defines the bits for Register2–R2(0) PLL Frequency Data Register. 7DEOH 5HJLVWHU5&XUVRU3DOHWWH %LW 5: 5: 5: 5: 5: 5: 5: 5: 49 5HVHW [ [ [ [ [ Z %LW 5: 5: 5: 5: 5: 5: 5: 5: 49 5HVHW [ [ [ [ [ [ [ Z 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ : 'DWD 'HVFULSWLRQ 5HVHUYHG fe-------------- 5 : 5HVHUYHG 1RHIIHFW &XUVRU3DOHWWH --d------------- : 3DOHWWHUHFRPPHQGHG &XUUHQWSDOHWWH²325 3J:ULWHQ(Q ---c------------ 5 : 3DJH:ULWH(QDEOH 3DJH:ULWH'LVDEOH²325 3DJH:ULWH ----ba9876543210 5 : [[[[ :ULWH3DJH 3679& 5 =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU53//)UHTXHQF\'DWD5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 0BGLVDEOH 6BGLVDEOH 5 : 'DWD 'HVFULSWLRQ f--------------- 5 : ,&0DVWHULQWHUIDFHGLVDEOHG ,&0DVWHULQWHUIDFHHQDEOHG±325 -e-------------- 5 : ,&6ODYHLQWHUIDFHGLVDEOHG ,&6ODYHLQWHUIDFHHQDEOHG±325 ,&0BPX[ --d------------- 5 : 6HOHFW,06',06&±325 6HOHFW,06',06& ,&B2XWB ---c------------ 5 5HVLVWDQFH : WRXWSXWUHVLVWDQFH 1RUPDO&026SRUWRXWSXW UHVLVWDQFH±325 ,&BVSHHG ----b----------- 5 BUDQJH : /RZVSHHGUDQJHN+]N+] +LJKVSHHGUDQJHN+] N+]±325 5HVHUYHG -----a---------- 5 3 +6<1& ------9--------- 5 : +6<1&ORJLFWDNHVLQSXWIURP3LQ +6<1&ORJLFWDNHVLQSXWIURP +6<1&SLQ±325 -------8-------- 5 3 &RP6<1& : &RPSRVLWH6\QF2XWSXW 3,2±325 3//BGDWD : [[ 3//GLYLGHU [[ --------76543210 5 : 5HWXUQ³´ 1RHIIHFW If the master or slave I2C interface is enabled, the corresponding I/Os (Port01 and Port02 for the slave, Port11 and Port12 for the master) must be assigned as outputs. The VCO, DOT, and SCLK frequency are defined as the following: FVCO = FDOT = FSCLK = XTAL * (256 + PLLDATA) Therefore, XTAL = 32.768 KHz. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' At POR, the PLL frequency data register is preset to %70, which corresponds to the VCO frequency of 12.058 MHz. The PLL_data field can be loaded with any value from %00. This value corresponds to an SCLK = 256*XTAL up to %FF, which corresponds to an SCLK = 511*XTAL. Table 21 through Table 25 describe the bits in registers 3 through 7. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU5,&,QWHUIDFH5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ &RPPDQG fed------------- 5 7RJJOH ---c------------ 5 5HVHW ----b----------- 5 : ' 5HWXUQ 6HH7DEOHDQG7DEOHIRUDIXOO GHVFULSWLRQ : 6ODYHLQWHUIDFH 0DVWHULQWHUIDFH±325FRQGLWLRQ 7RJJOHDFWLYH,&LQWHUIDFH 1RHIIHFW : 6ODYHBPRGH -----a---------- 5 : 6ODYH%XV\ ------9--------- 5 : 0DVWHU%XV\ -------8-------- 5 : 'DWD --------76543210 5 5HWXUQ 5HVHW6ODYH,&LQWHUIDFHLIELWF! 5HVHW0DVWHU,&LQWHUIDFHLIELWF! 1RHIIHFW 6ODYHPRGHLVDFWLYH325FRQGLWLRQ 6ODYHPRGHLVLQDFWLYH 1RHIIHFW 6ODYH,&LQWHUIDFHLVEXV\ 6ODYH,&LQWHUIDFHLVLGOH 1RHIIHFW 0DVWHU,&LQWHUIDFHLVEXV\ 0DVWHU,&LQWHUIDFHLVLGOH 1RHIIHFW [[ : [[ 5HFHLYHGGDWD 'DWDWREHVHQW Data written to R3(0)<cb> requires 4 cycles before being applied. Consecutive writings to these bits require at least a 6-cycle delay. The received data is available for reading only when the “busy” bit is reset to a “0.” When POR, the speed of the I2C interface is set to “Low.” 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU53RUW'DWD5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 3RUWBGDWD fedcba9876543210 5 : : 3679& 'DWD 'HVFULSWLRQ [[[[ ,IDSRUWLVFRQILJXUHGLQ,QSXW PRGHHQWHUWKHLQSXWGDWDRQWRWKH SRUWSLQV [[[[ ,IDSRUWLVFRQILJXUHGLQ2XWSXW PRGHWKHQWKHGDWDLVZULWWHQ GLUHFWO\WRWKHSRUWGDWD =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU53RUW'DWD5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 5HVHUYHG fedcba9--------- 5 3RUWBGDWD -------876543210 5 : 'DWD 5HWXUQ 1R(IIHFW : : 'HVFULSWLRQ [[[[ ,IDSRUWLVFRQILJXUHGLQ,QSXW PRGHHQWHUWKHLQSXWGDWDRQWRWKH SRUWSLQV [[[[ ,IDSRUWLVFRQILJXUHGLQ2XWSXW PRGHWKHQWKHGDWDLVZULWWHQ GLUHFWO\WRWKHSRUWGDWD 7DEOH 5HJLVWHU53RUW'LUHFWLRQ5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ 3RUWBGLUHFWLRQ fedcba9876543210 5 : [[[[ ,QSXWPRGHIRU FRUUHVSRQGLQJELW 2XWSXWPRGHIRU FRUUHVSRQGLQJELW 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU53RUW'LUHFWLRQ5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 5HVHUYHG fedcba9--------- 5 : 'DWD 5HWXUQ 1R(IIHFW : 3RUWBGLUHFWLRQ -------876543210 5 [[[[ : 'HVFULSWLRQ ,QSXWPRGHIRU FRUUHVSRQGLQJELW 2XWSXWPRGHIRU FRUUHVSRQGLQJELW %DQN&RQWURO5HJLVWHUV Table 26 through Table 33 provide bit functions for Bank 1 Control registers. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU5&ODPS3RVLWLRQ5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 'LVDEOHBFODPSB f--------------- 5 : 'DWD 'HVFULSWLRQ : 'LVDEOHBFODPSB -e-------------- 5 : 'LVDEOHBWLSBFODPS --d------------- 5 : &RXQWHUBLQSXW ---c------------ 5 : $5HQDEOH ----b----------- 5 5HVHUYHG -----a987------- 5 3RVLWLRQ ---------6543210 5 $'&&ODPSJHQHUDWLRQLV GLVDEOHG $'&&ODPSJHQHUDWLRQLV HQDEOHG $'&&ODPSJHQHUDWLRQLV GLVDEOHG $'&&ODPSJHQHUDWLRQLV HQDEOHG $'&7LSFODPSLVGLVDEOHG± 325 $'&7LSFODPSLVHQDEOHG &RXQWHUWDNHVLQSXWIURP 3±325 &RXQWHUWDNHVLQSXWIURP LQWHUQDO+6<1&6HSDUDWRU : $5HQDEOHG $5GLVDEOHG±325 : 5HWXUQ³´ 1RHIIHFW : [[ 3RVLWLRQRIFODPSSXOVHIURP OHDGLQJHGJHRIWKH+ )/<%$&. At POR the disable_clamp bit is set to 1. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' The clamp pulse is generated if Enabled (bit <f>) and the SCLK frequency are switched back to PVCO. The SVCO/PVCO flag in R6(1) must be reset to 0 before the current HSYNC, regardless of whether the SVCO is enabled or disabled. The clamp position is defined by the Position field. The width of the clamp pulse cannot be modified and is set to 1us. The value that can be assigned to the “Position” field must be >%10 and <%7F. The time interval between the leading edge of the H-FLYBACK and the beginning of the clamp pulse can be calculated from the following equation: T D E L AY = Positio n Ë -------- Û = Position 82ns Í TSCLKÝ 1 7DEOH 5HJLVWHU56SHHG&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ 5HVHUYHG fedcba98765432-- )DVWBHQDEOH --------------1- 4 9 39&269&2HQDEOHG 39&269&2GLVDEOHG±325 )DVWBVORZ ---------------0 4 9 6&/.LV0+] 6&/.LV.+]±325 5HVHUYHG5HWXUQ When a POR, SMR, or WDT reset occurs, both the Fast_enable and Fast/Slow are reset to 0. This event corresponds to an SCLK frequency of 32.768 kHz. To switch from a 32.768-kHz SCLK to 12 MHz, use the following procedure: 1. Set the H_Position field R6(1)<3:0> to a nonzero value. 2. Enable the primary and secondary VCOs (set the Fast_enable bit R1(1)<1> to “1”). 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 3. Wait for one second (1s) for the 12-MHz PLL to stabilize (about 50000 clock cycles). The delay depends on the external PLL filter and CAN vary significantly. 4. Switch the SCLK to a fast clock (set Fast/Slow bit R1(1)<0> to 1). 5. Simultaneously set the H_Position field R6(1)<3:0> to 0FH and the No_Switch field R6(1)<4> to 1 (no clock switch). To switch from the 12-MHz SCLK to 32.768 kHz, use the following procedure: 1. Switch the SCLK to a 32.768-kHz clock (set Fast/Slow bit R1(1)<0> to 0). 2. Wait for more than R2(0)<7:0> + 256 clock cycles (approximately 32 mS) for the SCLK to be switched. 3. Set the HSYNC_DELAY field R6(1)<3:0> to 0FH. 4. Disable the primary and secondary VCOs (set the Fast_enable bit R1(1)<1> to 0). 7DEOH 5HJLVWHU5:'76723ZULWHRQO\DQG %LW&RXQWHUUHDGRQO\&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 &RXQWHUBYDOXH fedcba987------- 5 5HVHUYHG ---------65432-- :'7BLQVWU --------------1- 5 : ---------------0 &RXQWHURQ3RUWYDOXH 1RHIIHFW : 5HWXUQ0 1RHIIHFW 5 5 : 3679& 'HVFULSWLRQ : : 6723BLQVWU 'DWD 5HWXUQ0 :'7HQDEOH:'7UHVHW 1RHIIHFW 5HWXUQ 6WRS 1RHIIHFW =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' When a POR, SMR or a WDT reset occurs, the WDT is disabled. The WDT can be reenabled only after the PVCO and SVCO are enabled, and the part is switched into a Fast mode (SCLK = 12 MHz). When switching the part into a SLOW mode (SCLK = 32.768 kHz), the WDT halts. To return to Fast mode, the WDT must be initialized again. 7DEOH 5HJLVWHU56WDQGDUG&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ &RXQWHUBUHVHW f--------------- 5 : 5HWXUQ 5HVHW&RXQWHURQ3RUW 1RHIIHFW &RXQWHUB212)) -e-------------- 5 : &RXQWHURQ3RUWLV21 &RXQWHULV2))±325FRQGLWLRQ 0DVNB+96<1& --d------------- 5 : 'LVDEOH+96<1&RXWSXW +96<1&,1287±325FRQGLWLRQ &KDUBVL]HBB ---c------------ 5 : [FKDUDFWHUPDWUL[ [RU[FKDUDFWHUPDWUL[± 325 $CPMAUGN ----ba---------- 4 9 00 01 10 11 4#/$CPM 214 4#/$CPM 4#/$CPM 4GUGTXGF 5*%&3RUW ------9--------- 5 : 6&/.5!*!%! 3333333 ,&B+,/2BVSHHG 3679& -------8-------- 5 : +,VSHHGN+] /2VSHHGN+]±325 =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ &*520EDQN --------7------- 5 : %DQNLVVHOHFWHGVWDUWV # %DQNLVVHOHFWHGVWDUWV # 69%/$1.3I ---------6------ 5 : 6HPLWUDQVSDUHQF\ 3IRXWSXW 26'BRQRII ----------5----- 5 : 26'LVHQDEOHG 26'LVGLVDEOHG±325 5*%BSRODULW\ -----------4---- 5 : 1HJDWLYH 3RVLWLYH 3RVLWLYH1HJDWLYH ------------3--- 5 : 1HJDWLYH+96<1&LQRXWSXWPRGH 3RVLWLYH+96<1&LQRXWSXWPRGH 6<1&%/$1. -------------2-- 5 : +9%/$1.RXWSXWV +96<1&RXWSXWV B+]DQG +9BSRODULW\ --------------10 5 : ,QWHUQDOPRGHRQO\796WDQGDUG +]OLQHVVXSSRUW +]OLQHVVXSSRUW±325 ([WHUQDOPRGHRQO\+93RODULW\ 3RVLWLYH 1HJDWLYH Two bits define the polarity of the HVSYNC signals. Bit <3> defines polarity of the signals when they are configured as outputs (it does not affect the internal HV–SYNC signals). Bit <1> defines the polarity of the external HV–SYNC signals, affecting the synchronization of the device. 0QVGU 1. The composite SYNC is active in internal mode only. 2. When using the internally-generated COMPOSITE SYNC signal, be sure the SCLK is set to 12.09 MHz (R2(0)<7:0> = %71). This action helps ensure the best HSYNC frequency approximation. 7DEOH 5HJLVWHU5$'&&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU5$'&&RQWURO5HJLVWHU &RQWLQXHG 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 5HVHUYHG f--------------- 5 +:BVKLIW -ed------------- 5 : 'DWD : 'HVFULSWLRQ 5HVHUYHG 1R(IIHFW : 'LUHFWXQPRGLILHG±325 ELWVKLIWOHIW ELWVKLIWULJKW %\WHVZDS +6<1&BHGJH ---c------------ 5 : +6<1&LVOHDGLQJHGJHDFWLYH +6<1&LVWUDLOLQJHGJHDFWLYH±325 $'&BUHI : $'&VXVH$9&&DQG$*1'DV UHIHUHQFHYROWDJH $'&VXVH9DQG9DV UHIHUHQFHYROWDJH±325 ----b----------- 5 $'&BVHOHFW -----a---------- 5 $'&GDWD 3DFNLQJ ------9--------- 5 5HVHUYHG -------8-------- 5 $'&VSHHG : $'&$'&VHOHFW $'&$'&$'&$'&VHOHFW± 325FRQGLWLRQ : $'&GDWDSDFNLQJLVRQ $'&GDWDSDFNLQJLVRII²325 : 5HWXUQ³´ 1RHIIHFW --------76------ 5 : 6LQJOHFRQYHUVLRQ±325FRQGLWLRQ 6&/. 6&/. 6&/. $'&VRXUFH ----------54---- 5 : $'&&9,$'&3±325 $'&3$'& $'&3 $'&3 $'&GDWD ------------3210 5 : ' $'&GDWD 1RHIIHFW 0QVG *If HSYNC is Leading Edge Active (R4(1)<c> = 1),the actual interrupt is delayed from the leading edge of HSYNC by 72 cycles (~6uS @12MHz). 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ADC0 has a signal range from 1.5 to 2.0 V. This field is always connected to the Composite Video Input pin and can be clamped to a Ref– voltage (1.5V). ADC1, ADC2, ADC3, and ADC4 have a signal range from 0 to 5.0 V. ADC5 features a signal range from 1.5 to 2.0 V. For this field, the input signal can be clamped to a Ref+ voltage (2.0V). To use the I/O pin as an ADC input, the corresponding port must be set up as an input (refer to R4(0) and R6(0)). 7DEOH 5HJLVWHU57LPHU&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 &$3LQWBU f--------------- 5 : : &$3LQWBI -e-------------- 5 : 7RXWBV --d------------- 5 : 7RXWB&$3 ---c------------ 5 : 5HVHUYHG 3679& ----ba---------- 5 : 'DWD 'HVFULSWLRQ 5LVLQJHGJHLVFDSWXUHG 1RULVLQJHGJHLVFDSWXUHG 5HVHWIODJ 1RHIIHFW )DOOLQJHGJHLVFDSWXUHG 1RIDOOLQJHGJHLVFDSWXUHG 5HVHWIODJ 1RHIIHFW 7LPHRXWRIVWLPHU 1RWLPHRXWRIVWLPHU 5HVHWIODJ 1RHIIHFW 7LPHRXWRI&DSWXUHWLPHU 1RWLPHRXWRI&DSWXUHWLPHU 5HVHWIODJ 1RHIIHFW 5HWXUQ³´ 1RHIIHFW =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ 6SHHGBV ------98-------- 5 : V PV PV PV 3RUW &$3BLQW --------7------- 5 : LQWVRXUFHLV3RUW LQWVRXUFHLV&DSWXUHWLPHU &$3BKDOW ---------6------ 5 : &DSWXUHWLPHULVKDOWHG &DSWXUHWLPHULVUXQQLQJ &$3BHGJH ----------54---- 5 : 1R&DSWXUH &DSWXUHRQULVLQJHGJHRQO\ &DSWXUHRQIDOOLQJHGJHRQO\ &DSWXUHRQERWKHGJHV &$3BJOLWFK ------------32-- 5 : *OLWFKILOWHULVGLVDEOHG 76&/.LVILOWHUHGRXW 76&/.LVILOWHUHGRXW 76&/.LVILOWHUHGRXW &$3BVSHHG --------------10 5 : 6&/. 6&/. 6&/. 6&/. 4GUGVVKPIC%CRVWTG6KOGTHNCIFQGUPQVOQFKH[%CRVWTG%QWPVGTCPFQT%CRVWTGTGIKUVGTFCVC9JGPVJG INKVEJHKNVGTKUGPCDNGFVJGFWTCVKQPQHVJGRWNUGKUFGETGCUGFD[%#2AINKVEJXCNWG 7DEOH 5HJLVWHU5&ORFN6ZLWFK&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 5HVHUYHG fedcba9876------ 5 3679& : : 'DWD 'HVFULSWLRQ 5HWXUQ 1RHIIHFW =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HJ)LHOG %LW3RVLWLRQ 69&239&2 ----------5----- 5 : 5 : 1RB6ZLWFK -----------4---- 5 : 'DWD 'HVFULSWLRQ 6&/. 69&2IODJ 6&/. 39&2IODJ325 6ZLWFK6&/.WR39&2 1RHIIHFW 6&/. 39&2QRFORFN VZLWFKLQJ²325 &ORFNVZLWFKLQJLVHQDEOHG +B3RVLWLRQ ------------3210 5 : ' 'HILQHVGHOD\RI+6<1&LQWHUUXSW E\;6&/.F\FOHV +B3RVLWLRQ The H_position field defines the delay between when the Z90356 receives an H-sync and when the H-sync interrupt is executed. Because the On-Screen Display is controlled by software this delay allows fine tuning for On-Screen Display centering. At Power On Reset (POR) this value is in an unknown state. If this value is set to 0x0, neither the HSYNC interrupt nor clock switching can execute. To receive an H SYNC interrupt, valid delay values are between 0x1 and 0xF. Valid delay values produce a delay according to the following equation: 11 + 4 * (H_position - 1) For example, an H_position setting of 0xF produces a delay of 67 system clock cycles after the trailing edge of HSYNC. 11 + 4 * (15 - 1) = 67 1RB6ZLWFK The No_switch bit determines if the system clock is permanently set to the Primary VCO (PVCO) or allowed to switch between PVCO and the Secondary VCO (SVCO). This bit is set to 1 (NO clock switching) at power up reset. Caution: After the system has been switched to fast (12 MHz) clock both signals feeding into this switch MUST be PVCO BEFORE the switch setting is changed. Otherwise a short system clock can result which causes the processor to run at a higher frequency than specified. The instruction fetched from memory, at the location with the out-of-spec frequency, can be corrupted! To ensure safe clocks, the following practices are recommended: 1. 3679& Set the No_switch to the required setting before switching from the 32.768 kHz to the fast (12 MHz) clock and leave it there permanently. =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 2. 3. Use the following procedure when changing from Switching VCO to permanent PVCO while running from the fast clock: Simultaneously set the H_position delay to 0x0, while leaving the No_switch enabled (0), and the SVCO/PVCO left as (0). Wait a minimum of 80 clock cycles to flush any H-sync out of the system. Simultaneously Switch SVCO/PVCO to PVCO (write 1 into R6(1)<5>), while leaving the No_switch enabled (0), and the H_position delay at 0x0. Wait for 3 system clock cycles to be sure that the clock has had time to switch to PVCO. Switch No_switch to No clock switch (write 1 into R6(1)<6>). The H_position can be set to none-zero at this time as well. Use the following procedure when changing from permanent PVCO to Switching VCO while running from the fast clock. Simultaneously set the H_position delay to 0x0, while leaving the No_switch disabled (1), and the SVCO/PVCO setting as don’t care (0). Wait a minimum of 80 clock cycles to flush residual H-sync out of the system. Simultaneously switch SVCO/PVCO to PVCO (write 1 into R6(1)<5>), while leaving the No_switch disabled (1), and the H_position delay at 0x0. Wait 3 system clock cycles to be sure that the clock has had time to switch to PVCO. Switch No_switch to Clock switching is Enabled (write 0 into R6(1)<6>). The H_position can be set to none-zero at this time as well. 69&239&2 The SVCO/PVCO bit when read back determines the current setting of the system clock. Writing a 1 to this bit switches the system clock from its current setting to PVCO. This switch has a glitch filter that removes random voltage spikes. It must be changed back to PVCO. The Z90356 switches to the SVCO automatically when it receives an H-sync interrupt. This mechanism exists to synchronize the system clock exactly with the H-sync trailing edge. The result is a sharp start of the OSD, jitter free. An example of a typical SVCO/PVCO switching follows: 1. System clock is set to PVCO. 2. H-sync interrupt occurs. (The system clock has automatically been set to the SVCO). OSD code is executed inside of the H-sync Interrupt Service Routine (ISR). 3. Before leaving the ISR, the user switches the clock back to PVCO. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' The clamp pulse (defined in R0(1)) is generated only if the SVCO/PVCO switch is set to PVCO before receiving an HSYNC. The software provides the correct switch setting before every HSYNC. Table 33 lists the interrupt/WDT for the WST/SMR control register. 7DEOH 5HJLVWHU5,QWHUUXSWV:'7605&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : ,QWBSULRULW\ fed------------- 5 : [ 6HH7DEOH ,QWBPDVN ---cba---------- 5 : [[ [[ [[ [[ [[ [[ LQWLVHQDEOHG LQWLVGLVDEOHG LQWLVHQDEOHG LQWLVGLVDEOHG LQWLVHQDEOHG LQWLVGLVDEOHG :'7VSHHG ------98-------- 5 : PV PV PV PV 605IODJ --------7------- 5 1R6WRS0RGH5HFRYHU\±325 6WRS0RGH5HFRYHU\ 1RHIIHFW 25RIDOO605VRXUFHV 1$1'RIDOO605VRXUFHV : 605 SRODULW\ 3679& ---------6------ 5 : 'DWD 'HVFULSWLRQ =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HJ)LHOG 5 : 605VRXUFH ----------543210 5 : VPU VPU VPU VPU VPU VPU %LW3RVLWLRQ 'DWD 'HVFULSWLRQ ----------5---------------4---------------3---------------2---------------1---------------0 [[ %LWZKLFKFRUUHVSRQGVWRD³´LQ[[ ELQDU\UHSUHVHQWDWLRQLVDFWLYH S S S S S S The final result of the Stop-Mode Recovery (SMR) is RESET. Ports selected for SMR must be assigned as inputs, while the other SMR ports must be assigned as outputs exhibiting an inactive value. If any SMR source is active, and the Stop Mode is executed, the part resets immediately. All core interrupts are set to int0 > int1 > int2. These priorities cannot be changed and are embedded into the core. However, Z90356 architecture provides flexibility to change the priority of the interrupts by switching the interrupt sources between interrupt inputs of the Z90356 core. The correspondence between HSYNC, VSYNC and 1s/CAP interrupts sources, and int0, int1, and int2 interrupts inputs of the Z90356 are listed in Table 34. 7DEOH ,QWHUUXSW3ULRULW\ ,QWB3ULRULW\ )LHOG +6<1&,V 6ZLWFKHG7R 96<1&,V 6ZLWFKHG7R V&$3,V 6ZLWFKHG7R ,QWB3ULRULW\ )LHOG LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW LQW %DQN3:05HJLVWHUV Table 35 lists the bits for the PWM registers. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU±5HJLVWHU5±53:0±5HJLVWHUV %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 5HVHUYHG fedcba98-------- 5 3:0BGDWD --------76543210 5 : 'DWD 5HWXUQ 1RHIIHFW : : 'HVFULSWLRQ [[ ELW3:0GDWD All of the PWMs feature push-pull. Outputs from all PWMs are staged by one PVCO clock. The repetition frequency of the PWM output signals can be calculated from the following equation: F PVCO 12MHz F PWM = ----------- = ---------- = 6kHz 8 – 256 2048 When reset, PWM_data registers are not initialized; however, PWM output is set to 0. Because the PWM is clocked with PVCO, it is better to initialize the PWM_data before enabling PVCO. Table 36 lists the bits for the shadow control register. Table 37 lists the bits for the CGROM offset register. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU56KDGRZ&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ 5HVHUYHG fe-------------- 5 /VKDGRZ&RORU --dcb----------- 5 : [[ /HIWVKDGRZFRORU325 5VKDGRZ&RORU -----a98-------- 5 : [[ 5LJKWVKDGRZFRORU325 5HVHUYHG --------76543210 5 5HWXUQ 1RHIIHFW : 5HWXUQ 1RHIIHFW : 7DEOH 5HJLVWHU5&*5202IIVHW5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ &*RIIVHW fedcba9876543210 5 : [[[[ &*520RIIVHW325 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' %DQN2Q6FUHHQ'LVSOD\>26'@5HJLVWHUV Table 38 lists the R0(3)- R2(3) character multiplier registers (Read operation). Table 39 lists the R0(3)–R1(3) Shift Registers (Write operation). Table 40 lists the R2(3) Attributes Register (Write operation). 7DEOH 5HJLVWHU±5HJLVWHU5HDG2SHUDWLRQ 5±5&KDUDFWHU0XOWLSOH5HJLVWHUV %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ1DPH &*520'DWD FJURPB[BKL ffeeddccbbaa9988 5 FJURPB[BKL fffeeedddcccbbba FJURPB[BOR 7766554433221100 5 FJURPB[BPLG aa99988877766655 FJURPB[ fedcba9876543210 5 6LQJOHVL]HFKDUDFWHU5! FJURPB[BOR 5444333222111000 /RZZRUGRIWULSOHVL]HFKDUDFWHU 5! 3679& 5HJ$GG 'HVFULSWLRQ +LJKZRUGRIGRXEOHVL]HFKDUDFWHU 5! +LJKZRUGRIWULSOHVL]HFKDUDFWHU 5! /RZZRUGRIGRXEOHVL]HFKDUDFWHU 5! 0LGGOHZRUGRIWULSOHVL]HFKDUDFWHU 5! =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU±5HJLVWHU:ULWH2SHUDWLRQ 5±56KLIW5HJLVWHUV %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ1DPH &*520'DWD 5HJ$GGUHVV 'HVFULSWLRQ FXUUHQWBUHJ fedcba9876543210 5 FXUUHQWOLQHVKLIWUHJLVWHU QH[WSUHYLRXVBUHJ fedcba9876543210 5 QH[WSUHYLRXVOLQHVKLIWUHJLVWHU Registers R1(3) and R0(3) must be loaded with video data once every 16 cycles. To support smoothing, register R1(3) must be updated every 16 cycles. The current line register is loaded first, followed by next/previous register during the next cycle. The next/ previous register is loaded only if smoothing/fringing attributes are activated for the current character. If neither register is loaded, the space character is displayed. There is no difference between loading 0000h into either register or not loading at all. 7DEOH 5HJLVWHU²5$WWULEXWHV5HJLVWHU:ULWH2SHUDWLRQ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5HVHUYHG f--------------- 3679& 'DWD [ 'HVFULSWLRQ 1RHIIHFW =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HJ)LHOG %LW3RVLWLRQ 'DWD 'HVFULSWLRQ %DFNJURXQGFRORU -edc------------ %ODFN %OXH *UHHQ &\DQ 5HG 0DJHQWD <HOORZ :KLWH )RUHJURXQGFRORU127 ----ba9--------3DOHWWH0RGH ' 6DPHDV%DFNJURXQGPRGH 3DOHWWHVHOHFWLRQ 3DOHWWH0RGH ----ba---------- 3DOHWWH 3DOHWWH 3DOHWWH 3DOHWWH QGBXQGHUOLQH 3DOHWWH0RGH ------9--------- 6HFRQG8QGHUOLQHLVDFWLYH 6HFRQG8QGHUOLQHLV127DFWLYH VWBXQGHUOLQH -------8-------- )LUVW8QGHUOLQHLVDFWLYH )LUVW8QGHUOLQHLV127DFWLYH 6KLIWBYLGHR --------7------- 9LGHRVLJQDOLVGHOD\HGE\ SL[HOV 6WDQGDUGFKDUDFWHUSRVLWLRQLQJ 6HPL7UDQVSDUHQW ---------6------ 6HPL7UDQVSDUHQWEDFNJURXQG %DFNJURXQGFRORUGHILQHGE\ ³EDFNJURXQGFRORU´ILHOG %OLQNLQJ ----------5----- %OLQNLQJFKDUDFWHU 1RWEOLQNLQJFKDUDFWHU ,WDOLF -----------4---- ,WDOLFFKDUDFWHU 1RWLWDOLFFKDUDFWHU &RORUBGHOD\ ------------32-- &KDUDFWHUFRORUFKDQJHV LQVWDQWO\ &RORUFKDQJHVZLWKSL[HOV GHOD\ &RORUFKDQJHVZLWKSL[HOV GHOD\ &RORUFKDQJHVZLWKSL[HOV GHOD\ 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5HJ)LHOG %LW3RVLWLRQ 'DWD 6KDGRZLQJ)ULQJLQJ --------------10 'HVFULSWLRQ 1RVKDGRZLQJQRIULQJLQJ /HIWVKDGRZ 5LJKWVKDGRZ %RWKVKDGRZVIULQJLQJ 0QVG *If both the background and foreground colors of a character are set to be the same, the character’s background is displayed as transparent. The attributes register must be loaded 8 cycles after the current line register R0(3) is loaded. Loading the attributes register enables the OSD logic during the next 16 cycles. If the attributes register is not loaded, there is no active OSD, even if the current line register R0(3) is loaded. See Table 41. 7DEOH 5HJLVWHU5HDG2SHUDWLRQ 5$WWULEXWHV5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 'DWD 'HVFULSWLRQ 6DPHDV5 The data read from the attribute register is a combination of attribute fields from the most recently displayed character and control character codes loaded into the attribute_data register. Character codes are fetched from Video RAM and must be loaded into the attribute_data register R3(3). Bit <f> of the attribute_data register (during a read) indicates whether the most recent character was a control or displayed character. The data read from the attribute_data register must be directly loaded into attribute register R2(3). Refer to Table 42. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU5:ULWH2SHUDWLRQ $WWULEXWH'DWD5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 'DWD 'HVFULSWLRQ 95$0BGDWD fedcba9876543210 [[[[ &KDUDFWHUFRGHIHWFKHGIURP95$0 Loading VRAM data into an attribute_data register initializes a CGROM access cycle. Four clock cycles after the LD instruction, the Z90356 halts for three clock cycles to fetch the data from CGROM and latch it into a CGROM data capture register. After the CGROM data is latched, core operations are resumed. When a control character code is loaded into the attribute_data register, the CGROM data from address 0000 hex is fetched. Therefore, ZiLOG recommends placing a space character at location 0000 hex in CGROM. Refer to Table 43 through Table 46 for the various VRAM data formats loaded in R3(3). 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 'LVSOD\&KDUDFWHU)RUPDWIRU$WWULEXWH'DWD5HJLVWHU5 26'0RGH:ULWH2SHUDWLRQ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ &RQWUROELW f--------------- %DFNJURXQGFRORU -edc------------ %ODFN %OXH *UHHQ &\DQ 5HG 0DJHQWD <HOORZ :KLWH )RUHJURXQGFRORU 1RW3DOHWWHPRGH ------ba9------- ' 6DPHDV%DFNJURXQGBFRORU )RUHJURXQGSDOHWWH 3DOHWWHPRGH --------ba------ 3DOHWWHGHILQHGLQ5±! 3DOHWWHGHILQHGLQ5E±! 3DOHWWHGHILQHGLQ5±! 3DOHWWHGHILQHGLQ5±! -------9--------- 6HFRQGXQGHUOLQHDWWULEXWHLV DFWLYH 6HFRQGXQGHUOLQHDWWULEXWHLV LQDFWLYH 6HFRQGXQGHUOLQH 3DOHWWHPRGH $WWULEXWH 'DWD 'HVFULSWLRQ -------8-------- &KDUDFWHUFRGH --------76543210 'LVSOD\FKDUDFWHU 6HOHFWHGDWWULEXWH5!LV DFWLYH 6HOHFWHGDWWULEXWH5!LV LQDFWLYH '' 'HILQHVWKHFKDUDFWHULQ&*520 0QVG+HDQVJVJGDCEMITQWPFCPFHQTGITQWPFEQNQTUQHCEJCTCEVGTCTGUGVVQDGVJGUCOGVJG EJCTCEVGT UDCEMITQWPFKUFKURNC[GFCUVTCPURCTGPV 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH &RQWURO&KDUDFWHU)RUPDW26'0RGH:ULWH2SHUDWLRQ $WWULEXWH'DWD5HJLVWHU5 %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 'DWD 'HVFULSWLRQ &RQWUROELW f--------------- &RQWUROFKDUDFWHU 5HVHUYHG -edcba98-------- [ 5HVHUYHG²GRHVQRWDIIHFW26' 6KLIWBYLGHR --------7------- 9LGHRVLJQDOLVGHOD\HGE\SL[HOV 6WDQGDUGFKDUDFWHUSRVLWLRQLQJ 7UDQVSDUHQW ---------6------ 7UDQVSDUHQWEDFNJURXQG %DFNJURXQGFRORUGHILQHGE\³EDFNJURXQG FRORU´ILHOG %OLQNLQJ ----------5----- %OLQNLQJFKDUDFWHU 1RWEOLQNLQJFKDUDFWHU ,WDOLF -----------4---- ,WDOLFFKDUDFWHU 1RWLWDOLFFKDUDFWHU &RORUBGHOD\ ------------32-- &KDUDFWHUFRORUFKDQJHVLQVWDQWO\ &RORUFKDQJHVZLWKSL[HOVGHOD\ &RORUFKDQJHVZLWKSL[HOVGHOD\ &RORUFKDQJHVZLWKSL[HOVGHOD\ 6KDGRZLQJ )ULQJLQJ --------------10 1RVKDGRZLQJQRIULQJLQJ /HIWVKDGRZ 5LJKWVKDGRZ %RWKVKDGRZVIULQJLQJ Smoothing is supported for double size (x2) and triple size (x3) characters only. At reset, the background color in OSD mode is black. Foreground color, background color, blinking and italic attributes are delayed by 3/4 character. The smoothing attribute is enabled. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 'LVSOD\&KDUDFWHU)RUPDW$WWULEXWH'DWD5HJLVWHU5 :ULWH2SHUDWLRQ&&'0RGH %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ &RQWUROELW 7------- &KDUDFWHUFRGH -6543210 '' 3679& 'DWD 'HVFULSWLRQ 'LVSOD\FKDUDFWHU 'HILQHVWKHFKDUDFWHULQ&*520 =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH &RQWURO&KDUDFWHU)RUPDW$WWULEXWH'DWD5HJLVWHU5 &&'0RGH:ULWH2SHUDWLRQ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 'DWD 'HVFULSWLRQ &RQWUROELW 7------- &RQWUROFKDUDFWHU 7UDQVSDUHQW -6------ 7UDQVSDUHQWEDFNJURXQG %DFNJURXQGFRORUGHILQHGE\³EDFNJURXQG FRORU´ILHOG %OLQNLQJ --5----- %OLQNLQJFKDUDFWHU 1RWEOLQNLQJFKDUDFWHU ,WDOLF ---4---- ,WDOLFFKDUDFWHU 1RWLWDOLFFKDUDFWHU )RUHJURXQGFRORU ----321- )LUVWXQGHUOLQH -------0 %ODFN %OXH *UHHQ &\DQ 5HG 0DJHQWD <HOORZ :KLWH 8QGHUOLQHDWWULEXWHLVDFWLYH 8QGHUOLQHDWWULEXWHLVLQDFWLYH In CCD mode, each character occupies 8 bits (one byte) in VRAM. The CCD characters must be mapped into a 16-bit VRAM data field. The hardware supports compressed character placement in VRAM. Each word in VRAM is represented by HIGH byte and LOW byte. A currently active byte is selected by R4(3)<c>. The format and data representation for both bytes is the same. There are two possible character formats defined: a “display” character and a “control” character. The code stored in “display” character format defines a character code. The 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' “control” character defines up to seven attributes of the next character and is presented on screen as a space character. Combining display and control characters generates a CCD or OSD according to FCC specification. Refer to Table 47. 7DEOH 5HJLVWHU²526'&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ 8QGHUOLQH fe-------------- 5 : [ [ [ [ 6HFRQGXQGHUOLQHLVDFWLYH 6HFRQGXQGHUOLQHLVLQDFWLYH )LUVWXQGHUOLQHLVDFWLYH )LUVWXQGHUOLQHLVLQDFWLYH 26'&&' --d------------- 5 : 26'PRGH &&'PRGH &&'BWRSEWP ---c------------ 5 : 7KHXSSHUE\WHLQ95$0LVXVHG 7KHORZHUE\WHLQ95$0LVXVHG ,WDOLFBVKLIW ----ba98-------- 5 : [ 'HILQHVGHOD\RIWKHFKDUDFWHU %OLQNBRIIRQ --------7------- 5 : %OLQNLQJFKDUDFWHULVGLVSOD\HG %OLQNLQJFKDUDFWHULV127 GLVSOD\HGKLGGHQ 03;BEXV ----------65---- 5 : [FKDUDFWHUVL]H [FKDUDFWHUVL]H [FKDUDFWHUVL]H 5HVHUYHG &*520 VFDQBOLQH -----------43210 5 : ' 'HILQHV&*520DGGUHVVLQJ The Underline field must be set by firmware when scan lines that contain underline information are displayed. The underline bits are ANDed with the second and first 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' underline active fields of data loaded into attribute register R2(3), causing the screen character to be underlined. The Italic shift field defines a delay of video data. It is used to generate italic characters. The firmware decrements by 1 (the value of the Italic_shift field) for each consecutive line. The video signal is delayed only for characters that have the R2(3)<4> (“italic”) bit set to 1. Table 48 lists the bits for the capture register. 7DEOH 5HJLVWHU5&DSWXUH5HJLVWHU5HDG2SHUDWLRQ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW [ [ [ [ [ [ [ [ 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 &DSBGDWD fedcba9876543210 5 5HVHUYHG fedcba98-------0 5 ,&BVDGGU --------7654321- : 'DWD 'HVFULSWLRQ [[[[ ELWFDSWXUHGGDWD 5HWXUQ 1RHIIHFW : : '' ,&6ODYHLQWHUIDFHDGGUHVV In Read mode, R5(3) returns the 16-bit captured data from the IRIN pin. In Write mode, the 7-bit I2C slave interface address must be put in bit 7-1. Table 49 lists the bits for the palette control register. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU53DOHWWH&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ 3DOHWWH f--------------- 5 : 8QGHUOLQH FRORU -edc------------ 5 : %ODFN %OXH *UHHQ &\DQ 5HG 0DJHQWD <HOORZ :KLWH 3DOHWWH ----ba9--------- 5 : ' 6DPHDV8QGHUOLQHFRORU 3DOHWWH -------876------ 5 : ' 6DPHDV8QGHUOLQHFRORU 3DOHWWH ----------543--- 5 : ' 6DPHDV8QGHUOLQHFRORU 3DOHWWH -------------210 5 : ' 6DPHDV8QGHUOLQHFRORU 3DOHWWHPRGHLVDFWLYH 3DOHWWHPRGHLV,1$&7,9( At POR the palette control register is reset to 0. Table 50 lists the bits for the output palette control register. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 5HJLVWHU52XWSXW3DOHWWH&RQWURO5HJLVWHU %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW %LW 5: 5: 5: 5: 5: 5: 5: 5: 5: 5HVHW 0QVG44GCF99TKVG:+PFGVGTOKPCVG 5HJ)LHOG %LW3RVLWLRQ 5 : 'DWD 'HVFULSWLRQ %/$1.BGHOD\ fedc------------ 5 : 9%ODQNDQG69%/$1.GHOD\ YDOXH²±325FRQGLWLRQ %DFNJURXQGBRQ RII ----b----------- 5 : 0DVWHUEDFNJURXQGLVRQ 0DVWHUEDFNJURXQGLVRII±325 FRQGLWLRQ %DFNJURXQGBFRORU -----a98-------- 5 : ' 'HILQHVWKHFRORURIWKH0DVWHU EDFNJURXQGVDPHDVWKH SDOHWWH $WWU6HOHFW --------76------ 5 : VWXQGHUOLQH²325 6HPLWUDQVSDUHQF\ %OLQNLQJ &*520EDQNVHOHFW 6PRRWKLQJ ----------5----- 5 : 6PRRWKLQJORJLFGLVDEOHG²325 6PRRWKLQJORJLFHQDEOHG &XUVRU:ULWH (QDEOH -----------4---- 5 5HWXUQ³´ &XUVRUSDUDPHWHUVZULWH GLVDEOHG²325 &XUVRUSDUDPHWHUVZULWH HQDEOHG : 3DOHWWH ------------3210 5 : ' 3DOHWWHQXPEHU At POR the Output palette register is set to 0 for digital output. Table 15 is the look-up table for the color palettes. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ,QVWUXFWLRQ6HW The processor instruction set consists of 30 basic instructions. It is optimized for high code density and reduced execution time. Single-cycle instruction execution is possible on most instructions. The format for Op Codes and addressing modes is provided in the following tables but is normally not required. The assembler removes the burden of hand constructing the instruction format. by translating the mnemonics. System designers can access the instruction format when debugging. ,QVWUXFWLRQ6XPPDU\ The DSP instruction set can be broken down into the following types of instructions: • Accumulator Modification • Arithmetic • Bit Manipulation • Load • Logical • Program Control • Rotate and Shift Instruction format mnemonics are in Table 51. Table 52 through Table 58 list other instructions. 7DEOH ,QVWUXFWLRQ)RUPDW0QHPRQLFV 0QHPRQLF 'HVFULSWLRQ $ $GGUHVV DP $FFXPXODWRU0RGLILFDWLRQ E 5$0%DQN cc &RQGLWLRQ&RGH FRQVWH[S &RQVWDQW([SUHVVLRQ d 'HVWLQDWLRQ$GGUHVV GHVW 'HVWLQDWLRQ9DOXH IP )ODJ0RGLILFDWLRQ RS 2S&RGH US 5HJLVWHU3RLQWHU 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH ,QVWUXFWLRQ)RUPDW0QHPRQLFV &RQWLQXHG 0QHPRQLF 'HVFULSWLRQ V 6RXUFH$GGUHVV VUF 6RXUFH9DOXH 7DEOH $FFXPXODWRU0RGLILFDWLRQ,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ $%6 FF!$ $EVROXWH9DOXH &3 $VUF! &RPSDULVRQ '(& FF!$ 'HFUHPHQW ,1& FF!$ ,QFUHPHQW 1(* FF!$ 1HJDWH 7DEOH $ULWKPHWLF,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ $'' FF!$ $GG &3 $VUF! &RPSDUH 68% $VUF! 6XEWUDFW 7DEOH %LW0DQLSXODWLRQ,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ &&) 1RQH &OHDU&DUU\)ODJ &,() 1RQH &OHDU,QWHUUXSW(QDEOH)ODJ &23) 1RQH &OHDU2YHUIORZ3URWHFWLRQ)ODJ 6&) 1RQH 6HW&DUU\)ODJ 6,() 1RQH 6HW,QWHUUXSW(QDEOH)ODJ 623) 1RQH 6HW2YHUIORZ3URWHFWLRQ)ODJ 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH /RDG,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ /' GHVW!VUF! /RDG 323 GHVW! 3RS 386+ VUF! 3XVK 7DEOH /RJLFDO,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ $1' $VUF! /RJLFDO$1' 25 $VUF! /RJLFDO25 ;25 $VUF! /RJLFDO([FOXVLYH25 7DEOH 3URJUDP&RQWURO,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ &$// $ &DOO3URFHGXUH -3 $ -XPS 5(7 1RQH 5HWXUQ 7DEOH 5RWDWHDQG6KLIW,QVWUXFWLRQV 0QHPRQLF 2SHUDQGV ,QVWUXFWLRQ 5/ FF!$ 5RWDWH/HIW 55 FF!$ 5RWDWH5LJKW 6// FF!$ 6KLIW/HIW/RJLFDO 65$ FF!$ 6KLIW5LJKW$ULWKPHWLF 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ,QVWUXFWLRQ2SHUDQGV To access the operands for the DSP, use the Register Pointers, Data Pointers, Hardware Registers, Direct Addressing, Immediate Data and Memory. There are nine distinct types of instruction operands. Table 59 and Table 60 list instructions. 7DEOH ,QVWUXFWLRQ2SHUDQG6XPPDU\ 6\PEROLF1DPH 6\QWD[ 'HVFULSWLRQ SUHJV! 3QE 5HJLVWHU3RLQWHU GUHJV! 'QE 'DWD3RLQWHU KZUHJV! ;<3&65 (;7Q$%86 +DUGZDUH5HJLVWHUV DFFLQG! #$ $FFXPXODWRU,QGLUHFW GLUHFW! FRQVWH[S! 'LUHFW$GGUHVV([SUHVVLRQ OLPP! FRQVWH[S! /RQJ%LW,PPHGLDWH VLPP! FRQVWH[S! 6KRUW%LW,PPHGLDWH9DOXH UHJLQG! #3QE #3QE #3QE/RRS #3QE/RRS ,QGLUHFW$GGUHVVLQJRI5$0 PHPLQG! #'QE #'QE ##3QE ##3QE ##3QE/RRS ##3QE/RRS ,QGLUHFW$GGUHVVLQJRI520 7DEOH ,QVWUXFWLRQ0QHPRQLFV2SHUDQGV ,QVWUXFWLRQ 0QHPRQLF2SHUDQG5HSUHVHQWDWLRQ /' 3) /' SUHJV!VLPP! /' ;#$ /' KZUHJ!DFFLQG! /' <&) /' KZUHJ!OLPP! 68% $##3 68% $PHPLQG! 25 $#' 25 $PHPLQG! $' '$) $'' $GLUHFW! 386+ ' 386+ GUHJV! 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' RTGIU The register pointer mode is used for loading the pointer with the appropriate RAM address. This address references the RAM location that stores the requested data. The pointer can also be used to store 8-bit data when used as a temporary register. The pointers are connected to the lower 8 bits of the D-bus. Instruction 1 loads Pointer 2, RAM Bank0 with the value F2H. TGIKPF The register indirect mode is used for indirect access to RAM. As noted in Instruction 2, the register indirect address method is used to get the operand to multiply it with the accumulator. FTGIU The data-pointer mode is used as an indirect addressing method similar to @P2:0. The data pointers access the lower 16 bits of each RAM bank. Instruction 8 uses indirect addressing to PUSH information onto the stack. OGOKPF Pointer or data registers can be used to access program memory. Both are commonly used to reference program memory. Instructions 5 and 6 display this addressing method. Either pointer is automatically incremented to assist in transferring sequential data. CEEKPF Another method of indirect addressing is using the accumulator to store the address. Instruction 3 describes how to use this method. FKTGEV The absolute RAM address is used in the direct mode. A range between 0 and 511 (000H to 1FFH) is allowed. The accumulator is used in conjunction with this method as a source or destination operand. Instruction 7 displays the accumulator as the destination. NKOO This instruction indicates a long immediate load. A 16-bit word can be copied directly from the operand into the specified register or memory. Instruction 4 uses this method. UKOO This instruction can only be used for immediate transfer of 8-bit data in the operand to the specified RAM pointer. ,QVWUXFWLRQ)RUPDW The instruction format that specifies to the processor the action to be taken consists of the Op Code, destination, source, and other special bits. The assembler makes this operation transparent by providing mnemonics. Occasionally, the instruction format and development code can assist in debugging. Examples to clarify the various instruction formats and explain how specific bit patterns are developed and evaluated are provided below. Most instructions require one 16-bit word containing the information necessary for the processor to execute the instruction correctly. This process requires one clock cycle for execution. Immediate addressing, immediate operands, JUMP and CALL instructions 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' require two 16-bit words (two clock cycles). Each instruction type has a unique Op Code and format to differentiate various instructions. Different operations also have unique formats. The variables a, op, b, d, s, cc, am, fm, rp are used in the instruction format to depict bits determined by the active instruction. $'',7,21DQG,1&)RUPDWV The Op Code and format for an instruction differ to allow the processor to differentiate between the instructions. For example, the ASSITION instruction requires that two operands be defined in the instruction. ADD A, <regind> 6 6 6 6 2S&RGH 5$0 %DQN &RQGLWLRQ&RGH 0RGLILFDWLRQ&RGH The INC (increment) instruction requires that a condition and modification code be specified. INC A 2S&RGH &RQGLWLRQ&RGH 0RGLILFDWLRQ&RGH ,1&DQG6//)RUPDWV The INC and SLL instructions have the same Op Code with an accumulator modification format. The most recent four bits, the modification code, determine the type of operation the accumulator performs. INC A 2S&RGH &RQGLWLRQ&RGH 0RGLILFDWLRQ&RGH SLL A 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 2S&RGH &RQGLWLRQ&RGH 0RGLILFDWLRQ&RGH ,QVWUXFWLRQ%LW&RGHV The values in a series of bits in a register form patterns called bit codes. Types of bit codes include the following: • Condition Codes • Accumulator Modification Code • Flag Modification Codes • Source/Destination Field Designators • Register Pointer/Data Pointer The following tables list the options available and their corresponding instructions. &RQGLWLRQ&RGHV Table 61 lists the condition codes that are used in accumulator modification, CALL, and JUMP instructions. 7DEOH &RQGLWLRQ&RGH%LWV %LW&RGH 0QHPRQLF &RGH9DOXH 00000 ) &RQGLWLRQ &RGH9DOXH &RQGLWLRQ &RGH )DOVH 8QXVHG 00001 00010 18 8,LVVHWWR 1RW8VHU=HUR 00011 18 8,LVVHWWR 1RW8VHU2QH 00100 1& &LVVHWWR 1R&DUU\ 00101 1= =LVVHWWR 1RW=HUR1RW (TXDO 00110 129 29LVVHWWR 1R2YHUIORZ 00111 3/ 1LVVHWWR 3OXV1RW 1HJDWLYH 01xxx 3679& 8QXVHG =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH &RQGLWLRQ&RGH%LWV &RQWLQXHG %LW&RGH 0QHPRQLF &RGH9DOXH 10000 7 &RQGLWLRQ &RGH9DOXH &RQGLWLRQ &RGH 7UXH 8QXVHG 10001 10010 8 8,LVVHWWR 8VHU=HUR 10011 8 8,LVVHWWR 8VHU2QH 10100 & &LVVHWWR &DUU\ 10101 = =LVVHWWR =HUR(TXDO 10110 29 29LVVHWWR 2YHUIORZ 10111 0, 1LVVHWWR 0LQXV1HJDWLYH 8QXVHG 11xxx $FFXPXODWRU0RGLILFDWLRQ&RGHV Accumulator modification codes determine the type of modification made to the value in the accumulator. See Table 62. Condition codes are also used with CALL, and JUMP instructions. 7DEOH $FFXPXODWRU0RGLILFDWLRQ%LWV %LW&RGH 0QHPRQLF 2SHUDWLRQ 0000 55 5RWDWH5LJKW 0001 5/ 5RWDWH/HIW 0010 65 6KLIW5LJKW 0011 6/ 6KLIW/HIW 0100 ,1& ,QFUHPHQW 0101 '(& 'HFUHPHQW 0110 1(* 1HJDWH 0111 $%6 $EVROXWH )ODJ0RGLILFDWLRQ&RGHV Flag modifications initialize or set/reset bits to accommodate interrupts, overflows, and carrys. See Table 63. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH )ODJ0RGLILFDWLRQ%LWV %LW&RGH 0QHPRQLF 2SHUDWLRQ )ODJ 9DOXH xx10 &&) &OHDU&DUU\ & xx11 6&) 6HW&DUU\ & x1x0 &,() &OHDU,QWHUUXSW(QDEOH ,( x1x1 6,() 6HW,QWHUUXSW(QDEOH ,( 1xx0 &23) &OHDU2YHUIORZ3URWHFWLRQ 23 1xx1 623) 6HW2YHUIORZ3URWHFWLRQ 23 6RXUFH'HVWLQDWLRQ)LHOG'HVLJQDWRUV Register pointers and data pointers provide convenient access to data. The pointers are a source or destination field in instructions. Specific bit codes are listed in Table 64. The register pointer offers optional incrementing or decrementing. This option is specified by the following instruction: LD A, @P2:1+ 7DEOH 5HJLVWHU3RLQWHU'DWD3RLQWHU%LWV %LW&RGH 0QHPRQLF 00xx 123 01xx 10xx ORRS 11xx ORRS xx00 3RU3 xx01 3RU3 xx10 3RU3 0011 'RU' 0111 'RU' 1011 'RU' 1111 &QT& 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Data pointers are automatically incremented when accessing program memory (for example, LD A, @D0:0) and do not require an incrementing option. Code in xx11 format is designated for a data pointer when source or destination format is used. Additional source or destination designators include the other hardware registers provided by the processor. To determine if a data pointer, register pointer or a register is used as a source or destination is discussed in the next section. Table 65 lists the bit codes for mnemonic resister names. 7DEOH 5HJLVWHU%LWV %LW&RGH 0QHPRQLF 0000 %XV 0001 ; 0010 < 0011 $ 0100 65 0101 67$&. 0110 3& 0111 5HVHUYHG 1000 (;7 1001 (;7, 1010 (;7 1011 (;7 1100 (;7 1101 (;7 1110 (;7 1111 (;7 ,QVWUXFWLRQ)RUPDW([DPSOHV Refer to the following examples indicating how bit codes are used in an instruction format. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ,QVWUXFWLRQ)RUPDW RS RS RS RS RS RS RS FF FF FF FF FF DP DP DP DP 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ $FFXPXODWRU0RGLILFDWLRQ)RUPDW RS RS RS RS RS RS RS FF FF FF FF FF DP DP DP DP 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 0QVGU 1. The Variables a, op, b, d, s, cc, am, fm, rp are used in the instruction format to depict bits determined by the instruction. 2. The General Instruction Format requires an Op Code, RAM bank bit, destination and source addresses. For example, LD A, @P2:1+ /RDG,QVWUXFWLRQ)RUPDW 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH The Op Code (0000001) provides a unique signature for the LD command. The processor uses this signature to determine the instruction format. The RAM bank bit is high (equal to 1) because of the instruction definition b=1 (Pn:b). The destination bit code is 0011 which corresponds to the accumulator. The source 0110 corresponds to the +1 option and P2:0 or P2:1. The RAM bank bit indicates that the processor loaded the accumulator with the operand designated by Pointer 2 Bank1 (P2:1). Source and destination fields can be accessed from the register pointers, data pointers, or registers. The Op Code specifies the type of source and destination. An Op Code of 0000101 specifies that the source is an indirect address to program memory (@@P0.0 or @D0:0) and the destination is a register. ,QVWUXFWLRQ)RUPDW/LVWLQJ Instruction formats and applicable instructions are listed in Table 66 through Table 72. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 0QVGU 1. Several instructions provide various addressing modes to obtain operands; therefore, the same instruction can have several different formats depending on the addressing mode. 2. The variables a, op, b, d, s, ce, am, fm, rp are used in the instruction format to depict bits determined by the specific instruction used. *HQHUDO,QVWUXFWLRQ)RUPDW RS RS RS RS RS RS RS E G G G G V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 7DEOH *HQHUDO,QVWUXFWLRQ)RUPDW 0QHPRQLF 2SHUDQGV %LW&RGH +H[ $'' $#3 1000001 0 0000 0000 $1' $' 1100110 1 0000 0111 $% &3 $; 0110000 0 0000 0001 /' $3 0000000 0 0011 0111 323 ; 0000000 0 0001 0101 386+ ' 0000001 0 0101 0011 0000000 0 0110 0101 5(7 68% $#' 0010101 1 0000 0111 % ;25 $3 1111001 0 0000 0010 ) $FFXPXODWRU0RGLILFDWLRQ)RUPDW RS RS RS RS RS RS RS FF FF FF FF FF DP DP DP DP 2S&RGH 3679& &RQGLWLRQ&RGH $&&0RGLILFDWLRQ =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH $FFXPXODWRU0RGLILFDWLRQ)RUPDW 0QHPRQLF 2SHUDQGV %LW&RGH +H[ 5HSUHVHQWDWLRQ $%6 =$ '(& $ ,1& 1=$ 1(* $ 55 18$ 5/ 3/$ 6// &$ 65$ 8$ )ODJ0RGLILFDWLRQ)RUPDW RS RS RS RS RS RS RS FF FF FF FF FF IP IP IP IP 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 7DEOH )ODJ0RGLILFDWLRQ)RUPDW 0QHPRQLF %LW&RGH +H[5HSUHVHQWDWLRQ &&) 1001010 00000 0010 &,() 1001010 00000 0100 &23) 1001010 00000 1000 6&) 1001010 00000 0011 6,() 1001010 00000 0101 623) 1001010 00000 1001 'LUHFW,QWHUQDO$GGUHVVLQJ)RUPDW RS RS RS RS RS RS RS D D D D D D D D D 2S&RGH 3679& %LW,QWHUQDO$GGUHVV =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH 'LUHFW,QWHUQDO$GGUHVVLQJ)RUPDW 0QHPRQLF 2SHUDQGV %LW&RGH +H[ 5HSUHVHQWDWLRQ $'' $)) 1000011 011111111 )) $1' $ 1010011 011111111 $)) &3 $ 0110011 011111111 )) 0000111 000010010 ( /' 6KRUW,PPHGLDWH$GGUHVVLQJ)RUPDW RS RS RS RS RS US US US D D D D D D D D 2S&RGH 5HJLVWHU 3RLQWHU %LW,PPHGLDWH$GGUHVV'DWD 7DEOH 6KRUW,PPHGLDWH$GGUHVVLQJ)RUPDW 0QHPRQLF 2SHUDQGV %LW&RGH +H[ 5HSUHVHQWDWLRQ /' 3)$ 00011 101 11111010 ')$ /RQJ,PPHGLDWH$GGUHVVLQJ)RUPDW RS RS RS RS RS RS RS E G G G G V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH D D D D D D D D D D D D D D D D %LW$GGUHVV'DWD 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH /RQJ,PPHGLDWH$GGUHVVLQJ)RUPDW 0QHPRQLF 2SHUDQGV +H[5HSUHVHQWDWLRQ $'' $ $1' $$ $$ /' ;))& ))& 386+ && && 68% $ ;25 $$)& ($)& JUMPCALL )RUPDW FF FF FF FF FF V V V V 2S&RGH &RQGLWLRQ&RGH 1RW8VHG D D D D D D D D D D D D D D D D %LW$GGUHVV 7DEOH -XPS&DOO)RUPDW 0QHPRQLF 2SHUDQGV +H[5HSUHVHQWDWLRQ &$// (1' -3 8(1' ' ,QVWUXFWLRQ7LPLQJ The DSP can be executed with single cycle instruction using the independent data memory and program memory buses offered by the modified Harvard architecture and pipeline instruction. This method provides overlapping of instruction fetch and execution cycles. Figure 27 illustrates the execution sequence. The first instruction takes two clock cycles to execute; subsequent executions occur in a single cycle. All instruction fetch cycles have the same machine timing regardless of whether external or internal memory is used. Because the DSP contains a two-level pipeline, the JUMP and CALL instructions do not disrupt the execution process 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' In two-byte instructions, the second byte is being fetched while the first byte is executing. Because the processor knows that the instruction is a JUMP or CALL, the second byte is transferred to the program counter and the correct address is fetched into the pipeline. There is no disruption or pipeline flushing. The pipeline flow is affected when the program counter is the destination for a load. Because the load (LD) instruction is a single word instruction, the next instruction is fetched during load execution. To compensate for the instruction in the pipeline, that instruction is executed as a NOP. )HWFK ([HFXWH )HWFK ([HFXWH )LJXUH 3LSHOLQH([HFXWLRQ ,QVWUXFWLRQ2S&RGHV Table 73 summarizes essential information about the instruction set. 7DEOH ,QVWUXFWLRQ2S&RGHV ,QVW 'HVFULSWLRQ 2S&RGH 6\QRSVLV 2SHUDQGV $%6 $EVROXWH9DOXH 1001000 $%6>FF!@VUF! FF!$ $%61&$ 1001000 $ $%6$ 1001001 $''GHVW! $SUHJV! $''$3 1000001 $GUHJV! $''$' 1000100 $OLPP! $''$ 1000101 $PHPLQG! $''$ ##3 1000011 $GLUHFW! $''$) 1000001 $UHJLQG! $''$#3 1000000 $KZUHJV! $''$; $'' $GGLWLRQ 3679& VUF! :RUGV &\FOHV ([DPSOHV =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH ,QVWUXFWLRQ2S&RGHV &RQWLQXHG ,QVW 'HVFULSWLRQ 2S&RGH 6\QRSVLV 2SHUDQGV :RUGV &\FOHV ([DPSOHV $1' %LWZLVH$1' 1011001 $1'GHVW! $SUHJV! $1'$3 1010001 $GUHJV! $1'$' 1010100 $OLPP! $1'$ 1010101 $PHPLQG! $1'$##3 1010001 $GLUHFW! $1'$& 1010001 $UHJLQG! $1'$ #/223 1010000 $KZUHJV! $1'$(;7 0010100 &$// 0010100 FF!DGGUHVV! FF!GLUHFW! &$//VXE GLUHFW! &$//=VXE &$// 6XEURXWLQH&DOO VUF! &&) &OHDU&DUU\)ODJ 1001010 &&) 1RQH &&) &,() &OHDU&DUU\)ODJ 1001010 &,() 1RQH &,() &23) &OHDU23)ODJ 1RQH &23) &3 &RPSDULVRQ 0111001 $SUHJV! &3$3 0110001 $GUHJV! &3$' 0110101 $PHPLQG! &3$##3 0110011 $GLUHFW! &3$)) 0110001 $UHJLQG! &3$#3 0110000 $KZUHJV! &3$67$&. 0110100 $,LPP! &3$))&) '(&1=$ '(& ,1& -3 'HFUHPHQW ,QFUHPHQW -XPS 3679& 1001010 &23) &3VUF!VUF! 1001000 '(&>FF!@GHVW! FF!$ 1001000 $ '(&$ 1001000 ,1&>FF!@GHVW! FF!$ ,1&3/$ 1001000 $ ,1&$ 0100110 -3>FF!@ FF!GLUHFW! -31,(/DEHO 0100110 GLUHFW! -3/DEHO DGGUHVV! =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH ,QVWUXFWLRQ2S&RGHV &RQWLQXHG ,QVW 'HVFULSWLRQ 2S&RGH 6\QRSVLV 2SHUDQGV :RUGV &\FOHV ([DPSOHV /' /RDG'HVWLQDWLRQ 0000000 /'GHVW!VUF! ZLWK6RXUFH $KZUHJV! /'$; 0000001 $GUHJV! /'$' 0001001 $SUHJV! /'$3 0000001 $UHJLQG! /'$#3 0000101 $PHPLQG! PHPLQG! /'$#' 0000011 $GLUHFW! /'$ 0000111 GLUHFW!$ /'$ 0000100 GUHJV! KZUHJV! /''(;7 0001100 SUHJV! VLPP! /'3)$ 0001010 SUHJV! KZUHJV! /'3(;7 0000110 UHJLQG! OLPP! /'#3 0000010 UHJLQG! KZUHJV! /'#30; 0001001 KZUHJV! SUHJV! /'<3 0000001 KZUHJV! GUHJV! /'65' 0000100 KZUHJV! OLPP! /'3& 0100101 KZUHJV! DFFLQG! /';#$ 0000101 KZUHJV! PHPLQG! /'<' 0000001 KZUHJV! UHJLQG! /'$ #3/223 0000000 KZUHJV! KZUHJV! /';(;7 :KHQGHVW!LVKZUHJV!GHVW!FDQQRWEH3 :KHQGHVW!LVKZUHJV!DQGVUF!LVKZUHJV! GHVW!FDQQRWEH(;7QLIVUF!LV(;7QGHVW! FDQQRWEH;LIVUF!LV;GHVW!FDQQRWEH65LI VUF!LV65 :KHQVUF!LVDFFLQG!GHVW!FDQQRWEH$ 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH ,QVWUXFWLRQ2S&RGHV &RQWLQXHG ,QVW 'HVFULSWLRQ 2S&RGH 6\QRSVLV 2SHUDQGV :RUGV &\FOHV ([DPSOHV 1(* 1HJDWH 1001000 1(*FF!$ FF!$ 1(*1=$ 1001000 $ 1(*$ 0000000 123 1RQH 123 1101001 $SUHJV! 25$3 1100001 $GUHJV! 25$' 1100100 $OLPP! 25$ 1100101 $PHPLQG! 25 $##3 1100011 $GLUHFW! 25$& 1100001 $UHJLQG! 25$ #3/223 1100000 $KZUHJV! 25$(;7 SUHJV! 3233 0000100 UHJV! 323' 0000010 UHJLQG! 323#3 0000000 KZUHJV! 323$ 386+3 GUHJV! 386+' 0000001 UHJLQG! 386+#3 0000000 KZUHJV! 386+%86 0000100 OLPP! 386+ 0100101 DFFLQG! 386+#$ 0000101 PHPLQG! 386+##3 123 1R2SHUDWLRQ 25 %LWZLVH25 323 386+ 25GHVW!VUF! 3RSD9DOXHIURP 0001010 323GHVW! WKH6WDFN 3XVKD9DOXH RQWRWKH6WDFN 0001001 386+VUF! 0000001 SUHJV! 5(7 5HWXUQIURP 6XEURXWLQH 0000000 5(7 1RQH 5(7 5/ 5RWDWH/HIW 1001000 5/FF!$ FF!$ 5/1=$ 1001000 $ 5/$ 1001000 55FF!$ FF!$ 55&$ 1001000 $ 55$ 55 5RWDWH5LJKW 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH ,QVWUXFWLRQ2S&RGHV &RQWLQXHG ,QVW 'HVFULSWLRQ 2S&RGH 6\QRSVLV 2SHUDQGV :RUGV &\FOHV ([DPSOHV 6&) 6HW&)ODJ 1001010 6&) 1RQH 6&) 6,() 6HW,()ODJ 1001010 6,() 1RQH 6,() 6// 6KLIW/HIW/RJLFDO 1001000 6// >FF!@$ 6//1=$ 1001000 $ 6//$ 623) 6HW23)ODJ 1001010 623) 1RQH 623) 65$ 6KLIW5LJKW 1001000 65$FF!$ FF!$ 65$1=$ $ULWKPHWLF 1001000 $ 65$$ 6XEWUDFW 0011001 68%GHVW! $SUHJV! 68%$3 0010011 $GUHJV! 68%$' 0010100 $OLPP! 68%$&& 0010101 $PHPLQG! 68%$#' 0010011 $GLUHFW! 68%$ 0010001 $UHJLQG! 68%$ #3/223 0010000 $KZUHJV! 68%$67$&. 1111001 $SUHJV! ;25$3 1110001 $GUHJV! ;25$' 1110100 $OLPP! ;25$ 1110001 $PHPLQG! ;25$#3 1110011 $GLUHFW! ;25$) 1110001 $UHJLQG! ;25$#3 1110000 $KZUHJV! ;25$%86 68% ;25 %LWZLVH([FOXVLYH 25 VUF! ;25GHVW!VUF! ,QVWUXFWLRQ'HVFULSWLRQV The DSP instruction set consists of 30 basic instructions, optimized for high-code density and reduced execution time. Single-cycle instruction execution is possible because of the pipeline and other architectural features. Table 74 contains a description for each instruction. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH ,QVWUXFWLRQ'HVFULSWLRQV 0QHPRQLF 0QHPRQLF([SDQVLRQ ,QVWUXFWLRQ2SHUDQGV /LVWVWKHW\SHVRIDGGUHVVLQJPHWKRGVIRUDVSHFLILF LQVWUXFWLRQABS A or ABS <cc>, A ,QVWUXFWLRQ)RUPDW 'LVSOD\VLQVWUXFWLRQIRUPDWIRUUHJLVWHULQGLUHFWDGGUHVVLQJ 2SHUDWLRQ 'LVSOD\VRSHUDWLRQVHTXHQFH $IIHFWHG)ODJV /LVWVIODJVDIIHFWHGE\RSHUDWLRQ 'HVFULSWLRQ 'HVFULEHVWKHLQVWUXFWLRQRSHUDWLRQ ([DPSOHV $VLPSOHH[DPSOHGLVSOD\VWKHLQVWUXFWLRQRSHUDWLRQDQG KRZWKHUHJLVWHUVDUHDIIHFWHG7KHH[DPSOHLQFOXGHV LQLWLDOL]DWLRQLQVWUXFWLRQDQGUHVXOW$OVRLQFOXGHVF\FOHV DQGLQVWUXFWLRQOHQJWK 0QVG Each Assembly Instruction includes an example for each addressing mode available for the specific instruction. The mnemonics listed in Table 75 are used in the instruction format. 7DEOH ,QVWUXFWLRQ)RUPDW0QHPRQLFV 0QHPRQLF 'HVFULSWLRQ 0QHPRQLF 'HVFULSWLRQ $ $GGUHVV GHVW 'HVWLQDWLRQ9DOXH DP $FFXPXODWRU0RGLILFDWLRQ IP )ODJ0RGLILFDWLRQ E 5$0%DQN RS 2S&RGH FF &RQGLWLRQ&RGH US 5HJLVWHU3RLQWHU FRQVWH[S &RQVWDQW([SUHVVLRQ V 6RXUFH$GGUHVV G 'HVWLQDWLRQ$GGUHVV VUF 6RXUFH9DOXH 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $%6 $EVROXWH9DOXH $%6 ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ ABS <cc>, A ABS A 2SHUDWLRQ If ACC < 0 then -(ACC) -> ACC Flags: N: Set if the accumulator has 800000H (see below). 'HVFULSWLRQ If the contents of the accumulator are determined to be less then 0 (a negative number), the absolute value of the accumulator is calculated (accumulator replaced by its two’s complement value). Using the condition code provides an additional method to evaluate a status flag before the absolute value of the accumulator is calculated. 0QVG If the accumulator contains 800000H, the ABS A instruction stores the value of the two’s complement at address 800000H and sets the Overflow and Negative status bits. There is no overflow protection. ([DPSOH ABS A Initialization: Accumulator contains FFEB00H SR contains 0000H Instruction: ABS A Result: Accumulator contains 001500H SR contains 1000H This example uses one word of memory and executes in one machine cycle. Because the value in the accumulator is less then zero, the two’s complement is performed and the result is placed in the accumulator ABS(FFEBH)=001500H. The carry bit is set. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH ABS <cc>, A Initialization: Accumulator contains 456400H Instruction: ABS MI, A Result: Accumulator contains 456400H This example uses one word of memory and executes in one machine cycle. The condition code (negative bit) is not set because the accumulator value is positive; therefore, the instruction is not executed. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $'' $GGLWLRQ $'' ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ ADD A, <regind> ADD A, <memind> ADD A, <limm> ADD A, <hwregs> ADD A, <direct> ADD A, <pregs> ADD A, <dregs> 2SHUDWLRQ ACC + <source> -> ACC Flags: C N: Z: OV: Set if carry from the most significant bit is found. Set if result in the accumulator is negative. Set if result is 0. Set if addition exceeds upper (FFFFFH) or lower (800000H) limit of the accumulator. 'HVFULSWLRQ The addressed data memory operand is added to the accumulator. The result is loaded into the accumulator. 0QVG The lower eight bits of the accumulator are unchanged while the add instruction is executed. ([DPSOH ADD A, <regind> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Accumulator contains 123456H P0:0 contains 4DH RAM Bank1: 4DH contains 8746H Instruction: ADD A, @P0:0 Result: A contains 997A56H @P0:0 contains 746H This example uses one word of memory and executes in one machine cycle. The pointer P0:0 contains the RAM register location (4DH). The contents of RAM register 4DH are added to the accumulator to obtain the sum (874600H + 123456H = 997A56H). The sum is contained in the accumulator and the pointer is left unchanged. The direct addressing equivalent is ADD A, %4D or ADD A, 77 (4DH = 77 decimal). ([DPSOH ADD A, <memind> Initialization: Accumulator contains 123400H P0:0 contains 21H RAM Bank0: 21H contains 247AH ROM Address: 247AHcontains 0C12H Instruction: ADD A, @@P0:0 Result: A contains lE4600H P0:0 contains 21H RAM Bank0: 21H contains 247BH This example uses one word of memory and executes in three machine cycles. The pointer P0:0 contains the RAM register location (21H). The contents of this register have a ROM address. This address refers to the ROM data placed in the specified accumulator by an AND instruction 123400H + 0C1200H = 1E4600H. When memory indirect addressing is used, the ROM address is automatically incremented. to provide a convenient method of accessing sequential data. Using ADD A, @@P0:0+ performs the same operation and also increments the P0:0 content to 22H. ([DPSOH ADD A, <limm> Initialization: Accumulator contains 123400H Instruction: ADD A, #%0C12 Result: A contains lE4600H 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' This example uses two words of memory and executes in two machine cycles. The immediate operand 0C12H is added to the accumulator to obtain the sum 123400H + 0C1200H = 1E4600H. ([DPSOH ADD A,<hwregs> Initialization: Accumulator contains 23400H Register X contains 0C12H Instruction: ADD A, X Result: A contains 1E4600H This example uses one word of memory and executes in one machine cycle. The contents of register X are added to the accumulator to obtain the sum. 123400H + 0C1200H = 1E4600H. All hardware registers can transfer from <hwregs>. ([DPSOH ADD A,<direct> Initialization: Accumulator contains 123400H RAM Bank0: F3H contains 0C12H Instruction: ADD A,%F3 Result: A contains 1E4600H This example uses one word of memory and executes in one machine cycle. Register F3H is added to the accumulator to obtain the sum. 123400H + 0C1200H = 1E4600H. An equivalent instruction is ADD A, 243 (F3H = 243 decimal). ([DPSOH ADD A, <pregs> Initialization: Accumulator contains 123400H P0:0 contains 56H Instruction: ADD A, P0:0 Result: Accumulator contains 128A00H This example uses one word of memory and executes in one machine cycle. The contents of the pointer register P0:0 is added to the accumulator. 123400H + 005600H = 128A00H. The Pointer Register is connected to the lower 8 bits of the D-bus. The D-bus is connected to the upper 16-bits of the P-bus. This causes the pointer register operand to become 005600H before being added to the accumulator. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH ADD A,<dregs> Initialization: Accumulator contains 123400H D0: 1 contains 8746H Instruction: ADDA,D0:1 Result: A contains 997A00H D0: 1 contains 8746H This example uses one word of memory and executes in one machine cycle. The contents of the data pointer D0:1 are added to the accumulator. The sum is contained in the accumulator and the pointer is left unchanged. The data pointer contains 8746H. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $1' %,7:,6($1' $1' ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ AND A, <regind> AND A, <memind> AND A, <limm> AND A, <hwregs> AND A, <direct> AND A, <pregs> AND A, <dregs> AND A, <simm> 2SHUDWLRQ <accumulator>. AND.<source> —> <accumulator> Flags: N: Z: Set if accumulator result is less than 0. Set if accumulator result is 0. 'HVFULSWLRQ Data is stored in the specified accumulator by an AND instruction. The lower eight bits of the accumulator are cleared when this instruction is executed. ([DPSOH AND A, <regind> Initialization: Accumulator contains 123456H P0A contains 45H RAM Bank1: 45H contains 8746H Instruction: AND A, @P0:1 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Result: Accumulator contains 020400H This example uses one word of memory and executes in one machine cycle. The data in RAM Bank1, referenced by RAM pointer 0, is stored in the specified accumulator using an AND instruction 123456H.AND.874600H = 020400H. ([DPSOH AND A, <memind> Initialization: Accumulator contains 123400H P0:0 contains45H RAM Bank0: 45H contains 047AH ROM Address: 047AH contains 8746H Instruction: AND A, @@P0:0 Result: A contains 020400H P0:0 contains 45H RAM Bank0: 45H contains 247BH This example uses one word of memory and executes in three machine cycles. The pointer P0:0 contains the RAM register location (45H). The contents of this register has a ROM address. This address refers to the ROM data that is placed in the specified accumulator by an AND instruction 123400H.AND.874600H = 020400H. With memory-indirect addressing, the ROM address is automatically incremented. This provides a convenient method to access sequential data. Using AND A, @@P0:0+ performs the same operation and also increments the P0:0 content to 46H. ([DPSOH AND A, <limm> Initialization: Accumulator contains 362400H Instruction: AND A, #%1234 Result: Accumulator contains 122400H This example uses two words of memory and executes in two machine cycles. The immediate operand 1234H and an accumulator address are processed with an AND instruction to produce the result, 362400H.AND.123400H = 122400H. ([DPSOH AND A, <simm> Initialization: 3679& Accumulator contains 123456H =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Instruction: AND A, #%1F Result: Accumulator contains 001400H This example uses one word of memory and executes in one machine cycle. The data in the immediate field and the contents of the accumulator are processed with an AND instruction. 123456H.AND.001F00H = 001400H. ([DPSOH AND A, <hwregs> Initialization: Accumulator contains 123400H Register X contains OC12H Instruction: AND A, X Result: A contains 001000H This example uses one word of memory and executes in one machine cycle. Use an AND instruction to send the contents of Register X to the accumulator to obtain the result 123400H.AND.0C1200H = 001000H. All hardware registers can transfer from <hwregs>. ([DPSOH AND A, <direct> Initialization: Accumulator contains 123400H RAM Bank0: F3H contains 0C12H Instruction: AND A, %F3 Result: A contains 001000H This example uses one word of memory and executes in one machine cycle. Use an AND instruction to send Register F3H to the accumulator to obtain the result 123400H AND OC1200H = 001000H. An equivalent instruction is AND A, 243 (F3H = 243 decimal). ([DPSOH AND A, <pregs> Initialization: Accumulator contains 123400H P0:0 contains 56H Instruction: AND A, P0:0 Result: Accumulator contains 001400H 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' This example uses one word of memory and executes in one machine cycle. Use an AND instruction to send the contents of the pointer register P0:0 to the accumulator 123400H.AND.005600H = 001400H. The Pointer Register is connected to the lower 8 bits of the D-bus. The D-bus is connected to the upper 16 bits of the P-bus. This action changes the pointer register operand to 005600H before being added to the accumulator. ([DPSOH AND A, <dregs> Initialization: Accumulator contains 123400H D0:1 contains 2645H Instruction: AND A, 00:0 Result: Accumulator contains 020400H This example uses one word of memory and executes in one machine cycle. The data register, D0:0, references the operand 2645H. Use an AND instruction to send this data register to the accumulator to produce the result 123400H.AND.2645H = 020400H. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' &$// 68%5287,1(&$// &$// ,QVWUXFWLRQ:RUG E FF FF FF FF V V V V 2S&RGH &RQGLWLRQ&RGH 1RW8VHG D D D D D D D D D D D D D D D D %LW$GGUHVV 6\QWD[ CALL <cc>,<direct> CALL <direct> 2SHUDWLRQ PC + 2 —> STACK 16-Bit Address —> PC Flags: None 'HVFULSWLRQ The current Program Counter (PC) register content is incremented by two and placed on the stack. The address of the specified label in the CALL instruction is then placed in the PC register. The jump is made to the appropriate subroutine via the PC. The condition code option is used if CALL is executed. ([DPSOH CALL <direct> Cycles: 2 Words: 2 Initialization: PC contains 1FFBH FFT2 subroutine address contains F234H Stack Level 0 contains 0025H Instruction: CALL FFT2 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Result: PC contains F234H Stack Level 0 contains 1FFDH Stack Level 1 contains 0025H This example uses two words of memory and executes in two machine cycles. The call to the subroutine FFT2 places PC+2 (1 FFDH) on the stack. All information currently on the stack is pushed up the stack. The subroutine address is then placed in the PC register. The processor executes the next instruction addressed by the PC, the FFT2 subroutine. ([DPSOH CALL <cc>, <direct> Initialization: PC contains 1FFBH FFT2 subroutine address contains F234H Stack Level 0 contains 0025H UO (User Zero Bit) contains 1 Instruction: CALL UO, FFT2 Result: PC = F234H Stack Level 0= 1FFDH Stack Level 1= 0025H This example uses two words of memory and executes in two machine cycles. The condition code UO is tested by the processor before executing the CALL instruction. Because the UO bit is enabled, the CALL routine is executed exactly like the example above. The condition code UO is input to the processor that determines if subroutine FFT2 is used. Another CALL instruction can determine if another subroutine, FFT1, is used. ([DPSOH CALL <direct> Initialization: PC contains 1FFBH FFT2 subroutine address contains F234H Stack Level 0 contains 0025H Instruction: CALL FFT2 Result: PC containsF234H Stack Level 0 contains 1FFDH Stack Level 1 contains 0025H This example uses two words of memory and executes in two machine cycles. The call to the subroutine FFT2 places PC+2 (1 FFDH) on the stack. All information currently on 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' the stack is pushed up the stack. The subroutine address is then placed in the PC register. The processor executes the next instruction addressed by the PC, the FFT2 subroutine. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' &&) &/($5&$55<)/$* &&) ,QVWUXFWLRQ:RUG 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 6\QWD[ CCF 2SHUDWLRQ Zero —> Carry Bit Flags: C: Set to 0. 'HVFULSWLRQ The Clear Carry Flag instruction resets the carry flag with a 0. ([DPSOH CCF Initialization: SR contains 3000H Instruction: CCF Result: SR contains 2000H C contains 0 This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' &,() &/($5,17(55837(1$%/()/$* &,() ,QVWUXFWLRQ:RUG 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 6\QWD[ CIEF 2SHUDWLRQ Zero —> IE bit Flags: IE: Set to 0. 'HVFULSWLRQ The Clear Interrupt Enable Flag instruction sets the IE flag to 0. ([DPSOH CIEF Initialization: SR contains 3080H Instruction: CIEF Result: SR contains 3000H IE contains 0 This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' &23)&/($5 29(5)/2:3527(&7,21)/$* &23&/($5 ,QVWUXFWLRQ:RUG 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 6\QWD[ COPF 2SHUDWLRQ Zero —> OP bit Flags: P: Set to 0. The Clear Overflow Protection Flag instruction resets the OP flag to 0. ([DPSOH COPF Initialization: SR contains 0100H Instruction: COPF Result: SR contains 0000H OP contains 0 This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' &3 &203$5,621 &3 ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ CP A, <regind> CP A, <memind> CP A, <limm> CP A, <hwregs> CP A, <direct> CP A, <pregs> CP A, <dregs> CP A, <simm> 2SHUDWLRQ A - <source> —> set appropriate status bits Flags: C: Z: OV: N: Set if carry is required for operation. Set if operands are equal. Set if operation exceeds the low (800000H) or high limit (7FFFFFH) of accumulator. Set if result is negative. 'HVFULSWLRQ The contents of the register specified in the instruction are compared to the contents of the accumulator in 16-bit mode. The register specified is subtracted from the accumulator and the appropriate flags are set. Because the registers are 16-bit, a comparison with the 24-bit accumulator requires that the lower eight bits of the accumulator be filled with zeros for accurate comparisons. The instruction does not affect the contents of the accumulator except when the overflow protection bit is set and an overflow occurs after the compare is executed. The accumulator updates with the appropriate low (800000H) or high (7FFFFFH) limit. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH CP A, <regind> Initialization: A contains 7A2500H P2:1 contains A4H RAM Bank1: A4H contains 5463H Instruction: CP A, @P2:1 Result: A contains 7A2500H SR contains 1000H This example uses one word of memory and executes in one machine cycle. The operand referenced by P2:1 is subtracted from the accumulator. 7A2500H - 546300H = 25C200H. Because the comparison does not yield a 0, Bit 0 is not set. The content of the P2:1 register is appended with eight additional 0 bits. For consistent comparisons, the accumulator must contain zeros in the lower eight bits. 0QVG The accumulator is unaffected by the operation. ([DPSOH CP A, <memind> Initialization: A contains 7A2500H P2:1 contains A4H RAM Bank1: A4H contains 5463H ROM Address: 5463H contains OC12H Instruction: CP A, @@P2:1 Result: A contains 7A2500H P2:1 contains A4H RAM Bank1: A4H contains 5464H SR contains 1000H This example uses one word of memory and executes in three machine cycles.The pointer P2:1 contains the RAM register location (A4H). The contents of this register have a ROM address. This address refers to the ROM data compared to the accumulator 7A2500H - OC1200H = 6E1300H. Because the comparison does not yield a 0, Bit 0 is not set. With memory indirect addressing, the ROM address is automatically incremented. Using CP A,@@P2:1 + performs the same operation and also increments P2:1 content to A5H. ([DPSOH CP A, <limm> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: A contains 7A2500H Instruction: CP A, #%7A25 Result: A contains 7A2500H SR contains 3000H This example uses two words of memory and executes in two machine cycles. The immediate operand is compared to the accumulator. Because they are equal, the Zero Flag is set. ([DPSOH CP A, <hwregs> Initialization: A contains 7A2500H SR contains 0000H BUS contains 7A25H Instruction: CP A, BUS Result: A contains 7A2500H SR contains 3000H This example uses one word of memory and executes in one machine cycle. The <hwreg> operand is subtracted from the accumulator. Because the two operands are equal, the zero-status bit is set High. <hwregs> can be compared from all hardware registers. ([DPSOH CP A, <direct> Initialization: Accumulator contains 7A2500H RAM Bank0 F3H contains 5463H Instruction: CP A, %F3 Result: A contains 7A2500H SR contains 1000H This example uses one word of memory and executes in one machine cycle. Register F3H is compared to the accumulator. 7A2500H - 546300H = 25C200H. An equivalent instruction is CP A,243 (173H = 243 decimal). ([DPSOH CP A, <pregs> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Accumulator contains 123400H P0:0 contains 56H Instruction: CP A, P0:0 Result: Accumulator contains 123400H SR contains 1000H This example uses one word of memory and executes in one machine cycle. The contents of the pointer register P0:0 are compared to the accumulator. 123400H - 005600H = 11DE00H The Pointer Register is connected to the lower 8 bits of the D-bus. The D-bus is connected to the upper 16 bits of the P-bus. This action changes the pointer register operand to 005600H before being compared to the accumulator. ([DPSOH CP A, <dregs> Initialization: A contains 7A2500H D2:1 contains 5463H Instruction: CP A, D2:1 Result A contains 7A2500H SR contains 1000H This example uses one word of memory and executes in one machine cycle. The contents of the data pointer D2:1 are compared to the accumulator. 7A2500H - 546300H = 25C200H. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' '(& '(&5(0(17 '(& ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ DEC A DEC <cc>, A 2SHUDWLRQ ACC - 1 —> ACC Flags: C: Z: N: OV: Set if carry is required for operation Set if result is 0. Set if decrement results in a value less then 0. Set if upper (7FFFFFH) or lower (800000H) limits are exceeded. 'HVFULSWLRQ The accumulator decrements by 1. A condition code can be used to test for a specific condition before decrementing. ([DPSOH DEC A Initialization: A contains 7A2500H Instruction: DEC A Result: A contains 7A24FFH This example uses one word of memory and executes in one machine cycle. The value in the accumulator decrements by 1. ([DPSOH DEC <cc>, A Initialization: 3679& A contains 7A2500H =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Instruction: DEC MI, A Result: A contains 7A2500H This example uses one word of memory and executes in one machine cycle. Because the accumulator is not negative, the decrement instruction is not executed. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ,1& ,1&5(0(17 ,1& ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ INC <cc>, A INC A 2SHUDWLRQ ACC + 1 —> ACC Flags: C: Z: N: OV: Set if carry is required for operation. Set if result is 0. Set if results in a value less then 0. Set if upper (7FFFFFH) or lower (800000H) limits are exceeded. 'HVFULSWLRQ The Increment instruction adds one to the accumulator. A condition code can be used to test for a specific condition for an increment to occur. ([DPSOH INC <cc>, A Initialization: A contains 7A2500H Instruction: INC MI, A Result: A contains 7A2500H This example uses one word of memory and executes in one machine cycle. Because the accumulator is not negative, the increment instruction is not executed. ([DPSOH INC A Initialization: 3679& A contains 7A2500H =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Instruction: INC A Result: A contains 7A2501H This example uses one word of memory and executes in one machine cycle. The value in the accumulator is incremented by 1. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' -3 -803 -3 ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH 1RW8VHG D D D D D D D D D D D D D D D D %LW$GGUHVV 6\QWD[ JP <cc>, JP <direct> <direct> 2SHUDWLRQ 16-Bit address —> PC Flags: None 'HVFULSWLRQ The instruction places the address of the referenced ROM location in the Program Counter (PC). Because the processor obtains its next instruction address from the PC, the processor jumps to the appropriate location. A condition code can be used to test for a specific condition for a JUMP to occur. ([DPSOH JP <cc>, <direct> Initialization: Routine 1 address contains 1455H PC contains 1343H User 0 input contains 1 Instruction: JP NUO, Routine 1 Result: PC contains 1343H This example uses two words of memory and executes in two machine cycles. Because the User 0 input is set High, the condition code is not met. Therefore, the JUMP instruction does not execute. The User 0 input is used to control the flow of the software. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH JP <direct> Initialization: Routine 1 address contains 1455H PC contains 1343H Instruction: JP Routine 1 Result: PC contains 1455H This example uses two words of memory and executes in two machine cycles. The value in the program counter is replaced by the Routine 1 address (1455H). 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' /' /2$' /' ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ LD A, <pregs> LD <direct>, A LD <hwregs>, <dregs> LD A, <dregs> LD <dregs>, <hwregs> LD <hwregs>, <limm> LD A, <memind> LD <pregs>, <simm> LD <hwregs>, <accind> LD A, <direct> LD <pregs>, <hwreg> LD <hwregs>, <memind> LD A, <regind> LD <regind>, <limm> LD <hwregs>, <regind> LD A, <hwregs> LD <hwregs>, < pregs> LD <hwregs>, <hwregs> 2SHUDWLRQ <source> —> <destination> Flags: None 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 'HVFULSWLRQ The LOAD command provides the ability to transfer data to several different locations in the processor including hardware registers, accumulator, stack, pointers and memory. All transfers across the various internal buses are transparent to the user. 0QVGU 1. A load using the X or Y register provides an automatic multiply operation. This means the operand can be obtained from any register location. 2. The P register is a read-only register, therefore the destination of the load cannot be the P register. 3. LD EXTN, EXTN is not allowed. 4. A LOAD instruction to the accumulator clears the lower 8 bits of the 24-bit accumulator. ([DPSOH LD A, <regind> Initialization: A contains 7A2500H P2:1 contains A4H RAM Bank1: A4H contains 5463H Instruction: LD A, @P2:1 Result: A contains 546300H This example uses one word of memory and executes in one machine cycle. Indirect addressing through the pointer registers provides access to RAM data. The data in RAM Bank 1, register A4 is transferred to the accumulator. The contents of the P2:1 register are appended with eight additional 0 bits. This is added to verify a correct arithmetic comparison. ([DPSOH LD A, <memind> Initialization: Accumulator contains 123400H P0:0 contains 21H RAM Bank0: 21H contains 247AH ROM Address: 247AHequals OC1 2H Instruction: LD A, @@P0:0 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Result: A contains OC1 200H P0:0 contains 21H RAM Bank0: 21H contains 247BH This example uses one word of memory and executes in three machine cycles. The pointer P0:0 contains the RAM register location (21H). The contents of this register have a ROM address. This address refers to the ROM data that loads to the accumulator. When memory indirect addressing is used, the ROM address is automatically incremented. Using LD A, @@P0:0+ has the same result, also incrementing the P0:0 content to 22H. ([DPSOH LD A, <limm> Initialization: Accumulator contains 123400H Instruction: LD A, #%2474 Result: A contains 247400H Cycles: 2 Words: 2 This example uses two words of memory and executes in two machine cycles. The immediate operand 2474H loads to the accumulator. ([DPSOH LD A, <hwregs> Initialization: Accumulator contains 123400H Register X contains OC12H Instruction: LD A, X Result: A contains OC1200H This example uses one word of memory and executes in one machine cycle. The contents of Register X are loaded to the accumulator. All hardware registers can transfer from <hwregs>. ([DPSOH LD A, <direct> Initialization: Accumulator contains 123400H RAM Bank0 F3H contains OC12H Instruction: LD A, %F3 Result: A contains OC1200H 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' This example uses one word of memory and executes in one machine cycle. Register F3H is loaded to the accumulator. An equivalent instruction is LD A,243 (F3H = 243 decimal). ([DPSOH LD A, <dregs> Initialization: Accumulator contains123400H D0: 1 contains 8746H Instruction: LD A, D0:1 Result: A contains 874600H D0: 1 contains 8746H This example uses one word of memory and executes in one machine cycle. The contents of the data pointer D0:1 load to the accumulator. ([DPSOH LD A, <pregs> Initialization: Accumulator contains 123400H P0:0 contains 56H Instruction: LD A, P0:0 Result: Accumulator contains 005600H This example uses one word of memory and executes in one machine cycle. The contents of the pointer register P0:0 are loaded to the accumulator. The Pointer Register is connected to the lower 8 bits of the D-bus. The D-bus is connected to the upper 16 bits of the P-bus. This operation causes the pointer register operand to become 005600H before being loaded into the accumulator. ([DPSOH LD <direct>, A Initialization: Accumulator contains 123400H RAM Bank0: 3CH contains 5678H Instruction: LD %3C, A Result: Accumulator contains 123400H RAM Bank0: 3CH contains 1234H This example uses one word of memory and executes in one machine cycle. The current value in the accumulator is loaded to the register addressed by the instruction (3CH). An equivalent instruction is LD 60, A. (3CH = 60 decimal). 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH LD <pregs>, <simm> Initialization: P2:0 contains 2FH RAM Bank0: 3FH contains 254645H Instruction: LD P2:0, #%3F Result: P2:0 contains 3FH RAM Bank0: 3FH contains 254645H This example uses one word of memory and executes in one machine cycle. The immediate data (3FH) is loaded into the pointer register P2:0. This action provides a convenient method for initializing pointer registers. ([DPSOH LD <pregs>, <hwregs> Initialization: P0: 1 contains 2FH Y contains 2376H Instruction: LD P0:1, Y Result: P0: 1 contains 76H Y contains 2376H This example uses one word of memory and executes in one machine cycle. The lower 8-bits of the Y register are transferred to the pointer register P0:1. All hardware registers can transfer from <hwregs>. ([DPSOH LD <regind>, <limm> Initialization: P0:1 contains 2FH RAM Bank0: 2FH contains 2376H Instruction: LD @P0:1, #%35B8 Result: P0:1 contains 2FH RAM Bank1: 2FH contains 35B8H This example uses two words of memory and executes in two machine cycles. The immediate operand 35B8H is transferred to the Register 2FH of RAM Bank1. ([DPSOH LD <hwregs>, <pregs> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: P2:0 contains 2FH X Register contains 8B87H Instruction: LD X,P2:0 Result: P2:0 contains 2FH X Register contains 002FH This example uses one word of memory and executes in one machine cycle. The contents of the P2:0 pointer (2FH) are loaded into the X register. Transfer to <hwreg> is possible to all hardware registers except the read-only P register. ([DPSOH LD <hwregs>, <dregs> Initialization: D2:0 contains 3C87H Accumulator contains 8BB722H Instruction: LD A,D2:0 Result: D2:0 contains 3C87H Accumulator contains 3C8700H This example uses one word of memory and executes in one machine cycle. The contents of the D2:0 pointer (3C87H) are loaded into the accumulator. Transfer to <hwregs> is possible to all hardware registers except the read-only P register. ([DPSOH LD <hwregs>, <limm> Initialization: Stack0 contains 8B2FH Stack1 contains 0000H Instruction: LD Stack, #%35B8 Result: Stack0 contains 35B8H Stack1 contains 8B2FH This example uses two words of memory and executes in two machine cycles. The immediate data is pushed onto the stack as previous stack data is pushed up the stack. Transfer to <hwregs> is possible to all hardware registers except the read-only P register. ([DPSOH LD <hwregs>, <accind> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: EXT7 Register contains 8B87H Accumulator contains 77B6H ROM 77B6H contains 387DH Instruction: LD EXT7, @A Result: EXT7 Register contains 387DH Accumulator contains 77B6H This example uses one word of memory and executes in one machine cycle. The contents of the ROM Register 77B6H (387DH) are loaded into External Register 7. Transfer to <hwregs> is possible to all hardware registers except the read-only P register and the accumulator register. ([DPSOH LD <hwregs>, <memind> Initialization: Y Register contains 1234H P0:0 contains 21H RAM Bank0: 21H contains 247AH ROM Address: 247AH contains 0C12H Instruction: LID Y, @@P0:0 Result: Y Register contains 0C12H P0:0 contains 21H RAM Bank0: 21H contains 247BH This example uses one word of memory and executes in three machine cycles. The pointer P0:0 contains the RAM register location (21H). The contents of this register have a ROM address that refers to the ROM data that loads to the Y register. Transfer to <hwregs> is possible to all hardware registers except the read-only P register. When memory indirect addressing is used the ROM address is automatically incremented. Using LD A,@@P0:0+ performs the same operation and also increments the P0:0 content to 22H. ([DPSOH LD <hwregs>, <regind> Initialization: X Register contains 7A25H P21 contains A4H RAM Bank1: A4H contains 5463H Instruction: LD X, @P2:1 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Result: X Register contains 5463H This example uses one word of memory and executes in one machine cycle. Indirect addressing through the pointer registers provides access to RAM data. The data in RAM bank 1, register A4 is transferred to the X register. Transfer to <hwreg> is possible to all hardware registers except the read-only P register. ([DPSOH LD <hwregs>, <hwregs> Initialization: X Register contains 7A25H EXT5 Register contains 789AH Instruction: LD X, EXT5 Result: X Register contains 789AH EXT5 Register contains 789AH This example uses one word of memory and executes in one machine cycle. The EXT5 Register contents are transferred to the X register. Transfer to <hwregs> is possible to all hardware registers except the read-only P register. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 1(* 1(*$7( 1(* ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ NEG A NEG <cc>, A 2SHUDWLRQ -ACC —> ACC Flags: N Set if result is a negative number. Two special cases are: 1. If ACC contains 000000 after execution, then N and 0V are cleared, and Z and C are set 2. If ACC contains 800000 after execution, then N and 0V are set; and Z and C are cleared. The accumulator is replaced with a negative of the current value. To achieve this state, the two’s complement is performed. ([DPSOH NEG A Initialization: A contains 003654H Instruction: NEG A Result: A contains FFC9ACH This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH NEG <cc>, A Initialization: A contains 000111H Carry bit contains 1 Instruction: NEG C, A Result: A contains FFFEEFH This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 123 1223(5$7,21 123 ,QVWUXFWLRQ:RUG 6\QWD[ NOP 2SHUDWLRQ PC+ 1—> PC Flags: None 'HVFULSWLRQ The NOP instruction causes the processor to continue operation for one cycle without affecting previous registers and I/0. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 25 %,7:,6(25 25 ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ OR A, <regind> OR A, <memind> OR A, <limm> OR A, <hwregs> OR A, <direct> OR A, <pregs> OR A, <dregs> OR A, <simm> 2SHUDWLRQ ACC .OR. source —> ACC Flags: N Z Set If result in accumulator is negative. Set If result is 0. 'HVFULSWLRQ The accumulator performs an OR instruction on the contents of the specified register. The upper 16 bits of the accumulator are used. The result is placed in the accumulator. The OR instruction is frequently used to compare specific bits to assist in program control. 0QVG The lower eight bits of the accumulator are unchanged after execution of the OR instruction. ([DPSOH OR A, <regind> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Accumulator contains 3264A0H P0:0 contains E2H RAM Bank0: E2H contains 1126H Instruction: OR A, @P0:0 Result: A contains 336600H This example uses one word of memory and executes in one machine cycle. Use an OR instruction to reference the operand P0:0 with the upper 16 bits of the accumulator. The result is stored in the accumulator. 3264A0H OR. 1126A0H = 3366A0H. ([DPSOH OR A,<memind> Initialization: A contains 3264A0H P2:11 contains A4H RAM Bank 1: A4H contains 5463H ROM Address: 5463H contains 1126H Instruction: OR A, @@P2:1 Result A contains 3366A0H P2:1 contains A4H RAM Bank0: A4H contains 5464H SR contains 0000H This example uses one word of memory and executes in three machine cycles. The pointer P2:1 contains the RAM register location (A4H). The contents of this register have a ROM address. This address refers to the ROM data that is compared to the accumulator. 3264A0H.OR.112600H = 3366A0H. With memory indirect addressing, the ROM address is automatically incremented. Using ORA,@@P0:0+ performs the same operation and also increments the P0:0 content to A5H. ([DPSOH OR A, <limm> Initialization: A contains 3264A0H Instruction: OR A, #%1126 Result: A contains 3366A0H SR contains 0000H This example uses two words of memory and executes in two machine cycles. The accumulator performs an OR instruction on the immediate data. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 323 3239$/8()52067$&. 323 ,QVWUXFWLRQ:RUG RS RS RS RS RS RS RS E G G G G V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ POP <pregs> POP <dregs> POP <regind> POP <hwregs> 2SHUDWLRQ STACK 0 —> <destination> Stack n —> Stack N-1 Flags: None 'HVFULSWLRQ The current value of the stack is copied to the specified register. Because the stack is a last-in, first-out (LIFO) hard-wired architecture, the copy and shift of data remaining in the stack are all performed in a single cycle. The POP instruction provides the ability to control information sent to the stack, making it possible to expand the stack using software. ([DPSOH POP <pregs> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H P0:0 contains 24H Instruction: POP P0:0 Result Stack 0 contains 0426H P0:0 contains 06H 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' This example uses one word of memory and executes in one machine cycle. The destination of Stack 0 (item on top of stack) is P0:0. The 8-LSBs of the data in stack 0 are loaded into P0:0. At transfer, Stack 1 is automatically moved to Stack 0. ([DPSOH POP <dregs> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H D0:0 contains 7676H Instruction: POP D0:0 Result: Stack 0 contains 0426H D0:0 contains 0C06H This example uses one word of memory and executes in one machine cycle. The destination of the Stack 0 (item on top of stack) is given by D0:0. When transferred, Stack 1 is automatically moved to Stack 0. ([DPSOH POP <regind> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H P0:0 contains 24H RAM Bank0: 24H contains 42A4H Instruction: POP @P0:0 Result Stack 0 contains 0426H RAM Bank0: 24H contains 0C06H This example uses one word of memory and executes in one machine cycle. The destination of the Stack 0 (item on top of stack) is given by P0:0. 24H is the register location in RAM Bank0 to which the stack item is transferred. At transfer, Stack 1 is automatically moved to Stack 0. ([DPSOH POP <hwregs> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H X Register contains 089CH Instruction: POP X Result: Stack 0 contains 0426H X Register contains 0C06H This example uses one word of memory and executes in one machine cycle. The destination of the Stack 0 (item on top of stack) is given by the X Register. At transfer, Stack 1 is automatically moved to Stack 0. Transfer to <hwregs> is possible to all hardware registers except the read-only P register. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 386+ 386+9$/8(217267$&. 386+ ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ PUSH <pregs> PUSH <dregs> PUSH <memind> PUSH <accind> PUSH <regind> PUSH <hwregs> PUSH <direct> PUSH <limm> 2SHUDWLRQ <source> —> Stack Stack n —> Stack n+ 1 Flags: None 'HVFULSWLRQ The contents of the specified register are placed on the stack. Because the stack is a last-in, first-out (LIFO) hard-wired architecture, the placement and shifting of current stack data is performed in a single cycle. The PUSH instruction provides the ability to control information sent to the stack, making it possible to expand the stack through software. ([DPSOH PUSH <pregs> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Stack 0 contains 0C06H P1:1 contains A4H Instruction: PUSH P1:1 Result Stack 1 contains 0C06H Stack 0 contains 00A4H This example uses one word of memory and executes in one machine cycle. The pointer P1:1 contains the 8-bit value A4H. The 16-bit value, 00A4H, is pushed onto the stack. At transfer, Stack 0 is automatically moved to Stack 1. ([DPSOH PUSH <dregs> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H D1:1 contains 42A4H Instruction: PUSH D1:1 Result Stack 1 contains 0C06H Stack 0 contains 42A4H This example uses one word of memory and executes in one machine cycle. The pointer D1:1 is pushed onto the stack. At transfer, Stack 0 is automatically moved to Stack 1. ([DPSOH PUSH <memind> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H RAM Bank0: 24H contains 42A4H P1:1 contains A4H RAM Bank1: A4H contains 5463H ROM Address 5463H contains 1126H Instruction: PUSH @@P1:1 Result: Stack 1 contains 0C06H Stack 0 contains 1126H RAM Bank1: A4H contains 5464H This example uses one word of memory and executes in three machine cycles. When memory indirect addressing is used, the ROM address is automatically incremented. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Using OR A,@@P0:0+ performs the same operation and also increments the P0:0 content to A5H. ([DPSOH PUSH <accind> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H Accumulator contains 42A4H ROM address 42A4H contains 4C45H Instruction: PUSH @A Result Stack 1 contains 0C06H Stack 0 contains 4C45H This example uses one word of memory and executes in one machine cycle. Indirect addressing with the accumulator points to the ROM memory (42A4H) The data in this location is pushed onto the stack. At transfer, Stack 0 is automatically moved to Stack 1. ([DPSOH PUSH <regind> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H P1:1 contains A4H RAM Bank1: A4H contains 42A4H Instruction: PUSH @P1:1 Result: Stack 1 contains 0C06H Stack 0 contains 42A4H RAM Bank1: A4H contains 42A4H This example uses one word of memory and executes in one machine cycle. The pointer P1:1 contains the RAM register location (A4H). The data at this location is pushed onto the stack. At transfer, Stack 0 is automatically moved to Stack 1. ([DPSOH PUSH <hwregs> Initialization: 3679& Stack 1 contains 0426H Stack 0 contains 0C06H X Register contains 42A4H =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Instruction: PUSH X Result: Stack 1 contains 0C06H Stack 0 contains 42A4H This example uses one word of memory and executes in one machine cycle. The data in the X register is pushed onto the stack. At transfer, Stack 0 is automatically moved to Stack 1. Transfer from <hwregs> is possible from all hardware registers. ([DPSOH PUSH <direct> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H RAM Bank0: 24H contains 42A4H Instruction: PUSH %24 Result: Stack 1 contains 0C06H Stack 0 contains 42A4H This example uses one word of memory and executes in one machine cycle. The instruction (24H) provides the direct register address. The value contained in this register is pushed onto the stack (42A4H). At transfer, Stack 0 is automatically moved to Stack 1. ([DPSOH PUSH <limm> Initialization: Stack 1 contains 0426H Stack 0 contains 0C06H Instruction: PUSH #%5757 Result: Stack 1 contains 0C06H Stack 0 contains 5757H This example uses two words of memory and executes in two machine cycles. The immediate operand 5757H is pushed onto the stack. At transfer, Stack 0 is automatically moved to Stack 1. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5(7 5(7851)52068%5287,1( 5(7 ,QVWUXFWLRQ:RUG 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ RET 2SHUDWLRQ Stack 0 —> PC Stack n —> Stack n-1 Flags: None 'HVFULSWLRQ The current stack information is popped from the stack and placed in the Program Counter (PC) register. The jump is made from the subroutine via the PC. ([DPSOH RET Initialization: Stack 1 contains 0624 Stack 0 contains 0401 PC contains 06DF Instruction: RET Result: Stack 0 contains 0624 PC contains 0401H This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 5/ 527$7(/()7 5/ ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ RL A RL <cc>,A 2SHUDWLRQ C <= 23 ------------ < ---------- 8 <= C Flags: N Z C Set if result of accumulator is negative Set if result is zero. Set if MSB is set before rotate. 'HVFULSWLRQ The upper 16 bits of the accumulator are rotated left through the carry bit. The lower 8 bits remain unchanged while the resultant LSB, bit 0, is placed with the value 0 (see the accumulator section). ([DPSOH RL A Initialization: A contains 226A84H Carry bit contains 1 Instruction: RL A Result: A contains 44D584H Carry bit contains 0 This example uses one word of memory and executes in one machine cycle. The upper 16 bits (226AH) are shifted left through the carry bit to produce 44D5H. The lower 8 bits (84H) remain unchanged. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH RL <cc>, A Initialization: A contains 226A84H Carry bit contains 0, Z=0 Instruction: RL Z, A Result: A contains 226A84H This example uses one word of memory and executes in one machine cycle. The condition code 0 is not set; therefore, the instruction is not executed. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 55 527$7(5,*+7 55 ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ RR A RR <cc>, A 2SHUDWLRQ C =>23 ---- > 8 = => 7 - -> -- 0 —> discarded Flags: N Z C Set if result of accumulator is negative. Set if result is 0. Set if LSB is set before rotate. 'HVFULSWLRQ The upper 16 bits of ACC are rotated right through the carry bit. The MSB of the lower 8 bits also obtains the data shifted from the LSB of upper 16 bits. The lower 8 bits are shifted right with the LSB being discarded. ([DPSOH RR A Initialization: A contains 226A84H Carry bit contains 0 Instruction: RR A Result: A contains 113542H This example uses one word of memory and executes in one machine cycle. The upper 16 bits (226AH) are shifted right through the carry bit to produce 1135H. The lower 8 bits (84H) are shifted right to provide 42H. ([DPSOH RR <cc>, A 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: A contains 226A84H Carry bit contains 0, Z=0 Instruction: RR Z, A Result: A contains 226A84H This example uses one word of memory and executes in one machine cycle. The condition code 0 is not set; therefore, the instruction is not executed. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 6&) 6(7&$55<)/$* 6&) ,QVWUXFWLRQ:RUG RS RS RS RS RS RS RS FF FF FF FF FF IP IP IP IP 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 6\QWD[ SCF 2SHUDWLRQ 1 —> Carry Bit Flags: C Set to 1. 'HVFULSWLRQ The Set Carry Flag instruction places a one in the carry bit (bit 12 of the Status Register). ([DPSOH SCF Initialization: SR contains 2000H Instruction: SCF Result: SR contains 3000H C contains 1 This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 6,() 6(7,17(55837(1$%/()/$* 6,() ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 6\QWD[ SIEF 2SHUDWLRQ 1 —> IE bit Flags: None 'HVFULSWLRQ The instruction places a 1 in bit 7 of the status register and is used to enable interrupts. ([DPSOH SIEF Initialization: SR contains 3000H Instruction: SIEF Result: SR contains 3080H IE contains 1 This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 6// 6+,)7/()7/2*,&$/ 6// ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ SLL A SLL <cc>, A 2SHUDWLRQ discarded <— C <= 23 - - - - < - - - -0 <= 0 Flags: N Z C Set if result of accumulator is negative (bit 23 set to 1). Set if result is 0. Set if MSB is set before shift. 'HVFULSWLRQ All 24 bits of the accumulator are shifted left through the carry bit. The MSB, bit 23, passes through the carry bit before being discarded. The LSB, bit 0, is filled with a zero. Subsequent shifts cause additional zeroes to be shifted in. ([DPSOH SLL A Initialization: A contains 226A84H Carry bit contains 0 Instruction: SLL A Result: A contains 226A84H This example uses one word of memory and executes in one machine cycle. All 24 bits of the accumulator are shifted left through the carry bit, producing the result 44D508H. ([DPSOH SLL <cc>, A 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: A contains 226A84H Carry bit contains 0 Instruction: SLL MI, A Result: A contains 226A84H This example uses one word of memory and executes in one machine cycle. The condition code N is not set, and the instruction is not executed. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 623) 6(729(5)/2:3527(&7,21)/$* 623) ,QVWUXFWLRQ:RUG 2S&RGH &RQGLWLRQ&RGH )ODJ0RGLILFDWLRQ 6\QWD[ SOPF 2SHUDWLRQ 1 —> OP bit Flags: None 'HVFULSWLRQ The Set Overflow Protection Flag instruction places a one in bit 8 of the status register. If an ALU operation exceeds the limits of the processor, the overflow protection sets the overflow flag (OV) and holds the limit value in the accumulator. ([DPSOH SOPF Initialization: SR contains 0000H Instruction: SOPF Result: SR contains 0100H OP contains 1 This example uses one word of memory and executes in one machine cycle. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 65$ 6+,)75,*+7$5,7+0(7,& 65$ ,QVWUXFWLRQ:RUG FF FF FF FF FF 2S&RGH &RQGLWLRQ&RGH $&&0RGLILFDWLRQ 6\QWD[ SRA A SRA <cc>, A 2SHUDWLRQ 23 => 23 --- > ---- 0 => discarded Flags: N Z C Set if result of accumulator is negative. Set if result is 0. Set if LSB is set before the shift. 'HVFULSWLRQ All 24 bits of the accumulator are shifted right with sign extension through the carry bit. The MSB, bit 23, is replicated in vacated bits. The LSB, bit 0, is passed through the carry before it is discarded. ([DPSOH SRA A Initialization: A contains 226A84H Carry bit contains 0 Instruction: SRA A Result: A contains 113542H Carry bit contains 0 This example uses one word of memory and executes in one machine cycle. All 24 bits of the accumulator are shifted right. The MSB, bit 23, is copied into bit 22. The LSB, bit 0, is discarded. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH SRA <cc>, A Initialization: A contains 226A84H Carry bit contains 0, N=0 Instruction: SRA A Result: A contains 113542H Carry bit contains 0 This example uses one word of memory and executes in one machine cycle. The condition code is set; therefore, the instruction is executed. The initialization of the accumulator sets the PL (NN) condition code. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 68% 68%75$&7 68% ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ SUB A, <regind> SUB A, <memind> SUB A, <limm> SUB A, <hwregs> SUB A, <direct> SUB A, <pregs> SUB A, <dregs> SUB A, <simm> 2SHUDWLRQ ACC – (Source) —> ACC Flags: C N Z OV Set if a carry from the most significant bit is performed. Set if the result in the accumulator is negative. Set if the result is 0. Set if the addition exceeds the upper (7FFFFFH) or lower (800000H) limit of the accumulator. 'HVFULSWLRQ The addressed data memory operand is subtracted from the accumulator. The result is loaded into the accumulator. The lower eight bits of the accumulator are cleared by the execution of the subtract instruction. ([DPSOH SUB A, <regind> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Accumulator contains 874600H P0: 1 contains 45H RAM Bank1: 45H contains 1234H Instruction: SUB A, @P0:1 Result: A contains 751200H @P0:1 contains 1234H This example uses one word of memory and executes in one machine cycle. The contents of the register pointed by P0:1 are subtracted from the accumulator. The difference is contained in the accumulator and the pointer is left unchanged. The register pointer contains 45H. Because the pointer references RAM Bank1, the absolute register is 145H (325). Therefore, the contents of register 145H are subtracted from the accumulator. 874600H - 123400H = 751200H. The direct addressing equivalent is SUB A,%145 or SUB A,325. ([DPSOH SUB A, <memind> Initialization: Accumulator contains 874600H P0:0 contains 21H RAM Bank0: 21H contains 247AH ROM Address: 247AHcontains 1234H Instruction: SUB A, @@P0:0+ Result: A contains 751200H P0:0 contains 22H RAM Bank0: 21 H contains 247BH This example uses one word of memory and executes in three machine cycles. The pointer is used for memory indirect addressing. The pointer contains the address of the RAM (address 247AH). The RAM contains the address of the requested ROM data (data 247AH). This operand is subtracted from the accumulator. 874600H - 123400H = 751200H. ([DPSOH SUB A, <limm> Initialization: Accumulator contains 874600H Instruction: SUB A, #%1234 Result: Accumulator contains 751200H 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' This example uses two words of memory and executes in two machine cycles. The immediate operand 8746H is subtracted from the accumulator. 874600H - 123400H = 751200H. ([DPSOH SUB A, <hwregs> Initialization: Accumulator contains 874600H Register X contains 1234H Instruction: SUB A, X Result: A contains 751200H This example uses one word of memory and executes in one machine cycle. The contents of Register X are subtracted from the accumulator. 874600H - 123400H = 751200H. Transfer from <hwregs> is possible from all hardware registers. ([DPSOH SUB A, <direct> Initialization: Accumulator contains 874600H RAM Bank0: F3H contains 1234H Instruction: SUB A, %F3 Result: A contains 751200H This example uses one word of memory and executes in one machine cycle. The contents of register F3H are subtracted from the accumulator. 874600H - 123400H = 751200H. An equivalent instruction is SUB A, 243 (F3H = 243 decimal). ([DPSOH SUB A, <dregs> Initialization: Accumulator contains 874600H D0: 1 contains 1234H Instruction: SUB A, D0:1 Result: A contains 751200H D0:1 contains 1234H This example uses one word of memory and executes in one machine cycle. The contents of the data pointer D0:1 are subtracted from the accumulator. The difference is contained in the accumulator and the pointer is left unchanged. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ([DPSOH SUB A, <pregs> Initialization: Accumulator contains 874600H P0:0 contains 56H Instruction: SUB A, P0:0 Result: Accumulator contains 86F000H This example uses one word of memory and executes in one machine cycle. The contents of pointer register P0:0 are subtracted from the accumulator. 874600H - 005600H = 86F000H. The Pointer Register is connected to the lower 8 bits of the D-bus. The D-bus is connected to the upper 16 bits of the P-bus. This causes the pointer register operand to become 005600H before it is subtracted from the accumulator. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' ;25 %,7:,6((;&/86,9(25 ;25 ,QVWUXFWLRQ:RUG E V V V V 2S&RGH 5$0 %DQN 'HVWLQDWLRQ 6RXUFH 6\QWD[ XOR A, <regind> XOR A, <memind> XOR A, <limm> XOR A, <hwregs> XOR A, <direct> XOR A, <pregs> XOR A, <dregs> XOR A, <simm> 2SHUDWLRQ A.XOR.<operand> —> A Flags: C N Z OV Set if carry from the most significant bit is performed. Set if result in the accumulator is negative. Set if result is 0. Set if operation exceeds upper (7FFFFFH) or lower (800000H) limit of accumulator. 'HVFULSWLRQ With the accumulator, perform an XOR instruction on the addressed data memory operand. The result loads into the accumulator. The lower eight bits of the accumulator are cleared by the XOR instruction. ([DPSOH XOR A, <regind> 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Initialization: Accumulator contains 005600H P0:0 contains 00H RAM Bank0: 00H contains 1234H Instruction: XOR A, @P0:0 Result: A contains 126200H This example uses one word of memory and executes in one machine cycle. The pointer is used for memory indirect addressing. The pointer contains the address of the RAM (address 00H). Location 00H has operand 1234H. With the accumulator, 005600H, perform an XOR instruction to obtain the result 126200H. ([DPSOH XOR A, <memind> Initialization: A contains 3264A0H P21 contains A4H RAM Bank1: A4H contains 5463H ROM Address: 5463H contains 1126H Instruction: XOR A, @@P2:1 Result A contains 2342A0H P2:1 contains A41H RAM Bank1: A4H contains 5464H SR contains 0000H This example uses one word of memory and executes in three machine cycles. The pointer P2:1 contains the RAM register location(A4H). The contents of this register have a ROM address. This address refers to the ROM data compared to the accumulator. 3264A0H.XOR.112600H = 2342A0H. When indirect memory addressing is used, the ROM address is automatically incremented. Using XOR A, @@P2:1+ performs the same operation and also increments the P21 content to A5H. ([DPSOH XOR A, <limm> Initialization: A contains 3264A0H Instruction: XOR A, #%1126 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' Result: A contains 2342A0H SR contains 0000H This example uses two words of memory and executes in two machine cycles. Perform an XOR instruction on the immediate data. ([DPSOH XOR A, <hwreg> Initialization: A contains 3264A0H SR contains 0000H BUS contains 1126H Instruction: XOR A, BUS Result: A contains 2342A0H SR contains This example uses one word of memory and executes in one machine cycle. With the accumulator, perform an XOR instruction on the <hwreg> operand. ([DPSOH XOR A, <direct> Initialization: Accumulator contains 3264A0H RAM Bank0: F3H contains 1126H Instruction: XOR A, %F3 Result: A contains 2342A0H SR contains 0000H This example uses one word of memory and executes in one machine cycle. Register F3H is compared to the accumulator. 3264A0H.XOR.112600H = 2342A0H. An equivalent instruction is XOR A, 243 (F3H = 243 decimal). 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' (OHFWULFDO&KDUDFWHULVWLFV 7DEOH $EVROXWH0D[LPXPDQG0LQLPXP5DWLQJV 6\P 3DUDPHWHU 9&& 3RZHUVXSSO\YROWDJH 9,' 0LQ 0D[ 8QLWV &RQGLWLRQV 9 ,QSXWYROWDJH ± 9&& 9 'LJLWDOLQSXWV 9,$ ,QSXWYROWDJH ± 9&& 9 $QDORJLQSXWV$'±$' 92 2XWSXWYROWDJH ± 9&& 9 $OOSXVKSXOOGLJLWDORXWSXWV 92 2XWSXWYROWDJH ± 9&& 9 3:0RXWSXWV ,2+ 2XWSXWFXUUHQWKLJK ± P$ RQHSLQ ,2+ 2XWSXWFXUUHQWKLJK ± P$ DOOSLQV ,2/ 2XWSXWFXUUHQWORZ P$ RQHSLQ ,2/ 2XWSXWFXUUHQWORZ P$ DOOSLQV 7$ 2SHUDWLQJWHPSHUDWXUH 76 6WRUDJHWHPSHUDWXUH R ± R & & 7DEOH '&&KDUDFWHULVWLFV 6\PERO 3DUDPHWHU 0LQ 7\S 0D[ 8QLWV 9&& 3RZHUVXSSO\YROWDJH 9 9,/ ,QSXWYROWDJHORZ 9&& 9 9,+ ,QSXWYROWDJHKLJK 9&& 9&& 9 9,+5 ,QSXWYROWDJH+LJKRQ 5HVHWSLQ 9&& 9&& 9 938 0D[LPXPSXOOXS YROWDJH 9&& 9 )RU3:0 92/ 2XWSXWYROWDJHORZ 9 #,2/ P$ 92+ 2XWSXWYROWDJHKLJK 9&&± 9 #,2+ ±P$ ,2/ 2XWSXWFXUUHQWORZ P$ #92/ Y ,2/ 2XWSXWFXUUHQWORZ P$ #92/ Y ,2+ 2XWSXWFXUUHQWKLJK P$ #92+ 9&&± 3679& &RQGLWLRQV =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH '&&KDUDFWHULVWLFV &RQWLQXHG 6\PERO 3DUDPHWHU 0LQ 7\S ,2+ 0D[ 2XWSXWFXUUHQWKLJK P$ #92+ Y ,2/ 2XWSXWFXUUHQW/RZ P$ #92/ Y ,2/ 2XWSXWFXUUHQW/RZ P$ #92/ Y ,2+ 2XWSXWFXUUHQW+LJK P$ #92+ 9&&± ,2+ 2XWSXWFXUUHQW+LJK P$ #92+ 9 9;/ ,QSXWYROWDJH;7$/ ORZ 9;+ ,QSXWYROWDJH;7$/ KLJK ,,5 5HVHWLQSXWFXUUHQW ,,/ ,QSXWOHDNDJH ,&& 9&& 9&& 8QLWV 9 &RQGLWLRQV ([WHUQDOFORFNJHQHUDWRU GULYHQ 9 m$ 95/ 9 ± m$ #9DQG9&& 6XSSO\FXUUHQW P$ $OOSRUWVDUHLQSXWV5*%LVLQ GLJLWDOPRGH ,&& 6XSSO\FXUUHQW P$ $OOSRUWVDUHLQSXWV5*%LVLQ DQDORJPRGH ,&& 6XSSO\FXUUHQW P$ 6OHHSPRGH#N+] ,&& 6XSSO\FXUUHQW m$ 6WRSPRGHDOO3:0RXWSXWV DUH#9,1 9 '&3HULSKHUDOV 7DEOH 99DQG95*%$QDORJ2XWSXW 2XWSXW9ROWDJH.W/RDG 6HWWOLQJ7LPH #9&& 9 #9&& 9 #9&& 9 GDWD 9±9 9±9 9±9 GDWD 9±9 9±9 9±9 GDWD 9±9 9±9 9±9 GDWD 9±9 9±9 9±9 3679& RI'&/HYHOS) /RDG QV =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH $'&6PDOO5DQJH 6\P 3DUDPHWHU 0LQ 7\S 0D[ 85± &ODPSLQJYROWDJHDW $'& 9 $'& ,QSXWYROWDJHIRUOHYHO 85±±8585± 85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'& ,QSXWYROWDJHIRUOHYHO 85±85±85± 85±85±85± 85±85±85± 9 $'&$ ,QSXWYROWDJHIRUOHYHO$ 85±85±85± 85±85±85± 85±85±85± 9 $'&% ,QSXWYROWDJHIRUOHYHO% 85±85±85± 85±85±85± 85±85±85± 9 $'&& ,QSXWYROWDJHIRUOHYHO& 85±85±85± 85±85±85± 85±85±85± 9 $'&' ,QSXWYROWDJHIRUOHYHO' 85±85±85± 85±85±85± 85±85±85± 9 ,QSXWYROWDJHIRUOHYHO( 85±85±85± 85±85±85± 85±85±85± 9 $'&) ,QSXWYROWDJHIRUOHYHO) 85±85±85± 85 5,1 $'&( ,QSXWLPSHGDQFH 85±85±85± 8QLWV 8 0W 0QVG 86#%VQ%8%%8VQ8 6JG+PRWVXQNVCIGNGXGNKPFKECVGFKPVJGVCDNGKUCUYKVEJRQKPVHTQOQPG#&%NGXGNVQCPQVJGT6QDGKPVJG OKFFNGQHVJGNGXGNJCNH.5$ 74 74 OWUVDGCFFGF6JG+PRWVXQNVCIGOWUVDGRTQTCVGFCEEQTFKPIN[ KH8%%KUEJCPIGF 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH $'&$'&)XOO5DQJH 'DWD IURP $'& ,QSXW YROWDJH YROWV 'DWD IURP $'& ,QSXW YROWDJH YROWV 'DWD IURP $'& ,QSXW YROWDJH YROWV 'DWD IURP $'& ,QSXW YROWDJH YROWV ,QSXWLPSHGDQFH !0W 0QVG 88EE86GOR % $&&KDUDFWHULVWLFV Table 81 lists the AC characteristics. 7DEOH $&&KDUDFWHULVWLFV 6\P 3DUDPHWHU 0LQ 7\S 0D[ 8QLWV 73& ,QSXWFORFNSHULRG m6 75&7)& &ORFNLQSXW5LVHDQG)DOO 7'325 3RZHURQUHVHWGHOD\ 7:5(6 3RZHURQUHVHWPLQLPXPZLGWK 7'+6 +6<1&LQFRPLQJVLJQDOZLGWK 7'96 96<1&LQFRPLQJVLJQDOZLGWK 7'(6 QV 6 73& m6 m6 m6 7LPHGHOD\EHWZHHQOHDGLQJHGJHRI 96<1&DQG+6<1&LQ(9(1ILHOG ± m6 7'26 7LPHGHOD\EHWZHHQOHDGLQJHGJHRI 96<1&DQG+6<1&LQ2''ILHOG m6 7:+96 +6<1&96<1&HGJHZLGWK m6 0QVG6#u%VQu%8%%8VQ8(15%*\ #NNVKOKPIQHVJG+%DWUKPVGTHCEGCTGFGHKPGFD[TGNCVGFURGEKHKECVKQPUQHVJG+%DWUKPVGTHCEG 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' $1$/2*5*% The RGB outputs in analog mode are controlled current sources with an internal load. These outputs display gamma-corrected, VCC prorated characteristics. See Table 82, Table 83, and Figure 28. 7DEOH 5*%9ROWDJH6SHFLILFDWLRQ 3DUDPHWHU 0LQ 7\SLFDO 0D[ 8QLWV 6XSSO\YROWDJH 9 )XOOVFDOHYROWDJH 9 99&& 9 9 VFDOHYROWDJH 9 99&& 9 9 VFDOHYROWDJH 9 99&& 9 9 =HURVFDOHYROWDJH ² 99&& 9 9 0QVG/GCUWTGFYKVJMWNQCF 7DEOH 5*%7LPH6SHFLILFDWLRQ 3DUDPHWHU 0LQ 7\SLFDO 0D[ 8QLWV 2XWSXWULVHWLPH QV 2XWSXWIDOOWLPH QV 0QVG/GCUWTGFYKVJMWTGUKUVQTKPRCTCNNGNYKVJR(ECRCEKVQTNQCF 5 5*% 5 55 . 9287 5 )LJXUH 5HFRPPHQGHG$SSOLFDWLRQ6FKHPDWLFV 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 6\VWHP'HVLJQ&RQVLGHUDWLRQV The Z90356 provides the ability to • decode closed-caption transmissions • display characters on the screen • manipulate analog and digital control circuits • monitor keypad and infrared signals directly • generate OSD if the Z90356 receives vertical and horizontal synchronization signals In a typical system, normal transmission is received and demodulated. The signals received from the color decoder and deflection unit control the CRT display. To display characters generated by the Z90356 requires a video multiplexor which enables the CRT display’s RGB signals and synchronization to be controlled by the video outputs from the processor. When the controller has to display a character on the screen, the multiplexor is switched, and the processor’s video signals appear on the display. The band-limited, A/C-coupled composite video signal is clamped internally to the negative reference voltage (REF–) during the back porch interval. It is then passed to the analog-to-digital converter through a 6:1 multiplexor. The digital signal is then decoded to extract the closed-caption text embedded in the video signal. The characters received are generated as video signals and are then passed to the display. When a detectable composite video signal is received, the SYNC separator extracts the horizontal and vertical synchronization signals and passes them to the deflection module of the television. The FLYBACK signals from the deflection coils are fed back to the Z90356. The controller uses these signals to align its video signals with those of the normal display. If the composite video signal is not present, video synchronization is provided by the controller. In this case, the SYNC signal pins are set to be outputs. The pins then feed to the deflection unit which controls the display. The SYNC generators can be configured to provide either HSYNC and VSYNC, or H-FLYBACK and V-FLYBACK. Analog functions such as volume and color controls can be controlled by pulse width modulated outputs from the Z90356. Additional digital controls like channel fine tuning are controlled via the serial I2C bus. An infrared remote control receiver can be directly decoded through the capture register, and keypad input can be scanned by directly controlling I/O pins as keyscan ports. The processor clock is available by referencing an internal phase locked loop to an external 32.768 KHz crystal oscillator. The oscillator minimizes EMI emissions from the clock circuitry. The internal system clock frequency can be selected as 12.058 MHz in normal operation or 32.768 KHz in low power consumption SLEEP mode (usually used if 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' there is a general system power failure). The Z90356’s STOP mode suspends processor clocking for a power-down. Program, display, and character graphics memory are on the chip, eliminating the requirement for external memory components. Characters can be displayed as two or three times normal size. Smoothing and fringing circuits enhance display appearance. Figure 29 diagrams a typical application of the Z90356 Television Controller as an embedded controller in a television. / )0$XGLR $XGLR 5 5*% &RORU 'HFRGHU )O\EDFN 9LGHR 7XQHU,) 8QLW 7XQLQJ )O\EDFN &RQWURO &57 +9'HIOHFWLRQ 'HIOHFWLRQ 6<1& 5*% RXWSXW VWDJHV 6<1& &RPSRVLWH 7HOHYLVLRQ 5*% 08; 26' 9%ODQN &RQWURO =7HOHYLVLRQ&RQWUROOHU , &%XV )URQW3DQHO &RQWURO ,5 'HWHFWRU )LJXUH 6\VWHP%ORFN'LDJUDP 3DFNDJLQJ Figure 30 and Table 84 indicate the controlling dimensions. 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 26 1 E1 27 52 D Detail A Q1 A2 A1 L e S B B1 Controlling dimension in inches E Optional end lead config Detail A C eA )LJXUH 3LQ6',33DFNDJH'LPHQVLRQV 3679& =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' 7DEOH&RQWUROOLQJ'LPHQVLRQV 6\PERO ,QFK 0LQ0D[ $ ² ² $ % % & ' ² ² ( ( H 3679& 0LOOLPHWHU 0LQ0D[ 7<3 7<3 H$ / 4 6 =520DQG=273 .:RUG7HOHYLVLRQ&RQWUROOHUZLWK26' &XVWRPHU)HHGEDFN)RUP =3URGXFW6SHFLILFDWLRQ If there are any problems while operating this product, or any inaccuracies in the specification, please copy and complete this form, then mail or fax it to ZiLOG. Suggestions welcome! &XVWRPHU,QIRUPDWLRQ 1DPH &RXQWU\ &RPSDQ\ 3KRQH $GGUHVV )D[ &LW\6WDWH=LS (0DLO 3URGXFW,QIRUPDWLRQ 6HULDORU%RDUG)DE5HY 6RIWZDUH9HUVLRQ 'RFXPHQW1XPEHU +RVW&RPSXWHU'HVFULSWLRQ7\SH 5HWXUQ,QIRUPDWLRQ ZiLOG System Test/Customer Support 910 E. Hamilton Avenue, Suite 110, MS 4–3 Campbell, CA 95008 Fax: (408) 558-8536 Email: [email protected] 3UREOHP'HVFULSWLRQRU6XJJHVWLRQ Provide a complete description of the problem or suggestion. For specific problems, include all steps leading up to the occurrence of the problem. Attach additional pages as necessary. 3679&