Guest User

Untitled

a guest
Nov 20th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.35 KB | None | 0 0
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. use IEEE.NUMERIC_STD.ALL;
  4.  
  5. entity KursinisCalc is
  6. Port(
  7. --CLOCKAS--
  8. CLOCK_50 : in STD_LOGIC;
  9. --LEDAI--
  10. LEDG : out STD_LOGIC_VECTOR (9 DOWNTO 0);
  11. --SWITCHAI--
  12. SW : in STD_LOGIC_VECTOR(9 DOWNTO 0);
  13. --7SEG DISP--
  14. HEX0_D : out STD_LOGIC_VECTOR(7 DOWNTO 0) :="01000000";
  15. HEX1_D : out STD_LOGIC_VECTOR(7 DOWNTO 0) :="01000000";
  16. HEX2_D : out STD_LOGIC_VECTOR(7 DOWNTO 0) :="01000000";
  17. HEX3_D : out STD_LOGIC_VECTOR(7 DOWNTO 0) :="01000000"
  18. );
  19. end entity;
  20.  
  21. architecture main of KursinisCalc is
  22. signal NUMHEX: STD_LOGIC_VECTOR (3 DOWNTO 0);
  23. signal NUMD: STD_LOGIC_VECTOR (7 DOWNTO 0);
  24.  
  25. component to_7seg is
  26. Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
  27. seg7 : out STD_LOGIC_VECTOR (7 downto 0)
  28. );
  29. end component;
  30.  
  31. signal cnt: integer RANGE 0 TO 50000000 :=0;
  32. signal SK1: integer RANGE 0 TO 10 :=5;
  33. signal SK2: integer RANGE 0 TO 10 :=5;
  34. signal REZ: integer RANGE 0 TO 3300 :=0;
  35. signal dbnc, flag: STD_LOGIC;
  36. signal REZBIN: STD_LOGIC_VECTOR(15 DOWNTO 0);
  37. signal HEX: STD_LOGIC_VECTOR(3 DOWNTO 0);
  38.  
  39. alias SW1 is SW(9 DOWNTO 6);
  40. alias SW2 is SW(3 DOWNTO 0);
  41. alias LEDG2 is LEDG(3 DOWNTO 0);
  42. alias LEDG1 is LEDG(9 DOWNTO 6);
  43. alias clk is CLOCK_50;
  44. begin
  45.  
  46. G1: to_7seg port map (NUMHEX, NUMD);
  47. process(clk)
  48. begin
  49. if (rising_edge(clk)) then
  50. if(SW1 /= "0000" and SW1 <= "1010") then
  51. SK1 <= to_integer(unsigned(SW1));
  52. end if;
  53. if(SW2 /= "0000" and SW2 <= "1010") then
  54. SK2 <= to_integer(unsigned(SW2));
  55. end if;
  56. LEDG1 <= SW1;
  57. LEDG2 <= SW2;
  58. REZ <= 3*SK1*SK1+300*SK2;
  59. REZBIN <= STD_LOGIC_VECTOR(to_unsigned(REZ,16));
  60. NUMHEX <= REZBIN(3 DOWNTO 0);
  61. HEX0_D <= NUMD;
  62. NUMHEX <= REZBIN(7 DOWNTO 4);
  63. HEX1_D <= NUMD;
  64. NUMHEX <= REZBIN(11 DOWNTO 8);
  65. HEX2_D <= NUMD;
  66. NUMHEX <= REZBIN(15 DOWNTO 12);
  67. HEX3_D <= NUMD;
  68. end if;
  69. end process;
  70.  
  71. end main;
  72.  
  73. library IEEE;
  74. use IEEE.STD_LOGIC_1164.ALL;
  75.  
  76. entity to_7seg is
  77. Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
  78. seg7 : out STD_LOGIC_VECTOR (6 downto 0)
  79. );
  80. end to_7seg;
  81.  
  82. architecture Behavioral of to_7seg is
  83.  
  84. begin
  85.  
  86. --'a' corresponds to MSB of seg7 and 'g' corresponds to LSB of seg7.
  87. process (A)
  88. BEGIN
  89. case A is
  90. when "0000"=> seg7 <="0000001"; -- '0'
  91. when "0001"=> seg7 <="1001111"; -- '1'
  92. when "0010"=> seg7 <="0010010"; -- '2'
  93. when "0011"=> seg7 <="0000110"; -- '3'
  94. when "0100"=> seg7 <="1001100"; -- '4'
  95. when "0101"=> seg7 <="0100100"; -- '5'
  96. when "0110"=> seg7 <="0100000"; -- '6'
  97. when "0111"=> seg7 <="0001111"; -- '7'
  98. when "1000"=> seg7 <="0000000"; -- '8'
  99. when "1001"=> seg7 <="0000100"; -- '9'
  100. when "1010"=> seg7 <="0001000"; -- 'A'
  101. when "1011"=> seg7 <="1100000"; -- 'b'
  102. when "1100"=> seg7 <="0110001"; -- 'C'
  103. when "1101"=> seg7 <="1000010"; -- 'd'
  104. when "1110"=> seg7 <="0110000"; -- 'E'
  105. when "1111"=> seg7 <="0111000"; -- 'F'
  106. when others => NULL;
  107. end case;
  108. end process;
  109.  
  110. end Behavioral;
Add Comment
Please, Sign In to add comment