DSP Modulo Address Generation for Matrix Column Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing address generation units for digital signal processors are inefficient in generating address sequences for accessing matrix elements column by column, requiring additional cycles and complex hardware or programming to correctly address all elements, especially the last element in a matrix.

Innovation Solution

A device with an adder, subtractor, and multiplexer that generates addresses by adding an increment and subtracting a modulo, with a modified multiplexer condition to select the first address if the second address is lower than or equal to zero, allowing efficient column-wise addressing with minimal additional resources.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a standard modulo address generation unit is used, then linear addressing is efficient, but column-wise addressing requires additional cycles and complex hardware

Engineering Contradiction:
Improveaddress generation efficiencyVSAvoidhardware complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The invention changes the selection criterion parameter from 'second address < 0' to 'second address ≤ 0'. This parameter modification enables the same hardware to correctly generate column-wise address sequences without requiring additional complex logic or multiple cycles, thereby resolving the contradiction between addressing efficiency and hardware complexity

Inventive Principle:
Principle #35Parameter changes

2Reliability

If a standard modulo address generation unit is used, then simple addressing works correctly, but the last element in column-wise addressing cannot be directly addressed

Engineering Contradiction:
Improveaddressing correctnessVSAvoidaddressing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

By modifying the multiplexer selection condition to include equality ('≤ 0' instead of '< 0'), the invention ensures that when the second address equals zero (which occurs at the last element in column-wise addressing), the first address is selected. This guarantees correct addressing of the last element while maintaining single-cycle operation, thus resolving the contradiction between reliability and productivity

Inventive Principle:
Principle #35Parameter changes

3Reliability

If additional hardware is added to support column-wise addressing, then all elements can be addressed correctly, but implementation complexity increases

Engineering Contradiction:
Improveaddressing correctnessVSAvoidimplementation complexity
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The invention avoids adding any hardware by simply changing the software parameter (the comparison condition in the multiplexer control logic) from '< 0' to '≤ 0'. This minimal change enables correct column-wise addressing of all elements including the last element, while keeping implementation complexity low and maintaining ease of manufacture

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS7631164B2Modulo arithmetic
Publication Date: 2009.12.08 SEMICON COMPONENTS IND LLC
  • US7631164B2 patent drawing
  • US7631164B2 patent drawing
  • US7631164B2 patent drawing

AI summary

A modulo arithmetic (61) for generating the addresses for accessing the memory cells of a memory in a DSP (digital signal processor) includes three inputs: an input address (30), an increment (31) and a modulo value (33). The next address (36) is generated based on these inputs as follows. An adder (22) generates a first address (32) by adding the input address (30) and the increment (31) and a second address (34) is generated by subtracting the modulo (33) from the first address (32) by means of the subtractor (23). The comparator (45) checks whether the second address is lower than or equal to zero and if so, the multiplexer (24) outputs the first address at its output (36). If the second address is higher than zero, the multiplexer (24) is controlled such that it outputs the second address (34). A further comparator (63) compares the input address (30) and the modulo (33). If the input address (30) is different from the modulo (33), the multiplexer (64) generates the next output address (66) by selecting the output (36) of the multiplexer (24) and if the input address (30) is equal to the modulo (33) the multiplexer (64) generates the next output address (66) by selecting the constant value “0” (67) inputted at a second input of the multiplexer (64). This modulo arithmetic allows to directly and repeatedly access the elements of a matrix stored in a digital memory row by row in a direction of its columns.