fj.vhd
上传用户:whhc027
上传日期:2022-08-10
资源大小:410k
文件大小:3k
源码类别:

VHDL/FPGA/Verilog

开发平台:

VHDL

  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. entity fj is
  6. port(
  7. clk:in std_logic;
  8. s:in std_logic;
  9. fmc: buffer std_logic;
  10. fmc1: buffer std_logic;
  11. sh:out std_logic;
  12. ah:out std_logic;
  13. sv:out std_logic;
  14. av:out std_logic;
  15. oe:out std_logic
  16. );
  17. end fj;
  18. architecture a of fj is
  19. signal fmca: std_logic;
  20. signal fmcb: std_logic;
  21. signal fmcc: std_logic;
  22. signal cf1: integer range 0 to 255;
  23. signal csh1: integer range 0 to 255;
  24. signal cs0: integer range 0 to 255;
  25. signal cs1: integer range 0 to 255;
  26. signal cv1: integer range 0 to 4000:=3560;
  27. signal sh1: std_logic;
  28. signal ah1: std_logic;
  29. signal sv1: std_logic;
  30. signal sv11: std_logic;
  31. signal av1: std_logic;
  32. signal oe1: std_logic;
  33. begin
  34. process 
  35. begin
  36. wait until clk = '1';
  37. if (s='0' and cf1>0) then
  38. fmca <= '0';
  39. else
  40. fmca <= '1';
  41. end if;
  42. end process;
  43. process(clk)
  44. begin
  45. if clk'event and clk = '1' then
  46. if cf1<159 then
  47. cf1 <= cf1 + 1;
  48. else
  49. cf1 <= 0;
  50. end if;
  51. end if;
  52. end process;
  53. process(clk)
  54. begin
  55. if clk'event and clk = '0' then
  56. if (fmca = '1' and cf1 = 0) then
  57. fmcb <= '0';
  58. else
  59. fmcb <= '1';
  60. end if;
  61. end if;
  62. end process;
  63.     fmc <= fmcb;
  64. process(clk)
  65. begin
  66. if clk'event and clk = '0' then
  67. if (fmc = '0') then
  68. csh1 <= 0;
  69. else
  70. csh1 <= csh1 + 1;
  71. end if;
  72. if (csh1 < 10 or csh1 > 157 ) then
  73. sh1 <= '0';
  74. else 
  75.     sh1 <= '1';
  76. end if;
  77. end if;
  78. end process;
  79. sh <= sh1;
  80. process(clk)
  81. begin
  82. if clk'event and clk = '0' then
  83. if (csh1 < 24 or csh1 > 153) then
  84. ah1 <= '0';
  85. else 
  86. ah1 <= '1';
  87. end if;
  88. end if;
  89. end process;
  90. ah <= ah1;
  91.    
  92. process(clk)
  93. begin
  94. if clk'event and clk = '1' then
  95. if (s = '1') then
  96. cs0 <= cs0 + 1;
  97. else
  98. cs0 <= 0;
  99. end if;
  100. end if;
  101. end process;
  102.     process
  103.     begin
  104. wait until s = '0';
  105. if(cs0=74 or cs0=12) then
  106. if (cs1<14) then
  107. cs1<=cs1+1;
  108. end if;
  109. else
  110. cs1<=0;
  111. end if;
  112. if (cs1>3 and cs1<9) then
  113. sv1<='0';
  114. else sv1<='1';           
  115. end if;
  116.     end process;
  117. sv <= sv1;
  118. process
  119. begin
  120. wait until sv1 = '0';
  121. if (ah1 = '1') then
  122. oe1 <= '0';
  123. else
  124. oe1 <= '1';
  125. end if;
  126. end process;
  127. oe <= oe1;
  128. process
  129. begin
  130. wait until clk = '1' ;
  131. sv11<=sv1;
  132. end process;
  133. fmcc <= not(not(sv1) and sv11);
  134. fmc1 <= fmcc;
  135. process(clk)
  136. begin
  137. if clk'event and clk = '0' then
  138. if (fmcc = '0') then
  139. cv1 <= 0;
  140. else 
  141. cv1 <= cv1 +1;
  142. end if;
  143. if (cv1>0 and cv1<3440) then
  144. av1 <= '0';
  145. else 
  146. av1 <= '1';
  147. end if;
  148. end if;
  149. end process;
  150. av <= av1;
  151. end a;