Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

VHDL : Booth Multiplier Radix 4

Status
Not open for further replies.

karan123

Member level 3
Joined
Feb 2, 2009
Messages
55
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,710
Hello,


I have spent over 2 weeks for develop code of Booth Multiplier Radix 4 and I have implemented and
tested Radix -2 booth algorithm .

But I am unable to Simulate Code for Booth Multiplexer Radix 4 . I have taken ref. from net also.

Can any body help me to guide me ? How do i Simulate ?


Code VHDL - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
-----------------------VHDL code for booth multiplier radix 4 
-------------------------------------------------------------------------------- 
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.STD_LOGIC_ARITH.ALL; 
use IEEE.STD_LOGIC_SIGNED.ALL; 
use ieee.numeric_std.all; 
---- Uncomment the following library declaration if instantiating 
---- any Xilinx primitives in this code. 
--library UNISIM; 
--use UNISIM.VComponents.all; 
entity booth_encoder is 
-- generic(N : integer:=8); 
Port ( a : in std_logic_vector(7 downto 0); 
        arg : in std_logic_vector(2 downto 0); 
        pprod : out std_logic_vector(15 downto 0)); 
end booth_encoder; 
 
architecture Behavioral of booth_encoder is 
 
function encoder(arg1: std_logic_vector(2 downto 0);data:std_logic_vector (7downto 0)) 
    return std_logic_vector is 
    variable temp,temp1,temp2: std_logic_vector(8 downto 0); 
    variable sign: std_logic; 
    
begin
        case arg1 is 
        when "001"|"010" => 
                if data <0 then 
                    temp:='1'& data; 
                else 
                    temp:='0'&data; 
                end if; 
        when "011" => 
                if data<0 then 
                    temp1:='1'&data; 
                    temp:=temp1(7 downto 0)&'0'; 
                else 
                    temp:='0'&data(6 downto 0)&'0'; 
                end if ; 
        when "100" => 
                    if data<0 then 
                        temp1:='1'&data; 
                        temp2:=(not temp1)+"000000001"; 
                        temp:=(temp2(7 downto 0)&'0'); 
                    else 
                        temp1:='0'&data; 
                        temp2:=(not temp1)+"000000001"; 
                        temp:=(temp2(7 downto 0)&'0'); 
                    end if; 
            when "101"|"110" => 
            if data < 0 then 
                temp1:='1'&data; 
                temp:=not(temp1)+"000000001"; 
            else 
                    temp1:='0'&data; 
                    temp:=(not temp1)+"000000001"; 
            end if; 
            when others => 
                        temp:="000000000"  ; 
                        --"(others=>'0'); 
            end case; 
        return temp; 
end encoder; 
 
 
signal s1: std_logic_vector(8 downto 0); 
signal s2: std_logic; 
        begin 
                s1<=encoder(arg,a); 
         
end Behavioral;

 
Last edited by a moderator:

what problems are you having, other than trying to write VHDL as if it was software?

What simulator are you trying to use? Where is the testbench?
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top