Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. use IEEE.NUMERIC_STD.ALL;
  4.  
  5.  
  6. entity top is
  7. PORT(
  8. clk50, reset50 : in STD_LOGIC;
  9. hsyncG, vsyncG : out STD_LOGIC;
  10. red, green, blue : out STD_LOGIC_VECTOR(3 downto 0)
  11. );
  12. end top;
  13.  
  14.  
  15. architecture vhdl of top is
  16.  
  17. --Integration du fichier digit
  18.  
  19.  
  20. component HEX32 is
  21. Port ( val : in STD_LOGIC_VECTOR (31 downto 0);
  22. posX : in STD_LOGIC_VECTOR (9 downto 0):= "0001100100";
  23. posY : in STD_LOGIC_VECTOR (9 downto 0):= "0001100100";
  24. beamX : in STD_LOGIC_VECTOR (9 downto 0);
  25. beamY : in STD_LOGIC_VECTOR (9 downto 0);
  26. beamValid : in std_logic;
  27. red : in STD_LOGIC_VECTOR (3 downto 0):="0001";
  28. green : in STD_LOGIC_VECTOR (3 downto 0):="1111";
  29. blue : in STD_LOGIC_VECTOR (3 downto 0):="0001";
  30. redOut : out STD_LOGIC_VECTOR (3 downto 0);
  31. greenOut : out STD_LOGIC_VECTOR (3 downto 0);
  32. blueOut : out STD_LOGIC_VECTOR (3 downto 0) );
  33. end component;
  34.  
  35. --Integration du fichier controlVGA
  36.  
  37. component controlVGA is
  38. Port(
  39. clk : in std_logic;
  40. reset : in std_logic;
  41. rIn, gIn, bIn : in std_logic_vector(3 downto 0);
  42. rOut, gOut, bOut : out std_logic_vector(3 downto 0);
  43. beamX, beamY : out std_logic_vector(9 downto 0);
  44. beamValid : out std_logic;
  45. blank : inout std_logic;
  46. vsync : out std_logic;
  47. hsync : out std_logic
  48. );
  49. end component;
  50.  
  51.  
  52. component cpt is
  53. Port(
  54. clk,reset: in std_logic;
  55. compteur : out std_logic_vector(31 downto 0)
  56. );
  57. end component;
  58.  
  59.  
  60. --création des signaux (donc toutes chemins à rélier)
  61.  
  62. signal rSig, gSig, bSig: STD_LOGIC_VECTOR(3 downto 0); --entrée D
  63. signal beamXSig, beamYSig: STD_LOGIC_VECTOR(9 downto 0); --entrée D
  64. signal beamValidSig : std_logic; --entrée D
  65. signal posXSig, posYSig : STD_LOGIC_VECTOR (9 downto 0); --entrée D
  66.  
  67. signal redOutSig,greenOutSig, blueOutSig : STD_LOGIC_VECTOR (3 downto 0); --sortie D
  68.  
  69. signal comptSig : STD_LOGIC_VECTOR (31 downto 0);--compteur SIGNAL
  70. signal timerSig: std_logic_vector(25 downto 0); --2^26 > 50 000 000
  71.  
  72. begin
  73. timerSig <= "00000000000000000000000000" when reset50 ='1'
  74. else "00000000000000000000000000" when timerSig = "10111110101111000010000000" AND rising_edge(clk50)
  75. else std_logic_vector(unsigned(timerSig) + 1) when rising_edge(clk50);
  76.  
  77. comptSig <= std_logic_vector(unsigned(comptSig) + 1) when timerSig="10111110101111000010000000"
  78. else "00000000000000000000000000000000" when reset50 ='1'
  79. else "00000000000000000000000000000000" when comptSig = "11111111111111111111111111111111";
  80.  
  81. idigit : HEX32 port map (
  82.  
  83. val => comptSig,
  84.  
  85. redOut => redOutSig,
  86. greenOut => greenOutSig,
  87. blueOut => blueOutSig,
  88.  
  89. beamX => beamXSig,
  90. beamY => beamYSig,
  91. beamValid => beamValidSig
  92.  
  93. );
  94.  
  95. --iCpt : cpt port map (
  96.  
  97. --reset => reset50,
  98. --clk => clk50,
  99. --compteur => comptSig
  100.  
  101. --);
  102.  
  103. -- transfert entre les composants et l'exterieur
  104. iVGA : controlVGA port map(
  105.  
  106. rIn => redOutSig,
  107. gIn => greenOutSig,
  108. bIn => blueOutSig,
  109.  
  110. hsync => hsyncG,
  111. vsync => vsyncG,
  112.  
  113. beamX => beamXSig,
  114. beamY => beamYSig,
  115. beamValid => beamValidSig,
  116.  
  117. clk => clk50,
  118. reset => reset50,
  119.  
  120. rOut => rSig,
  121. gOut => gSig,
  122. bOut => bSig
  123. );
  124.  
  125. red <= rSig;
  126. green <= gSig;
  127. blue <= bSig;
  128.  
  129. end vhdl;
  130.  
  131.  
  132.  
  133.  
  134.  
  135. --cpt_r <= (others => '0') when reset50='1'
  136. -- else cpt_c when rising_edge(clk50);
  137.  
  138. --cpt_c <= (others => '0') when cpt_r="10111110101111000010000000" else
  139. -- std_logic_vector(unsigned(cpt_r)+1);
  140.  
  141. --comptSig_c <= std_logic_vector(unsigned(comptSig_r) + 1)
  142. -- when cpt_r="10111110101111000010000000" else
  143. -- comptSig_r;
  144.  
  145. --comptSig_r <= (others => '0') when reset50='1'
  146. -- else comptSig_c when rising_edge(clk50);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement