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.

If I have 12 bits each 4 represent a number in binary, how do i convert it to binary?

Status
Not open for further replies.

Elctgirl

Newbie level 3
Newbie level 3
Joined
Apr 29, 2015
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
34
Hi,

How can I convert a 12 bit binary number where each 4 bits represent a character into an 8 bit binary number?

Example: 12 bit number : "001001000011" ==> 2,4,3 and I want to convert it to 243 ==> "11110011"

any help please?

What I did but still haven't reached a right answer:

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
signal output1, output2, output3 : integer range 0 to 9;
signal output11, output22 : integer range 0 to 255;
 
begin
 
process(clk)
begin
if(clk'event and clk='1') then  
    case input(11 downto 8) is
 
        when  "0000" => output1 <= 0; 
        when  "0001" => output1 <= 1;
        when  "0010" => output1 <= 2;
        when  "0011" => output1 <= 3;
        when  "0100" => output1 <= 4;
        when  "0101" => output1 <= 5;
        when  "0110" => output1 <= 6;
        when  "0111" => output1 <= 7;
        when  "1000" => output1 <= 8;
        when  "1001" => output1 <= 9;
        when  others => output1 <= 0;
    end case;
    
    case input(7 downto 4) is
 
        when  "0000" => output2 <= 0; 
        when  "0001" => output2 <= 1;
        when  "0010" => output2 <= 2;
        when  "0011" => output2 <= 3;
        when  "0100" => output2 <= 4;
        when  "0101" => output2 <= 5;
        when  "0110" => output2 <= 6;
        when  "0111" => output2 <= 7;
        when  "1000" => output2 <= 8;
        when  "1001" => output2 <= 9;
        when  others => output2 <= 0;
    end case;
    
    case input(3 downto 0) is
 
        when  "0000" => output3 <= 0; 
        when  "0001" => output3 <= 1;
        when  "0010" => output3 <= 2;
        when  "0011" => output3 <= 3;
        when  "0100" => output3 <= 4;
        when  "0101" => output3 <= 5;
        when  "0110" => output3 <= 6;
        when  "0111" => output3 <= 7;
        when  "1000" => output3 <= 8;
        when  "1001" => output3 <= 9;
        when  others => output3 <= 0;
    end case;
end if;
end process;
 
output11 <= output1*100;
output22 <= output2*10;
finaloutput <= output1+output2+output3;
output<= std_logic_vector(to_unsigned(finaloutput,8));

 
Last edited by a moderator:

What do you mean by "still haven't reached a right answer"? What are your requirements for a "right answer"?

Altough the BCD to binary operation can be described in less lines using ieee.numeric_std conversion functions, the shown code should basically work.
 

Yes I know, I tried using the conversion function but it didn't work so I used the long conversion.

I don't have a specific criteria, It's just that after I use a test bench I don't get the correct answer.
 

It's just that after I use a test bench I don't get the correct answer.
But why? We need to see the complete entity and testbench to understand the reason.
 

The only issue I see with the OP's code is the range of output1 should be restricted to 0,1, or 2 as the range of the result for output11 can not be outside the range of 0 to 255. Perhaps the range restrictions are the root of the problem.
 

Perhaps the range restrictions are the root of the problem.
I don't think so. In synthesis, casting an integer to unsigned with insufficient length would just cause a wrap around respectively discarding of the upper two bits, e.g. 256 is output as zero.

A simulator stops with an error when the overflow occurs.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top