EmbDev.net

Forum: FPGA, VHDL & Verilog help with multiplier


von sreeram s. (sresam89)


Rate this post
useful
not useful
the program is for a  simple multiplier using addition of the partial 
products. i find problem only with final addition part pls help me out
1
architecture Behavioral of new_twin1 is
2
type arr is array (3 downto 0) of std_logic_vector(3 downto 0);
3
type arr2 is array(4 downto 0) of std_logic_vector(7 downto 0);
4
signal and_1:arr:=("0000","0000","0000","0000");
5
signal t6:arr2:=("00000000","00000000","00000000","00000000","00000000");
6
signal temp:std_logic_vector(3 downto 0);
7
signal sum:std_logic_vector(7 downto 0):="00000000";
8
begin
9
process(clk)
10
variable z,t,k:integer;
11
variable t2:std_logic_vector(3 downto 0):="0000";
12
variable t7:std_logic_vector(7 downto 0);--:="00000000";
13
begin
14
for i in 0 to 3 loop
15
t6(i)(7 downto 0)<=("00000000");
16
end loop;
17
for i in 0 to 3 loop
18
 for j in 0 to 3 loop
19
  and_1(i)(j)<=(x(i) and y(j));
20
 end loop;
21
end loop;
22
t6(3)<=  "0000" & and_1(0);
23
k:=0; 
24
for i in 2 downto 0 loop
25
 t6(i)<=t2( i downto 0) & and_1(k+1) & t2(k downto 0);
26
 k:=k+1;
27
end loop;
28
for i in 0 to 3 loop
29
 t6(4)<=t6(4)+t6(i);
30
end loop
31
----just tried this alternative which too dint work---
32
--  t6(4)<=t6(0);
33
--  t6(4)<=t6(4)+t6(1);
34
--  t6(4)<=t6(4)+t6(2);
35
--  t6(4)<=t6(4)+t6(3);
36
end process;
37
end Behavioral;

the final for loop for addition is giving me a gig-up.when i try to 
access one variable inside the array am able to retrieve it but while 
adding to the same, the total value tends to undefined(XXXXXXXX).
please suggest any modification
thanks in advance

von Duke Scarring (Guest)


Rate this post
useful
not useful
Can you provide a working testbench?

Duke

von sreeram s. (sresam89)


Rate this post
useful
not useful
Duke Scarring wrote:
> Can you provide a working testbench?
>
> Duke

i did not get you

moreover i solved it by changing the data types for t6 to variable 
rather using signal

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
> process(clk)
Your process isn't sensitive to the clock.
So your sensitivity list is WRONG and therfore the whole simulation is 
completely WRONG.


> moreover i solved it by changing the data types for t6 to variable
> rather using signal
Sounds like "I'm digging for gold, but don't know where"....

von sreeram s. (sresam89)


Rate this post
useful
not useful
Lothar Miller wrote:
>> process(clk)
> Your process isn't sensitive to the clock.
> So your sensitivity list is WRONG and therfore the whole simulation is
> completely WRONG.
>
>
>> moreover i solved it by changing the data types for t6 to variable
>> rather using signal
> Sounds like "I'm digging for gold, but don't know where"....

SORRRY MORE OR LESS THE SAME :)

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.