Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use ieee.numeric_std.all;
- entity SevenSegment is
- Port ( clk: in std_logic;
- --seg_value : in STD_LOGIC_VECTOR (0 to 6);
- seg_value : in STD_LOGIC_VECTOR (3 downto 0);
- dp_value: in std_logic_vector(0 to 3);
- seg : out STD_LOGIC_VECTOR (0 to 6) := "1111111";
- dp: out std_logic;
- an: out std_logic_vector (0 to 3));
- end SevenSegment;
- architecture Behavioral of SevenSegment is
- signal clock_7segment:std_logic := '0';
- signal current : STD_LOGIC_VECTOR (0 to 6) := "1111111";
- begin
- process (clk)
- variable counter: integer := 0;
- begin
- if(clk 'event and clk = '1') then
- if(counter >= 0 and counter < 100) then
- counter := counter +1;
- clock_7segment <= '0';
- elsif (counter < 200) then
- counter := counter +1;
- clock_7segment <= '1';
- else
- counter := 0;
- end if;
- end if;
- end process;
- process (clock_7segment)
- variable state : integer := 0;
- begin
- if(clock_7segment'event and clock_7segment = '1') then
- if(state =0) then
- if (seg_value(3) = '0' and
- seg_value(2) = '0' and
- seg_value(1) = '0' and
- seg_value(0) = '0') then
- seg <= "0000001";
- else
- --A 1(0' + 3') + 2(1 + 3'0) + 1'(0'(3+2') + 32')
- if ( (seg_value(1) = '1' and
- (seg_value(0) = '0' or
- seg_value(3) = '0'))
- or
- (seg_value(2) = '1' and
- (seg_value(1) = '1' or
- (seg_value(3) = '0' and
- seg_value(0) = '1')))
- or
- (seg_value(1) = '0' and
- ((seg_value(0) = '0' and
- (seg_value(3) = '1' or
- seg_value(2) = '0')) or
- (seg_value(3) = '1' and
- seg_value(2) = '0')))
- ) then
- seg(0) <= '0';
- else
- seg(0) <= '1';
- end if;
- --B 2'(30'+3') + 3'(1 xnor 0) + 31'0
- if ((seg_value(3) = '0' and (seg_value(1) = '1' xnor seg_value(0) = '1')) or
- (seg_value(3) = '1' and seg_value(1) = '0' and seg_value(0) = '1') or
- (seg_value(2) = '0' and ((seg_value(3) = '1' and seg_value(0) = '0') or seg_value(3) = '0'))) then
- seg(1) <= '0';
- else
- seg(1) <= '1';
- end if;
- --C
- if ((seg_value(3) = '0' and seg_value(1) = '0') or (seg_value(0) = '1' and
- (seg_value(3) = '0' or seg_value(1) = '0')) or (seg_value(3) = '1' xor
- seg_value(2) = '1')) then
- seg(2) <= '0';
- else
- seg(2) <= '1';
- end if;
- --D 2'(3'0' + 10) + 2(1 xor 0) + 31' , 3'2'0' + 2'10 + 210' + 21'0 + 31'
- if ((seg_value(3) = '0' and seg_value(2) = '0' and seg_value(0) = '0') or
- (seg_value(2) = '0' and seg_value(1) = '1' and seg_value(0) = '1') or
- (seg_value(2) = '1' and seg_value(1) = '1' and seg_value(0) = '0') or
- (seg_value(2) = '1' and seg_value(1) = '0' and seg_value(0) = '1') or
- (seg_value(3) = '1' and seg_value(1) = '0')) then
- seg(3) <= '0';
- else
- seg(3) <= '1';
- end if;
- --E 0'(2'1' + 1) + 3(2 + 1)
- if ((seg_value(0) ='0' and (((seg_value(2)='0' and seg_value(1)='0') or
- seg_value(1)='1'))) or (seg_value(3)='1' and (seg_value(2)='1' or
- seg_value(1)='1'))) then
- seg(4) <= '0';
- else
- seg(4) <= '1';
- end if;
- --F 3(2'+1) + 1'0' + 2(3'1' + 10')
- if ((seg_value(3)='1' and (seg_value(2) = '0' or seg_value(1) = '1')) or
- (seg_value(1)='0' and seg_value(0)='0') or
- (seg_value(2)='1' and ((seg_value(3) = '0' and seg_value(1)='0') or (seg_value(1) = '1' and seg_value(0)='0')))) then
- seg(5) <= '0';
- else
- seg(5) <= '1';
- end if;
- --G 3(2'+0) + 10' + 3'(2 xor 1)
- if ((seg_value(3) = '1' and (seg_value(2) = '0' or seg_value(0) = '1')) or
- (seg_value(1) = '1' and seg_value(0)='0') or
- (seg_value(3)='0' and (seg_value(2)='1' xor seg_value(1)='1'))
- ) then
- seg(6) <= '0';
- else
- seg(6) <= '1';
- end if;
- end if;
- --end if;
- --seg <= seg_value (0 to 6);
- dp<=dp_value(0);
- an <= "1110";
- state := state+1;
- elsif (state =1) then
- --seg <= seg_value (0 to 6) XOR "1111111";
- --seg <= seg_value (7 to 13);
- dp<=dp_value(1);
- an <= "1110";
- state := state+1;
- elsif (state =2) then
- --seg <= seg_value (0 to 6) XOR "1010101";
- --seg <= seg_value (14 to 20);
- dp<=dp_value(2);
- an <= "1110";
- state := state+1;
- elsif (state =3) then
- --seg <= seg_value (0 to 6) XOR "0101010";
- --seg <= seg_value (21 to 27);
- dp<=dp_value(3);
- an <= "1110";
- state := state+1;
- else
- state := 0;
- end if;
- end if;
- end process;
- end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment