SlideShare ist ein Scribd-Unternehmen logo
1 von 6
Downloaden Sie, um offline zu lesen
Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA


1
Rufino T. Olay III
Customer Engineer
ABSTRACT
Achieving 200 MHz multiplier data rates are easily attainable by placing the predetermined
multiplier values in RAM. This paper will explore the reconfigurablity of these multipliers and
other arithmetic functions in a Non-Volatile FPGA with embedded RAM.
INTRODUCTION
Arithmetic functions such as multipliers require many levels of logic, which have an
undesirable effect on system speed. Even with pipelining techniques, the speeds above
100MHz are hard to attain. By configuring a Dual Port RAM as a ROM, the predetermined
results of the multiplier can be loaded in one clock domain and read on another. This
technique does not require any pipelining and thereby provides the desired arithmetic output
on the next clock cycle. The three design techniques illustrated below will concentrate on
multipliers in RAM, but any arithmetic function, pattern generator or set of patterns, can be
used in its place.
Quicklogic’s QuickRAM family with its embedded RAM, routing rich architecture, and
abundant logic cells, provide an excellent platform for this type of implementation. The
technique of loading the predetermined arithmetic values into the RAM will allow the designer
to remove any gating factors associated with arithmetic functions.
FUNCTIONAL DESCRIPTION
SYSTEM LEVEL FUNCTIONALITY
The RAM in the QuickLogic QuickRAM family can be configured as a ROM, RAM or FIFO.
Two different approaches illustrate the techniques. The first method, “RAM loaded via
external EEPROM”, is the general approach to loading the RAM with the arithmetic values.
The second method, “RAM loaded via internal logic”, is a novel approach that allows the user
to load the RAM with dynamic arithmetic values.
RAM LOADED VIA EXTERNAL EEPROM
When the RAM is configured as a ROM, an external EEPROM is used to load the values as
shown in figure 1. The predetermined values of a multiplier are written to a *.rom file as per
figure 2. The RAM/ROM/FIFO Wizard found in the QuickLogic software toolset, SPDE is used
to create an HDL file that is instantiated in the design. An example of the Wizard is shown in
figure 3.
FIGURE 1. EEPROM required to load RAM
F
P
G
A
E
E
P
R
O
M
Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA


2
FIGURE 2. 4x4 Multiplier ROM File Example
// 4x4 ROM file example
rom=rom4x4
depth=256
width=8
asyncread=false
radix=binary
data
[0] = "00000000" // 4’h0 * 4’h0 = 8’h0;
.
.
[16] = "00000000" // 4’h0 * 4’hF = 8’h0;
[17] = "00000001" // 4’h1 * 4’h0 = 8’h1;
.
.
[255] = "11100001" // 4’hF * 4’hF = 8’hE1
end
FIGURE 3. RAM/ROM/FIFO Wizard
Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA


3
RAM LOADED VIA INTERNAL LOGIC
The second method is utilized when designs require the ability to have variable high-speed
arithmetic functions, but the use of an external EEPROM is either not available or prohibited.
The design can be partitioned into two major systems as shown in figure 4.
FIGURE 4. Block diagram for internal initialization
The block on the left “Low speed ckt to load RAM w/ values” initializes the Dual Port RAM and
contains three building blocks:
- counter
- multiplier
- clock divider
Circuit that handles user configureable multiplier values
In DSP functions, such as FIR and IIR filters, a frame is multiplied by a constant coefficient.
The following circuit handles the case when the multiplier value needs to be reconfigureable,
such as during debug or field upgrades.
Figure 5. Specific Block Diagram 1 for initializing RAM with internal Logic
Low speed
ckt to load
RAM w/
values
R
A
M High
speed
Data
Low
speed
Data
counter
Multiplier value
Multiplicand
CLK
Address
Data
Address
Data
Frame
Data
R
A
M
Ready
Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA


4
The high-speed clock is divided and then fed to the clock inputs of the multiplier and counter.
After the reset has been de-asserted, the counter will cycle through all the values. The
counter is used to represent all the input values of a multiplier. For instance, an 8-bit value
has 256 permutations.
The count values are used in two places:
- Address pointer for the RAM
- Multiplicands for the multiplier
The count values are sent to the multiplier as the multiplicands, and then multiplied with the
user-supplied multiplier value. The user-supplied multiplier value need be valid only for one
cycle and then latched. Table 1 shows the address value as a function of the counter output.
It also shows the constant multiplier value, 8 bit multiplicand value and result of the multiplier
User Entered
Multiplier Value
Counter Value
= Address
Pointer (8-bit
wide
Multiplicand)
Data
(Multiplier Output)
9 0 0
9 1 9
9 2 18
9 254 2286
9 255 2295
Table 1. Multiplier, Multiplicand, Resulting Output
The result 2295 translates to a 12-bit result. QuickLogic’s RAM blocks can be configured as:
- 64x18, 128x9, 256x4, 512x2
For this application 3 RAM blocks are concatenated to implement the above configuration as a
256x12 RAM block. To do this the RAM Wizard is employed to automatically create the
256x12 RAM. The output of the Wizard is an HDL, that is instantiated inside the top level
design.
The Ready signal is asserted upon the completion of the initialization of the RAM.
Figure 6. Creating a 256x12 RAM block from the RAM Wizard
Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA


5
Circuit that handles constant multiplier values
In designs that do not require re-configurable multipliers but still require the high-speed
characteristics of a ROM, the configuration below is appropriate.
The design shown in figure 7 utilizes a counter and a multiplier to load the Dual Port RAM.
The counter width equals the total number of bits to be multiplied. For instance, a 4x4
multiplier would require an 8-bit counter. The counter is split in half. Bits [3:0] represent the
multiplier value and bits [7:4] represent the multiplicand.
As the counter sequences through the count values, each half of the counter bits are sent to
the multiplier. This same value is also used as the address pointer. See Table 2 for details.
After cycling through the count values the Ready signal is asserted to indicate the completion
of the initialization of the RAM.
Figure 7. Specific Block Diagram 2 for initializing RAM with internal Logic
counter
LSBs MSBs
CLK
Address
Data
Address
Data
Frame
Data
R
A
M
Ready
Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA


6
MSB of counter LSB of counter Address Data
Multiplier Outputs
0 0 0 0
0 1 1 0
. . . .
0 15 15 0
1 0 16 0
1 1 17 1
. . . .
15 15 255 E1
Table 2. Counter Values, Address and Output Values
RESULTS
Below is a matrix that shows the different clock rates achievable for the various multiplier
types. By placing the arithmetic functions in RAM, performance was increased at least two
fold.
Multiplier Type Clock Rate (MHz) Speed Grade
4x4 (non piped) 87 -4
4x4 in RAM 200 -4
4’h9 * 8 bit
multiplicand
(non-piped)
95 -4
4’h9 * 8 bit in
RAM
200 -4
SUMMARY
As was shown, there are many different approaches to achieving very fast arithmetic
functions, three of which were proposed here. The predetermined output values of arithmetic
functions can be placed in RAM as a ROM. This provides the user with an extremely fast
arithmetic operation without pipelining. These techniques employ only a limited amount of
complementary logic, but garner the added value of a much faster sampling rate. Gating
factors concerning arithmetic operations are removed and are now replaced by 200 MHz, full
functional solutions.

Weitere ähnliche Inhalte

Was ist angesagt?

Instruction codes and computer registers
Instruction codes and computer registersInstruction codes and computer registers
Instruction codes and computer registersmahesh kumar prajapat
 
Chapter 4 the processor
Chapter 4 the processorChapter 4 the processor
Chapter 4 the processors9007912
 
05 instruction set design and architecture
05 instruction set design and architecture05 instruction set design and architecture
05 instruction set design and architectureWaqar Jamil
 
Data Manipulation
Data ManipulationData Manipulation
Data ManipulationAsfi Bhai
 
Computer organization and architecture
Computer organization and architectureComputer organization and architecture
Computer organization and architectureSubesh Kumar Yadav
 
isa architecture
isa architectureisa architecture
isa architectureAJAL A J
 
Verilog hdl design examples
Verilog hdl design examplesVerilog hdl design examples
Verilog hdl design examplesdennis gookyi
 
Cisc vs risc
Cisc vs riscCisc vs risc
Cisc vs riscKumar
 
4th sem,(cs is),computer org unit-7
4th sem,(cs is),computer org unit-74th sem,(cs is),computer org unit-7
4th sem,(cs is),computer org unit-7Sujay pai
 
Computer organiztion4
Computer organiztion4Computer organiztion4
Computer organiztion4Umang Gupta
 
Ch8 (1) morris mano
Ch8 (1) morris manoCh8 (1) morris mano
Ch8 (1) morris manoKIRTI89
 
CICS basic mapping support - session 3
CICS basic mapping support - session 3CICS basic mapping support - session 3
CICS basic mapping support - session 3Srinimf-Slides
 
Computer organization basics
Computer organization  basicsComputer organization  basics
Computer organization basicsDeepak John
 

Was ist angesagt? (20)

CO by Rakesh Roshan
CO by Rakesh RoshanCO by Rakesh Roshan
CO by Rakesh Roshan
 
Instruction codes and computer registers
Instruction codes and computer registersInstruction codes and computer registers
Instruction codes and computer registers
 
Chapter 4 the processor
Chapter 4 the processorChapter 4 the processor
Chapter 4 the processor
 
05 instruction set design and architecture
05 instruction set design and architecture05 instruction set design and architecture
05 instruction set design and architecture
 
Data Manipulation
Data ManipulationData Manipulation
Data Manipulation
 
Computer organization and architecture
Computer organization and architectureComputer organization and architecture
Computer organization and architecture
 
DMA
DMADMA
DMA
 
Pipeline r014
Pipeline   r014Pipeline   r014
Pipeline r014
 
isa architecture
isa architectureisa architecture
isa architecture
 
Verilog hdl design examples
Verilog hdl design examplesVerilog hdl design examples
Verilog hdl design examples
 
Cisc vs risc
Cisc vs riscCisc vs risc
Cisc vs risc
 
PortfolioJan2
PortfolioJan2PortfolioJan2
PortfolioJan2
 
4th sem,(cs is),computer org unit-7
4th sem,(cs is),computer org unit-74th sem,(cs is),computer org unit-7
4th sem,(cs is),computer org unit-7
 
Sap 1
Sap 1Sap 1
Sap 1
 
Computer organiztion4
Computer organiztion4Computer organiztion4
Computer organiztion4
 
Computer architecture
Computer architectureComputer architecture
Computer architecture
 
Ch8 (1) morris mano
Ch8 (1) morris manoCh8 (1) morris mano
Ch8 (1) morris mano
 
CICS basic mapping support - session 3
CICS basic mapping support - session 3CICS basic mapping support - session 3
CICS basic mapping support - session 3
 
MICROPROCESSOR
MICROPROCESSORMICROPROCESSOR
MICROPROCESSOR
 
Computer organization basics
Computer organization  basicsComputer organization  basics
Computer organization basics
 

Ähnlich wie DSA0064839

16bit RISC Processor
16bit RISC Processor16bit RISC Processor
16bit RISC ProcessorShashi Suman
 
CS150_Project Report
CS150_Project ReportCS150_Project Report
CS150_Project ReportJingwei You
 
4bit pc report[cse 08-section-b2_group-02]
4bit pc report[cse 08-section-b2_group-02]4bit pc report[cse 08-section-b2_group-02]
4bit pc report[cse 08-section-b2_group-02]shibbirtanvin
 
4bit PC report
4bit PC report4bit PC report
4bit PC reporttanvin
 
ece260project.doc
ece260project.docece260project.doc
ece260project.docFanyu Yang
 
Implementation of PCI Target Controller Interfacing with Asynchronous SRAM
Implementation of PCI Target Controller Interfacing with Asynchronous SRAMImplementation of PCI Target Controller Interfacing with Asynchronous SRAM
Implementation of PCI Target Controller Interfacing with Asynchronous SRAMIOSR Journals
 
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III The 8051 Microcontrollers
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III  The 8051 MicrocontrollersSYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III  The 8051 Microcontrollers
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III The 8051 MicrocontrollersArti Parab Academics
 
