16
Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim 1 PROGRAMMABLE ELECTRONIC (MEE 10203) PART B Write a Word document discussing the following projects. Submit supporting VHDL projects code. Demonstrate the working projects to the instructor (and class). If you are not able to complete this assignment by the due date, submit a progress report documenting your work to that time. 1. Design and implement a DE2/DE1 project that demonstrates a binary to BCD converter. Use the switches SW[15:0] to define the input binary value and the seven-segment displays to show the resulting decimal equivalent. For example, if the first five switches are on: 0x1F, the seven- segment display should read 31. Answers according to table below Figure 1.1 : How to convert from binary to BCD. Output Input

DE1 Project That Demonstrates a Binary to BCD Converter

Embed Size (px)

DESCRIPTION

PROGRAMMABLE ELECTRONIC(MEE 10203)

Citation preview

Page 1: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

1

PROGRAMMABLE ELECTRONIC (MEE 10203)

PART B

Write a Word document discussing the following projects. Submit supporting VHDL projects code. Demonstrate the working projects to the instructor (and class). If you are not able to complete this assignment by the due date, submit a progress report documenting your work to that time.

1. Design and implement a DE2/DE1 project that demonstrates a binary to BCD converter. Use the switches SW[15:0] to define the input binary value and the seven-segment displays to show the resulting decimal equivalent. For example, if the first five switches are on: 0x1F, the seven-segment display should read 31.

Answers according to table below

Figure 1.1 : How to convert from binary to BCD.

Output

Input

Page 2: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

2

PROGRAMMABLE ELECTRONIC (MEE 10203)

Answers

According to the Figure 1.1 to slove the problem is:

1. Define the input is 16 bits and the ouput is 20 bits. 2. Define the variable q is 36 bits. 3. Shift to 3 step to left. 4. The variable q valaue q (18 downto 3) equal to input value. 5. At this stage (shift 3 to left) if variable q(19 downto 16) is bigger than 4 so q(19 downto 16) will

add 3. 6. Shift to left for remain 13 step and check if q(19 downto 16), q(23 downto 20), q(27 downto 24),

q(31 downto 28) and q(35 downto 32) is bigger than 4 so plus with 3. 7. Lastly the ouput will get the q (35 downto 16) value.

Binary to BCD Converter

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

entity BintoBCD16 is

port

(

B: in STD_LOGIC_VECTOR (15 downto 0);

BCD1, BCD2, BCD3, BCD4, BCD5: out STD_LOGIC_VECTOR (3 downto 0)

);

end BintoBCD16;

architecture soalan1 of BintoBCD16 is

begin

Page 3: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

3

PROGRAMMABLE ELECTRONIC (MEE 10203)

process (B)

variable q : STD_LOGIC_VECTOR (39 downto 0);

begin

for n in 0 to 39 loop -- clear the q to all ‘0’

q(n) := '0';

end loop;

q (18 downto 3) := B (15 downto 0);

for n in 0 to 12 loop -- shift 13 time according to the table in figure 1.1

if q (19 downto 16) > 4 then

q (19 downto 16) := q (19 downto 16) + 3;

end if;

if q (23 downto 20) > 4 then

q (23 downto 20) := q (23 downto 20) + 3;

end if;

if q (27 downto 24) > 4 then

q (27 downto 24) := q (27 downto 24) + 3;

end if;

Page 4: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

4

PROGRAMMABLE ELECTRONIC (MEE 10203)

if q (31 downto 28) > 4 then

q (31 downto 28) := q (31 downto 28) + 3;

end if;

if q (35 downto 32) > 4 then

q (35 downto 32) := q (35 downto 32) + 3;

end if;

q(36 downto 1) := q(35 downto 0); -- shift bit

end loop;

BCD1 <= q (19 downto 16);

BCD2 <= q (23 downto 20);

BCD3 <= q (27 downto 24);

BCD4 <= q (31 downto 28);

BCD5 <= q (35 downto 32);

end process;

end soalan1;

Page 5: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

5

PROGRAMMABLE ELECTRONIC (MEE 10203)

Figure 1.2: Compilation without error Binary to BCD

Figure 1.3 : Waveform analysis compare to Figure 1.1.

Page 6: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

6

PROGRAMMABLE ELECTRONIC (MEE 10203)

Figure 1.4 : Blok diagram

BINARY TO BCD

CONVERTER

7 SEGMENT

DISPLAY

(17 bit) Input

(20 bit) Output

Page 7: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

7

PROGRAMMABLE ELECTRONIC (MEE 10203)

BCD to 7 Segment Modification

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

entity BintoBCD16 is

port

(

B: in STD_LOGIC_VECTOR (15 downto 0);

unit : out STD_LOGIC_VECTOR (6 downto 0); -- output to 7 segment unit

ten : out STD_LOGIC_VECTOR (6 downto 0); -- output to 7 segment ten

hundred : out STD_LOGIC_VECTOR (6 downto 0); -- output to 7 segment hundred

thousan : out STD_LOGIC_VECTOR (6 downto 0); -- output to 7 segment thousan

tthousan : out STD_LOGIC_VECTOR (6 downto 0) -- output to 7 segment unit ten thousan

);

end BintoBCD16;

architecture soalan1 of BintoBCD16 is

begin

process (B)

variable q : STD_LOGIC_VECTOR (39 downto 0);

variable BCD1: STD_LOGIC_VECTOR (3 downto 0);

variable BCD2: STD_LOGIC_VECTOR (3 downto 0);

variable BCD3: STD_LOGIC_VECTOR (3 downto 0);

Page 8: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

8

PROGRAMMABLE ELECTRONIC (MEE 10203)

variable BCD4: STD_LOGIC_VECTOR (3 downto 0);

variable BCD5: STD_LOGIC_VECTOR (3 downto 0);

begin

for n in 0 to 39 loop

q(n) := '0';

end loop;

q (18 downto 3) := B (15 downto 0);

for n in 0 to 12 loop

if q (19 downto 16) > 4 then -- check if unit large than 4

q (19 downto 16) := q (19 downto 16) + 3;

end if;

if q (23 downto 20) > 4 then -- check if ten large than 4

q (23 downto 20) := q (23 downto 20) + 3;

end if;

if q (27 downto 24) > 4 then -- check if hundred large than 4

q (27 downto 24) := q (27 downto 24) + 3;

end if;

Page 9: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

9

PROGRAMMABLE ELECTRONIC (MEE 10203)

if q (31 downto 28) > 4 then -- check if thousand large than 4

q (31 downto 28) := q (31 downto 28) + 3;

end if;

if q (35 downto 32) > 4 then -- check if ten thousand large than 4

q (35 downto 32) := q (35 downto 32) + 3;

end if;

q(36 downto 1) := q(35 downto 0); -- shift bit

end loop;

BCD1 := q (19 downto 16); -- output for BCD unit

BCD2 := q (23 downto 20); -- output for BCD ten

BCD3 := q (27 downto 24); -- output for BCD hundred

BCD4 := q (31 downto 28); -- output for BCD thousand

BCD5 := q (35 downto 32); -- output for BCD ten thousand

CASE BCD1 IS

when "0000" => unit <= "1000000" ; -- 0

when "0001" => unit <= "1111001" ; -- 1

when "0010" => unit <= "0100100" ; -- 2

when "0011" => unit <= "0110000" ; -- 3

when "0100" => unit <= "0011001" ; -- 4

when "0101" => unit <= "0010010" ; -- 5

when "0110" => unit <= "0000010" ; -- 6

Page 10: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

10

PROGRAMMABLE ELECTRONIC (MEE 10203)

when "0111" => unit <= "1111000" ; -- 7

when "1000" => unit <= "0000000" ; -- 8

when "1001" => unit <= "0010000" ; -- 9

when "1010" => unit <= "0001000" ; -- 10 or A

when "1011" => unit <= "0000011" ; -- 11 or B

when "1100" => unit <= "1000110" ; -- 12 or C

when "1101" => unit <= "0100001" ; -- 13 or D

when "1110" => unit <= "0000110" ; -- 14 or E

when "1111" => unit <= "0001110" ; -- 15 or F

when others => unit <= "1111111" ; -- JUST TURN ON ALL LIGHTS

end case;

CASE BCD2 IS

when "0000" => ten <= "1000000" ; -- 0

when "0001" => ten <= "1111001" ; -- 1

when "0010" => ten <= "0100100" ; -- 2

when "0011" => ten <= "0110000" ; -- 3

when "0100" => ten <= "0011001" ; -- 4

when "0101" => ten <= "0010010" ; -- 5

when "0110" => ten <= "0000010" ; -- 6

when "0111" => ten <= "1111000" ; -- 7

when "1000" => ten <= "0000000" ; -- 8

when "1001" => ten <= "0010000" ; -- 9

when "1010" => ten <= "0001000" ; -- 10 or A

when "1011" => ten <= "0000011" ; -- 11 or B

Page 11: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

11

PROGRAMMABLE ELECTRONIC (MEE 10203)

when "1100" => ten <= "1000110" ; -- 12 or C

when "1101" => ten <= "0100001" ; -- 13 or D

when "1110" => ten <= "0000110" ; -- 14 or E

when "1111" => ten <= "0001110" ; -- 15 or F

when others => ten <= "1111111" ; -- JUST TURN ON ALL LIGHTS

end case;

CASE BCD3 IS

when "0000" => hundred <= "1000000" ; -- 0

when "0001" => hundred <= "1111001" ; -- 1

when "0010" => hundred <= "0100100" ; -- 2

when "0011" => hundred <= "0110000" ; -- 3

when "0100" => hundred <= "0011001" ; -- 4

when "0101" => hundred <= "0010010" ; -- 5

when "0110" => hundred <= "0000010" ; -- 6

when "0111" => hundred <= "1111000" ; -- 7

when "1000" => hundred <= "0000000" ; -- 8

when "1001" => hundred <= "0010000" ; -- 9

when "1010" => hundred <= "0001000" ; -- 10 or A

when "1011" => hundred <= "0000011" ; -- 11 or B

when "1100" => hundred <= "1000110" ; -- 12 or C

when "1101" => hundred <= "0100001" ; -- 13 or D

when "1110" => hundred <= "0000110" ; -- 14 or E

when "1111" => hundred <= "0001110" ; -- 15 or F

when others => hundred <= "1111111" ; -- JUST TURN ON ALL LIGHTS

Page 12: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

12

PROGRAMMABLE ELECTRONIC (MEE 10203)

end case;

CASE BCD4 IS

when "0000" => thousan <= "1000000" ; -- 0

when "0001" => thousan <= "1111001" ; -- 1

when "0010" => thousan <= "0100100" ; -- 2

when "0011" => thousan <= "0110000" ; -- 3

when "0100" => thousan <= "0011001" ; -- 4

when "0101" => thousan <= "0010010" ; -- 5

when "0110" => thousan <= "0000010" ; -- 6

when "0111" => thousan <= "1111000" ; -- 7

when "1000" => thousan <= "0000000" ; -- 8

when "1001" => thousan <= "0010000" ; -- 9

when "1010" => thousan <= "0001000" ; -- 10 or A

when "1011" => thousan <= "0000011" ; -- 11 or B

when "1100" => thousan <= "1000110" ; -- 12 or C

when "1101" => thousan <= "0100001" ; -- 13 or D

when "1110" => thousan <= "0000110" ; -- 14 or E

when "1111" => thousan <= "0001110" ; -- 15 or F

when others => thousan <= "1111111" ; -- JUST TURN ON ALL LIGHTS

end case;

CASE BCD5 IS

when "0000" => tthousan <= "1000000" ; -- 0

Page 13: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

13

PROGRAMMABLE ELECTRONIC (MEE 10203)

when "0001" => tthousan <= "1111001" ; -- 1

when "0010" => tthousan <= "0100100" ; -- 2

when "0011" => tthousan <= "0110000" ; -- 3

when "0100" => tthousan <= "0011001" ; -- 4

when "0101" => tthousan <= "0010010" ; -- 5

when "0110" => tthousan <= "0000010" ; -- 6

when "0111" => tthousan <= "1111000" ; -- 7

when "1000" => tthousan <= "0000000" ; -- 8

when "1001" => tthousan <= "0010000" ; -- 9

when "1010" => tthousan <= "0001000" ; -- 10 or A

when "1011" => tthousan <= "0000011" ; -- 11 or B

when "1100" => tthousan <= "1000110" ; -- 12 or C

when "1101" => tthousan <= "0100001" ; -- 13 or D

when "1110" => tthousan <= "0000110" ; -- 14 or E

when "1111" => tthousan <= "0001110" ; -- 15 or F

when others => tthousan <= "1111111" ; -- JUST TURN ON ALL LIGHTS

end case;

end process;

end soalan1;

Page 14: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

14

PROGRAMMABLE ELECTRONIC (MEE 10203)

Figure 1.5: Compile the BCD to 7 Segment without error.

Figure 1.6 : Waveform BCD to 7 Segment

Page 15: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

15

PROGRAMMABLE ELECTRONIC (MEE 10203)

Figure 1.7: Device Setting.

Figure 1.8 : Pin Planner Setting

Page 16: DE1 Project That Demonstrates a Binary to BCD Converter

Mohd Syukur bin Azizan | Mohd Nazimudin bin Ibrahim

16

PROGRAMMABLE ELECTRONIC (MEE 10203)

Figure 1.9 Download to DE2 board

Figure 1.10 The output result