IMSA110 IMAGE AND SIGNAL PROCESSING SUB–SYSTEM 1-D/2-D SOFTWARE CONFIGURABLE CONVOLVER/FILTER ON-CHIP PROGRAMMABLE LINE DELAYS (0 — 1120 STAGES) 8-BIT DATA AND 8.5-BIT COEFFICIENT SLICE 21 MULTIPLY-AND-ACCUMULATE STAGES 1-D (21) OR 2-D (3 x 7) CONVOLUTION WINDOW ON-CHIP POST PROCESSOR FOR DATA TRANSFORMATION FULLY CASCADABLE IN WINDOW SIZE AND ACCURACY 20 MHZ DATA THROUGHPUT (420 MOPS) SIGNED/UNSIGNED DATA AND COEFFICIENTS MICROPROCESSOR INTERFACE HIGH SPEED CMOS IMPLEMENTATION TTL COMPATIBLE SINGLE +5V ± 10% SUPPLY POWER DISSIPATION < 2.0 WATTS 100 PIN CERAMIC PGA .. .. .. .. APPLICATIONS 1-D and 2-D digital convolution and correlation Real time image processing and enhancement Edge and feature detection Data transformation and histogram equalisation Computer vision and robotics Template matching Pulse compression 1-D or 2-D interpolation July 1992 PGA100 (Ceramic Grid Array Package) ORDERING INFORMATION Part Number Package Clock Speed Military/ commercial IMSA110-G20S PGA100 20MHz commercial 1/26 A110-01.TBL . . . .. . . .. .. .. .. IMSA110 Index 1 2 3 4 5 6 7 8 9 10 A PSRIN [6] PSRIN [4] PSRIN [2] PSRIN [1] PSROUT PSROUT PSROUT [1] [2] [5] COUT [0] COUT [1] COUT [6] B CIN [3] CLK PSRIN [7] PSRIN [3] PSROUT [0] PSROUT [6] COUT [2] Vcc COUT [7] C CIN [4] CIN [2] CIN [0] PSRIN [5] GND PSROUT PSROUT [3] [7] COUT [4] GND COUT [9] D Vcc GND CIN [5] CIN [1] PSRIN [0] PSROUT [4] COUT [3] Vcc COUT [8] COUT [10] E CIN [8] CIN [6] CIN [7] GND GND COUT [5] COUT [11] COUT [12] COUT [13] COUT [14] F CIN [9] CIN [10] CIN [11] CIN [12] Vcc D[6] COUT [16] Vcc GND COUT [15] G CIN [13] CIN [15] CIN [17] GND ADR [5] GND GND COUT [19] COUT [18] COUT [17] H CIN [14] CIN [19] CIN [21] ADR [2] ADR [7] E2 GND Vcc Vcc COUT [20] J CIN [16] CIN [20] RESET ADR [3] ADR [6] E1 D[2] D[5] D[7] COUT [21] K CIN [18] ADR [0] ADR [1] ADR [4] ADR [8] W D[0] D[1] D[3] D[4] GND Notes : 1. All VCC pins must be connected to the 5 Volt power supply. 2. All GND pins must be connected to ground. 1. INTRODUCTION The IMSA110 is a single-chip reconfigurable and cascadable subsystem suitable for many high speed image and signal processing applications. Apart from its powerful multiply-accumulate capability (420 MOPs), the strength of the IMSA110 lies in its extensive programmable support for data conditioning and transformation. 2/26 2. DESCRIPTION The IMSA110 consists of a configurable array of multiply-accumulators, three programmable length 1120 stage shift registers, a versatile post-processing unit and a microprocessor interface for configuration and control purposes. The comprehensive on-chip facilities make a single device capable of dealing with many image processing operations. A110-01.EPS PIN CONNECTIONS IMSA110 Figure 1 : IMSA110 Users Model ENABLE 1 Asynchronous Functions ENABLE 2 WRITE 21 x 8-bit Update coefficient registers MEM DATA 8 Decode logic 21 x 8-bit Current coefficient registers 9 Backend look up table 256 x 8-bit data transformation look up RAM USR LSR Configuration and control registers PCR0 PCR1 PCR2 SCR ACR BCR MMB OUB TCR ADDRESS CLOCK RESET 8 PSRIN D PSROUT 8 CASCADE INPUT 1120 stage Programmable shift register (PSRC) 7-stage multiply-accumulate array C 1120 stage Programmable shift register (PSRB) 7-stage multiply-accumulate array B 1120 stage Programmable shift register (PSRA) 7-stage multiply-accumulate array A 22 22 Backend post-processing unit (normalization, saturation, and data transformation) 22 CASCADE OUTPUT A110-02.EPS Control logic Synchronous Functions The IMSA110 has five interfaces through which data can be transferred, Figure 1. The microprocessor interface allows access to the coefficient registers, the configuration and status registers, and the data transformation tables. The remaining four interfaces allow high speed data input and output to the IMSA110 and the cascading of several devices. A typical IMSA110 system is shown in Figure 3. If N devices are used in the cascade, they can be configured, entirely under software control, as a 21N stage 1-D transversal filter or as a 7X by 3Y 2-D window, where X and Y are any integers satisfying N ≤ XY. For example 4 cascaded devices can be software configured as: an 84-stage 1-D filter, a 7 by 12 2-D window, a 28 by 3 2-D window, or a 14 by 6 2-D window. The final output of the chip is 22 bits wide in twos complement format. Figure 2 shows the distribution of the delays inside the part. The latency between PSRin and COUT is dependent upon the length of PSRc. For example, with PSRc set to 0, and all coefficients set to zero except CR0c[6] (so the data passes through all MAC stages), the COUT bus will correspond to the PSRin bus delayed by 47 clock cycles. The latency between PSRin and PSRout is 5 cycles PLUS the lengths of PSRc, PSRb and PSRa. If the shift registers are bypassed by setting SCR[1] to 1 then PSRout will be PSRin delayed by 2 clock cycles. The Latency between the cascade input (CIN) and cascade output (COUT) is 6 cycles. This is shown lumped at the cascade input and cascade output pads in Figure 2. Figure 4 gives details of the data pipelining through the backend datapath. 3/26 IMSA110 Figure 2 : Synchronous Functions of the IMSA110 PSRIN CR1c coefficient registers 7 x 8 bits CR0c coefficient registers 7 x 8 bits 1 D Programmable PSRC shift register 0 to 1120 stages D D 1 1 2 D 3 X 8 X X 1 D 1 D 8 X 1 D 1 D 22 D CR1b coefficient registers 7 x 8 bits CR0b coefficient registers 7 x 8 bits Programmable PSRB shift register 0 to 1120 stages D D 1 1 2 D 3 X X X 1 D 1 D 8 X 1 D 1 D 22 D CR1a coefficient registers 7 x 8 bits CR0a coefficient registers 7 x 8 bits Programmable PSRA shift register 0 to 1120 stages D D 1 1 2 D 3 X X X 1 D 1 D 8 X 1 D 1 D 22 D 13 MUX Backend processing unit including cascade data path, normalization, saturation units and data transformation look up tables 1 2 PSROUT 4/26 D CIN cascade input (see Figure 4 for detail) 22 D 5 1 2 COUT cascade output A110-03.EPS 1 D IMSA110 Figure 3 : A Typical IMSA110 Based System General purpose microprocessor PSRIN PSROUT IMSA110 Cascade IN Cascade OUT PSRIN PSROUT IMSA110 Cascade IN PSRIN PSROUT IMSA110 Cascade OUT Cascade IN Cascade OUT Output A110-04.EPS Input Clock 3. PROGRAMMABLE SHIFT REGISTERS The three shift registers are 8 bits wide and are each programmable from 0 up to 1120 clock cycles in length. The lengths are programmed into control registers via the microprocessor interface. Data is clocked into the device via the PSRin bus (Programmable Shift Register in) at a maximum rate of 20MHz. On-chip, the input data is then fed through a pipeline of the three shift registers. The output of the first shift register passes to the first 7-stage mac array and also to the input of the second shift register. Having passed through all three shift registers the data is output on the PSRout bus and can be used for cascading. Alternatively, as shown in Figure 2 the shift registers can be bypassed and the input data transferred to the PSRout bus after two delay stages. This mode can be controlled via the on-chip control registers and significantly simplifies software configuration of a cascade arrangement. 4. MAC ARRAY As shown in Figure 2, the processing core of the device consists of a configurable array of multiplyaccumulators (macs). The mac array consists of three 7-stage transversal filters which can be configured either as a 21-stage linear pipeline or as a 3 × 7 two-dimensional window. The input data is 8 bits wide and is fed to the mac array via three programmable shift registers. The output of each shift register is supplied as input to one of the three 7-stage transversal filters. For each of the three transversal filters the associated input data is fed simultaneously to all 7 mac stages. At each stage the input sample is multiplied by a coefficient stored in memory, and added to the output of the previous stage delayed by one clock cycle. The output of each 7-stage mac is fed, via a delay stage, to the first stage in the next transversal filter. The coefficient word width in the mac array is 8 bits wide. Two banks of coefficients are provided. At any instant one set of coefficients is in use within the mac array. The set in use is defined by the state of the ‘Current Bank’ bit, ACR[0]. The other set can be altered via the microprocessor interface. Once a new set of coefficients has been loaded, the activities of the two coefficient banks can be interchanged without interrupting the flow of data. Alternatively, by setting the ‘continous bank swap’ bit SCR[0], the two coefficient banks are swapped automatically after each data input. In this case the ‘Current Bank’ bit only determines which bank is used first. Both data input and coefficients can be programmed independently to support twos complement or positive unsigned formats allowing multiple devices to be used as a ‘slice’ in higher accuracy systems. Within the mac array no truncation or rounding is performed on the partial products. The mac array output is fed to the backend post-processing unit which is responsible for data transformation / normalisation and cascading function. 5. BACKEND POST-PROCESSOR — hardware description The Backend Post-Processor consists of four major blocks : The input block (shifter, cascade adder and rectifier unit),a statistics monitor,the data conditioning unit which itself consists of the data transformation unit and the data normaliser, and the output block (output adder and multiplexers). A detailed diagram of the Backend Post-Processor is given in Figure 4. All operations performed in the backend are on twos complement signed numbers unless otherwise stated. 5/26 IMSA110 5.1 Shifter, Cascade Adder and Rectifier Data from the mac array enters the datapath via a programmable shifter. The shifter is capable of arithmetic right shifts (divides) of up to 8 bits with rounding, and left shifts of up to 8 bits. The size of this shift is controlled by the status bits BCR0[5-1]. The output of the shifter passes into the cascade adder where it is added, along with any rounding generated by the shifter, to either the cascade input bus (BCR0[0] = 0), or a zero value (BCR[0] = 1). If the result of this 22-bit signed addition is greater than 221 - 1, (209715110) then the adder will generate a positive overflow. Likewise, if it is less than -221, (-209715210) a negative overflow will be generated. In other words, a positive overflow is generated if the result of adding two positive numbers (both MSBs = 0) is negative (resulting MSB = 1). Conversely, a negative overflow is generated if the result of adding two negative numbers (both MSBs = 1) is positive (MSB = 0). Adding two numbers of different signs cannot cause the adder to overflow. The output of the cascade adder can optionally be full-wave or half wave rectified under the control of BCR0[7,6]. The output of the rectifier passes onto the X bus. Overflows on the X bus are signalled to both the statistics monitor and the data conditioner. 5.2 Statistics Monitor The statistics monitor allows the user to set up watch dogs on the dynamics of the data on the X bus. It cannot affect the data on the X bus. The statistics gathered provide information on the system behaviour which can be used to ensure correct data scaling and normalisation. The information is also useful in the control of the overall system’s analogue frontend. Hardware/Functions The statistics monitor consists of a 24 bit Min/Max register (MMR), a 24 bit Min/Max Buffer (MMB), a 22 bit Over/UnderShoot Counter (OUC), a 22 bit Over/UnderShoot Buffer (OUB) and a 22 bit twos complement comparator. It can perform one of four functions : • MAX REGISTER : Capture the maximum value of data and store it in the MMR. • MIN REGISTER : Capture the minimum value of data and store it in the MMR. 6/26 • OVERSHOOT COUNTER : Increment the OUC each time the data value exceeds the preset value in the MMR. • UNDERSHOOT COUNTER : Increment the OUC each time the data value is less than the preset value in the MMR. The mode of operation is determined by the Max/Min switch BCR1[0], and the Static Threshold switch BCR1[1]. Operation Each sample on the X bus is compared against the threshold stored in the MMR. If the unit is configured as an overshoot counter and the data on the X bus exceeds the threshold in the MMR, then the counter (OUC) is incremented. If the data is less than or equal to the threshold, then no action will occur. The OUC is unsigned and will not wrap around. Thus it behaves as a saturating counter with a maximum value of 222 - 1, (3FFFFF16, 419430310). If there is a positive overflow on the X bus, then the counter will increment since the correct X bus value must exceed the threshold. Similarly a negative overflow on the X bus will not increment the counter since the correct X bus value cannot exceed the preset threshold. If the unit is configured as an undershoot counter then the counter will be incremented whenever the sample is less than the preset threshold. In this case a negative overflow will cause the counter to increment. If the unit is configured as a max register and the X bus exceeds the current threshold in the MMR, then the value on the Xbus is loaded into the MMR and becomes the new threshold and the counter is incremented. If the threshold is not exceeded then no action occurs. Thus the value in the MMR is the maximum value that has appeared on the X bus, and the value in the OUC has been incremented by the number of times that the threshold has been updated. If the unit is configured as a min register then the threshold is updated and the counter incremented whenever the X bus is less than the current threshold. When operating as a min/max register, overflows on the X bus can never cause the threshold to be updated as this would load an erroneous value into the MMR. IMSA110 Figure 4 : Detailed Block Diagram of the Backend Post-processing Unit Clock cycle Cascade input pads From MAC array 22 1 22 Shifter [8:0] MUX 22 22 2 negative overflow 1 positive overflow 1 1 Rounding Cascade Adder 22 Rectifier DATA TRANSFORMATION UNIT 22 22 STATISTICS MONITOR Prescaler Min/max buffer 22 Min/max register 22 X bus 3 Over/under select 8 (Isbs) 2 6 Comparator GT/LT USR LSR Control Over/undershoot count 22 64 x 32 bit RAM Over/undershoot buffer Y bus [26:22] DATA NORMALIZER 5 MUX 32 [21:0] Shifter -2 to 14 Zero data 32 4 from BCR Byte select 8 22 1 MUX 22 Rounding 22 Output Adder 22 5 [21:14] 8 8 [7:0] 6 MUX MUX [13:8] 8 [7:0] 22 A110-05.EPS 6 8 [21:14] Cascade output pads 7/26 IMSA110 Overflows Bit 22 of the MMR records the history of positive overflows on the X bus. Similarly bit 23 records the history of negative overflows. These bits in the MMR are set to zero by writing to the MMR copy location and are active independently of whether the Static Threshold bit is set. When the MMR is read, then bits 22 and 23 are interpreted as follows: bit 23 0 bit 22 0 0 1 1 0 1 1 condition No overflow has occured One or more positive overflows have occured One or more negative overflows have occured Both postive and negative overflows have occured Detailed block diagram of the Backend Post-processing Unit Access to registers The MMR and OUC are accessed, through the memory interface, only via their associated buffers (MMB and OUB respectively) and are not accessible directly. In order to load the MMR with a value, the host must first write the value to the MMB and then transfer the data from the MMB to the MMR by performing a WRITE to the copy MMR location, 0B416. To read the MMR the host must first perform a READ cycle from location 0B416 (which transfers the contents of the MMR into the MMB) and then read the MMB. The OUB is accessed in the same way except that the dummy writes and reads are done to and from location 0BC16. Copies from MMR to MMB and OUC to OUB (reads) can be performed at any time giving a snapshot of the contents of the MMR and OUC respectively. Copies from MMB to MMR and OUB to OUC (writes) can also be performed at any time allowing the threshold and counter to be updated dynamically. 5.3 Data transformation unit The data transformation unit consists of a prescalar, an under/over select detector, a look up table and a byte selector. It can be used in isolation to perform abitrary data mappings, or in conjunction with the data normaliser to implement sophisticated dynamic range compression functions. Prescalar This allows an 8-bit field anywhere within the 22-bit X bus to be selected as the address to the LUT. This is performed by right shifting the X bus so that the required 8 bits are at the least significant end. The 8/26 amount of right shift is programmed in BCR2[4-0] and can have a value from 0 to 16. Over/under select detector With PosLUTAddr (SCR[6]) set to zero, this unit monitors whether the amount of right shift performed by the prescalar is sufficient to include all significant bits in, and maintain the sign of, the selected 8 bit field (i.e. an over or under select is generated if the most significant bit of the selected 8 bit field differs from any subsequent bit right up to and including the most significant bit of the right shifted X bus). This will be an overselect if the X bus is positive (Bit 21 = 0), and an underselect if the X bus is negative (Bit 21 = 1). In other words the LUT address is always deemed to be signed with an address range of -128 to 127. If however the control bit PosLUTAddr (SCR[6]) is set to one, the unit monitors whether the amount of right shift performed by the prescaler is sufficient to include all significant bits in the selected 8 bit field AND that all unselected bits are zero (i.e. an over or under select is generated if the first selected bit (bit 9) is not zero OR differs from any subsequent bit right up to and including the most significant bit of the right shifted X bus). This will be an overselect if the Xbus is positive and an underselect WHENEVER the Xbus is negative. Thus, in this mode, the address range of the LUT is 0 to 255. Prescalar under/over selects and X bus positive/negative overflows are passed to the LUT along with the selected 8 bit address field. Look up table (LUT) and byte select The LUT consists of 64 words, 32 bits wide plus two special 32 bit locations called the upper and lower saturation registers (USR and LSR respectively). Thus the LUT is actually 66 words by 32 bits. The 32 bit output of the LUT is called the Y bus. The most significant 6 bits of the 8 bit address field are used to address one of 64 words in the LUT. The least significant pair of bits in the 8 bit field are used to control a byte select on the output. Thus in addition to operating as a 64+2 word look up table of 32 bit words, it can be used as an 8 bit, 256+2 byte LUT providing 8bit — 8bit transformations. Positive overflows on the X bus, and over selects in the prescalar cause the LUT to access the USR overriding the address given by the prescalar. Likewise negative overflows and under selects cause the LUT to access the LSR. Any sort of overflow on the X bus or prescalar will cause the byte select control to be overridden and the most significant byte (byte 3) of the appropriate Saturation Register will appear on the byte wide output of the data transformation unit. IMSA110 If there are simultaneous overflows on the X bus and in the prescalar then the overflow from the X bus takes priority. The USR and LSR can thus be used to model the saturating behaviour of analogue circuits instead of the usual ‘wrap around’ encountered in digital systems. Alternatively the USR and LSR could signal error conditions within the backend directly on the output pins via one of the output multiplexers. The LUT is loaded via the memory interface. The addressing for the LUT corresponds to the 8 bit field, assuming that the byte selector is being used. In order to access the look up table, USR and LSR from the microprocessor interface, the LUT Access control bit ACR[1] must be set to zero. This will force the Y bus to zero and the normaliser to be controlled by BCR3[7-3] regardless of the setting of the dynamic normalisation bit, BCR3[2]. The LUT, USR and LSR can then be loaded with any arbitrary value via the microprocessor interface. Setting the LUT access control bit to one will then allow the LUT to be used in the data transformation unit. 5.4 Data normaliser This unit consists of a shifter capable of right shifts of up to 14 bits and left shifts up to 2 bits, followed by a zero data unit and an adder. The shifter is controllable from one of two 5 bit sources : control bits BCR3[7-3] or bits 26 to 22 of the Y bus. The cont rol bit Enable Dynamic Normalisation (BCR3[2]) determines which source is in control of the normaliser. If this bit is set to zero the normaliser is controlled by BCR3[7-3]. The five bit field is a twos complement number between 14 and -2. This indicates the amount of right shift (negative meaning left shift). Any value outside this range causes the output of the shifter to be forced to zero. The output of the shifter, with any rounding generated by the shifter, goes into the output adder. 5.5 Output adder This is a 22 bit adder with one of its inputs coming from the data normaliser. The other input is either bits 21 to 0 of the Y bus from the data transformation unit, or set to zero under the control of BCR3[1]. Note that any overflow occuring due to left shifting in the normaliser or the subsequent addition in the output adder is not detected by the IMSA110. 5.6 Output multiplexers These two multiplexers allow the currently selected byte from the LUT to be optionally selected to drive either the most significant byte and/or the least significant byte of the Cascade Output pins. This is controlled by the state of BCR2[5] and BCR2[6]. Enabling either of these multiplexers overrides the state of the Cascade Output pins only on the relavent 8 pins. The remaining pins will continue to represent the output of the output adder. 6. BACKEND POST-PROCESSOR — Modes of Operation The backend post-processing unit is capable of performing many functions including data scaling, transformation, dynamic range compression and histogram equalisation. 6.1 Default mode (after Reset) At power up or after reset the state of the backend post-processor is such that data from the MAC array and the cascade input are added and pass straight through the datapath unaffected. The default mode for the statistics monitor is min register although the values in the OUB, OUC, MMR and MMB will be undefined. Likewise the contents of the LUT, USR and LSR will be undefined, the LUT Access control bit will be zero forcing the Y bus to zero and allowing the microprocessor interface to access the LUT, USR and LSR. Note that the cascade output pins and the PSR output pins are tristated. 6.2 Cascade adder / MAC data scalar These units allow the cascading of IMS A110s where the output of the MAC array may be scaled before it is added to the cascade input data. The shifter can also be used for combining devices to obtain extended precision in input data, coefficient word length or both. The ability to zero the cascade input provides a simple means of controlling the number of ‘active’ devices cascaded as well as a means of debugging large systems. 6.3 Rectification Rectification, the removal of negative results, is needed in several image processing functions. For example, edge detection using a Sobel operator usually requires full wave rectification due to the different signs obtained at differing edge transitions. Edge detection using a Laplacian operator produces a change of sign at an edge. In this case, removing negative numbers using half wave rectification can produce better results as full wave rectification can lead to some blurring of the edge transition. 9/26 IMSA110 6.4 Static scaling This can be performed using one of two units: the MAC array output shifter (as above), and the data normaliser. In the second case the data undergoes a simple scaling operation (with rounding) within the normaliser. The normaliser can be used to scale (multiply) the data by the factors 0, 1/16384, 1/8192, 1/4096 ..., 1/2, 1, 2, 4. By controlling the normaliser from the control bits BCR3[7-3], this provides a means for simple scaling of the data before it is output. Setting BCR3[1] and BCR2[6,7] to zero ensures that the data transformation unit takes no part in the operation and the output of the normaliser is passed unchanged to the output pins. 6.5 Dynamic scaling In this mode the scaling is controlled by the data itself. i.e. the scalar is controlled from the LUT (Ybus bits 26-22) by setting BCR3[2] to one, the Ybus input to the output adder being set to zero either by setting BCR3[1] to zero or programming the LUT accordingly. This mode can provide a discontinuous non-linear transformation. 6.6 Simple transformation This mode allows the user to apply arbitrary transformations to the data before it is output. Here the LUT is treated as 256 by 8, addressed as either -128 to 127 if PosLUTAddr is set to zero or 0 to 255 if PosLUTAddr is set to one. The 8 bit field selected by the LUT prescalar is used to address a byte in the LUT which is passed directly to the output pins via one of the output multiplexers. Ybus control of the data normaliser is disabled, BCR3[7-3] are set out of range so as to zero the normaliser output and the Ybus input to the output adder is set to zero by BCR3[1]. One (or both) of the output multiplexers are enabled and so the addressed byte from the LUT passes straight to the cascade output pads. Only the most significant byte of the USR and LSR are applicable in this mode as overflows override the byte select control and force it to select the most significant byte. 6.7 Dynamic normalisation In this mode the normaliser and transformation units in the output conditioner are used together to perform sophisticated non-linear dynamic range compression and transformations. As in the simple transformation case the prescalar selects an 8 bit field anywhere within the X bus. The most significant 6 bits, and overflows, are fed as an address to the LUT. In this case the look up table is treated as 64+2 by 32. Bits 26 to 22 of the Y bus are used to control the normaliser block so that the input to the normaliser is dynamically scaled. The output of the normaliser is then added in the output adder to the least significant 22 bits of the Y bus (Note that only 28 bits of the 32 bit Y bus are actually used). Thus the data is scaled, rounded, and then an offset is added to the scaled result. Each operation can be viewed as output = input × scale + offset Where scale and offset are both programmable functions of input. One way to view this operation is to consider that the original data range is divided into 64 equal sized levels and in each level a different scale and offset is applied. The scale and offset stored in the USR and LSR would be chosen to give the desired behaviour under overflow conditions. Note that in the case of cascade adder overflows, the data on the X bus is invalid, so the scale here would usually be set out of range so as to zero the normaliser output. The offsets in the USR and LSR would then provide the cascade output directly. Note also that if the 5 bit scale field in the LUT is programmed so that the normaliser always zeros the data, then the output will correspond to the 22 bit offset field in the LUT. This can be viewed as a coarse transformation with wide dynamic range which is useful for applications such as image contour emphasis and equalisation. Figure 5 : Bit Format of Data Stored in LUT, USR and LSR 24 23 BYTE 3 scale if BCR3 [2] = 1 10/26 16 15 BYTE 2 offset if BCR3 [0] = 1 8 7 BYTE 1 0 BYTE 0 A110-06.EPS 31 IMSA110 7. GLOSSARY This section defines the meaning of terms used elsewhere in this data sheet. Arithmetic Shift For a right shift, the most significant bit is always copied into the most significant end of the result. For example shifting right by 2: → → 01000101 11000101 00010001 11110001 For a left shift, the least significant bit will become zero. Note that left shifting can cause overflows and these are not detected in the MAC output scalar or the data normaliser. Rounding All rounding done within the IMS A110 is equivalent to truncating after adding 1/2 LSB. (Rounding is always applied in the positive direction). For example for 8 bit twos complement numbers undergoing a two bit right shift: 00000011 00000010 11111110 00000001 11111101 → → → → → 00000000 + 1 = 00000001 (rounded up) 00000000 + 1 = 00000001 (rounded up) 11111111 + 1 = 00000000 (rounded up) 00000000 (no rounding) 11111111 (no rounding) Left shifts do not generate rounding. Transversal Filter A transversal filter is a calculation consisting of the sum of products of successive points of input data. For input data xi, xi+1, ..., and a set of coefficients, c6,c5, ..., the result, Y is: 6 Y=∑ci × x6−i i=0 Two’s Complement Two’s complement numbers allow both positive and negative numbers. For example in 8 bit numbers the most positive number is 127, the most negative is -128: two’s complement 10000000 10000001 11111111 00000000 00000001 01111111 decimal -128 -127 -1 0 1 127 Rectification Rectification is a method of removing negative numbers. There are two methods: Full wave and Half wave. In either case all positive numbers and zero are unaffected. In Full wave rectification, any negative numbers are negated (i.e. multiplied by 1) so that they become positive. In Half wave rectification, all negative numbers are replaced by zero. Dynamic Range Compression When Dynamic is used in this context, it is to indicate a change of behaviour for each data point. For example, a dynamic shift is one where the size of the shift may change on each successive clock cycle. Dynamic range compression is range compression making use of an offset and shift, which can change depending on each data point. This allows the essential non-linear transformations required in image processing to be implemented on the IMS A110. Bit Fields Bits, words and addresses in this data sheet are little-endian; The lowest order byte of a multiple byte word is referred to as byte 0, and is addressed in the same way. Similarly, the least significant bit of any bit field is that with the lowest bit number. For example, ‘bits 26-22’ refers to a 5 bit field where bit 22 is treated as the least significant, and bit 26 as the most significant. Latency Within the IMSA110 the latency is the number of clock cycles from an input to its corresponding output. For instance, with the programmable shift registers bypassed by setting SCR[1] to 1, the latency from PSRin to PSRout will be 2 as shown in Figure 6. 11/26 IMSA110 Figure 6 1 2 3 CLK A110-07.EPS PSRIN PSROUT PSRIN latched PIN DESIGNATIONS System services Pin In/out VCC, GND Function Power supply and return CLK in Input clock RESET in System reset Synchronous input/output Pin In/out Function PSRin[7-0] in Programmable shift register input out Programmable shift register output PSRout[7-0] Cin[21-0] in Cascade input port Cout[21-0] out Cascade output port Asynchronous input/output Pin In/out Function E1, E2 in Memory interface enable signals W in Memory interface write enable ADR[8-0] in Memory interface adress bus D[7-0] in/out Memory interface data bus Note : Signal names are shown with an overbar if they are active low, otherwise they are active high. 8.1 System services System services include all the necessary logic to start up and maintain the IMS A110. Power Power is supplied to the device via the VCC and GND pins. Several of each are provided to mini12/26 mise inductance within the package. All supply pins must be connected. The supply must be decoupled close to the chip by at least one 100nF low inductance (e.g. ceramic) capacitor between VCC and GND. CLK The clock signal CLK controls the timing of input and the output on the four dedicated interfaces, and controls the progress of data through the shift registers, multiply-accumulate array and post-processing unit. The A110 is fully static so the clock can be slowed down or stopped in either state without corrupting data. RESET If this pin is taken low for at least 2 clock cycles, the control logic within the IMS A110 will be reset and all of the control and configuration registers will be initialised to their default values. All other register, memory locations, datapath registers and shift registers will not be reset by this signal. A reset is initiated automatically when power is first applied to the device. This reset will be completed once four cycles of CLK have occured after VCC is valid. 8.2 Synchronous services PSRin[7-0] This 8-bit wide bus supplies input data to the device. The input data enters the first of the three shift registers in the chain. The timing of this input is controlled by the CLK signal. The data on the PSRin port is sampled on the rising edge of the clock. In a cascade arrangement, this bus will be connected to the PSRout port of the previous device. In such an arrangement the PSRin port on the first device will be the input to the overall cascaded system. IMSA110 PSRout[7-0] This bus outputs the data from the last programmable shift register in the chain. The data on this bus is synchronously clocked by the rising edge of CLK. In a cascade arrangement this port will be connected to the PSRin port of the next device. At power up, or after a reset, the PSRout pins are tristated. They are enabled by SCR[5]. the Write Enable and the address inputs are ignored and the microprocessor interface Data signals are high impedance. When both Enable signals are low a read or write access is made to registers or the RAMs within the IMSA110. Access to the microprocessor interface can occur asynchronously to the synchronous pins (PSRin, PSRout, Cin, Cout) of the device. Cin[21-0] The Cascade Input port allows IMSA110s to be cascaded. It also can be used for combining an external signal (e.g. a reference image or an offset) with the processed result. In a cascade arrangement, this bus will be connected to the Cascade Output of the previous device. The data on the Cin bus is sampled on the rising edge of CLK. W Write Enable indicates whether the access to the IMS A110 memory interface is to be a read or a write. If W is low a write access is indicated. Cout[21-0] This bus outputs the processed result from the IMSA110 and can also be used for cascading. The 22-bit result is synchronously clocked by the rising edge of CLK. In a typical cascaded system this bus will be connected to the Cascade Input port of the next device. On the last device in the cascade, this bus will be the output of the overall system. At power up, or after a reset, the Cout pins are tristated. They are enabled by SCR[4]. 8.3 Asynchronous input/output E1, E2 If both of these signals are low, then the microprocessor interface is enabled. The operation of these enable signals is very similar to those found on static RAMs. When either of these signals are high ADR[8-0] The nine bit binary value applied to the address inputs of the IMSA110 indicates which register or RAM location within the device is to be accessed. D[7-0] During a write to the microprocessor interface an 8-bit word is applied to the Data pins which is written to the appropriate location. During a read cycle the contents of the location accessed are placed on the Data pins. When either of the Enables are high the Data pins are high impedance. 9 REGISTER DESCRIPTION Memory map Within the IMSA110 addresses are fully decoded. Reading from locations not defined in the memory map will produce zero data. Data written to such locations is ignored. This allows the part to be fully programmed using a ROM with an address incremeter. In this case, for future compatibility, zero should be written to all undefined locations. 13/26 IMSA110 Register Address decimal Address hex Function CR0a 0—6 000—006 Coefficient Registers Bank 0a CR0b 16—22 010—016 Coefficient Registers Bank 0b CR0c 32—38 020—026 Coefficient Registers Bank 0c CR1a 64—70 040—046 Coefficient Registers Bank 1a CR1b 80—86 050—056 Coefficient Registers Bank 1b CR1c 96—102 060—066 Coefficient Registers Bank 1c PCRA 128—129 080—081 PSRA Control Register PCRB 130—131 082—083 PSRB Control Register PCRC 132—133 084—085 PSRC Control Register SCR 144 090 Static Control Register ACR 146 092 Active Control Register BCR 160—163 0A0—0A3 Backend Configuration Register MMB 176—178 0B0—0B2 Maximum/Minimum Buffer CMM 180 0B4 OUB 184—186 0B8—0BA COU 188 0BC Copy OUC TCR 208 0D0 Test Control Register USR 248—251 0F8—0FB LSR 252—255 0FC—0FF Lower Saturation Register LUT 256-511 100—1FF Look up Table 9.2 Registers CR0a Coefficient registers bank 0a These seven 8-bit locations contain coefficients which can be used by the third, of the three, 7-stage mac arrays. CR0a(0) (address #000) corresponds to the coefficient register of this mac array nearest to its output. Similarly CR0a(6) (address #006) corresponds to the coefficient register of this mac nearest to its input. These Coefficient registers can be written to provided that the other register bank is in use. Whether the coefficient written is signed or unsigned is determined by the ‘Unsigned Coefficient’ bit SCR[3]. Once a value is written to a coefficient register, its value can be read back from 14/26 Copy MMR Overshoot/Undershoot Buffer Upper Saturation Register an internal duplicate register. These registers will be used by the mac array, when ACR[0], ‘Current Bank’ is set to zero. Writing to these Coefficient Registers while in use will result in an undefined operation of the mac array. CR0b Coefficient registers bank 0b These seven 8-bit locations contain coefficients which can be used by the second, of the three, 7-stage mac arrays in the chain. CR0b(0) (address #010) corresponds to the coefficient register of this mac array nearest to its output. Similarly CR0b(6) (address #016) corresponds to to the coefficient register of this mac nearest to its input. Their behaviour is otherwise identical to CR0a. IMSA110 Figure 7 : IMSA110 Memory Map Address (Hex) Name bit 7 6 5 4 3 2 1 0 Dynamic normalisation LUT to output adder 0 1FF LUT Look Up Table 100 0FC-0FF LSR Lower Saturation Register 0F8-0FB USR Upper Saturation Register 0D0 TCR 0BC COU Copy Over/UnderShoot Buffer 0B8-0BA OUB Over/UnderShoot Buffer 0B4 CMM Copy Min/Max Buffer 0B0-0B2 MMB Min/Max Buffer 0A3 BCR3 0A2 BCR2 0 LS output byte MS output byte 0A1 BCR1 0 0 0 0A0 BCR0 Full Wave Half Wave 092 ACR 0 0 0 0 0 0 Backend LUT Access Current Bank 090 SCR 0 PosLUT Addr PSR Out Enable Cascade Enable Unsigned Coef Load Unsigned Data Bypass PSRs Cont Swap 085 PCRC 0 0 0 0 0 0 0 0 0 0 0 084 PCRC 083 PCRB Normaliser Control Look Up Prescaler 0 0 0 Static threshold Greater Than Zero Cascade MAC Output Scaler Shift Length (Upper Bits) Shift Length (Lower Bits) 0 0 082 PCRB 081 PCRA 080 PCRA Shift Length (Lower Bits) 066 ... 060 CR1c Bank 1 Coefficient Register 056 ... 050 CR1b Bank 1 Coefficient Register 046 ... 040 CR1a Bank 1 Coefficient Register 026 ... 020 CR0c Bank 0 Coefficient Register 016 ... 010 CR0b Bank 0 Coefficient Register 006 ... 000 CR0a Bank 0 Coefficient Register Shift Length (Upper Bits) Shift Length (Lower Bits) 0 0 Shift Length (Upper Bits) 15/26 IMSA110 CR0c Coefficient registers bank 0c These seven 8-bit locations contain coefficients which can be used by the first, of the three, 7-stage mac arrays in the chain. CR0c(0) (address #020) corresponds to the coefficient register of this mac array nearest to its output. Similarly CR0c(6) (address #026) corresponds to to the coefficient register of this mac nearest to its input. Their behaviour is otherwise identical to CR0a. CR1a Coefficient registers bank 1a These seven 8-bit locations contain coefficients which can be used by the third, of the three, 7-stage mac arrays in the chain. CR1a(0) (address #040) corresponds to the coefficient register of this mac array nearest to its output. Similarly CR1a(6) (address #046) corresponds to to the coefficient register of this mac nearest to its input. These registers will be used provided that ACR[0], ‘Current Bank’ is set to one, or continuous bank swap mode is in operation (SCR[0] set to one). CR1b Coefficient registers bank 1b These seven 8-bit locations contain coefficients which can be used by the second, of the three, 7-stage mac arrays in the chain. CR1b(0) (address #050) corresponds to the coefficient register of this mac array nearest to its output. Similarly CR1b(6) (address #056) corresponds to to the coefficient register of this mac nearest to its input. Their behaviour is otherwise identical to CR1a. CR1c Coefficient registers bank 1c These seven 8-bit locations contain coefficients which can be used by the second, of the three, 7-stage mac arrays in the chain. CR1c(0) (address #060) corresponds to the coefficient register of this mac array nearest to its output. Similarly CR1c(6) (address #066) corresponds to to the coefficient register of this mac nearest to its input. Their behaviour is otherwise identical to CR1a. PCRA PSRA Control register This is a 16-bit register, with least significant byte at location #080, and is used to set up the length of the last shift register in the chain. Programmed lengths outside the range 0 to 1120 will cause undefined behaviour of the shift register. PCRB PSRB Control register This is a 16-bit register, with least significant byte at location #082, and is used to set up the length of the second shift register in the chain. Programmed lengths outside the range 0 to 1120 will cause undefined behaviour of the shift register. 16/26 PCRC PSRC Control register This is a 16-bit register, with least significant byte at location #084, and is used to set up the length of the first shift register in the chain. Programmed lengths outside the range 0 to 1120 will cause undefined behaviour of the shift register. SCR Static control register The Static Control Register contains the control bits which set up parts of the IMS A110 which are likely to not need reconfiguration during processing. The contents of this register are not affected by the IMS A110 and can be read at any time. Modifying the Static Control register during processing will result in undefined behaviour. Normal operation will start to occur between 0 and 3 clock cycles after the completion of the write cycle. ACR Active control register The Active Control Register contains status and control bits which are likely to be accessed during normal operation of the IMS A110. BCR Backend configuration register The Backend Configuration Registers consist of four byte-wide registers BCR0, BCR1, BCR2, and BCR3 which are located at addresses #0A0, #0A1, #0A2, and #0A3 respectively. These four registers are used to control the backend post-processing unit. None of the control bits in these registers can be modified by the IMS A110. Modification of the values in these registers during processing may result in undefined behaviour. Normal operation will start to occur between 0 and 3 clock cycles after the completion of the write cycle. MMB Maximum/minimum buffer These three locations hold a 24-bit wide word, with the least significant byte at the lowest address, and act as a buffer between the MMR and the microprocessor interface. All the transactions between the MMR and the host processor must take place through this register. When the MMR is not in use, the value of this buffer is undefined. CMM Copy MMR This location is used to enable the data transfer between the MMB and MMR. A write to this location causes the contents of MMB to be copied into the MMR and bits 23 and 22 of the MMR (the cascade adder overflow flags) to be set to zero. A read from this location causes the reverse, i.e the contents of the MMR are copied into the MMB. The value written to this location is ignored, the value read back is undefined. IMSA110 OUB Overshoot/undershoot buffer These three memory locations hold a 22-bit word, with the least significant byte at the lowest address, and act as a buffer between the OUC and the microprocessor interface. All the transactions between the OUC and the host processor must take place through this register. When the OUC is not in use, the value of this buffer is undefined. COU Copy OUC This location in the memory is used to enable the data transfer between the OUB and OUC. A write to this location causes the contents of OUB to be copied into the OUC. A read from this location causes the reverse, i.e the contents of the OUC are copied into the OUB. The value written to this location is ignored, the value read back will be undefined. TCR Test control register This register is used for testing, and should be loaded with zero for normal operation. USR Upper saturation register This is a 32-bit value with the least significant byte at the lowest address. Its contents are used to replace the LUT output if positive overflow(s) occur in the look up prescaler and / or in the cascade adder. Accesses from the microprocessor interface can only be made while ACR[1] is set to zero. LSR Lower saturation register This is a 32-bit value with the least significant byte at the lowest address. Its contents are used to replace the LUT output if negative overflow(s) occur in the look up prescaler and / or in the cascade adder. Accesses from the microprocessor interface can only be made while ACR[1] is set to zero. LUT Look up table These locations are for the 256-byte look up table which is used for data mapping and transformation operations. From the microprocessor interface, these locations are addressed in the same way as that seen by the 8-bit output of look up prescaler. When used in 32 bit mode, the locations are treated in the same way as other 32 registers: Word 0 has its most significant byte at #103, its least significant byte at #100, Word 12 has its most significant byte at #133, its least significant byte at #130. Accesses from the microprocessor interface can only be made while ACR[1] is set to zero. 10. REGISTERS — BIT ALLOCATION This section describes the register details bit by bit. Each section commences with the name of the register with the bit number(s) followed by the default value, in the general format: Name REGISTER [MSB—LSB] Default : MSB...LSB The least significant bit of a register is bit 0. * in the tables indicates the default state of the register bit(s). 10.1 PSR control registers (PCR) PSRA control PCRA[10-0] Default: 0… …0 These eleven least significant bits of the PCRA are used to specify the length of the last Programmable Shift Register (PSRA). The length of the shift register will be numerically equal to the binary value loaded in these bits. The value loaded in must be in the range of 0 to 1120 decimal. If a value outside this range is written to these bits the behaviour of the shift register will be undefined. After updating this register, the behaviour of the delay is undefined for 22 clock cycles. Hence changing the length from 1000 to 1001 delays, will result in correct output only after 1023 cycles. This will also have to propagate through the backend before the cascade output values will be correct. Reserved PCRA[15-11] Default: 00000 These 5 most significant bits of the PCRA are reserved. The user should write zero to these locations to maintain compatibility with future products. The value read from these locations will be zero. 17/26 IMSA110 PSRB control PCRB[10-0] Default: 0… …0 These eleven least significant bits of the PCRB are used to specify the length of the second Programmable Shift Register (PSRB). The length of the shift register will be numerically equal to the binary value loaded in these bits. The value loaded in must be in the range of 0 to 1120 decimal. If a value outside this range is written to these bits the behaviour of the shift register will be undefined. After updating this register will also have to propagate through PSRA and the backend before the cascade output values will be correct Reserved PCRB[15-11] Default: 00000 These 5 most significant bits of the PCRB are reserved. The user should write zero to these locations to maintain compatibility with future products. The value read from these locations will be zero. PSRC control PCRC[10-0] Default: 0… …0 These eleven least significant bits of the PCRC are used to specify the length of the first Programmable Shift Register (PSRC). The length of the shift register will be numerically equal to the binary value loaded in these bits. The value loaded in must be in the range of 0 to 1120 decimal. If a value outside this range is written to these bits the behaviour of the shift register will be undefined. After updating this register will also have to propagate through PSRB, PSRA and the backend before the cascade output values will be correct Reserved PCRC[15-11] Default: 00000 These 5 most significant bits of the PCRC are reserved. The user should write zero to these locations to maintain compatibility with future products. The value read from these locations will be zero. 10.2 Static control register (SCR) Reserved SCR[7] Default: 0 This location is reserved. The user should write zero to this location to maintain compatibility with future products. The value read from this location will be zero. Positive Look up table address SCR[6] Default: 0 This bit affects the way in which the over/under select detector checks the LUT address. It determines whether the address range of the LUT is signed (-128 to 127) or positive (0 to 255). A one at this location indicates a positive LUT address. PSR out Enable SCR[5] Default: 0 A zero at this location will force the PSR Output pins into the tristate mode. 18/26 Cascade Enable SCR[4] Default: 0 A zero at this location will force the Cascade Output pins into the tristate mode. Unsigned coefficient load SCR[3] Default: 0 If this bit is set to one, the format of subsequently loaded coefficients become unsigned, with coefficient value assuming a range between 0 and 255 decimal. An 8-bit coefficient with all its bits set to one will represent +255 decimal. When this bit is zero the format of subsequently loaded coefficients will be twos complement and the corresponding numerical value will have a range between -128 and +127. By changing this bit whilst coefficients are being loaded, coefficients between -128 and +255 can be used. The unsigned format on all coefficients is suitable when IMS A110s are combined to obtain wider coefficients for extended precision. SCR[3] Coefficient type 0 Signed coefficients * 1 Unsigned coefficients Unsigned data SCR[2] Default: 0 If this bit is set to one, the IMS A110 input data format will become unsigned, with input data value assuming a range between 0 and 255 decimal. An 8-bit value with all its bits set to one will represent +255 decimal. When this bit is zero the input data format will be twos complement and the corresponding numerical value will have a range between -128 and +127. Unlike SCR[3], this bit cannot be used to dynamically alter the data format. The unsigned format is suitable when IMS A110s are combined to obtain wider input data for extended precision. SCR[2] Data type 0 Signed data * 1 Unsigned data Bypass shift registers SCR[1] Default: 0 This bit is used to program the path between the PSRin and PSRout ports. A zero at this location will cause the output from the last programmable shift register to be sent to PSRout port. Writing a one to this bit will cause the three programmable shift registers to be bypassed, and the data entering the port PSRin to be fed directly, via a delay of 2 clock cycles, to the port PSRout. This bit allows full programmability of a cascade arrangement so that the same hardware can be operated in a variety of ways. IMSA110 Continous bank swap SCR[0] Default: 0 The continuous bank Swap bit selects whether the the two banks of coefficient registers are used alternately after each data input or if this is controlled solely by the state of the ‘Current Bank’ bit in the Active Control Register ACR[0]. SCR[0] Swap mode 0 Swap on asserting ACR[0] * 1 Swap after end of each input cycle 10.3 Active control register (ACR) Reserved ACR[7-2] Default: 00000 These 6 most significant bits of the ACR are reserved. The user should write zero to these locations to maintain compatibility with future products. The value read from these locations will be zero. Enable look up table ACR[1] Default: 0 Writing a zero into this control bit allows the memory interface to access the Look up table; the output to the data transformation unit will be zero. The normaliser will be controlled by BCR3[7-3], regardless of the state of BCR3[2]. Writing a one to ACR[1] allows the IMS A110 to use the Look up Table. After changing this bit, 2 clock cycles must occur before the Look up Table can be accessed. ACR[1] LUT mode 0 Memory interface access * 1 Data transformation unit Current bank ACR[0] Default: 0 When the ‘Continuous Bank Swap’ bit is set to zero, writing a zero into this control bit instructs the IMS A110 to use the set of coefficient registers at addresses 0 to #X26. Setting a one to this bit instructs the IMS A110 to use the set of coefficient registers at addresses #40 to #X66. If the ‘Continuous Bank Swap’ bit is set to one, then this bit only indicates the bank selected for the first cycle of the continuous swap mode. Writing to this bit whilst in continuous bank swap mode (SCR[0]=1) will result in undefined behaviour of the mac array. full-wave rectified (absolute value operation) before it is fed to the remainder of the backend. This bit will override the function of the BCR0[6]. Enable half-wave rectification Coefficient bank 0 Use coefficient registers at 0 to #X26 * 1 Use coefficient registers at #40 to #X66 10.4 Backend control register 0 (BCR0) Enable full-wave rectification BCR0[7] Default: 0 If this bit is set the output of the cascade adder is Default: 0 Writing a one in this bit will cause the negative values from the cascade adder to be replaced with zero. Note that writing a one into BCR0[7] will override the function of this control bit. BCD0[7-6] Rectifier mode 00 Straight through * 01 Half wave rectification 10 Full wave rectification 11 Full wave rectification Mac array output scaler BCR0[5-1] Default: 00000 The contents of these five bits control the amount of right or left shift applied to the data at the output of the mac array. This field is interpreted as a two’s complement number. A positive number represents a right shift (divide). Any shift in the range -8 (11000) to +8 (01000) is legal. Values outside this range will result in undefined behaviour of the mac output scaler. Zero cascade input BCR0[0] Default: 0 This bit controls the Cascade Input Multiplexer. Writing a one to this bit will cause a zero, instead of the cascade input data, to be fed to the cascade adder. BCR[0] Cascade input mode 0 Cascade data * 1 Zero 10.5 Backend control register 1 (BCR1) Reserved BCR1[7-2] Default: 00000 These locations are reserved. The user should write zero to these locations to maintain compatibility with future products. The values read from these locations will be zero. Static threshold ACR[0] BCR0[6] BCR1[1] Default: 0 If this bit is set to one, the signals from the comparator will be used to increment the Over / Undershoot Counter only. If this bit is zero, the signals from the comparator will be used to latch the output of the Cascade Adder into the Maximum / Minimum Register (MMR), and to increment the counter. In this case the counter will have been incremented by the number of times that the threshold has been updated. 19/26 IMSA110 Enable greater than BCR1[0] Default: 0 This control bit determines whether the comparator in the statistics monitor behaves as a ‘greater than’, or as a ‘less than’ comparator. The signal from this comparator is used to drive the Over / Undershoot Counter and the Max / Min Register. A one at this location selects ‘greater than’. BCR1[1-0] Statistics monitor mode 00 Min. register * 01 Max. register 10 Undershoot counter 11 Overshoot counter 10.7 Backend control register 3 (BCR3) Normalizer control 10.6 Backend control register 2 (BCR2) Reserved BCR2[7] Default: 0 This location is reserved. The user should write zero to this location to maintain compatibility with future products. The value read from this location will be zero. Pass LUT data to least significant output BCR2[6] Default: 0 This bit controls the output multiplexer. If this bit is set to one, the selected byte from the LUT is output on the least significant byte (bits 7 to 0) of the Cascade Output pins. Pass LUT data to most significant output BCR2[5] Default: 0 This bit controls the output multiplexer. If this bit is set to one, the selected byte from the LUT is output on the most significant byte (bits 21 to 14) of the Cascade Output pins. Look up prescaler BCR2[4-0] Default: 00000 The contents of these five bits control the amount 20/26 of (arithmetic) right shift applied to the data, by the Look up Prescaler. Writing a numerical value between 0 and 16 (binary 10000) into these bits, will cause the data to be right-shifted by a corresponding number of places. For example, if the bit pattern 00101 is written to these five bit positions, a right shift of 5 places will occur. Writing any value outside the range (0 to 16) will result in undefined behaviour of the look up Prescaler. BCR3[7-3] Default: 00000 These five bits control the number of places, that the normaliser shifts the data to the right or to the left. This field is interpreted as a twos complement number. A positive number is taken to be a right shift. Any shift in the range -2 (11110) to +14 (01110) is legal. Any other value will cause the number zero to be output from the normaliser. Enable dynamic normalization BCR3[2] Default: 0 If this bit is set to one, the normaliser will be controlled by bits 26 to 22 from the output of the look up table, instead of BCR3[7-3]. Feed LUT data to output adder BCR3[1] Default: 0 One of the inputs of the Output Adder can be either supplied by the Look up Table or forced to zero. Setting this control bit to zero selects zero. Setting this control bit to one selects bits 21 to 0 of the Look up Table. Reserved BCR3[0] Default: 0 This location is reserved. The user should write zero to this location to maintain compatibility with future products. The value read from this location will be zero. IMSA110 11. ELECTRICAL SPECIFICATION 11.1 DC electrical characteristics ABSOLUTE MAXIMUM RATINGS Symbol VCC VI, VO TA Tstg PDmax Parameter DC supply voltage Voltage on any other pin Temperature under bias Storage temperature Power dissipation Min. 0 -1.0 -40 -65 Typ. Max. 7.0 VCC+0.5 85 150 2.0 Units V V °C °C W Notes (1,2) 3 3 Notes : 1. All voltages are with respect to GND. 2. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Stresses greater than those listed may cause permanent damage to the device. Exposure to absolute maximum rating conditions for extended periods may affect reliability. 3. This device contains circuitry to protect the inputs against damage caused by high static voltages or electrical fields. However, it is advised that normal precautions be taken to avoid application of any voltage higher than the absolute maximum rated voltages to this high impedence circuit. Unused inputs should be tied to an appropriate logic level such as VCC or GND. DC OPERATING CONDITIONS Symbol VCC VIH VIL TA Parameter Supply Voltage Input Logic ‘1’ Voltage CLK Input Logic ‘1’ Voltage other pins Input Logic ‘0’ Voltage CLK Input Logic ‘0’ Voltage other pins Ambient Operating Temperature Min. 4.5 4.0 2.0 -0.5 -0.5 0 Typ. 5.0 Max. 5.5 VCC+0.5 VCC+0.5 0.5 0.8 70 Units V V V V V °C Notes (1) 2 2 2 2 3 Notes : 1. All voltages are with respect to GND. 2. Input signal transients, up to 10ns wide, are permitted in the voltage ranges (GND - 0.5V) to (GND - 1.0V) and VCC + 0.5V to VCC + 1.0V. 3. 400 linear ft/min transverse air flow. DC CHARACTERISTICS Symbol VOH VOL IIN IOZ IDD Notes : 1. 2. 3. 4. 5. Parameter Output Logic ‘1’ Voltage Output Logic ‘0’ Voltage Input leakage current(any input current) Min. 2.4 0 Typ. Off state output leakage current Average power supply current Max. VCC 0.4 ± 10 Units V V µA Notes (1,2) 4 5 3 ± 10 350 µA mA 3 Max. Units pF pF Notes 1,2 1,2 All voltages are with respect to GND. Parameters measured over full voltage and temperature operating range. VCC = VCC(max), GND ≤ VIN ≤ VCC IOut ≤ -4.4 mA IOut ≤ 4.4 mA CAPACITANCE Pin Min. CLK All other pins Typ. 12 5 Notes : 1. This parameter is supplied for engineering guidance and is not guaranteed. 2. TA= 25°C , F= 1 MHz. 21/26 IMSA110 11.2 Thermal Characteristics PIN GRID ARRAY THERMAL CHARACTERISTICS Symbol θ JA Parameter Junction to ambient thermal resistance Min Nom Max 35 Units °C/W Notes 1,2 Notes : 1. Measured at 400 linear ft/min transverse air flow. 2. This parameter is sampled and not 100% tested. 11.3 AC timing characteristics AC test conditions OUTPUT LOADS (except output turn-off tests) : 30pF for all outputs. Figure 8 : Output Load (output turn-off tests) DUT pin I sink V REF I source = 1mA = 1.5V = 1mA A110-08.EPS 30pF TIMING REFERENCE LEVELS Pin Reference levels INPUTS 1 CLK 0.5V, 4.0V OUTPUTS 0.4V, 2.4V OUTPUTS ±100mV change from previous steady output voltage Notes : 1. 2. 3. 4. Notes 0.8V, 2.0V 2,3 4 Except CLK. Output continously driven. Timings are tested using VOL=0.8V and with a suitable allowance for the time taken for the output to fall from 0.8V to 0.4V. Output turn-off tests. 11.4 Timing diagrams CLOCK REQUIREMENTS Symbol Parameter Min Typ. Max Units Notes 2 tCHCL Clock Pulse High Width 20 ns tCLCH Clock Pulse Low Width 20 ns 2 tCHCH Clock Period 50 ns 2 tR Clock rise time 0 50 ns 1 tF Clock fall time 0 50 ns 1 Notes : 1. Clock input transitions should be monotonic between the input thresholds of 0.5 V and 4.0 V. 2. For Rev.A parts tCHCL, tCLCH and tCHCH have maximum values of 50 000ns, 50 000ns and 100 000ns respectively. (A minimum clock frequency of 10kHz.) 22/26 IMSA110 Figure 9 t CHCL tF tR 4.0V CLK 0.5V A110-09.EPS t CLCH t CHCH MICROPROCESSOR INTERFACE READ CYCLE Symbol Parameter Min Max Units tAVEL Address setup 0 ns tEHAX Address hold 0 ns tWHEL Read Command Setup 0 ns tEHWX Read Command Hold 0 ns tELQX Output turn-on 0 ns tELQV Read data access tEHQX Read data hold tEHQZ Output turn off 100 ns 25 ns 0 Notes ns Figure 10 E1 E2 t AVEL t EHAX ADDRESS t WHEL t EHWX W t ELQV t EHQX t ELQX A110-10.EPS DATA t EHQZ 23/26 IMSA110 MICROPROCESSOR INTERFACE WRITE CYCLE Symbol Parameter tELEH Enable Width Low tAVEL Min Max Units 100 ns Address setup 0 ns tEHAX Address hold 0 ns tWLEL Write Command Setup 0 ns tEHWX Write Command Hold 0 ns tDVEH Write data Set up 50 ns tEHDX Write data hold 0 ns Notes Figure 11 E1 t ELEH E2 t AVEL t EHAX ADDRESS t WHEL t EHWX W DATA 24/26 t EHDX A110-11.EPS t DVEH IMSA110 SYNCHRONOUS INPUT AND OUTPUT Symbol Parameter Min Max Units 40 ns tCHQV CLK high to Output Valid tCHQX Output hold time after CLK tDVCH Input setup time to CLK high 8 ns tCHDX Input hold time to CLK high 0 ns 2 Notes ns Figure 12 INPUT t DVCH t CHDX CLK t CHQX A110-12.EPS t CHQV OUTPUT 25/26 IMSA110 PACKAGE MECHANICAL DATA 100 PINS - GRID ARRAY PACKAGE M index E 10 9 8 7 6 5 4 3 2 1 A F B C D A B1 E K F G H J K G L Millimetres PMPGA100.EPS A DIM L K D Inches Notes Nom Tol Nom Tol A 26.924 ± 0.254 1.060 ± 0.010 B1 17.019 ± 0.127 0.670 ± 0.005 B2 18.796 ± 0.127 0.740 ± 0.005 C 2.456 ± 0.278 0.097 ± 0.011 D 4.572 ± 0.127 0.180 ± 0.005 E 3.302 ± 0.127 0.130 ± 0.005 F 0.457 ± 0.051 0.018 ± 0.002 Pin diameter G 1.143 ± 0.127 0.045 ± 0.005 Flange diameter K 22.860 ± 0.127 0.900 ± 0.005 L 2.540 ± 0.127 0.100 ± 0.005 M 0.508 0.020 Chamfer Information furnished is believed to be accurate and reliable. However, SGS-THOMSON Microelectronics assumes no responsibility for the consequences of use of such information nor for any infringement of patents or other rights of third parties which may result from its use. No licence is granted by implication or otherwise under any patent or patent rights of SGS-THOMSON Microelectronics. Specifications mentioned in this publication are subject to change without notice. This publication supersedes and replaces all information previously supplied. SGS-THOMSON Microelectronics products are not authorized for use as critical components in life support devices or systems without express written approval of SGS-THOMSON Microelectronics. © 1994 SGS-THOMSON Microelectronics - All Rights Reserved Purchase of I2C Components of SGS-THOMSON Microelectronics, conveys a license under the Philips I2C Patent. Rights to use these components in a I2C system, is granted provided that the system conforms to the I2C Standard Specifications as defined by Philips. SGS-THOMSON Microelectronics GROUP OF COMPANIES Australia - Brazil - China - France - Germany - Hong Kong - Italy - Japan - Korea - Malaysia - Malta - Morocco The Netherlands - Singapore - Spain - Sweden - Switzerland - Taiwan - Thailand - United Kingdom - U.S.A. 26/26 PGA100.TBL C B2