pdfslide.net_morris-mano-ppt.ppt
pdfslide.net_morris-mano-ppt.pptpdfslide.net_morris-mano-ppt.ppt
pdfslide.net_morris-mano-ppt.pptSaurabhPorwal14
 
Target updated track f
Target updated   track fTarget updated   track f
Target updated track fAlona Gradman
 
Chip Ex2010 Gert Goossens
Chip Ex2010 Gert GoossensChip Ex2010 Gert Goossens
Chip Ex2010 Gert GoossensAlona Gradman
 
FPGA based QDR-II+ SRAM Controller
FPGA based QDR-II+ SRAM ControllerFPGA based QDR-II+ SRAM Controller
FPGA based QDR-II+ SRAM Controlleriosrjce
 
Pragmatic Optimization in Modern Programming - Ordering Optimization Approaches
Pragmatic Optimization in Modern Programming - Ordering Optimization ApproachesPragmatic Optimization in Modern Programming - Ordering Optimization Approaches
Pragmatic Optimization in Modern Programming - Ordering Optimization ApproachesMarina Kolpakova
 
Improving Code Compression Efficiency of MIPS32 Processor using Modified ISA
Improving Code Compression Efficiency of MIPS32 Processor using Modified ISAImproving Code Compression Efficiency of MIPS32 Processor using Modified ISA
Improving Code Compression Efficiency of MIPS32 Processor using Modified ISAIJMTST Journal
 
A DSP technical challange for an FPGA Engineer
A DSP technical challange for an FPGA EngineerA DSP technical challange for an FPGA Engineer
A DSP technical challange for an FPGA EngineerMaikon
 
8 bit Microprocessor with Single Vectored Interrupt
8 bit Microprocessor with Single Vectored Interrupt8 bit Microprocessor with Single Vectored Interrupt
8 bit Microprocessor with Single Vectored InterruptHardik Manocha
 
Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...
Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...
Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...Bharath Sudharsan
 
Microprocessor Architecture-III
Microprocessor Architecture-IIIMicroprocessor Architecture-III
Microprocessor Architecture-IIIDr.YNM
 

Ähnlich wie DSA0064839 (20)

002079
002079002079
002079
 
16bit RISC Processor
16bit RISC Processor16bit RISC Processor
16bit RISC Processor
 
CS150_Project Report
CS150_Project ReportCS150_Project Report
CS150_Project Report
 
4bit pc report[cse 08-section-b2_group-02]
4bit pc report[cse 08-section-b2_group-02]4bit pc report[cse 08-section-b2_group-02]
4bit pc report[cse 08-section-b2_group-02]
 
4bit PC report
4bit PC report4bit PC report
4bit PC report
 
ece260project.doc
ece260project.docece260project.doc
ece260project.doc
 
Implementation of PCI Target Controller Interfacing with Asynchronous SRAM
Implementation of PCI Target Controller Interfacing with Asynchronous SRAMImplementation of PCI Target Controller Interfacing with Asynchronous SRAM
Implementation of PCI Target Controller Interfacing with Asynchronous SRAM
 
PLc Memory & Addressing
 PLc Memory & Addressing  PLc Memory & Addressing
PLc Memory & Addressing
 
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III The 8051 Microcontrollers
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III  The 8051 MicrocontrollersSYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III  The 8051 Microcontrollers
SYBSC IT SEM IV EMBEDDED SYSTEMS UNIT III The 8051 Microcontrollers
 
AT89 S52
AT89 S52AT89 S52
AT89 S52
 
pdfslide.net_morris-mano-ppt.ppt
pdfslide.net_morris-mano-ppt.pptpdfslide.net_morris-mano-ppt.ppt
pdfslide.net_morris-mano-ppt.ppt
 
Target updated track f
Target updated   track fTarget updated   track f
Target updated track f
 
Chip Ex2010 Gert Goossens
Chip Ex2010 Gert GoossensChip Ex2010 Gert Goossens
Chip Ex2010 Gert Goossens
 
FPGA based QDR-II+ SRAM Controller
FPGA based QDR-II+ SRAM ControllerFPGA based QDR-II+ SRAM Controller
FPGA based QDR-II+ SRAM Controller
 
Pragmatic Optimization in Modern Programming - Ordering Optimization Approaches
Pragmatic Optimization in Modern Programming - Ordering Optimization ApproachesPragmatic Optimization in Modern Programming - Ordering Optimization Approaches
Pragmatic Optimization in Modern Programming - Ordering Optimization Approaches
 
Improving Code Compression Efficiency of MIPS32 Processor using Modified ISA
Improving Code Compression Efficiency of MIPS32 Processor using Modified ISAImproving Code Compression Efficiency of MIPS32 Processor using Modified ISA
Improving Code Compression Efficiency of MIPS32 Processor using Modified ISA
 
A DSP technical challange for an FPGA Engineer
A DSP technical challange for an FPGA EngineerA DSP technical challange for an FPGA Engineer
A DSP technical challange for an FPGA Engineer
 
8 bit Microprocessor with Single Vectored Interrupt
8 bit Microprocessor with Single Vectored Interrupt8 bit Microprocessor with Single Vectored Interrupt
8 bit Microprocessor with Single Vectored Interrupt
 
Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...
Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...
Enabling Machine Learning on the Edge using SRAM Conserving Efficient Neural ...
 
Microprocessor Architecture-III
Microprocessor Architecture-IIIMicroprocessor Architecture-III
Microprocessor Architecture-III
 

