Presentation is loading. Please wait.

Presentation is loading. Please wait.

Digilab 7-Segment Displays Lab 4. selyInstruction name “000”true if b = a false otherwise = “001”true if b /= a false otherwise <> “010”true if b < a.

Similar presentations


Presentation on theme: "Digilab 7-Segment Displays Lab 4. selyInstruction name “000”true if b = a false otherwise = “001”true if b /= a false otherwise <> “010”true if b < a."— Presentation transcript:

1 Digilab 7-Segment Displays Lab 4

2 selyInstruction name “000”true if b = a false otherwise = “001”true if b /= a false otherwise <> “010”true if b < a (unsigned) false otherwise U< “011”true if b > a (unsigned) false otherwise U> “100”true if b <= a (unsigned) false otherwise U<= “101”true if b < a (signed) false otherwise < “110”true if b > a (signed) false otherwise > “111”true if b <= a (signed) false otherwise <=

3 Digilab2 – DIO1 Boards Four 7-segment displays dig1dig2dig3dig4

4 Digilab2 Board – Common Anodes A1 A2 A3 A4 AtoG(6 downto 0) Pins

5 switches 7-segment displays LEDs pushbuttons Digilab XLA

6 Digilab Board dig3dig2dig1dig4

7 Digilab XLA Board – Common Anodes A4 A3 A2 A1 CA CB CC CD CE CF CG Pins

8 7-Segment Decoder a-g LOW to turn on segment

9 library IEEE; use IEEE.std_logic_1164.all; entity seg7dec is port (q: in STD_LOGIC_VECTOR(3 downto 0); AtoG: out STD_LOGIC_VECTOR(6 downto 0)); end seg7dec; 7-Segment Decoder

10 architecture seg7dec_arch of seg7dec is begin process(q) begin case q is when "0000" => AtoG <= "0000001"; when "0001" => AtoG <= "1001111"; when "0010" => AtoG <= "0010010"; when "0011" => AtoG <= "0000110"; when "0100" => AtoG <= "1001100"; when "0101" => AtoG <= "0100100"; when "0110" => AtoG <= "0100000"; when "0111" => AtoG <= "0001101"; when "1000" => AtoG <= "0000000"; when "1001" => AtoG <= "0000100"; when "1010" => AtoG <= "0001000"; when "1011" => AtoG <= "1100000"; when "1100" => AtoG <= "0110001"; when "1101" => AtoG <= "1000010"; when "1110" => AtoG <= "0110000"; when others => AtoG <= "0111000"; end case; end process; end seg7dec_arch;

11 Digilab2 Board – Common Anodes A1 A2 A3 A4 AtoG(6 downto 0) Pins

12 Multiplex displays 1 0 0 0 0 0 0 0 1 1 0

13 Multiplex displays 0 1 0 0 0 0 0 1 1 1 1

14 Multiplex displays 0 0 1 0 1 0 0 1 1 0 0

15 Multiplex displays 0 0 0 1 0 1 1 1 0 0 0

16 Lab 4

17 signal clkdiv: std_logic_vector(23 downto 0); begin -- Divide the master clock (50MHz) down -- to a lower frequency. process (mclk) begin if mclk = '1' and mclk'Event then clkdiv <= clkdiv + 1; end if; end process; cclk <= clkdiv(17);-- 190 Hz = 50MHz/2^18

18 -- A 2-bit up-counter library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity ctr2bit is port ( clr: in STD_LOGIC; clk: in STD_LOGIC; q: out STD_LOGIC_VECTOR (1 downto 0) ); end ctr2bit; ctr2bit.vhd

19 architecture ctr2bit_arch of ctr2bit is begin process (clk, clr) variable COUNT: STD_LOGIC_VECTOR (1 downto 0); begin if clr = '1' then q <= "00"; elsif clk'event and clk='1' then COUNT := COUNT + 1; q <= COUNT; end if; end process; end ctr2bit_arch; ctr2bit.vhd

20 Lab 4

21 library IEEE; use IEEE.std_logic_1164.all; entity Acode is port ( Aen: in STD_LOGIC_VECTOR (3 downto 0); Asel: in STD_LOGIC_VECTOR (1 downto 0); A: out STD_LOGIC_VECTOR (3 downto 0) ); end Acode; Acode.vhd

22 architecture Acode_arch of Acode is begin process(Aen, Asel) begin A <= "0000"; case Asel is when "00" => if Aen(1) = '1' then A <= "1000"; end if; when "01" => if Aen(2) = '1' then A <= "0100"; end if; when "10" => if Aen(3) = '1' then A <= "0010"; end if; when others => if Aen(4) = '1' then A <= "0001"; end if; end case; end process; end Acode_arch; Acode.vhd

23 Lab 4

24 -- System Library Components component IBUFG port ( I : in STD_LOGIC; O : out std_logic ); end component; U00:IBUFG port map (I => bn, O => bnbuf);


Download ppt "Digilab 7-Segment Displays Lab 4. selyInstruction name “000”true if b = a false otherwise = “001”true if b /= a false otherwise <> “010”true if b < a."

Similar presentations


Ads by Google