Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. ----------------------------------------------------------------------------------
  2. -- Company:
  3. -- Engineer:
  4. --
  5. -- Create Date: 21:08:22 04/19/2014
  6. -- Design Name:
  7. -- Module Name: SevenSegment - Behavioral
  8. -- Project Name:
  9. -- Target Devices:
  10. -- Tool versions:
  11. -- Description:
  12. --
  13. -- Dependencies:
  14. --
  15. -- Revision:
  16. -- Revision 0.01 - File Created
  17. -- Additional Comments:
  18. --
  19. ----------------------------------------------------------------------------------
  20. library IEEE;
  21. use IEEE.STD_LOGIC_1164.ALL;
  22. use IEEE.STD_LOGIC_ARITH.ALL;
  23. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  24.  
  25. ---- Uncomment the following library declaration if instantiating
  26. ---- any Xilinx primitives in this code.
  27. --library UNISIM;
  28. --use UNISIM.VComponents.all;
  29.  
  30. entity SevenSegment is
  31. Port ( clk : in STD_LOGIC; --t9 clock
  32. IN0 : in std_logic_vector (3 downto 0);
  33. IN1 : in std_logic_vector (3 downto 0);
  34. IN2 : in std_logic_vector (3 downto 0);
  35. IN3 : in std_logic_vector (3 downto 0);
  36. AN0 : out STD_LOGIC;
  37. AN1 : out STD_LOGIC;
  38. AN2 : out STD_LOGIC;
  39. AN3 : out STD_LOGIC;
  40. DP : out STD_LOGIC;
  41. SEVEN : out std_logic_vector(6 downto 0));
  42. end SevenSegment;
  43.  
  44. architecture Behavioral of SevenSegment is
  45.  
  46. Signal zero : std_logic_vector(6 downto 0):= "1000000";
  47. Signal one : std_logic_vector(6 downto 0):= "1111001";
  48. Signal two : std_logic_vector(6 downto 0):= "0100100";
  49. Signal three : std_logic_vector(6 downto 0):= "0110000";
  50. Signal four : std_logic_vector(6 downto 0):= "0011001";
  51. Signal five : std_logic_vector(6 downto 0):= "0010010";
  52. Signal six : std_logic_vector(6 downto 0):= "0000010";
  53. Signal seven7 : std_logic_vector(6 downto 0):= "1111000";
  54. Signal eight : std_logic_vector(6 downto 0):= "0000000";
  55. Signal nine : std_logic_vector(6 downto 0):= "0010000";
  56.  
  57. Signal counter : integer range 0 to 1023:=0;
  58. Signal currentSeg : integer range 0 to 3:=0;
  59.  
  60. Signal seg : std_logic_vector(6 downto 0):= "0000000";
  61.  
  62. Signal selectSeg : std_logic_vector(3 downto 0):= "1111";
  63.  
  64. begin
  65. process(clk)
  66. begin
  67. if(clk'event AND clk='1') then
  68. counter<=counter+1;
  69. if(counter=1023) then
  70. counter<=0;
  71. currentSeg<=currentSeg+1;
  72. end if;
  73. end if;
  74.  
  75. case currentSeg is
  76. when 0 =>
  77. selectSeg<="0111"; --least significant bit xxx0
  78. case IN0 is
  79. when "0000" =>
  80. seg<=zero;
  81. when "0001" =>
  82. seg<=one;
  83. when "0010" =>
  84. seg<=two;
  85. when "0011" =>
  86. seg<=three;
  87. when "0100" =>
  88. seg<=four;
  89. when "0101" =>
  90. seg<=five;
  91. when "0110" =>
  92. seg<=six;
  93. when "0111" =>
  94. seg<=seven7;
  95. when "1000" =>
  96. seg<=eight;
  97. when "1001" =>
  98. seg<=nine;
  99. when others => seg <=zero;
  100. end case;
  101. when 1 =>
  102. selectSeg<="1011";
  103. case IN1 is
  104. when "0000" =>
  105. seg<=zero;
  106. when "0001" =>
  107. seg<=one;
  108. when "0010" =>
  109. seg<=two;
  110. when "0011" =>
  111. seg<=three;
  112. when "0100" =>
  113. seg<=four;
  114. when "0101" =>
  115. seg<=five;
  116. when "0110" =>
  117. seg<=six;
  118. when "0111" =>
  119. seg<=seven7;
  120. when "1000" =>
  121. seg<=eight;
  122. when "1001" =>
  123. seg<=nine;
  124. when others => seg <=zero;
  125. end case;
  126. when 2 =>
  127. selectSeg<="1101";
  128. case IN2 is
  129. when "0000" =>
  130. seg<=zero;
  131. when "0001" =>
  132. seg<=one;
  133. when "0010" =>
  134. seg<=two;
  135. when "0011" =>
  136. seg<=three;
  137. when "0100" =>
  138. seg<=four;
  139. when "0101" =>
  140. seg<=five;
  141. when "0110" =>
  142. seg<=six;
  143. when "0111" =>
  144. seg<=seven7;
  145. when "1000" =>
  146. seg<=eight;
  147. when "1001" =>
  148. seg<=nine;
  149. when others => seg <=zero;
  150. end case;
  151. when 3 =>
  152. selectSeg<="1110";
  153. case IN3 is
  154. when "0000" =>
  155. seg<=zero;
  156. when "0001" =>
  157. seg<=one;
  158. when "0010" =>
  159. seg<=two;
  160. when "0011" =>
  161. seg<=three;
  162. when "0100" =>
  163. seg<=four;
  164. when "0101" =>
  165. seg<=five;
  166. when "0110" =>
  167. seg<=six;
  168. when "0111" =>
  169. seg<=seven7;
  170. when "1000" =>
  171. seg<=eight;
  172. when "1001" =>
  173. seg<=nine;
  174. when others => seg <=zero;
  175. end case;
  176. when others => currentSeg <=0;
  177. end case;
  178.  
  179. AN0<=selectSeg(0);
  180. AN1<=selectSeg(1);
  181. AN2<=selectSeg(2);
  182. AN3<=selectSeg(3);
  183.  
  184. SEVEN<=seg;
  185. end process;
  186. end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement