FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > FPGA

FPGA comp.arch.fpga newsgroup (usenet)

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 07-03-2006, 06:27 PM
Robin Bruce
Guest
 
Posts: n/a
Default Inferring multiple-DSP48 pipelined multiplier in VHDL

Hi Guys,

I'm having trouble with the following problem:

I'm trying to create a 35x35 signed multiplier from DSP48s, inferring
pipelining in VHDL by adding registers after the multilplication
operation as seen below in the VHDL I'm using.

The problem is that when I synthesise, though I can see that the
synthesiser has noticed that it can shift registers about:

Synthesizing (advanced) Unit <signed_mult_TOP>.
Found pipelined multiplier on signal <mult_inst/_n0000>:
- 2 pipeline level(s) found in a register connected to the multiplier
macro output.
Pushing register(s) into the multiplier macro.

- 2 pipeline level(s) found in a register on signal <mult_inst/A2>.
Pushing register(s) into the multiplier macro.

- 2 pipeline level(s) found in a register on signal <mult_inst/B2>.
Pushing register(s) into the multiplier macro.

the clock rate achieved is still only a meagre 81.171MHz. I'll save my
half-baked hypotheses for now and see if anyone knows what's up here.
Any help you can give would be very much appreciated.

Robin

VHDL:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;

ENTITY signed_mult_35x35 IS
generic (PIPE: natural);
port (
clk: IN std_logic;
a: IN signed(34 downto 0);
b: IN signed(34 downto 0);
o: OUT signed(69 downto 0));
END signed_mult_35x35;

ARCHITECTURE signed_mult_35x35_a OF signed_mult_35x35 IS

signal A2 : signed(34 downto 0);

signal B2 : signed(34 downto 0);

subtype mult_result is signed(69 downto 0);
type mult_result_array is array (0 to PIPE - 2) of mult_result;



signal pipeline_array : mult_result_array;

BEGIN

o <= pipeline_array(PIPE - 2);

reg: process(CLK) begin
if(rising_edge(CLK)) then
A2 <= a;
B2 <= b;
pipeline_array(0) <= A2 * B2;
for i in 1 to PIPE - 2 loop
pipeline_array(i) <= pipeline_array(i-1);
end loop;
-- Registering should be fused into DSP48-inferred multiply operation
end if;
end process;

END signed_mult_35x35_a;

Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Inferring a pipelined multiplexer Uwe Bonnes Verilog 3 03-08-2007 10:03 PM
Code for Verilog 8bit * 8bit pipelined multiplier [email protected] Verilog 4 11-11-2006 08:29 PM
Inferring multiple-DSP48 pipelined multiplier in VHDL Robin Bruce FPGA 13 07-06-2006 04:49 PM
VHDL code For Floating point adder and Multiplier mailmekaran FPGA 3 06-05-2006 01:15 AM
To use adder and multiplier of DSP48 in V4 vssumesh FPGA 3 04-13-2006 07:26 AM


All times are GMT +1. The time now is 10:50 PM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved