Advertisement
lasthunter657

Untitled

Dec 12th, 2021
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.NUMERIC_STD.ALL;
  4. USE work.ITCE211Project_library.ALL;
  5.  
  6. ENTITY pe_array IS
  7.  
  8. PORT (
  9. reset, clk : IN STD_LOGIC;
  10. eni : in std_logic := '0';
  11. numberin : IN STD_LOGIC_VECTOR (data_width - 1 DOWNTO 0):= (OTHERS => '0');
  12. numbercotnacted: OUT STD_LOGIC_VECTOR (data_output - 1 DOWNTO 0) := (OTHERS => '0');
  13. input : in std_logic_vector(number_of_pe*data_width - 1 downto 0)
  14.  
  15. );
  16. END ENTITY;
  17.  
  18. ARCHITECTURE rtl OF pe_array IS
  19. COMPONENT pe IS
  20. PORT (
  21. numberin : IN STD_LOGIC_VECTOR (data_width - 1 DOWNTO 0);
  22. numberout : OUT STD_LOGIC_VECTOR (data_width - 1 DOWNTO 0);
  23. clk, eni, reset : IN STD_LOGIC;
  24. eno : OUT STD_LOGIC
  25. );
  26.  
  27. END COMPONENT;
  28. ----------------------Signals-------------------------------------
  29. signal enablesig : std_logic_vector( number_of_pe - 1 DOWNTO 0) := (OTHERS => '0');
  30. SIGNAL number : vector_array(number_of_pe - 1 DOWNTO 0) := (OTHERS => (OTHERS => '0'));
  31.  
  32.  
  33. signal sig1 : my_customtype ;
  34.  
  35. BEGIN
  36. ----------------------Generate component-------------------------------------
  37. Gen_PE : FOR i IN 0 TO number_of_PE - 1 GENERATE
  38. Gen_PE0 : IF i = 0 GENERATE
  39. Processing_Element : pe PORT MAP(
  40. numberin => numberin,
  41. numberout => number(1),
  42. eno => enablesig(1),
  43. clk => clk,
  44. reset => reset,
  45. eni => eni);
  46.  
  47. END GENERATE Gen_PE0;
  48. Gen_PE1 : IF i > 0 AND i < number_of_PE - 1 GENERATE
  49. Processing_Element : pe PORT MAP(
  50. numberin => number(i),
  51. eni => enablesig(i),
  52. numberout => number(i + 1),
  53. eno => enablesig(i + 1),
  54. clk => clk,
  55. reset => reset);
  56. END GENERATE Gen_PE1;
  57. Gen_PE2 : IF i = number_of_PE - 1 GENERATE
  58. Processing_Element : pe PORT MAP(
  59. numberin => number(i),
  60. eni => enablesig(i),
  61. numberout => number(0),
  62. eno => OPEN,
  63. clk => clk,
  64. reset => reset
  65. );
  66. END GENERATE Gen_PE2;
  67.  
  68. END GENERATE Gen_PE;
  69.  
  70. concatenting : PROCESS (number) IS
  71. BEGIN
  72. L1 : FOR i IN 0 TO number_of_pe - 1 LOOP
  73. numbercotnacted((data_width - 1) + i * data_width DOWNTO 0 + i *data_width ) <= number(i);
  74. END LOOP L1;
  75. END PROCESS concatenting;
  76.  
  77.  
  78. slicing:for i in 0 to data_width - 1 generate
  79. sig1(i) <= input(data_width*(i+1)-1 downto data_width*i);
  80. end generate;
  81.  
  82.  
  83.  
  84.  
  85. END ARCHITECTURE;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement