Velocity Reviews > VHDL > Binary to BCD in VHDL

Binary to BCD in VHDL

NA
Guest
Posts: n/a

 05-23-2007
Hello all.
I'm very new to VHDL and stuck with a simple task.
This code should convert binary number to BCD number using shift and add 3
algoritam
http://www.engr.udayton.edu/faculty/...in_to_BCD.html

After this code executes I always get "0000" in digit and unit

You don't have to analyze the whole code, just tell me what is generally
wrong. Thank you people!

variable temp: bit_vector(7 downto 0) := "00011000"; --24 (10)
variable unit: bit_vector(3 downto 0) := "0000";
variable digit: bit_vector(3 downto 0):= "0000";
begin
for i in 0 to 7 loop
digit := digit sll 1;
digit(0) := unit(3);
unit := unit sll 1;
unit(0) := temp(7);
temp := temp sll 1;
--This is the part where I add 3, is there any other way? It must work
on FPGA
case digit is
when "0101" => digit := "1000";
when "0110" => digit := "1001";
when "0111" => digit := "1010";
when "1000" => digit := "1011";
when "1001" => digit := "1100";
when others => digit := digit;
end case;

case unit is
when "0101" => unit := "1000";
when "0110" => unit := "1001";
when "0111" => unit := "1010";
when "1000" => unit := "1011";
when "1001" => unit := "1100";
when others => unit := digit;
end case;
end loop;

Michael Jorgensen
Guest
Posts: n/a

 05-24-2007
I see two problems:

1) Third line from the bottom: "unit := digit" -> "unit := unit"
2) The web page talks about "hundreds" too. The line "digit := digit sll
1;" in your code seems to lose some bits.

-Michael.

Frank Buss
Guest
Posts: n/a

 05-24-2007
NA wrote:

> --This is the part where I add 3, is there any other way? It must work
> on FPGA

you could use a function to avoid code duplication, like I've used in my

--
Frank Buss, http://www.velocityreviews.com/forums/(E-Mail Removed)
http://www.frank-buss.de, http://www.it4-systems.de

NA
Guest
Posts: n/a

 05-24-2007
Thank you both !