Kara Şimşek Uygulamasının Nexys 4 Kartı Üzerinde Gerçeklenmesi

Aşağıda verilen VHDL kodunda hızı artırılabilen veya azaltabilen kayan led uygulaması verilmiştir. 8. satırda tanımlı parametre ile kaç adet led kullanılacağı tanımlanmaktadır. 9. satırda tanımlı parametre ile sistem saat darbesi frekans değeri tanımlanmaktadır. Nexys 4 kartı üzerinde 100 MHz’lik bir saat üreteci mevcuttur. 22-24 satırlarında limit değerleri ve hız artımı/azaltımında kullanılacak parametre değeri sabit olarak tanımlanmıştır. 38-51 satırları arasında tanımlı process içerisinde led’in sola veya sağa kayma işlemleri yapılmaktadır. 53-64 satırları arasında tanımlı process içerisinde led’in sağa mı yoksa sola mı kaydırılacağı belirlenmektedir. 62-82 satırları arasında tanımlı process içerisinde ise ledin sola veya sola kayması için gerekli geçerlilik sinyali üretilmektedir. 85-102 satırları arasında tanımlı process içerisinde kayma işleminin hızlanması veya yavaşlaması için butona basılıp basılmadığının kontrol edilmektedir. Butona basılmış ise r_TIMER kontrol sinyaline ekleme veya çıkarma işlemleri yapılmaktadır. 101-110 satırları arasında tanımlı process içerisinde hızlanma veya yavaşlama için butona basılıp basılmadığını kontrol eden kontrol sinyalleri üretilmektedir.

  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  4. use IEEE.STD_LOGIC_ARITH.ALL;
  5.  
  6. entity kara_simsek is
  7. Generic(
  8. DATA_WIDTH : integer := 16;
  9. SYS_FREQ : integer := 100_000_000
  10. );
  11. Port(
  12. in_clk : in std_logic;
  13. in_rst : in std_logic;
  14. in_inc : in std_logic;
  15. in_dec : in std_logic;
  16. out_leds : out std_logic_vector(DATA_WIDTH - 1 downto 0)
  17. );
  18. end kara_simsek;
  19.  
  20. architecture Behavioral of kara_simsek is
  21.  
  22. constant c_CHNG_PARAM : integer := SYS_FREQ / 5;
  23. constant c_UPPER_LIMIT : integer := 3 * SYS_FREQ;
  24. constant c_LOWER_LIMIT : integer := c_CHNG_PARAM;
  25.  
  26. signal r_TIMER : integer := SYS_FREQ;
  27. signal r_cnt : integer := 0;
  28. signal r_cnt_flg : std_logic := '0';
  29. signal r_inc : std_logic_vector(2 downto 0) := (others => '0');
  30. signal r_dec : std_logic_vector(2 downto 0) := (others => '0');
  31. signal r_leds : std_logic_vector(DATA_WIDTH - 1 downto 0) := conv_std_logic_vector(1, DATA_WIDTH);
  32. signal r_led_flg : std_logic := '0';
  33.  
  34. begin
  35.  
  36. out_leds <= r_leds;
  37.  
  38. process(in_clk, in_rst)
  39. begin
  40. if in_rst = '1' then
  41. r_leds <= conv_std_logic_vector(1, DATA_WIDTH);
  42. elsif rising_edge(in_clk) then
  43. if r_cnt_flg = '1' then
  44. if r_led_flg = '0' then
  45. r_leds <= r_leds(r_leds'high - 1 downto 0) & '0';
  46. elsif r_led_flg = '1' then
  47. r_leds <= '0' & r_leds(r_leds'high downto 1);
  48. end if;
  49. end if;
  50. end if;
  51. end process;
  52.  
  53. process(in_clk, in_rst)
  54. begin
  55. if in_rst = '1' then
  56. r_led_flg <= '0';
  57. elsif rising_edge(in_clk) then
  58. if r_leds(0) = '1' then
  59. r_led_flg <= '0';
  60. elsif r_leds(r_leds'high) = '1' then
  61. r_led_flg <= '1';
  62. end if;
  63. end if;
  64. end process;
  65.  
  66.  
  67. process(in_clk, in_rst)
  68. begin
  69. if in_rst = '1' then
  70. r_cnt <= 0;
  71. r_cnt_flg <= '0';
  72.  
  73. elsif rising_edge (in_clk) then
  74. r_cnt_flg <= '0';
  75. if r_cnt < r_TIMER - 1 then
  76. r_cnt <= r_cnt + 1;
  77. else
  78. r_cnt <= 0;
  79. r_cnt_flg <= '1';
  80. end if;
  81. end if;
  82. end process;
  83.  
  84.  
  85. process(in_clk, in_rst)
  86. begin
  87. if in_rst = '1' then
  88. r_TIMER <= SYS_FREQ;
  89. elsif rising_edge(in_clk) then
  90. if r_inc(r_inc'high downto r_inc'high -1) = "01" and
  91. r_TIMER > c_LOWER_LIMIT then
  92. r_TIMER <= r_TIMER - c_CHNG_PARAM;
  93.  
  94. elsif r_dec(r_dec'high downto r_dec'high -1) = "01" and
  95. r_TIMER < c_UPPER_LIMIT then
  96. r_TIMER <= r_TIMER + c_CHNG_PARAM;
  97. end if;
  98. end if;
  99. end process;
  100.  
  101. process(in_clk, in_rst)
  102. begin
  103. if in_rst = '1' then
  104. r_inc <= (others => '0');
  105. r_dec <= (others => '0');
  106. elsif rising_edge(in_clk) then
  107. r_inc <= r_inc(r_inc'high -1 downto 0) & in_inc;
  108. r_dec <= r_dec(r_dec'high -1 downto 0) & in_dec;
  109. end if;
  110. end process;
  111.  
  112. end Behavioral;

 

  1. var quads_screen_width = document.body.clientWidth;
  2. if ( quads_screen_width >= 1140 ) {
  3. /* desktop monitors */
  4. document.write('');
  5. (adsbygoogle = window.adsbygoogle || []).push({});
  6. }if ( quads_screen_width >= 1024 && quads_screen_width < 1140 ) {
  7. /* tablet landscape */
  8. document.write('');
  9. (adsbygoogle = window.adsbygoogle || []).push({});
  10. }if ( quads_screen_width >= 768 && quads_screen_width < 1024 ) {
  11. /* tablet portrait */
  12. document.write('');
  13. (adsbygoogle = window.adsbygoogle || []).push({});
  14. }if ( quads_screen_width < 768 ) {
  15. /* phone */
  16. document.write('');
  17. (adsbygoogle = window.adsbygoogle || []).push({});
  18. }
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. set_property PACKAGE_PIN E3 [get_ports in_clk]
  26. set_property IOSTANDARD LVCMOS33 [get_ports in_clk]
  27.  
  28. set_property PACKAGE_PIN T16 [get_ports in_dec]
  29. set_property IOSTANDARD LVCMOS33 [get_ports in_dec]
  30.  
  31. set_property PACKAGE_PIN R10 [get_ports in_inc]
  32. set_property IOSTANDARD LVCMOS33 [get_ports in_inc]
  33.  
  34. set_property PACKAGE_PIN F15 [get_ports in_rst]
  35. set_property IOSTANDARD LVCMOS33 [get_ports in_rst]
  36.  
  37. set_property PACKAGE_PIN P2 [get_ports {out_leds[15]}]
  38. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[15]}]
  39.  
  40. set_property PACKAGE_PIN R2 [get_ports {out_leds[14]}]
  41. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[14]}]
  42.  
  43. set_property PACKAGE_PIN U1 [get_ports {out_leds[13]}]
  44. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[13]}]
  45.  
  46. set_property PACKAGE_PIN P5 [get_ports {out_leds[12]}]
  47. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[12]}]
  48.  
  49. set_property PACKAGE_PIN R1 [get_ports {out_leds[11]}]
  50. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[11]}]
  51.  
  52. set_property PACKAGE_PIN V1 [get_ports {out_leds[10]}]
  53. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[10]}]
  54.  
  55. set_property PACKAGE_PIN U3 [get_ports {out_leds[9]}]
  56. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[9]}]
  57.  
  58. set_property PACKAGE_PIN V4 [get_ports {out_leds[8]}]
  59. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[8]}]
  60.  
  61. set_property PACKAGE_PIN U6 [get_ports {out_leds[7]}]
  62. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[7]}]
  63.  
  64. set_property PACKAGE_PIN U7 [get_ports {out_leds[6]}]
  65. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[6]}]
  66.  
  67. set_property PACKAGE_PIN T4 [get_ports {out_leds[5]}]
  68. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[5]}]
  69.  
  70. set_property PACKAGE_PIN T5 [get_ports {out_leds[4]}]
  71. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[4]}]
  72.  
  73. set_property PACKAGE_PIN T6 [get_ports {out_leds[3]}]
  74. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[3]}]
  75.  
  76. set_property PACKAGE_PIN R8 [get_ports {out_leds[2]}]
  77. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[2]}]
  78.  
  79. set_property PACKAGE_PIN V9 [get_ports {out_leds[1]}]
  80. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[1]}]
  81.  
  82. set_property PACKAGE_PIN T8 [get_ports {out_leds[0]}]
  83. set_property IOSTANDARD LVCMOS33 [get_ports {out_leds[0]}]

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir