|
Евклидово расстояние на Xilinx DSP48 |
|
|
|
 |
Ответов
|
Feb 18 2016, 11:33
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(count_enable @ Feb 18 2016, 13:19)  Код library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all;
entity half_dsp_block is generic (WIDTH: integer := 18); port ( clock : in std_logic; areset : in std_logic; clock_ena : in std_logic; a0 : in std_logic_vector(WIDTH-1 downto 0); b0 : in std_logic_vector(WIDTH-1 downto 0); a1 : in std_logic_vector(WIDTH-1 downto 0); b1 : in std_logic_vector(WIDTH-1 downto 0); a2 : in std_logic_vector(WIDTH-1 downto 0); b2 : in std_logic_vector(WIDTH-1 downto 0); a3 : in std_logic_vector(WIDTH-1 downto 0); b3 : in std_logic_vector(WIDTH-1 downto 0); w : out std_logic_vector(2*WIDTH+1 downto 0)); end half_dsp_block;
architecture rtl of half_dsp_block is
signal a0_reg : signed(WIDTH-1 downto 0); signal b0_reg : signed(WIDTH-1 downto 0); signal a1_reg : signed(WIDTH-1 downto 0); signal b1_reg : signed(WIDTH-1 downto 0); signal a2_reg : signed(WIDTH-1 downto 0); signal b2_reg : signed(WIDTH-1 downto 0); signal a3_reg : signed(WIDTH-1 downto 0); signal b3_reg : signed(WIDTH-1 downto 0); signal p0 : signed(2*WIDTH downto 0); signal p1 : signed(2*WIDTH downto 0); signal w_sig : signed(2*WIDTH+1 downto 0);
begin
process (clock, areset) begin if (areset = '1') then -- asynchronous reset a0_reg <= (others => '0'); b0_reg <= (others => '0'); a1_reg <= (others => '0'); b1_reg <= (others => '0'); a2_reg <= (others => '0'); b2_reg <= (others => '0'); a3_reg <= (others => '0'); b3_reg <= (others => '0'); p0 <= (others => '0'); p1 <= (others => '0'); w_sig <= (others => '0'); elsif clock'event and clock = '1' and clock_ena = '1'then -- rising clock edge a0_reg <= signed(a0); b0_reg <= signed(b0); a1_reg <= signed(a0_reg); b1_reg <= signed(b1); a2_reg <= signed(a1_reg); b2_reg <= signed(b2); a3_reg <= signed(a2_reg); b3_reg <= signed(b3); --must follow the following order to be recognized to use shift register input p0 <= resize((a1_reg*b1_reg),p0'length) + resize((a0_reg*b0_reg),p0'length); p1 <= resize((a3_reg*b3_reg),p1'length) + resize((a2_reg*b2_reg),p1'length); w_sig <= resize(p0,w_sig'length) + resize(p1,w_sig'length); end if; end process;
w <= std_logic_vector(w_sig);
end rtl; Вы можете аналогичным способом поступить - для альтеры работало...
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
Сообщений в этой теме
count_enable Евклидово расстояние на Xilinx DSP48 Feb 18 2016, 09:18 Maverick Цитата(count_enable @ Feb 18 2016, 11:18)... Feb 18 2016, 09:31 blackfin Цитата(count_enable @ Feb 18 2016, 13:18)... Feb 18 2016, 09:37 Maverick нашел тему Feb 18 2016, 09:40 count_enable Цитата(blackfin @ Feb 18 2016, 13:37) Так... Feb 18 2016, 10:18 blackfin Цитата(count_enable @ Feb 18 2016, 14:18)... Feb 18 2016, 10:35  count_enable Цитата(blackfin @ Feb 18 2016, 14:35) Ну,... Feb 18 2016, 11:13   Maverick Вам привели описание для этого случая... Feb 18 2016, 11:16 blackfin Цитата(count_enable @ Feb 18 2016, 15:13)... Feb 18 2016, 11:41 count_enable Спасибо большое. Уже "увидел" как оно бу... Feb 18 2016, 11:49 blackfin Цитата(count_enable @ Feb 18 2016, 15:49)... Feb 18 2016, 12:21  Fat Robot есть приближенная оценка модуля вектора для двумер... Feb 18 2016, 15:55 blackfin Цитата(count_enable @ Feb 18 2016, 14:49)... Feb 22 2016, 10:02  Timmy Цитата(blackfin @ Feb 22 2016, 13:02) Есл... Feb 22 2016, 13:06 анатолий Цитата(count_enable @ Feb 18 2016, 11:18)... Mar 6 2016, 08:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|