WO2008112153A2 - Variable instruction width software programmable data pattern generator - Google Patents

Variable instruction width software programmable data pattern generator Download PDF

Info

Publication number
WO2008112153A2
WO2008112153A2 PCT/US2008/003062 US2008003062W WO2008112153A2 WO 2008112153 A2 WO2008112153 A2 WO 2008112153A2 US 2008003062 W US2008003062 W US 2008003062W WO 2008112153 A2 WO2008112153 A2 WO 2008112153A2
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
outputs
bits
output
group
Prior art date
Application number
PCT/US2008/003062
Other languages
French (fr)
Other versions
WO2008112153A3 (en
Inventor
Andreas D. Olofsson
Christopher Jacobs
Paul Kettle
Original Assignee
Analog Devices, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Analog Devices, Inc. filed Critical Analog Devices, Inc.
Publication of WO2008112153A2 publication Critical patent/WO2008112153A2/en
Publication of WO2008112153A3 publication Critical patent/WO2008112153A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

Definitions

  • Charge coupled devices are used in a large variety of digital imaging applications. There are a number of different manufacturers of such devices and each manufacturer typically has numerous models. The large variety of CCDs and the continuously evolving CCD control requirements have caused challenges in designing the analog front end/CCD controller circuits that will have significant longevity in the market place. This problem is ameliorated to a large extent by the software programmable pattern generator described in the '000, '449, and '452 applications, incorporated by reference above. That software programmable pattern generator utilizes a compact and flexible assembly programmable Reduced Instruction Set Computer (RISC) that is optimized for generating high precision timing pulses and low power control functions.
  • RISC Reduced Instruction Set Computer
  • the architecture has a variable bit wide instruction set that includes: vector toggling instructions, jump instructions, conditional instructions, arithmetic instructions, and load/store instructions.
  • the pattern generator can fetch and execute one instruction per clock cycle, and is parameter scalable to allow for easy optimization in different applications.
  • a method for generating a digital signal pattern at M outputs involves retrieving a first instruction from memory comprising a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the first group of N outputs identified by the first set of bits included in the first instruction.
  • the signal at the output is toggled if the one of the N bits corresponding to that output is in a first state and is kept in the same state if the one of the N bits corresponding to that output is in a second state.
  • the signal at that output is kept in the same state.
  • an apparatus for generating a digital signal pattern at M outputs comprises a circuit configured and arranged to retrieve at least instructions of a first type from memory and to control the toggling of signals at the M outputs in response thereto, wherein each of the instructions of the first type comprises a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the first group of N outputs identified by the first set of bits included in the first instruction.
  • the circuit is further configured and arranged to process each retrieved instruction of the first type such that, for each of the M outputs that is included in the first group of N outputs identified by the first set of bits included in the instruction, the signal at the output is toggled if the one of the N bits corresponding to that output is in a first state and is kept in the same state if the one of the N bits corresponding to that output is in a second state, and, for each of the M outputs that is not included in the first group of N outputs identified by the first set of bits included in the instruction, the signal at that output is kept in the same state.
  • a method for generating a digital signal pattern at M outputs involves retrieving a first instruction from memory that consists of N bits, and retrieving a second instruction from memory that consists of fewer than N bits. Based on the first instruction, first ones of the M outputs are identified and the signals on those outputs are toggled. Based on the second instruction, second ones of the M outputs are identified and signals on those outputs are toggled.
  • Fig. l is a functional block diagram illustrating various components of a digital pattern generator (DPP) that may operate together to control the generation of a digital signal pattern at its outputs;
  • Fig. 2 is a flowchart illustrating an example of an execution flow that may be used to generate a pattern of pulses on the outputs of the DPP;
  • DPP digital pattern generator
  • Figs. 3 and 4 illustrate the format and content of several examples of toggle instructions that may be employed in some embodiments.
  • Fig. 5 is a block diagram illustrating an example of hardware that may be employed by the channel control circuit of the DPP to enable the use of toggle instructions of various lengths and types.
  • Fig. 1 is similar to Fig. 3 of the '449 and '452 applications.
  • the only pertinent difference between the two figures is the addition of toggle control lines 310 to the diagram of Fig. 1.
  • the purpose of these additional control lines will be explained in more detail below.
  • This figure is a functional block diagram illustrating various components of a digital pattern processor (DPP) (like the DPP 102 described in the '449 and '452 applications - incorporated by reference above) that may operate together to control the generation of a digital pattern of signals at a group of outputs.
  • the DPP may comprise a program sequencer 106, a synchronous timer 114, a program memory 108, channel control circuitry 118, and output pads 120.
  • the program sequencer 106 may comprise an instruction decoder 302 and program sequencer logic 304 that together are responsible for fetching instructions from the memory 108, decoding the fetched instructions, and controlling the synchronous timer 114 and channel control circuitry 118 so as to appropriately generate a pattern of digital signals at the outputs 120.
  • the synchronous timer 114 comprises a toggle counter 306 and a comparator 308.
  • the comparator 308 may, for example, determine when the toggle counter 114 has reached a specified "toggle count" value.
  • the toggle counter 306 may, for example, comprise a sixteen-bit free-running clock cycle counter.
  • FIG. 2 is identical to Fig. 8 of the '449 and '452 applications.
  • This figure is a flowchart illustrating an example of an execution flow 800 that may be used to generate a digital signal pattern on the outputs 120.
  • steps 802 and 804 an instruction is fetched from the program memory 108 and decoded for execution.
  • the flow 800 proceeds to a step 808, where it waits until the comparator 308 has determined that the toggle counter 306 has reached a toggle count value.
  • the toggle count value may be either included in the toggle instruction itself or may be read from a register of the DPP (e.g., one of the general purpose registers R0-R7 identified in Table lin the '449 and '452 applications).
  • the toggle count value is to be read from a register, either the same register may be referenced each time a particular type of toggle instruction is received or one or more bits may be included in the toggle instruction that identify the register that is to be referenced.
  • a "toggle instruction” refers to any instruction that is responsible for determining the state of one or more of the outputs 120 and is thus intended to encompass not only instructions that cause the signals at particular outputs to “toggle” (i.e., to change from one state to another) but also instructions that force the signals at particular outputs 120 to particular values (sometimes referred to herein as "force vector” instructions) and thus may or may not actually cause the output signals to toggle, depending on the initial state of each such signal.
  • the toggle counter 306 has reached the specified toggle count, the flow proceeds to a step 810, where certain outputs 120 of the DPP are simultaneously toggled or forced to particular values in the manner specified by the instruction.
  • the flow then returns to the steps 802 and 804 where the next program instruction is fetched and decoded. If, at the step 806, it is determined that the fetched instruction is not a toggle instruction, then the routine proceeds to a step 812, where the instruction is carried out to as to control the program flow in the manner specified.
  • the toggle counter 306 and a custom toggle instruction set may be used to keep the DPP in lock step execution to allow the generation of a digital signal pattern in the manner specified by the instruction set.
  • the flow is capable of toggling or forcing the values of the signals on all output pins on any given clock cycle.
  • a single instruction may be defined for toggling or forcing the values of all of the output bits simultaneously.
  • one application of the DPP may be as a timing generator for an image sensor.
  • Examples of environments in which such a timing generator may operate are described in U.S. Pat. No. 6,512,546, U.S. Pat. No. 6,570,615, and U.S. Patent Application Publication No. 2006/0077275 Al , each of which is incorporated herein by reference in its entirety.
  • Fig. 3 shows several examples of program instruction configurations that may be used in various embodiments of the DPP disclosed herein, as well as in the '449 and '452 applications, including two examples of "short" toggle instruction formats 314 and 316 that were not disclosed in the '449 and '452 applications.
  • the program memory 108 that is employed may have a fixed width that is segmented into several sections.
  • the program memory is "64" bits wide and is segmented into four sections WO, Wl, W2, and W3.
  • the format of the "long" toggle instruction 312 may be just like that of the toggle instructions described in the '449 and '452 applications and may be used in a similar manner.
  • the short toggle instructions 314 and 316 may be used (in the manner described below) in circumstances in which it is necessary to toggle only a particular subset of the bits of the output vector.
  • the 32-bit short toggle instruction 314 may be used to toggle any or all of the bits within a particular byte (i.e., a set of eight bits) of the output vector
  • the 16-bit short toggle instruction 316 may be used to toggle any or all of the bits within a particular nibble (i.e., a set of four bits) of the output vector.
  • a group of three byte select bits 314a may be used to identify the group of eight output bits that is to be toggled as indicated by the bits in the byte field 314b.
  • a group of four nibble select bits 316a may be used to identify the group of four output bits that is to be toggled as indicated by the bits in the nibble field 316b.
  • the instructions 312, 314, 316 in the illustrated example are eight bytes, four bytes, and two bytes wide, respectively, it should be appreciated instructions of different lengths and relative sizes could additional or alternatively be employed.
  • the short toggle instructions may be two and four bytes long, respectively, just as in the primary example described herein, but the long toggle instructions may be ten rather than eight bytes wide, with the two extra bytes containing additional bits of the vector field.
  • Such a configuration would allow the generation of a digital pattern on "57" output pins, rather than on only "41" pins as in the primary example described herein.
  • each 64-bit instruction may be aligned so that it starts at the beginning of a line, rather than wrapping from one line to another. It may also be advantageous to align the 32-bit instructions in the above example so that they also do not wrap around from one memory line to another.
  • appropriate instructions may be inserted into the program code that cause the program counter to be incremented by a specific amount to account for the adjusted alignment (e.g., by skipping over one or more of the sections Wl, W2, W3 of the memory line, which may simply remain unused).
  • the length of the 32-bit short toggle instruction is twice (or a power of two) greater than the length of the 16-bit short toggle instruction
  • length of the 64-bit long toggle instruction is twice (or a power of two) greater than the length of the 32-bit short toggle instruction.
  • Fig. 4 is a chart showing several examples of specific toggle instructions of the above- described types that may be employed in certain embodiments.
  • the numbers “0" to "31 " in the row labeled "INSTRUCTION” correspond to the respective bits in the depicted instruction words.
  • the numbers “0" to "6” in the "INSTRUCTION” row of Fig. 4 correspond to the 7-bit operational codes ("opcodes") of the toggle instructions 312, 314, 316 of Fig. 3.
  • the bits "32" to "63” or higher
  • the opcode in each instruction may identify not only whether the instruction is a "toggle instruction," as opposed to one of the other types of instructions described in the '449 and '452 applications, e.g., a program flow instruction, a load/store instruction, an arithmetic instruction, etc., but also the particular length and content of the toggle instruction.
  • the opcode may indicate whether the instruction is a long toggle instruction 312
  • bits “1" and “2" of the opcode indicates that the instruction is a toggle instruction.
  • the assertion of bit “0” in addition to bits “1” and “2” indicates that the toggle instruction is a "force vector” instruction.
  • the assertion of bit “3” in addition to bits “1” and “2” indicates that the toggle instruction is “short” (i.e., either "32” bits or “16” bits) rather than "long” (i.e., "64” bits or more).
  • bits “4" and “5" in addition to bits “ 1 , "2,” and “3” indicates that the short toggle instruction is " 16" bits long rather than "32” bits long. (Because the "clear” and “relative” options are never simultaneously asserted for a short toggle instruction 314, the assertion of both such bits may be used for this purpose).
  • the long toggle instructions 312 and the 32-bit short toggle instructions 314 may also each include an "immediate count” field.
  • This field may, for example, be used to identify the "toggle count” value that the toggle counter 306 must reach for an output event (e.g., a toggling of specified output bits or forcing of output bits to particular values) to occur.
  • some or all of the same bits may be used to identify a particular register (e.g., one of the general purpose registers R0-R7 identified in Table 1 of the '449 and '452 applications) that contains the toggle count value that is to be used for such a purpose.
  • a particular register e.g., one of the general purpose registers R0-R7 identified in Table 1 of the '449 and '452 applications
  • the assertion of bit "6" in an instruction opcode indicates that the toggle count value is to be determined from the bits in the "immediate count” field (i.e., the bits labeled "I"), rather looking to bits “7” to "9” (i.e.., the bits labeled as "RM") to identify the register containing the toggle count value.
  • the 16-bit toggle instruction does not include either an "immediate count” field or a set of bits 5 identifying a register. Instead, the DPP knows to look by default to a specific register (e.g., the general purpose register RO identified in Table 1 of the '449 and '452 applications) for the toggle count value that is to be used when such an instruction is received.
  • Fig. 5 shows an example of channel control circuitry 118 that may be employed in the DPP to facilitate the implementation of short toggle instructions in addition to long toggle0 instructions.
  • the channel select circuit 118o includes three multiplexers 324, 326, 328, four AND gates 330, 332, 334, 336, 5 three inverters 338, 340, 342, an XOR gate 344, and a flip-flop 346.
  • the channel control circuitry 118 includes a separate circuit 118o, 118i, 118N for each nibble (i.e., group of four bits) that is provided at a respective group of four output pads 12O 0 , 12O 1 , 12O N of the DPP.
  • each of the channel control circuits 118 0 , 118 ⁇ , 118 N may be provided with toggle control signals 310 from the decoder0 302, as well as a "toggle match" signal from the comparator 308 of the synchronous timer 114.
  • Vector data from a particular part of the instruction being executed is also supplied to each channel control circuit 118 0 , 118], 118N as indicated by blocks 318, 320, and 322.
  • each block 322 may be provided with bits "11" to "14" of every executed instruction (which, for 16-bit short toggle instructions 316, 5 corresponds to the "nibble" field 316b in Fig. 3), each block 320 may be provided with either bits “24" to "27” or bits “28” to "31” of every executed instruction that includes such bits (which, for 32-bit short toggle instructions 314, corresponds to one half of the "byte” field 314b in Fig. 3), and each block 318 may be provided with a different group of four bits from the "vector field" of every executed long instruction that includes such bits.
  • a sufficient number of channel select circuits 118 0 , 118 1 , 118 N may be employed to provide four different bits from the long instruction vector field (e.g., bits “23" to "63” in the example of Fig. 4) to the respective blocks 318 of such circuits.
  • the bits provided to the block 318 of the circuit 118 0 may correspond to bits "23" to "26" of a received instruction
  • the bits provided to the same block of the circuit 118i may correspond to the bits "27" to "30” of the received instruction, and so on.
  • each channel control circuit 118 0 , 118i, 118N may be permanently associated with and responsible for driving a respective group of four output pads 12O 0 , 120i, 12O N , the same group of bits from each instruction word may be provided to the same blocks 318, 320, 322 of a particular channel control circuit 118 0 , 118j, 118N every time a new instruction is decoded.
  • the multiplexer 326 is controlled (via the inverter 340) to provide the contents of the block 318 to one of the inputs of the AND gate 334.
  • the decoder 306 may simply provide bit "3" of the opcode as the control signal on the short toggle line 310b). If a toggle match signal is received from the synchronous timer 114 when the circuit is in such a state (and the toggle/force line 310c is high), then the signals at the outputs 12O 0 will be caused to toggle in the manner specified by the bits in the block 318.
  • all of the other channel control circuits 1 IS 1 to 118 N may similarly selectively cause the signals on their corresponding output pads 12Oi to 12O N toggle at the same time when a toggle match signal is received from the synchronous timer 114, thus causing all of the outputs of the DPP to toggle at the same time as indicated in the vector field of the received instruction.
  • the short toggle width select line 310a from the decoder 302 controls the multiplexer 324 to select either the four bits from the block 320 or the four bits from block 322 as an input to the multiplexer 326.
  • the four bits from the block 322 may be selected when a 16-bit toggle instruction is being processed, and the four bits from the block 320 may be selected when a 32-bit toggle instruction is being processed.
  • the decoder 306 may generate an appropriate control signal on the select line 310a, for example, simply by performing a logical AND operation on bits "4" and "5" of the opcode of the received instruction.
  • the "nibble select line" for each channel select circuit may be asserted when the decoder 302 determines (e.g., by examining the bits in the nibble select field 316a or the byte select field 314a) that the particular output nibble for which the channel control circuit is responsible has been selected for toggling.
  • the nibble select line 0 310d may be asserted if either (1) the nibble select bits 316a (i.e., bits "7" to "10" in Fig.
  • a 16-bit short toggle instruction 316 identify the particular output nibble for which the channel control circuit 118o is responsible, or (2) the byte select bits 314a (i.e., bits "20" to "23” in Fig. 4) in a 32-bit short toggle instruction 314 identify an output byte containing the particular output nibble for which the channel control circuit 118 0 is responsible.
  • the nibble select line of only a single channel control circuit 118 0 , 118i, 118 N will be asserted.
  • the nibble select lines of only the two channel control circuits 118 0 , 118i, 118 N responsible for driving the bits of the selected output byte will be asserted.
  • the short toggle select line 310b and nibble selecto line 31Od from the decoder 302 may together control the multiplexer 326 (via AND gates 330, 332 and inverters 338, 340) to select one of: (1) the four bits from the block 318, (2) the selected four bits from the multiplexer 324, and (3) a set of four zeros. If the decoded instruction is a toggle instruction 312, 314, 316, then the selected one of these three inputs will determine how the four output bits for which the channel select circuit 118 0 is responsible are to be toggled (unless the signal on the toggle/force line 310c indicates that the toggle instruction is a force vector instruction) upon receipt of a toggle match signal from the synchronous timer 114.
  • the inverter 342 supplies a high signal to one of the inputs of the AND gate 336.
  • the AND gate 336 causes the multiplexer 328 to select the long vector nibble block 318, rather than the output of the XOR gate 344, as the input to the flip- flop 346, and thus causes the values of the long vector nibble block 318 to be forced upon the output pads 12O 0 rather than allowing the four bits from the multiplexer 326 to determine how the outputs should be toggled.
  • the decoder 306 may simply provide bits "3" and "0" of the opcode as the control signals on the short toggle line 31 Ob and the toggle/force line 31 Oc, respectively).
  • receipt of a toggle match signal will cause the AND gate 334 to provide the four bits from the multiplexer 326 to one of the inputs of the XOR gate 344.
  • the XOR gate 344 causes the four bits held by the "Q" output of the flip- flop 346 to be toggled as specified by those four bits (provided the toggle/force line 310c is high).
  • the multiplexer 326 provides four zeros to the input of the AND gate 334, thus causing the outputs of that particular nibble to maintain their current state, and not be toggled, when the toggle match signal is received.
  • the multiplexer 326 provides the four output bits of multiplexer 324 to the input of the AND gate 344, thus resulting in the output bits of that particular output nibble being toggled as indicated by those bits when the toggle match signal is received.
  • a pattern generation program may be written using only "long" toggle instructions (several examples of such programs were disclosed in the '449 and '452 applications, incorporated by reference above) and the determination of which long toggle instructions can be converted into either 16-bit or 32-bit short toggle instructions can be left to the timing generator assembler (TGASM).
  • TGASM timing generator assembler
  • any toggle instructions that require the toggling of one or more bits from only a single byte may be compressed into a 32- bit toggle instruction.
  • any toggle instructions that require the toggling of one or more bits from only a single nibble may be compressed into 16-bit toggle instructions.
  • the TGASM may also automatically align the remaining longer instructions in memory and insert appropriate "align" instructions in the code so as to ensure that each such instruction can be fetched in a single memory access.

Abstract

A method for generating a digital signal pattern at M outputs involves retrieving an instruction from memory comprising a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the identified first group of N outputs. For each of the M outputs that is included in the identified first group of N outputs, the signal at the output is toggled if the one of the N bits corresponding to that output is in a first state and is kept in the same state if the one of the N bits corresponding to that output is in a second state. For each of the M outputs that is not included in the identified first group of N outputs, the signal at that output is kept in the same state.

Description

VARIABLE INSTRUCTION WIDTH SOFTWARE PROGRAMMABLE DATA
PATTERN GENERATOR
RELATED APPLICATIONS This application relates to the subject matter disclosed in each of (1) U.S. Provisional
Application Ser. No. 60/906,000, filed March 9, 2007 ("the OOO application"), (2) U.S. Patent Application Ser. No. 11/818,449, filed June 14, 2007 ("the '449 application), and (3) U.S. Patent Application Ser. No. 11/818,452, filed June 14, 2007 ("the '452 application). The entire contents of each of the OOO, '449, and '452 applications are incorporated herein by reference.
BACKGROUND
Charge coupled devices (CCDs) are used in a large variety of digital imaging applications. There are a number of different manufacturers of such devices and each manufacturer typically has numerous models. The large variety of CCDs and the continuously evolving CCD control requirements have caused challenges in designing the analog front end/CCD controller circuits that will have significant longevity in the market place. This problem is ameliorated to a large extent by the software programmable pattern generator described in the '000, '449, and '452 applications, incorporated by reference above. That software programmable pattern generator utilizes a compact and flexible assembly programmable Reduced Instruction Set Computer (RISC) that is optimized for generating high precision timing pulses and low power control functions. The architecture has a variable bit wide instruction set that includes: vector toggling instructions, jump instructions, conditional instructions, arithmetic instructions, and load/store instructions. The pattern generator can fetch and execute one instruction per clock cycle, and is parameter scalable to allow for easy optimization in different applications.
To allow every chip output to be set simultaneously at a pixel clock resolution, a large number of bits may be stored in parallel within the program memory, with each bit in a vector word corresponding to an output pin that can be selectively toggled, depending on the state of the bit. In the case of Analog Device's model number ADDI9000, this meant that every instruction was "64" bits wide. An advantage of this model was in the simple control and design logic required. We have since recognized, however, that the use of such large instructions consumes a significant amount of memory, thus imposing limits on the utility of the timing generator for certain applications. SUMMARY
According to one aspect of the present invention, a method for generating a digital signal pattern at M outputs involves retrieving a first instruction from memory comprising a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the first group of N outputs identified by the first set of bits included in the first instruction. For each of the M outputs that is included in the first group of N outputs identified by the first set of bits included in the first instruction, the signal at the output is toggled if the one of the N bits corresponding to that output is in a first state and is kept in the same state if the one of the N bits corresponding to that output is in a second state. For each of the M outputs that is not included in the first group of N outputs identified by the first set of bits included in the first instruction, the signal at that output is kept in the same state.
According to another aspect of the invention, an apparatus for generating a digital signal pattern at M outputs comprises a circuit configured and arranged to retrieve at least instructions of a first type from memory and to control the toggling of signals at the M outputs in response thereto, wherein each of the instructions of the first type comprises a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the first group of N outputs identified by the first set of bits included in the first instruction. The circuit is further configured and arranged to process each retrieved instruction of the first type such that, for each of the M outputs that is included in the first group of N outputs identified by the first set of bits included in the instruction, the signal at the output is toggled if the one of the N bits corresponding to that output is in a first state and is kept in the same state if the one of the N bits corresponding to that output is in a second state, and, for each of the M outputs that is not included in the first group of N outputs identified by the first set of bits included in the instruction, the signal at that output is kept in the same state.
According to another aspect, a method for generating a digital signal pattern at M outputs involves retrieving a first instruction from memory that consists of N bits, and retrieving a second instruction from memory that consists of fewer than N bits. Based on the first instruction, first ones of the M outputs are identified and the signals on those outputs are toggled. Based on the second instruction, second ones of the M outputs are identified and signals on those outputs are toggled. BRIEF DESCRIPTION OF THE DRAWINGS
Fig. l is a functional block diagram illustrating various components of a digital pattern generator (DPP) that may operate together to control the generation of a digital signal pattern at its outputs; Fig. 2 is a flowchart illustrating an example of an execution flow that may be used to generate a pattern of pulses on the outputs of the DPP;
Figs. 3 and 4 illustrate the format and content of several examples of toggle instructions that may be employed in some embodiments; and
Fig. 5 is a block diagram illustrating an example of hardware that may be employed by the channel control circuit of the DPP to enable the use of toggle instructions of various lengths and types.
DETAILED DESCRIPTION
This disclosure is directed to improvements to certain components and features of the system disclosed in the '449 and '452 applications (incorporated by reference above). Familiarity with the entirety of the disclosure of the '449 and '452 applications will thus be assumed. For ease of understanding, to the extent practicable this disclosure will use the same reference numerals as those used in the '449 and '452 applications to describe similar components and features. It should be appreciated, moreover, that the components and features in this disclosure that are similarly named or that are designated using the same reference numerals as the components or features described in the '449 and '452 applications may be used in the system described in the '449 and '452 applications in the same or similar manner as such similarly named or labeled components and features are used therein. That only certain key components of the system disclosed in the '449 and '452 applications are re-described herein should not be understood to mean that such components and features are incompatible in any way with the new or modified components or features disclosed herein. Rather, it is simply for conciseness that only those components and features of the system disclosed in the '449 and '452 applications that are directly impacted or modified by this disclosure are re-described herein.
Fig. 1 is similar to Fig. 3 of the '449 and '452 applications. The only pertinent difference between the two figures is the addition of toggle control lines 310 to the diagram of Fig. 1. The purpose of these additional control lines will be explained in more detail below. This figure is a functional block diagram illustrating various components of a digital pattern processor (DPP) (like the DPP 102 described in the '449 and '452 applications - incorporated by reference above) that may operate together to control the generation of a digital pattern of signals at a group of outputs. As shown, the DPP may comprise a program sequencer 106, a synchronous timer 114, a program memory 108, channel control circuitry 118, and output pads 120.
As illustrated, the program sequencer 106 may comprise an instruction decoder 302 and program sequencer logic 304 that together are responsible for fetching instructions from the memory 108, decoding the fetched instructions, and controlling the synchronous timer 114 and channel control circuitry 118 so as to appropriately generate a pattern of digital signals at the outputs 120. In the example shown, the synchronous timer 114 comprises a toggle counter 306 and a comparator 308. The comparator 308 may, for example, determine when the toggle counter 114 has reached a specified "toggle count" value. The toggle counter 306 may, for example, comprise a sixteen-bit free-running clock cycle counter. An illustrative example of an execution flow that may be employed by these components to generate a pattern of pulses by toggling the signals at the outputs 120 and/or forcing the signals at the outputs 120 to particular values is discussed below in connection with Fig. 2. Fig. 2 is identical to Fig. 8 of the '449 and '452 applications. This figure is a flowchart illustrating an example of an execution flow 800 that may be used to generate a digital signal pattern on the outputs 120. In the example shown, at steps 802 and 804, an instruction is fetched from the program memory 108 and decoded for execution. If, at a step 806, it is determined that the instruction is a toggle instruction, then the flow 800 proceeds to a step 808, where it waits until the comparator 308 has determined that the toggle counter 306 has reached a toggle count value. As discussed in more detail below, the toggle count value may be either included in the toggle instruction itself or may be read from a register of the DPP (e.g., one of the general purpose registers R0-R7 identified in Table lin the '449 and '452 applications). When the toggle count value is to be read from a register, either the same register may be referenced each time a particular type of toggle instruction is received or one or more bits may be included in the toggle instruction that identify the register that is to be referenced. As used herein, a "toggle instruction" refers to any instruction that is responsible for determining the state of one or more of the outputs 120 and is thus intended to encompass not only instructions that cause the signals at particular outputs to "toggle" (i.e., to change from one state to another) but also instructions that force the signals at particular outputs 120 to particular values (sometimes referred to herein as "force vector" instructions) and thus may or may not actually cause the output signals to toggle, depending on the initial state of each such signal. Once the toggle counter 306 has reached the specified toggle count, the flow proceeds to a step 810, where certain outputs 120 of the DPP are simultaneously toggled or forced to particular values in the manner specified by the instruction. The flow then returns to the steps 802 and 804 where the next program instruction is fetched and decoded. If, at the step 806, it is determined that the fetched instruction is not a toggle instruction, then the routine proceeds to a step 812, where the instruction is carried out to as to control the program flow in the manner specified. (Examples of the manner in which particular toggle instructions and program flow instructions may be configured and carried out in various embodiments are described in detail in the '449 and '452 applications and thus will not be repeated here). Accordingly, by employing the configuration and functionality illustrated in Figs. 1 and 2, the toggle counter 306 and a custom toggle instruction set may be used to keep the DPP in lock step execution to allow the generation of a digital signal pattern in the manner specified by the instruction set. Advantageously, in the example shown, the flow is capable of toggling or forcing the values of the signals on all output pins on any given clock cycle. In some embodiments, a single instruction may be defined for toggling or forcing the values of all of the output bits simultaneously.
As noted in the '449 and '452 applications, one application of the DPP may be as a timing generator for an image sensor. Examples of environments in which such a timing generator may operate are described in U.S. Pat. No. 6,512,546, U.S. Pat. No. 6,570,615, and U.S. Patent Application Publication No. 2006/0077275 Al , each of which is incorporated herein by reference in its entirety.
Fig. 3 shows several examples of program instruction configurations that may be used in various embodiments of the DPP disclosed herein, as well as in the '449 and '452 applications, including two examples of "short" toggle instruction formats 314 and 316 that were not disclosed in the '449 and '452 applications. In some embodiments, the program memory 108 that is employed may have a fixed width that is segmented into several sections. In the example of Fig. 3, for instance, the program memory is "64" bits wide and is segmented into four sections WO, Wl, W2, and W3. The format of the "long" toggle instruction 312 may be just like that of the toggle instructions described in the '449 and '452 applications and may be used in a similar manner. Advantageously, the short toggle instructions 314 and 316 may be used (in the manner described below) in circumstances in which it is necessary to toggle only a particular subset of the bits of the output vector. In the example of Fig. 3, for instance, the 32-bit short toggle instruction 314 may be used to toggle any or all of the bits within a particular byte (i.e., a set of eight bits) of the output vector, and the 16-bit short toggle instruction 316 may be used to toggle any or all of the bits within a particular nibble (i.e., a set of four bits) of the output vector. For the 32-bit short toggle instructions 314, a group of three byte select bits 314a may be used to identify the group of eight output bits that is to be toggled as indicated by the bits in the byte field 314b. Similarly, for the 16-bit short toggle instructions 316, a group of four nibble select bits 316a may be used to identify the group of four output bits that is to be toggled as indicated by the bits in the nibble field 316b.
Although the instructions 312, 314, 316 in the illustrated example are eight bytes, four bytes, and two bytes wide, respectively, it should be appreciated instructions of different lengths and relative sizes could additional or alternatively be employed. In some embodiments, for example, the short toggle instructions may be two and four bytes long, respectively, just as in the primary example described herein, but the long toggle instructions may be ten rather than eight bytes wide, with the two extra bytes containing additional bits of the vector field. Such a configuration would allow the generation of a digital pattern on "57" output pins, rather than on only "41" pins as in the primary example described herein.
To simply the implementation of hardware components in the system, it may be useful to align the longer instructions in memory so as to allow each instruction to be fetched in a single memory access. For example, if a memory including one thousand lines of sixty four bits is employed, each 64-bit instruction may be aligned so that it starts at the beginning of a line, rather than wrapping from one line to another. It may also be advantageous to align the 32-bit instructions in the above example so that they also do not wrap around from one memory line to another. For instructions that are aligned in such a manner, appropriate instructions may be inserted into the program code that cause the program counter to be incremented by a specific amount to account for the adjusted alignment (e.g., by skipping over one or more of the sections Wl, W2, W3 of the memory line, which may simply remain unused).
In some embodiments, it can be advantageous to use instructions having lengths that are integer multiples of one another. In one of the examples above, for instance, the length of the 32-bit short toggle instruction is twice (or a power of two) greater than the length of the 16-bit short toggle instruction, and length of the 64-bit long toggle instruction is twice (or a power of two) greater than the length of the 32-bit short toggle instruction. The use of such "power of two" differences between instruction lengths may, for example, simply the process of fetching and decoding of instructions. For instance, in some embodiments, the mechanism used for fetching may only have to choose between incrementing the program counter by "1," "2," or "4," which in binary becomes "001," "010," and "100," respectively.
Fig. 4 is a chart showing several examples of specific toggle instructions of the above- described types that may be employed in certain embodiments. In the chart, the numbers "0" to "31 " in the row labeled "INSTRUCTION" correspond to the respective bits in the depicted instruction words. For example, the numbers "0" to "6" in the "INSTRUCTION" row of Fig. 4 correspond to the 7-bit operational codes ("opcodes") of the toggle instructions 312, 314, 316 of Fig. 3. For the long (i.e., 64-bit or longer) toggle instructions in the chart, it should be understood that, although not specifically depicted, the bits "32" to "63" (or higher) would be "vector bits" just like the bits "23" to "31 " in those examples.
The opcode in each instruction may identify not only whether the instruction is a "toggle instruction," as opposed to one of the other types of instructions described in the '449 and '452 applications, e.g., a program flow instruction, a load/store instruction, an arithmetic instruction, etc., but also the particular length and content of the toggle instruction. For example, the opcode may indicate whether the instruction is a long toggle instruction 312
(which may be either an instruction to toggle certain bits or instruction to force certain bits to particular values), a 32-bit short toggle instruction 314, or a 16-bit short toggle instruction.
In the examples of Fig. 4, the assertion of bits "1" and "2" of the opcode indicates that the instruction is a toggle instruction. The assertion of bit "0" in addition to bits "1" and "2" indicates that the toggle instruction is a "force vector" instruction. The assertion of bit "3" in addition to bits "1" and "2" indicates that the toggle instruction is "short" (i.e., either "32" bits or "16" bits) rather than "long" (i.e., "64" bits or more). The assertion of both of bits "4" and "5" in addition to bits " 1 , "2," and "3" indicates that the short toggle instruction is " 16" bits long rather than "32" bits long. (Because the "clear" and "relative" options are never simultaneously asserted for a short toggle instruction 314, the assertion of both such bits may be used for this purpose).
As shown, the long toggle instructions 312 and the 32-bit short toggle instructions 314 may also each include an "immediate count" field. This field may, for example, be used to identify the "toggle count" value that the toggle counter 306 must reach for an output event (e.g., a toggling of specified output bits or forcing of output bits to particular values) to occur. Alternatively, some or all of the same bits may be used to identify a particular register (e.g., one of the general purpose registers R0-R7 identified in Table 1 of the '449 and '452 applications) that contains the toggle count value that is to be used for such a purpose. In the examples shown in Fig. 4, the assertion of bit "6" in an instruction opcode indicates that the toggle count value is to be determined from the bits in the "immediate count" field (i.e., the bits labeled "I"), rather looking to bits "7" to "9" (i.e.., the bits labeled as "RM") to identify the register containing the toggle count value. In the illustrative example shown, the 16-bit toggle instruction does not include either an "immediate count" field or a set of bits 5 identifying a register. Instead, the DPP knows to look by default to a specific register (e.g., the general purpose register RO identified in Table 1 of the '449 and '452 applications) for the toggle count value that is to be used when such an instruction is received.
Fig. 5 shows an example of channel control circuitry 118 that may be employed in the DPP to facilitate the implementation of short toggle instructions in addition to long toggle0 instructions. Although the details of only channel select circuit 1180 associated with the output pads 12Oo will now be described, it should be appreciated that the other channel select circuits 1181 to 118N associated with the other output pads 12O1 to 120N, respectively, may include the same or similar circuitry. As shown, in the illustrated example, the channel select circuit 118o includes three multiplexers 324, 326, 328, four AND gates 330, 332, 334, 336, 5 three inverters 338, 340, 342, an XOR gate 344, and a flip-flop 346.
In the illustrated example, the channel control circuitry 118 includes a separate circuit 118o, 118i, 118N for each nibble (i.e., group of four bits) that is provided at a respective group of four output pads 12O0, 12O1, 12ON of the DPP. As shown, each of the channel control circuits 1180, 118χ, 118N may be provided with toggle control signals 310 from the decoder0 302, as well as a "toggle match" signal from the comparator 308 of the synchronous timer 114. Vector data from a particular part of the instruction being executed is also supplied to each channel control circuit 1180, 118], 118N as indicated by blocks 318, 320, and 322. For M example, with reference to Figs. 3 and 4, each block 322 may be provided with bits "11" to "14" of every executed instruction (which, for 16-bit short toggle instructions 316, 5 corresponds to the "nibble" field 316b in Fig. 3), each block 320 may be provided with either bits "24" to "27" or bits "28" to "31" of every executed instruction that includes such bits (which, for 32-bit short toggle instructions 314, corresponds to one half of the "byte" field 314b in Fig. 3), and each block 318 may be provided with a different group of four bits from the "vector field" of every executed long instruction that includes such bits. 0 A sufficient number of channel select circuits 1180, 1181 , 118N may be employed to provide four different bits from the long instruction vector field (e.g., bits "23" to "63" in the example of Fig. 4) to the respective blocks 318 of such circuits. For example, the bits provided to the block 318 of the circuit 1180 may correspond to bits "23" to "26" of a received instruction, the bits provided to the same block of the circuit 118i may correspond to the bits "27" to "30" of the received instruction, and so on. Because each channel control circuit 1180, 118i, 118N may be permanently associated with and responsible for driving a respective group of four output pads 12O0, 120i, 12ON, the same group of bits from each instruction word may be provided to the same blocks 318, 320, 322 of a particular channel control circuit 1180, 118j, 118N every time a new instruction is decoded.
In the example shown, when the short toggle line 310b is low (indicating that the decoded instruction is not a short toggle instruction 314, 316), the multiplexer 326 is controlled (via the inverter 340) to provide the contents of the block 318 to one of the inputs of the AND gate 334. (If the opcodes shown in Fig. 4 are employed, then the decoder 306 may simply provide bit "3" of the opcode as the control signal on the short toggle line 310b). If a toggle match signal is received from the synchronous timer 114 when the circuit is in such a state (and the toggle/force line 310c is high), then the signals at the outputs 12O0 will be caused to toggle in the manner specified by the bits in the block 318. It should be appreciated that all of the other channel control circuits 1 IS1 to 118N may similarly selectively cause the signals on their corresponding output pads 12Oi to 12ON toggle at the same time when a toggle match signal is received from the synchronous timer 114, thus causing all of the outputs of the DPP to toggle at the same time as indicated in the vector field of the received instruction.
In the illustrated example, the short toggle width select line 310a from the decoder 302 controls the multiplexer 324 to select either the four bits from the block 320 or the four bits from block 322 as an input to the multiplexer 326. As noted above, the four bits from the block 322 may be selected when a 16-bit toggle instruction is being processed, and the four bits from the block 320 may be selected when a 32-bit toggle instruction is being processed. (If the opcodes shown in Fig. 4 are employed, then the decoder 306 may generate an appropriate control signal on the select line 310a, for example, simply by performing a logical AND operation on bits "4" and "5" of the opcode of the received instruction.)
The "nibble select line" for each channel select circuit (e.g., nibble select lineo 31Od for channel select circuit 1180) may be asserted when the decoder 302 determines (e.g., by examining the bits in the nibble select field 316a or the byte select field 314a) that the particular output nibble for which the channel control circuit is responsible has been selected for toggling. With reference to Figs. 3 and 4, for example, the nibble select line0 310d may be asserted if either (1) the nibble select bits 316a (i.e., bits "7" to "10" in Fig. 4) in a 16-bit short toggle instruction 316 identify the particular output nibble for which the channel control circuit 118o is responsible, or (2) the byte select bits 314a (i.e., bits "20" to "23" in Fig. 4) in a 32-bit short toggle instruction 314 identify an output byte containing the particular output nibble for which the channel control circuit 1180 is responsible. Thus, for 16-bit short toggle instructions 316 (which can select one or more bits within only a single nibble for toggling), the nibble select line of only a single channel control circuit 1180, 118i, 118N will be asserted. For 32-bit short toggle instructions 314 (which can select one or more bits within only a single byte for toggling), the nibble select lines of only the two channel control circuits 1180, 118i, 118N responsible for driving the bits of the selected output byte will be asserted.
As shown in Fig. 5, the short toggle select line 310b and nibble selecto line 31Od from the decoder 302 may together control the multiplexer 326 (via AND gates 330, 332 and inverters 338, 340) to select one of: (1) the four bits from the block 318, (2) the selected four bits from the multiplexer 324, and (3) a set of four zeros. If the decoded instruction is a toggle instruction 312, 314, 316, then the selected one of these three inputs will determine how the four output bits for which the channel select circuit 1180 is responsible are to be toggled (unless the signal on the toggle/force line 310c indicates that the toggle instruction is a force vector instruction) upon receipt of a toggle match signal from the synchronous timer 114.
When the toggle/force line 310 is low, the inverter 342 supplies a high signal to one of the inputs of the AND gate 336. Thus, when a toggle match signal is received from the synchronous timer 114, the AND gate 336 causes the multiplexer 328 to select the long vector nibble block 318, rather than the output of the XOR gate 344, as the input to the flip- flop 346, and thus causes the values of the long vector nibble block 318 to be forced upon the output pads 12O0 rather than allowing the four bits from the multiplexer 326 to determine how the outputs should be toggled. (If the opcodes of Fig. 4 are employed, then the decoder 306 may simply provide bits "3" and "0" of the opcode as the control signals on the short toggle line 31 Ob and the toggle/force line 31 Oc, respectively).
In the example circuit shown, receipt of a toggle match signal will cause the AND gate 334 to provide the four bits from the multiplexer 326 to one of the inputs of the XOR gate 344. The XOR gate 344, in turn, causes the four bits held by the "Q" output of the flip- flop 346 to be toggled as specified by those four bits (provided the toggle/force line 310c is high). If the nibble selecto line 31Od is low when the short toggle select line 310b is high (indicating that the instruction is either a 16-bit short toggle instruction 316 or a 32-bit short toggle instruction 314) and the toggle/force select line 310c is also high, then the multiplexer 326 provides four zeros to the input of the AND gate 334, thus causing the outputs of that particular nibble to maintain their current state, and not be toggled, when the toggle match signal is received. If, however, the nibble selecto line 31Od is high (indicating that the decoder has determined that the particular output nibble for which the channel control circuit 1180 is responsible has been selected for toggling) when the short toggle select line 31 Ob and toggle/force select line 310c are both high, then the multiplexer 326 provides the four output bits of multiplexer 324 to the input of the AND gate 344, thus resulting in the output bits of that particular output nibble being toggled as indicated by those bits when the toggle match signal is received.
In some embodiments, a pattern generation program may be written using only "long" toggle instructions (several examples of such programs were disclosed in the '449 and '452 applications, incorporated by reference above) and the determination of which long toggle instructions can be converted into either 16-bit or 32-bit short toggle instructions can be left to the timing generator assembler (TGASM). For example, any toggle instructions that require the toggling of one or more bits from only a single byte may be compressed into a 32- bit toggle instruction. Similarly, any toggle instructions that require the toggling of one or more bits from only a single nibble may be compressed into 16-bit toggle instructions. The TGASM may also automatically align the remaining longer instructions in memory and insert appropriate "align" instructions in the code so as to ensure that each such instruction can be fetched in a single memory access.
Having described several embodiments of the invention in detail, various modifications and improvements will readily occur to those skilled in the art. Such modifications and improvements are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description is by way of example only, and is not intended as limiting. The invention is limited only as defined by the following claims and the equivalents thereto.

Claims

1. A method for generating a digital signal pattern at M outputs, comprising steps of: (a) retrieving a first instruction from memory comprising a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the first group of N outputs identified by the first set of bits included in the first instruction;
(b) upon the occurrence of a first event, for each of the M outputs that is included in the first group of N outputs identified by the first set of bits included in the first instruction, toggling the signal at the output if the one of the N bits corresponding to that output is in a first state and keeping the signal at the output in the same state if the one of the N bits corresponding to that output is in a second state; and
(c) for each of the M outputs that is not included in the first group of N outputs identified by the first set of bits included in the first instruction, keeping the signal at that output in the same state upon the occurrence of the first event.
2. The method of claim 1, wherein the first instruction consists of a first number of bits, and the method further comprises steps of: (d) retrieving a second instruction from memory that includes more than the first number of bits;
(e) based on the second instruction, identifying particular ones of the M outputs for which the signals thereon are to be toggled upon the occurrence of a second event; and
(f) upon the occurrence of the second event, toggling the signals on the particular ones of the M outputs that were identified by the second instruction.
3. The method of claim 2, wherein the second instruction includes twice as many bits as the first instruction.
4. The method of claim 2 or 3, further comprising steps of:
(g) retrieving a third instruction from memory comprising a first set of bits identifying a group of X outputs that includes fewer than all of the M outputs, and a second set of X bits each corresponding to a respective output included in the group of X outputs identified by the first set of bits included in the third instruction, wherein X is not equal to N; (h) upon the occurrence of a third event, for each of the M outputs that is included in the group of X outputs identified by the first set of bits included in the third instruction, toggling the signal at the output if the one of the X bits corresponding to that output is in the first state and keeping the signal at the output in the same state if the one of the X bits corresponding to that output is in the second state; and
(i) for each of the M outputs that is not included in the group of X outputs identified by the first set of bits included in the third instruction, keeping the signal at that output in the same state upon the occurrence of the third event.
5. The method of claim 4, wherein the number of bits included in the second instruction is an integer multiple of the number of bits included in the first instruction, and the number of bits included in the third instruction is an integer multiple of the number of bits include in the first instruction.
6. The method of claim 5, wherein the third instruction includes twice as many bits as the first instruction, and the second instruction includes twice as many bits as the third instruction.
7. The method of any of claims 1 -6, further comprising steps of: (d) retrieving a second instruction from memory comprising a first set of bits identifying a second group of N outputs that includes fewer than all of the M outputs and is different than the first group of N outputs, and a second set of N bits each corresponding to a respective output included in the second group of N outputs identified by the first set of bits included in the second instruction; (e) upon the occurrence of a second event, for each of the M outputs that is included in the second group of N outputs identified by the first set of bits included in the second instruction, toggling the signal at the output if the one of the N bits corresponding to that output is in the first state and keeping the signal at the output in the same state if the one of the N bits corresponding to that output is in the second state; and (f) for each of the M outputs that is not included in the second group of N outputs identified by the first set of bits included in the second instruction, keeping the signal at that output in the same state upon the occurrence of the second event.
8. The method of any of claims 1-6, further comprising steps of:
(d) retrieving a second instruction from memory comprising a first set of bits identifying a group of X outputs that includes fewer than all of the M outputs, and a second set of X bits each corresponding to a respective output included in the group of X outputs identified by the first set of bits included in the second instruction, wherein X is not equal to N;
(e) upon the occurrence of a second event, for each of the M outputs that is included in the group of X outputs identified by the first set of bits included in the second instruction, toggling the signal at the output if the one of the X bits corresponding to that output is in the first state and keeping the signal at the output in the same state if the one of the X bits corresponding to that output is in the second state; and
(f) for each of the M outputs that is not included in the group of X outputs identified by the first set of bits included in the second instruction, keeping the signal at that output in the same state upon the occurrence of the second event.
9. The method of claim 8 or 9, wherein the second instruction includes twice as many bits as the first instruction.
10. The method of any of claims 1 -9, further comprising a step of: indicating that the first event has occurred upon determining that a particular number of clock cycles have elapsed following retrieval of the first instruction.
11. The method of claim 10, further comprising a step of: identifying the particular number of clock cycles that are to elapse following receipt of the first instruction before indicating that the first event has occurred based upon a third set of bits included in the first instruction.
12. The method of claim 10, further comprising a step of: identifying the particular number of clock cycles that are to elapse following receipt of the first instruction before indicating that the first event has occurred based the content of a register.
13. The method of claim 12, further comprising a step of: identifying the register based upon at least one bit included in the first instruction.
14. An apparatus for generating a digital signal pattern at M outputs, comprising: a circuit configured and arranged to retrieve at least instructions of a first type from memory and to control the toggling of signals at the M outputs in response thereto, wherein each of the instructions of the first type comprises a first set of bits identifying a first group of N outputs that includes fewer than all of the M outputs, and a second set of N bits each corresponding to a respective output included in the first group of N outputs identified by the first set of bits included in the first instruction, the circuit being further configured and arranged to process each retrieved instruction of the first type such that, for each of the M outputs that is included in the first group of N outputs identified by the first set of bits included in the instruction, the signal at the output is toggled if the one of the N bits corresponding to that output is in a first state and is kept in the same state if the one of the N bits corresponding to that output is in a second state, and, for each of the M outputs that is not included in the first group of N outputs identified by the first set of bits included in the instruction, the signal at that output is kept in the same state.
15. The apparatus of claim 14, wherein the circuit is further configured and arranged to retrieve instructions of a second type, which comprise more bits than the instructions of the first type, from memory and to control the toggling of signals at the M outputs in response thereto, the circuit being configured to process each instruction of the second type to identify, based on the instruction, particular ones of the M outputs for which the signals thereon are to be toggled, and to toggle the signals on the particular ones of the M outputs that were identified by the second instruction.
16. The apparatus of claim 14 or 15, wherein the circuit is configured and arranged to retrieve and process instructions of the second type that include twice as many bits as instructions of the first type.
17. The apparatus of any of claims 14-17, wherein the circuit is further configured to retrieve instructions of a third type from memory and to control the toggling of signals at the M outputs in response thereto, each instruction of the third type comprising a first set of bits identifying a group of X outputs that includes fewer than all of the M outputs, and a ' second set of X bits each corresponding to a respective output included in the identified group of X outputs, wherein X is not equal to N, the circuit being further configured and arranged to process each retrieved instruction of the third type such that, for each of the M outputs that is included in the group of X outputs identified by the first set of bits included in the instruction, the signal at the output is toggled if the one of the X bits corresponding to that output is in the first state and is kept in the same state if the one of the X bits corresponding to that output is in the second state, and, for each of the M outputs that is not included in the group of X outputs identified by the first set of bits included in the instruction, the signal at that output is kept in the same state.
18. The apparatus of claim 17, wherein the circuit is configured and arranged to retrieve and process instructions of the second type that include a number of bits that is an integer multiple of the number of bits included in instructions of the first type, and to retrieve and process instructions of the third type that include a number of bits that is an integer multiple of the number of bits included in instructions of the first type.
19. The apparatus of claim 17 or 18, wherein the circuit is configured and arranged to retrieve and process instructions of the third type that include twice as many bits as instructions of the first type, and to retrieve and process instructions of the second type that include twice as many bits as instructions of the third type.
20. The apparatus of any of claims 14-19, wherein the circuit is further configured to retrieve instructions of a second type from memory and to control the toggling of signals at the M outputs in response thereto, each instruction of the second type comprising a first set of bits identifying a group of X outputs that includes fewer than all of the M outputs, and a second set of X bits each corresponding to a respective output included in the identified group of X outputs, wherein X is not equal to N, the circuit being further configured and arranged to process each retrieved instruction of the second type such that, for each of the M outputs that is included in the group of X outputs identified by the first set of bits included in the instruction, the signal at the output is toggled if the one of the X bits corresponding to that output is in the first state and is kept in the same state if the one of the X bits corresponding to that output is in the second state, and, for each of the M outputs that is not included in the group of X outputs identified by the first set of bits included in the instruction, the signal at that output is kept in the same state.
21. The apparatus of any of claims 14-20, wherein the circuit further comprises a timer configured to generate a toggle event signal a particular number of clock cycles following receipt of an instruction of the first type and is configured to control the toggling of the signals at the M outputs upon generation of the toggle event signal. ,
22. The apparatus of claim 21 , wherein the circuit is configured to determine the particular number of clock cycles the timer is to wait before generating a toggle event signal after receiving an instruction of the first type based upon the content of each instruction of the first type.
23. The apparatus of claim 21, wherein the circuit is configured to determine the particular number of clock cycles the timer is to wait before generating a toggle event signal after receiving an instruction of the first type based upon the contents of a register.
24. The apparatus of any of claims 14-23 , wherein the circuit comprises a decoder configured to interpret the instructions of the first type and provide control signals to a channel select circuit based thereupon, the channel select circuit being configured to control toggling of signals at each of the M outputs in response to the received control signals.
25. The apparatus of any of claims 14-24, further comprising a memory having at least the first instructions stored therein.
26. A method for generating a digital signal pattern at M outputs, comprising steps of: (a) retrieving a first instruction from memory that consists of N bits;
(b) based on the first instruction, identifying first ones of the M outputs for which the signals thereon are to be toggled upon the occurrence of a first event;
(c) upon the occurrence of the first event, toggling the signals on the first ones of the M outputs that were identified by the first instruction; (d) retrieving a second instruction from memory that includes more than N bits;
(e) based on the second instruction, identifying second ones of the M outputs for which the signals thereon are to be toggled upon the occurrence of a second event; and
(f) upon the occurrence of the second event, toggling the signals on the second ones of the M outputs that were identified by the second instruction.
27. The method of claim 26, further comprising steps of:
(g) indicating that the first event has occurred upon determining that a first number of clock cycles have elapsed following retrieval of the first instruction; and (h) indicating that the second event has occurred upon determining that a second number of clock cycles have elapsed following retrieval of the second instruction.
28. The method of claim 27, further comprising a step of: determining the first number of clock cycles that are to elapse following receipt of the first instruction before indicating that the first event has occurred based upon the content of a register.
29. The method of claim 28, further comprising a step of: identifying the register based upon at least one bit included in the first instruction.
30. The method of any of claims 26-29, wherein the second instruction includes twice as many bits as the first instruction.
PCT/US2008/003062 2007-03-09 2008-03-07 Variable instruction width software programmable data pattern generator WO2008112153A2 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US90600007P 2007-03-09 2007-03-09
US60/906,000 2007-03-09
US11/818,449 US8006114B2 (en) 2007-03-09 2007-06-14 Software programmable timing architecture
US11/818,452 2007-06-14
US11/818,452 US8135975B2 (en) 2007-03-09 2007-06-14 Software programmable timing architecture
US11/818,449 2007-06-14
US11/998,994 2007-12-03
US11/998,994 US8732440B2 (en) 2007-03-09 2007-12-03 Data pattern generator with selectable programmable outputs

Publications (2)

Publication Number Publication Date
WO2008112153A2 true WO2008112153A2 (en) 2008-09-18
WO2008112153A3 WO2008112153A3 (en) 2008-11-06

Family

ID=39741477

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US2008/003178 WO2008112207A2 (en) 2007-03-09 2008-03-07 Software programmable timing architecture
PCT/US2008/003062 WO2008112153A2 (en) 2007-03-09 2008-03-07 Variable instruction width software programmable data pattern generator

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/US2008/003178 WO2008112207A2 (en) 2007-03-09 2008-03-07 Software programmable timing architecture

Country Status (2)

Country Link
US (3) US8135975B2 (en)
WO (2) WO2008112207A2 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007038763A1 (en) * 2007-08-16 2009-02-19 Siemens Ag Method and device for securing a program against a control flow manipulation and against a faulty program sequence
US20100115239A1 (en) * 2008-10-29 2010-05-06 Adapteva Incorporated Variable instruction width digital signal processor
US8429114B2 (en) 2010-09-29 2013-04-23 Nokia Corporation Method and apparatus for providing low cost programmable pattern recognition
US8648952B2 (en) * 2011-02-14 2014-02-11 Analog Devices, Inc. Timing generator and method of generating timing signals
US9632777B2 (en) 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9575755B2 (en) * 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
CN108984392B (en) * 2018-06-12 2021-07-16 珠海市杰理科技股份有限公司 Single step debugging method and debugger
KR20210155228A (en) * 2020-06-15 2021-12-22 에스케이하이닉스 주식회사 Memory device and method for operating the same
CN114518902A (en) 2020-11-20 2022-05-20 马来西亚瑞天芯私人有限公司 Memory sequencer system and memory sequencing method applying same
US20220342668A1 (en) * 2021-04-27 2022-10-27 Microchip Technology Inc. System of Multiple Stacks in a Processor Devoid of an Effective Address Generator
US11782871B2 (en) 2021-04-27 2023-10-10 Microchip Technology Inc. Method and apparatus for desynchronizing execution in a vector processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0715252A1 (en) * 1994-11-14 1996-06-05 Nec Corporation A bit field peripheral

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US711115A (en) * 1899-07-06 1902-10-14 Barber Asphalt Paving Co Method of utilizing old paving material.
US3976980A (en) 1969-01-09 1976-08-24 Rockwell International Corporation Data reordering system
US3671945A (en) * 1970-09-02 1972-06-20 Honeywell Inf Systems Data message control system
US3671875A (en) 1971-05-20 1972-06-20 Bell Telephone Labor Inc Digitally operated signal regenerator and timing circuit
FR2157119A5 (en) * 1971-10-18 1973-06-01 Adret Electronique
JPS50132966A (en) * 1974-04-05 1975-10-21
US3889104A (en) * 1974-04-08 1975-06-10 Aero Ind Inc Altitude digitizer
US3974484A (en) * 1975-03-31 1976-08-10 Allen-Bradley Company Programmable sequence controller
JPS5936268B2 (en) * 1976-11-29 1984-09-03 オリンパス光学工業株式会社 Display method
JPS5924434B2 (en) 1977-10-15 1984-06-09 カシオ計算機株式会社 electronic musical instruments
US4380802A (en) 1978-05-18 1983-04-19 Gpd Inc. Electronic calorie counter
JPS54153563A (en) 1978-05-24 1979-12-03 Nec Corp Logical array circuit
JPS595478A (en) * 1982-07-02 1984-01-12 Toshiba Corp Addressing device of electronic computer
US4587415A (en) * 1982-07-23 1986-05-06 Canon Kabushiki Kaisha Photo-detecting device with storage time control
US4431925A (en) * 1982-08-11 1984-02-14 J. I. Case Company Battery jumper cable assembly
US4525803A (en) * 1982-08-12 1985-06-25 L'universite De Bordeaux 1 Method for controlling the comparison to be effected between reference logical entities and logical entities issuing from a file
JPS60207923A (en) * 1984-03-31 1985-10-19 Toshiba Corp Position detector
US5027315A (en) * 1984-09-28 1991-06-25 Advanced Micro Devices, Inc. Programmable logic array using internally generated dynamic logic signals as selection signals for controlling its functions
US5283863A (en) * 1985-10-22 1994-02-01 Texas Instruments Incorporated Process for effecting an array move instruction, a graphics computer system, a display system, a graphics processor and graphics display system
CA1279909C (en) * 1986-12-15 1991-02-05 Scott Marshall Apparatus and method for synchronizing a communication system
JPS63271180A (en) * 1987-04-30 1988-11-09 Fujitsu Ltd Testing device for integrated circuit
EP0628831B1 (en) * 1988-09-07 1998-03-18 Texas Instruments Incorporated Bidirectional boundary scan test cell
JPH0255331U (en) 1988-10-11 1990-04-20
US5134484A (en) * 1989-06-01 1992-07-28 Mindseye Educational Systems, Inc. Superimposing method and apparatus useful for subliminal messages
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
FR2653286A1 (en) * 1989-10-12 1991-04-19 Europ Agence Spatiale CODE ACQUISITION METHOD AND CIRCUIT FOR A SPREAD SPECTRUM SIGNAL RECEIVER.
JP2816248B2 (en) * 1989-11-08 1998-10-27 株式会社日立製作所 Data processor
JP2507638B2 (en) * 1989-12-01 1996-06-12 三菱電機株式会社 Data processing device
US5202844A (en) * 1990-05-22 1993-04-13 Kabushiki Kaisha Toshiba Computer having integral type hand writing input/display device and keyboard
US5295188A (en) 1991-04-04 1994-03-15 Wilson William J Public key encryption and decryption circuitry and method
US5489918A (en) * 1991-06-14 1996-02-06 Rockwell International Corporation Method and apparatus for dynamically and adjustably generating active matrix liquid crystal display gray level voltages
US5254984A (en) * 1992-01-03 1993-10-19 Tandy Corporation VGA controller for displaying images having selective components from multiple image planes
US5220215A (en) * 1992-05-15 1993-06-15 Micron Technology, Inc. Field programmable logic array with two or planes
JP3333248B2 (en) 1992-11-10 2002-10-15 株式会社東芝 Duty detection circuit
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
JPH06291760A (en) 1993-04-02 1994-10-18 Mitsubishi Electric Corp Digital signal processing system
WO1995022102A1 (en) * 1994-02-08 1995-08-17 Meridian Semiconductor, Inc. Method and apparatus for simultaneously executing instructions in a pipelined microprocessor
KR100206887B1 (en) * 1995-12-31 1999-07-01 구본준 Cpu for debugging program
US5954811A (en) * 1996-01-25 1999-09-21 Analog Devices, Inc. Digital signal processor architecture
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
JPH10214188A (en) 1997-01-30 1998-08-11 Toshiba Corp Method for supplying instruction of processor, and device therefor
US5898853A (en) * 1997-06-25 1999-04-27 Sun Microsystems, Inc. Apparatus for enforcing true dependencies in an out-of-order processor
US5850533A (en) * 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor
US5883592A (en) * 1997-12-10 1999-03-16 Sarnoff Corporation Secom Method and apparatus for remotely identifying an electronically coded article
US6097721A (en) * 1997-08-04 2000-08-01 Next Level Communications Method and apparatus for identifying signals for a set of communication devices in a signal stream having signals for a number of different sets of communication devices
US5974500A (en) * 1997-11-14 1999-10-26 Atmel Corporation Memory device having programmable access protection and method of operating the same
US6035378A (en) * 1997-12-16 2000-03-07 Ncr Corporation Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system
US5968196A (en) * 1998-04-21 1999-10-19 Atmel Corporation Configuration control in a programmable logic device using non-volatile elements
US6026141A (en) * 1998-07-16 2000-02-15 Toshiba America Electronic Components Inc. One load conditional look ahead counter
US6427024B1 (en) * 1999-04-02 2002-07-30 Beltronics, Inc. Apparatus for and method of automatic optical inspection of electronic circuit boards, wafers and the like for defects, using skeletal reference inspection and separately programmable alignment tolerance and detection parameters
EP1050809A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer instruction dependency
EP1050808B1 (en) * 1999-05-03 2008-04-30 STMicroelectronics S.A. Computer instruction scheduling
US6560754B1 (en) * 1999-05-13 2003-05-06 Arc International Plc Method and apparatus for jump control in a pipelined processor
US6378022B1 (en) * 1999-06-17 2002-04-23 Motorola, Inc. Method and apparatus for processing interruptible, multi-cycle instructions
US6285310B1 (en) * 2000-08-18 2001-09-04 Sartorius Aktiengesellschaft Integrating analog/digital converter
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6449710B1 (en) * 1999-10-29 2002-09-10 Stmicroelectronics, Inc. Stitching parcels
US7418580B1 (en) * 1999-12-02 2008-08-26 International Business Machines Corporation Dynamic object-level code transaction for improved performance of a computer
US6651176B1 (en) * 1999-12-08 2003-11-18 Hewlett-Packard Development Company, L.P. Systems and methods for variable control of power dissipation in a pipelined processor
US6590931B1 (en) 1999-12-09 2003-07-08 Koninklijke Philips Electronics N.V. Reconfigurable FIR filter using CSD coefficient representation
US6535275B2 (en) * 2000-08-09 2003-03-18 Dialog Semiconductor Gmbh High resolution 3-D imaging range finder
WO2002033504A2 (en) * 2000-10-02 2002-04-25 Altera Corporation Programmable logic integrated circuit devices including dedicated processor components
US7318145B1 (en) * 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
US6744652B2 (en) * 2001-08-22 2004-06-01 Netlogic Microsystems, Inc. Concurrent searching of different tables within a content addressable memory
US7493470B1 (en) * 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
DE10163206B4 (en) 2001-12-21 2004-03-11 Schneider Automation Gmbh Method for operating a programmable logic controller
US20030145216A1 (en) * 2002-01-25 2003-07-31 Matsushita Elec. Ind. Co., Ltd. Semiconductor integrated circuit and data carrier with said integrated circuit
US6965220B2 (en) 2002-11-14 2005-11-15 Fyre Storm, Inc. System for controlling a plurality of pulse-width-modulated switching power converters
US6976123B2 (en) 2002-12-30 2005-12-13 Micron Technology, Inc. Priority resolver and “near match” detection circuit
US6993639B2 (en) * 2003-04-01 2006-01-31 Hewlett-Packard Development Company, L.P. Processing instruction addressed by received remote instruction and generating remote instruction to respective output port for another cell
US6856527B1 (en) * 2003-05-30 2005-02-15 Netlogic Microsystems, Inc. Multi-compare content addressable memory cell
JP2005020471A (en) 2003-06-27 2005-01-20 Matsushita Electric Ind Co Ltd Start-stop communication circuit
JP4305871B2 (en) 2003-09-08 2009-07-29 富士通株式会社 Register file and storage element thereof
JP3898682B2 (en) * 2003-10-03 2007-03-28 株式会社東芝 Semiconductor integrated circuit
US7404068B2 (en) 2003-11-07 2008-07-22 Finisar Corporation Single operation per-bit memory access
US7340588B2 (en) 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US7325178B2 (en) * 2003-12-05 2008-01-29 Texas Instruments Incorporated Programmable built in self test of memory
US20050169353A1 (en) 2004-02-02 2005-08-04 Wei An Post despreading interpolation in CDMA systems
EP2348555B9 (en) * 2004-07-22 2013-05-08 Nippon Telegraph And Telephone Corporation Method for manufacturing a metal oxide thin film
US7557849B2 (en) 2004-10-11 2009-07-07 Mediatek Usa Inc Processor-controlled timing generator for multiple image sensors
US7266005B2 (en) * 2004-12-29 2007-09-04 Stmicroelectronics Pvt. Ltd. Efficient content addressable memory array for classless inter-domain routing
TWI239145B (en) 2004-12-31 2005-09-01 Univ Nat Taiwan A low-power delay-line framework and circuit
DE102005013237B4 (en) * 2005-03-22 2014-11-27 Qimonda Ag Device in a memory circuit for setting waiting times
US8085171B2 (en) * 2006-03-24 2011-12-27 University Of Mississippi High-speed data compression based on set associative cache mapping techniques
US7404126B2 (en) 2006-03-29 2008-07-22 Texas Instruments Incorporated Scan tests tolerant to indeterminate states when employing signature analysis to analyze test outputs
US8660407B2 (en) * 2006-06-14 2014-02-25 Sony Corporation Method and system for altering the presentation of recorded content
US7797503B2 (en) 2007-06-26 2010-09-14 International Business Machines Corporation Configurable memory system and method for providing atomic counting operations in a memory device
EP2188778A1 (en) * 2007-09-12 2010-05-26 Digisensory Technologies Pty Ltd. Smart network camera system-on-a-chip
US8249063B2 (en) * 2009-06-30 2012-08-21 Lsi Corporation Method and apparatus for signal formation with guaranteed consistent overhead insertion

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0715252A1 (en) * 1994-11-14 1996-06-05 Nec Corporation A bit field peripheral

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"SELECTIVE REGISTER BIT SET/RESET MECHANISM" IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 30, no. 12, 1 May 1988 (1988-05-01), pages 402-405, XP000021673 ISSN: 0018-8689 *
DIXON J D ET AL: "Programmable Instruction Cycle Time" IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 25, no. 5, 1 October 1982 (1982-10-01), page 2705, XP002165549 ISSN: 0018-8689 *

Also Published As

Publication number Publication date
WO2008112207A3 (en) 2008-11-06
US20080219112A1 (en) 2008-09-11
US8006114B2 (en) 2011-08-23
US8732440B2 (en) 2014-05-20
WO2008112207A2 (en) 2008-09-18
WO2008112153A3 (en) 2008-11-06
US8135975B2 (en) 2012-03-13
US20080222441A1 (en) 2008-09-11
US20080222444A1 (en) 2008-09-11

Similar Documents

Publication Publication Date Title
US8732440B2 (en) Data pattern generator with selectable programmable outputs
US20190108029A1 (en) Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US6839828B2 (en) SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
EP1126368B1 (en) Microprocessor with non-aligned circular addressing
US10241791B2 (en) Low energy accelerator processor architecture
TWI502492B (en) Packed data rearrangement control indexes generation processors, methods, systems, and instructions
US6601158B1 (en) Count/address generation circuitry
US9817791B2 (en) Low energy accelerator processor architecture with short parallel instruction word
JP2006079652A (en) Data processing by multiple instruction sets
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US20130246737A1 (en) SIMD Compare Instruction Using Permute Logic for Distributed Register Files
JPH04313121A (en) Instruction memory device
JP2001142697A (en) Data processor
JP2009512090A (en) High speed rotator with embedded masking and method
JPS62249226A (en) Programmable logical apparatus and method
US7313671B2 (en) Processing apparatus, processing method and compiler
US20080148018A1 (en) Shift Processing Unit
US7114055B1 (en) Reduced instruction set computer architecture with duplication of bit values from an immediate field of an instruction multiple times in a data word
US20030222886A1 (en) Methods and systems for data manipulation
TWI610234B (en) Method and apparatus for compressing a mask value
US6996702B2 (en) Processing unit with cross-coupled ALUs/accumulators and input data feedback structure including constant generator and bypass to reduce memory contention
WO2005036384A2 (en) Instruction encoding for vliw processors
CN100465880C (en) Method and programmable unit for bit field shifting
KR0167307B1 (en) Program branch control circuit
Salcic et al. Simp-Asimplecustomizable Microprocessor

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08726573

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08726573

Country of ref document: EP

Kind code of ref document: A2