Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > binary to bcd conversion (12 bit to 4 digit)

Reply
Thread Tools

binary to bcd conversion (12 bit to 4 digit)

 
 
raja_bade raja_bade is offline
Junior Member
Join Date: May 2008
Posts: 2
 
      07-31-2008
Dear friends, May this code help people who need bin to bcd.. Algorithm used is shift and add3

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.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 bintobcd is
Port ( bindata : in STD_LOGIC_VECTOR (11 downto 0);
clk : in STD_LOGIC;
reset: in std_logic;
t11,t22,t33,t44: out integer);
end bintobcd;

architecture Behavioral of bintobcd is
signal temp: std_logic_vector(11 downto 0):="000000000000";
signal temp1: std_logic_vector(15 downto 0):="0000000000000000";
signal shcntr: integer:=0;
--signal i1,i2,i3,i4: integer:=0;
signal state: integer range 0 to 5;
begin
--
process
begin
wait until clk='1';

case state is

when 0 => if reset='0' then
temp<=bindata;
shcntr<=0;
temp1<=(others =>'0');
state<=1;
end if;


when 1 => if shcntr/=12 then
temp1<=temp1(14 downto 0) & temp(11);
temp<=temp(10 downto 0) & '0';
shcntr<=shcntr+1;
state<=2;
end if;

when 2=> if shcntr<12 then
if temp1(3 downto 0)>="0101" then
state<=3;
elsif temp1(7 downto 4)>="0101" then
state<=4;
elsif temp1(11 downto >="0101" then
state<=5;
else
state<=1;
end if;
else
state<=0;
end if;


when 3=> temp1(3 downto 0)<=temp1(3 downto 0)+"0011";
if temp1(7 downto 4)>="0101" then
temp1(7 downto 4)<=temp1(7 downto 4)+"0011";
state<=1;
elsif temp1(11 downto >="0101" then
temp1(11 downto <=temp1(11 downto +"0011";
state<=1;
else
state<=1;
end if;

when 4=> temp1(7 downto 4)<=temp1(7 downto 4)+"0011";
if temp1(11 downto >="0101" then
temp1(11 downto <=temp1(11 downto +"0011";
state<=1;
elsif temp1(3 downto 0)>="0101" then
temp1(3 downto 0)<=temp1(3 downto 0)+"0011";
state<=1;
else
state<=1;
end if;



when 5=> temp1(11 downto <=temp1(11 downto +"0011";
if temp1(3 downto 0)>="0101" then
temp1(3 downto 0)<=temp1(3 downto 0)+"0011";
state<=1;
elsif temp1(7 downto 4)>="0101" then
temp1(7 downto 4)<=temp1(7 downto 4)+"0011";
state<=1;
else
state<=1;
end if;



end case;
end process;
process(shcntr,clk)
begin
if shcntr=12 then
if clk'event and clk='1' then
t44<=conv_integer(temp1(15 downto 12));
t33<=conv_integer(temp1(11 downto );
t22<=conv_integer(temp1(7 downto 4));
t11<=conv_integer(temp1(3 downto 0));
end if;
end if;
end process;

end Behavioral;
 
Reply With Quote
 
 
 
 
jeppe jeppe is offline
Senior Member
Join Date: Mar 2008
Location: Denmark
Posts: 346
 
      07-31-2008
This VHDL code look more like a program for a CPU and the same is true for the algoritm. Its bound to give you problems as you noticed.

Try to visit this page for inspiration. A conversion like of 12bit binary to 4xbcd can be done with 12 clock pulses.

http://jjmk.dk/MMMI/Lessons/06_Arith...sion/Index.htm

Your welcomeš
Jeppe
 
Reply With Quote
 
 
 
 
raja_bade raja_bade is offline
Junior Member
Join Date: May 2008
Posts: 2
 
      07-31-2008
Thanks for the inspirational link... But it is a stepping stone for beginners who strike bottle necks during a design testing phase..

code has no problems and it is synthesized on spartan II fpga
 
Reply With Quote
 
 
 
Reply

Thread Tools

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 Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
(8-bit binary to two digit bcd) or (8-bit binary to two digit seven segment) Fangs VHDL 3 10-26-2008 06:41 AM
Re: binary to BCD assistance Paul Leventis VHDL 4 03-26-2008 09:16 PM
Binary to BCD in VHDL NA VHDL 3 05-24-2007 02:02 PM
8 bit binary to 2 digit BCD Yama VHDL 3 06-09-2006 07:48 PM
Re: binary to BCD assistance Glen Herrmannsfeldt VHDL 4 07-31-2003 11:18 PM



Advertisments