R (adr_size - 1 DOWNTO 0); _B: OUT STD_LOGIC_VECTOR (adr_size - 1 DOWNTO 0)
); CU; beh OF CU ISirst: STD_LOGIC; irst_sum: STD_LOGIC; iQ: STD_LOGIC_VECTOR (adr_size - 1 DOWNTO 0); _A <= iQ-'1 '; en_out <= en; _sum <= not (irst_sum or clk); - сигнал скидання (між двома clk)
PROCESS (rst, clk) - лічильник видачі адрес і сигналу EN - і на блочну пам'ять (rst = '1 ') then - асинхронна перезавантаження рахунки по зовнішньому сигналу
- ien <= '0 '; <= '0'; <= (conv_std_logic_vector (N_count, adr_size)); (rising_edge (CLK)) then (en = '1 ' ) then
- ien <= '1 '; <= '1'; - формування сигналу читання на ПЗУ wr1 <= '1 '; - формування сигналу запису на ОЗП <=' 1 '; - внутр сигнал скидання (неактів.)
if iQ = (conv_std_logic_vector (1, adr_size)) then <= (conv_std_logic_vector (N_count, adr_size));
irst <= '0 '; - сигнал скидання (актив.)
else <= iQ - '1 '; if; if; if; PROCESS; (clk) (rising_edge (CLK)) then
irst_sum <= irst; - затримка на 1 такт
Q_B <= Q_A; if; process; beh;
------------------------------------------ ------------- SignedMul18x20 is (_size: INTEGER: = 18; - розрядність вхідних даних
coef_size: INTEGER: = 20 - розрядність коефіцієнтів
);
port (: in std_logic;: in std_logic_vector (data_size - 1 downto 0);: in std_logic_vector (coef_size - 1 downto 0); _A: out std_logic_vector (data_size + coef_size - 1 downto 0)
); SignedMul18x20; Behavioral of SignedMul18x20 isXA: signed (37 downto 0): = (others => '0 '); <= signed (A) * signed (coef); _A < ; = std_logic_vector (XA); Behavioral;
------------------------------------------ ------------- f_sum is (_size: INTEGER: = 18; - розмірність вхідних данних_size: INTEGER: = 20; - розмірність коеффіціентовfir: INTEGER: = 2); - збільшення розрядної сітки з урахуванням кол-ва
- коефіцієнтів в ПЗУ
(: in std_logic;: in std_logic;: in std_logic; _sum_A: in std_logic_vector (data_size + coef_size - 1 downto 0); _sum: out std_logic_vector (data_size - 1 downto 0)
); f_sum; behavioral of f_sum issum, sum_1: std_logic_vector ((data_size + coef_size + log2fir - 1) downto 0): = (others => '0 '); zeros: std_logic_vector (log2fir - 1 downto 0): = (others => '0 '); (rst, clk, in_sum_A) rst = '1' then <= (others => '0 '); _1 <= zeros & in_sum_A ; rising_edge (clk) thenen = '1 'then_1 <= (others => '0'); <= sum + sum_1 + (zeros & in_sum_A); if; if; process; _sum (data_size - 1 downto 0) <= sum (data_size - 1 downto 0); behavioral; <...