Verilog HDL: Semi-Parallel Variable Coefficient Soft Multiplier
This design implements 16-bit input, 14-bit variable coefficient semi-parallel multiplication using M512 RAM blocks as look-up tables (LUTs). For more details on the design, refer to AN 306: Implementing Multipliers in FPGA Devices.
Download the file(s) used in this example:
Table 1 shows the Semi-Parallel Variable Soft Multiplier design example port listing.
|
Table 1. Semi-Parallel Variable Soft Multiplier Port Listing
|
|
Port Name
|
Type
|
Description
|
|
data_in[15..0]
|
Input
|
The input is a 16-bit signed value. New data can be updated every four clock cycles.
|
|
sload_data
|
Input
|
Active high. Specifies a new multiplication operation and cancels any existing multiplication operation.
|
|
coef_in[17..0]
|
Input
|
Coefficient update data port. Pre-calculated coefficient values on this port will be stored in to locations specified by coef_add_in when the coef_wren signal is enabled.
|
|
coef_add_in[4..0]
|
Input
|
Coefficient update address port. This specifies which address location a particular pre-calculated coefficient value is written to.
|
|
coef_wren
|
Input
|
Coefficient write/update enable. If coef_wren is high, the RAM blocks will start to accept pre-calculated coefficient values on the coef_in port and store them in the locations specified by the coef_add_in signal. This signal has to remain high till all the pre-calculated coefficient values have been updated in the RAM blocks.
|
|
clock
|
Input
|
Clock
|
|
sclr
|
Input
|
Active high synchronous clear
|
|
result[29..0]
|
Output
|
The output is a 30-bit signed value.
|
|
result_valid
|
Output
|
Indicates when the output is the valid result of a complete multiplication. The signal will go high for the time that the output is valid.
|
For more information on using this example in your project, go to:
Feedback
Did this information help you?
If not, please log onto mySupport to file a technical request or enhancement.
Altera does not warrant that this example will work for the customer's intended purpose and disclaims all liability for use of or reliance on the example.
|