DSA0064839

  • 1. Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA   1 Rufino T. Olay III Customer Engineer ABSTRACT Achieving 200 MHz multiplier data rates are easily attainable by placing the predetermined multiplier values in RAM. This paper will explore the reconfigurablity of these multipliers and other arithmetic functions in a Non-Volatile FPGA with embedded RAM. INTRODUCTION Arithmetic functions such as multipliers require many levels of logic, which have an undesirable effect on system speed. Even with pipelining techniques, the speeds above 100MHz are hard to attain. By configuring a Dual Port RAM as a ROM, the predetermined results of the multiplier can be loaded in one clock domain and read on another. This technique does not require any pipelining and thereby provides the desired arithmetic output on the next clock cycle. The three design techniques illustrated below will concentrate on multipliers in RAM, but any arithmetic function, pattern generator or set of patterns, can be used in its place. Quicklogic’s QuickRAM family with its embedded RAM, routing rich architecture, and abundant logic cells, provide an excellent platform for this type of implementation. The technique of loading the predetermined arithmetic values into the RAM will allow the designer to remove any gating factors associated with arithmetic functions. FUNCTIONAL DESCRIPTION SYSTEM LEVEL FUNCTIONALITY The RAM in the QuickLogic QuickRAM family can be configured as a ROM, RAM or FIFO. Two different approaches illustrate the techniques. The first method, “RAM loaded via external EEPROM”, is the general approach to loading the RAM with the arithmetic values. The second method, “RAM loaded via internal logic”, is a novel approach that allows the user to load the RAM with dynamic arithmetic values. RAM LOADED VIA EXTERNAL EEPROM When the RAM is configured as a ROM, an external EEPROM is used to load the values as shown in figure 1. The predetermined values of a multiplier are written to a *.rom file as per figure 2. The RAM/ROM/FIFO Wizard found in the QuickLogic software toolset, SPDE is used to create an HDL file that is instantiated in the design. An example of the Wizard is shown in figure 3. FIGURE 1. EEPROM required to load RAM F P G A E E P R O M
  • 2. Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA   2 FIGURE 2. 4x4 Multiplier ROM File Example // 4x4 ROM file example rom=rom4x4 depth=256 width=8 asyncread=false radix=binary data [0] = "00000000" // 4’h0 * 4’h0 = 8’h0; . . [16] = "00000000" // 4’h0 * 4’hF = 8’h0; [17] = "00000001" // 4’h1 * 4’h0 = 8’h1; . . [255] = "11100001" // 4’hF * 4’hF = 8’hE1 end FIGURE 3. RAM/ROM/FIFO Wizard
  • 3. Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA   3 RAM LOADED VIA INTERNAL LOGIC The second method is utilized when designs require the ability to have variable high-speed arithmetic functions, but the use of an external EEPROM is either not available or prohibited. The design can be partitioned into two major systems as shown in figure 4. FIGURE 4. Block diagram for internal initialization The block on the left “Low speed ckt to load RAM w/ values” initializes the Dual Port RAM and contains three building blocks: - counter - multiplier - clock divider Circuit that handles user configureable multiplier values In DSP functions, such as FIR and IIR filters, a frame is multiplied by a constant coefficient. The following circuit handles the case when the multiplier value needs to be reconfigureable, such as during debug or field upgrades. Figure 5. Specific Block Diagram 1 for initializing RAM with internal Logic Low speed ckt to load RAM w/ values R A M High speed Data Low speed Data counter Multiplier value Multiplicand CLK Address Data Address Data Frame Data R A M Ready
  • 4. Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA   4 The high-speed clock is divided and then fed to the clock inputs of the multiplier and counter. After the reset has been de-asserted, the counter will cycle through all the values. The counter is used to represent all the input values of a multiplier. For instance, an 8-bit value has 256 permutations. The count values are used in two places: - Address pointer for the RAM - Multiplicands for the multiplier The count values are sent to the multiplier as the multiplicands, and then multiplied with the user-supplied multiplier value. The user-supplied multiplier value need be valid only for one cycle and then latched. Table 1 shows the address value as a function of the counter output. It also shows the constant multiplier value, 8 bit multiplicand value and result of the multiplier User Entered Multiplier Value Counter Value = Address Pointer (8-bit wide Multiplicand) Data (Multiplier Output) 9 0 0 9 1 9 9 2 18 9 254 2286 9 255 2295 Table 1. Multiplier, Multiplicand, Resulting Output The result 2295 translates to a 12-bit result. QuickLogic’s RAM blocks can be configured as: - 64x18, 128x9, 256x4, 512x2 For this application 3 RAM blocks are concatenated to implement the above configuration as a 256x12 RAM block. To do this the RAM Wizard is employed to automatically create the 256x12 RAM. The output of the Wizard is an HDL, that is instantiated inside the top level design. The Ready signal is asserted upon the completion of the initialization of the RAM. Figure 6. Creating a 256x12 RAM block from the RAM Wizard
  • 5. Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA   5 Circuit that handles constant multiplier values In designs that do not require re-configurable multipliers but still require the high-speed characteristics of a ROM, the configuration below is appropriate. The design shown in figure 7 utilizes a counter and a multiplier to load the Dual Port RAM. The counter width equals the total number of bits to be multiplied. For instance, a 4x4 multiplier would require an 8-bit counter. The counter is split in half. Bits [3:0] represent the multiplier value and bits [7:4] represent the multiplicand. As the counter sequences through the count values, each half of the counter bits are sent to the multiplier. This same value is also used as the address pointer. See Table 2 for details. After cycling through the count values the Ready signal is asserted to indicate the completion of the initialization of the RAM. Figure 7. Specific Block Diagram 2 for initializing RAM with internal Logic counter LSBs MSBs CLK Address Data Address Data Frame Data R A M Ready
  • 6. Re-configurable High Speed Arithmetic Functions in a Non-Volatile FPGA   6 MSB of counter LSB of counter Address Data Multiplier Outputs 0 0 0 0 0 1 1 0 . . . . 0 15 15 0 1 0 16 0 1 1 17 1 . . . . 15 15 255 E1 Table 2. Counter Values, Address and Output Values RESULTS Below is a matrix that shows the different clock rates achievable for the various multiplier types. By placing the arithmetic functions in RAM, performance was increased at least two fold. Multiplier Type Clock Rate (MHz) Speed Grade 4x4 (non piped) 87 -4 4x4 in RAM 200 -4 4’h9 * 8 bit multiplicand (non-piped) 95 -4 4’h9 * 8 bit in RAM 200 -4 SUMMARY As was shown, there are many different approaches to achieving very fast arithmetic functions, three of which were proposed here. The predetermined output values of arithmetic functions can be placed in RAM as a ROM. This provides the user with an extremely fast arithmetic operation without pipelining. These techniques employ only a limited amount of complementary logic, but garner the added value of a much faster sampling rate. Gating factors concerning arithmetic operations are removed and are now replaced by 200 MHz, full functional solutions.