当前位置:   article > 正文

VHDL实现分频器_vhdl分频器

vhdl分频器

10分频电路(非2^N分频器)

  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_ARITH.ALL;
  4. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  5. ENTITY clk_div IS
  6. PORT(clkin:IN STD_LOGIC;
  7. clkout:OUT STD_LOGIC);
  8. END clk_div;
  9. ARCHITECTURE clk_div_behavior OF clk_div IS
  10. SIGNAL counter:STD_LOGIC_VECTOR(2 DOWNTO 0);
  11. SIGNAL temp:STD_LOGIC;
  12. BEGIN
  13. PROCESS(clkin)
  14. BEGIN
  15. IF(clkin'EVENT AND clkin='1')THEN
  16. IF(counter="100")THEN --注意,这里是0——4,一个周期1:1的高低电平
  17. counter<="000";
  18. temp<=NOT temp;
  19. ELSE
  20. counter<=counter+1;
  21. END IF;
  22. END IF;
  23. END PROCESS;
  24. clkout<=temp;
  25. END clk_div_behavior;

2^N分频电路(2,4,8分频电路)

  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_ARITH.ALL;
  4. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  5. ENTITY clk_div IS
  6. PORT(clk:IN STD_LOGIC;
  7. clk_div_2:OUT STD_LOGIC;
  8. clk_div_4:OUT STD_LOGIC;
  9. clk_div_8:OUT STD_LOGIC);
  10. END clk_div;
  11. ARCHITECTURE clk_div_behavior OF clk_div IS
  12. SIGNAL counter:STD_LOGIC_VECTOR(2 DOWNTO 0);
  13. BEGIN
  14. PROCESS(clk)
  15. BEGIN
  16. IF(clk'EVENT AND clk='1')THEN
  17. IF(counter="111")THEN
  18. counter<="000";
  19. ELSE
  20. counter<=counter+1;
  21. END IF;
  22. END IF;
  23. END PROCESS;
  24. clk_div_2<=NOT counter(0);
  25. clk_div_4<=NOT counter(1);
  26. clk_div_8<=NOT counter(2);
  27. END clk_div_behavior;

占空比为2:4的6分频器

  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_ARITH.ALL;
  4. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  5. ENTITY clk_div IS
  6. PORT(clk:IN STD_LOGIC;
  7. clk_div_6:OUT STD_LOGIC);
  8. END clk_div;
  9. ARCHITECTURE clk_div_bahavior OF clk_div IS
  10. SIGNAL temp:STD_LOGIC_VECTOR(2 DOWNTO 0);
  11. CONSTANT counter:STD_LOGIC_VECTOR(2 DOWNTO 0):="101";
  12. BEGIN
  13. PROCESS(clk)
  14. BEGIN
  15. IF(clk'EVENT AND clk='1')THEN
  16. IF(temp=counter)THEN --控制分频
  17. temp<="000";
  18. ELSE
  19. temp<=temp+1;
  20. END IF;
  21. END IF;
  22. END PROCESS;
  23. PROCESS(clk)
  24. BEGIN
  25. IF(clk'EVENT AND clk='1')THEN
  26. IF(temp="001") --控制占空比
  27. clk_div_6<='1';
  28. ELSE
  29. clk_div_6<='0';
  30. END IF;
  31. END IF;
  32. END PROCESS;
  33. END clk_div_bahavior;

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3f3iv18pcu80k

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/502049
推荐阅读
相关标签
  

闽ICP备14008679号