реклама на сайте
подробности

 
 
> FIR фильтр на VHDL с помощью fdatool, проблемы с быстродействием
mr.alexeevas
сообщение Jun 25 2013, 09:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Добрый день!

Столкнулся с такой проблемой: реализую полосовой фильтр на частоту 1 МГц, использую окно Блекмана, на 512 коэффициентов. ПЛИС Altera Cyclone IV E EP4CE115F29C7N. Загвоздка в том, что нужно сделать фильтр с частотой сэмплирования в 40 МГц, но чтобы он работал на тактовой частоте в 240 МГц (для экономии ресурсов, т.е. умножителей). В fdatool все настроил и при генерации VHDL кода, указываю, чтобы структура была каскадная. Все генерируется, но вот работать на частоте тактирования в 240 МГц отказывается, максимум на 120 МГц выходит. Аналогичный фильтр, но в FIR Compiler генерируется, разводится и работает, но у меня нет лицензии на него.

Помогите решить данную проблему, может в коде что-то подправить или в fdatool есть нюансы.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 26)
_Anatoliy
сообщение Jun 25 2013, 09:56
Сообщение #2


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 25 2013, 11:36) *
Добрый день!

Столкнулся с такой проблемой: реализую полосовой фильтр на частоту 1 МГц, использую окно Блекмана, на 512 коэффициентов. ПЛИС Altera Cyclone IV E EP4CE115F29C7N. Загвоздка в том, что нужно сделать фильтр с частотой сэмплирования в 40 МГц, но чтобы он работал на тактовой частоте в 240 МГц (для экономии ресурсов, т.е. умножителей). В fdatool все настроил и при генерации VHDL кода, указываю, чтобы структура была каскадная. Все генерируется, но вот работать на частоте тактирования в 240 МГц отказывается, максимум на 120 МГц выходит. Аналогичный фильтр, но в FIR Compiler генерируется, разводится и работает, но у меня нет лицензии на него.

Помогите решить данную проблему, может в коде что-то подправить или в fdatool есть нюансы.

Pipelining в перемножителях включен?
А почему так не хотите?
http://electronix.ru/forum/index.php?showt...t&p=1031347
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 25 2013, 11:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 25 2013, 13:56) *
Pipelining в перемножителях включен?
А почему так не хотите?
http://electronix.ru/forum/index.php?showt...t&p=1031347



Pipelining включен.
А вот ссылка не открывается.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 25 2013, 14:08
Сообщение #4


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 25 2013, 13:07) *
Pipelining включен.

Это не тот Pipelining,если включали его при генерации hdl-кода.Нужно перемножители ручками подключать и в них уже включать Pipelining(причём не меньше 3). Я так до 240 МГц разгонял фильтр на третьем циклоне.
Вообще то отучайтесь использовать матлабовский код выше 120 МГц.
Попробуйте ещё раз ссылку.Правда тот проект на 240 МГц тоже не пойдёт,нужно дорабатывать как сказано выше.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 26 2013, 04:51
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 25 2013, 18:08) *
Попробуйте ещё раз ссылку.


Скиньте пожалуйста ссылку еще раз, она некорректно создана.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 26 2013, 07:07
Сообщение #6


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 26 2013, 05:51) *
Скиньте пожалуйста ссылку еще раз, она некорректно создана.

Странно,у меня открывается.
раздел Важные темы,тема "Схемотехнические трюки для ПЛИСоводов",лист №9,посты 132 и 133.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 26 2013, 10:41
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 26 2013, 11:07) *
Странно,у меня открывается.
раздел Важные темы,тема "Схемотехнические трюки для ПЛИСоводов",лист №9,посты 132 и 133.


Спасибо, пойду проверю этот фильтр.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 27 2013, 12:39
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 25 2013, 18:08) *
Это не тот Pipelining,если включали его при генерации hdl-кода.Нужно перемножители ручками подключать и в них уже включать Pipelining(причём не меньше 3). Я так до 240 МГц разгонял фильтр на третьем циклоне.


Я руками подключил умножители, поэксперементировал с Pipelining, поставил еще регистров, но максимум чего добился это 170 МГц, можете подсказать, чтобы еще такого в матлабовском коде можно подправить?

Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 05:54
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 27 2013, 13:39) *
Я руками подключил умножители, поэксперементировал с Pipelining, поставил еще регистров, но максимум чего добился это 170 МГц, можете подсказать, чтобы еще такого в матлабовском коде можно подправить?

В таких случаях совет стандартный : анализировать отчёт тайм-квеста,искать пути которые валятся,принимать меры.Насколько я помню матлаб реализует дерево сумматоров - оно Вам нужно?
Вот отчёт тайм-квеста на тот вариант, который я выкладывал(для Циклона-3).
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 28 2013, 06:16
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 28 2013, 09:54) *
В таких случаях совет стандартный : анализировать отчёт тайм-квеста,искать пути которые валятся,принимать меры.Насколько я помню матлаб реализует дерево сумматоров - оно Вам нужно?
Вот отчёт тайм-квеста на тот вариант, который я выкладывал(для Циклона-3).


Да, тот код оригинальный и реализация получается быстродействующая, но дело в том, что необходимо сделать фильтр с тактовой 240 МГц, а вот данные должны приниматься и выдаваться с частотой в 40 МГц.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 06:51
Сообщение #11


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 28 2013, 07:16) *
Да, тот код оригинальный и реализация получается быстродействующая, но дело в том, что необходимо сделать фильтр с тактовой 240 МГц, а вот данные должны приниматься и выдаваться с частотой в 40 МГц.

Ну так добавьте сигнал enable. В чём проблема?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 09:26
Сообщение #12


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Вам не нужно добиваться быстродействия фильтра 240МГц,40МГц достаточно.Сигнал enable должен быть активным один такт на каждые шесть тактов клока. А чтобы таймквест правильно посчитал слэки ему нужно указать что фильтр работает со скважностью 6. Это делается командой set_multicycle_path.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 28 2013, 10:09
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 28 2013, 13:26) *
Вам не нужно добиваться быстродействия фильтра 240МГц,40МГц достаточно.Сигнал enable должен быть активным один такт на каждые шесть тактов клока. А чтобы таймквест правильно посчитал слэки ему нужно указать что фильтр работает со скважностью 6. Это делается командой set_multicycle_path.


Быстродействие в 240 МГц нужно для экономии умножителей, т.к. их в моем фильтре 512, и получается, что если быстродействие 240, а данные на 40, то можно использовать в 6 раз меньше коэффициентов.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 16:25
Сообщение #14


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 28 2013, 12:09) *
Быстродействие в 240 МГц нужно для экономии умножителей, т.к. их в моем фильтре 512, и получается, что если быстродействие 240, а данные на 40, то можно использовать в 6 раз меньше коэффициентов.

Ясно.Только не коэффициентов а умножителей.Так Вам не понятно как такой фильтр реализовать?У Вас же есть матлабовский hdl-файл,разберитесь как он работает,принцип перенесите на мой быстродействующий фильтр.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 04:35
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 28 2013, 20:25) *
Ясно.Только не коэффициентов а умножителей.Так Вам не понятно как такой фильтр реализовать?У Вас же есть матлабовский hdl-файл,разберитесь как он работает,принцип перенесите на мой быстродействующий фильтр.


Да, умножителей)
Думаю так и сделаю, но пока не получается подключить аппаратный умножитель, т.к. умножение происходит внутри цикла в вашем фильтре. Я новичок в этом деле, всего пару месяцев работаю с ПЛИС на VHDL.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 1 2013, 06:05
Сообщение #16


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jul 1 2013, 05:35) *
Да, умножителей)
Думаю так и сделаю, но пока не получается подключить аппаратный умножитель, т.к. умножение происходит внутри цикла в вашем фильтре. Я новичок в этом деле, всего пару месяцев работаю с ПЛИС на VHDL.

Ключевое слово generate.Осваивайте.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 11:43
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jul 1 2013, 10:05) *
Ключевое слово generate.Осваивайте.

Не понимаю, как в той структуре можно использовать generate. Если вносить под процесс, то quartus ругается, что он ожидает loop, если процесс убрать, то проблема с объявлением переменных. К тому же, не понимаю, как тогда испрользовать rising_edge
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 1 2013, 11:49
Сообщение #18


я только учусь...
******

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



Цитата(mr.alexeevas @ Jul 1 2013, 14:43) *
Не понимаю, как в той структуре можно использовать generate. Если вносить под процесс, то quartus ругается, что он ожидает loop, если процесс убрать, то проблема с объявлением переменных. К тому же, не понимаю, как тогда испрользовать rising_edge

пример на основе компаратора
Количество разрядов сравниваемых данных (чисел) компаратора задается в GENERIC

Описание портов:
CLK – тактовая частота;
RESET − асинхронный сброс;
А, В – сравниваемые N-разрядные данные;
ALB, AGB, ALEB, AGEB, AEB, ANEB – результаты сравнения чисел А и В;
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity comp is
GENERIC(width: INTEGER:=3);
Port ( CLK: in STD_LOGIC;
RESET: in STD_LOGIC;
A, B: in STD_LOGIC_VECTOR(width downto 0);
ALB, AGB: out STD_LOGIC;
ALEB, AGEB: out STD_LOGIC;
AEB, ANEB: out STD_LOGIC );
end comp;

architecture Behavioral of comp is
begin
process(CLK,RESET)
begin
  if (RESET = '1') then
      ALB  <= '0';
      AGB  <= '0';
      ALEB <= '0';
      AGEB <= '0';
      AEB  <= '0';
      ANEB <= '0';
  elsif (CLK'event and CLK ='1') then  
    if ( A < B ) then ALB <= '1';
    else ALB <= '0';
    end if;
  if ( A > B ) then AGB <= '1';
    else AGB <= '0';
    end if;
  if ( A <= B ) then ALEB <= '1';
    else ALEB <= '0';
    end if;
  if ( A >= B ) then AGEB <= '1';
    else AGEB <= '0';
    end if;
  if ( A = B ) then AEB <= '1';
    else AEB <= '0';
    end if;
  if ( A /= B ) then ANEB <= '1';
    else ANEB <= '0';
    end if;  end if;
end process;

end Behavioral;


или конкретней формулируйте вопросы...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 12:10
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(Maverick @ Jul 1 2013, 15:49) *
или конкретней формулируйте вопросы...


Речь идет об использовании generate, а не generic.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 1 2013, 12:21
Сообщение #20


я только учусь...
******

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



Цитата(mr.alexeevas @ Jul 1 2013, 15:10) *
Речь идет об использовании generate, а не generic.

не внимательно прочитал...
вот тут ответ


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 1 2013, 12:21
Сообщение #21


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jul 1 2013, 13:43) *
Не понимаю, как в той структуре можно использовать generate. Если вносить под процесс, то quartus ругается, что он ожидает loop, если процесс убрать, то проблема с объявлением переменных. К тому же, не понимаю, как тогда испрользовать rising_edge

Код
BEGIN
m1 : for i in 0 to N-1 generate
mul: Dmull port map (
        clk => clk,
        a => std_logic_vector(SumA1a(i)),
        b => std_logic_vector(CoeffDiff(i)),
        p => SumA2V(i));
end generate m1;


Вот пример подключения умножителя для Xilinx.Объявляете его после BEGIN. N - количество умножителей.
rising_edge тут не нужен - на перемножитель клок подаётся.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 12:51
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Спасибо, разобрался. Действительно, быстродействие в 250 МГц получается легко. Осталось разобраться, как сделать так, чтобы матлаб коэффициенты выдавал в приемлемом виде. bb-offtopic.gif
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 1 2013, 13:11
Сообщение #23


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jul 1 2013, 14:51) *
Спасибо, разобрался. Действительно, быстродействие в 250 МГц получается легко. Осталось разобраться, как сделать так, чтобы матлаб коэффициенты выдавал в приемлемом виде. bb-offtopic.gif

Я скрипт писал для этого.

Из FDA Tool делаете экспорт в WorkSpace и запускаете скрипт.
Прикрепленные файлы
Прикрепленный файл  ConvertCoeff2FilterFormII.rar ( 249 байт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 2 2013, 04:53
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jul 1 2013, 17:11) *
Я скрипт писал для этого.

Из FDA Tool делаете экспорт в WorkSpace и запускаете скрипт.


Я свой почти доделал, но интересно будет ваш изучить, спасибо) a14.gif
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 2 2013, 10:36
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jul 1 2013, 16:21) *
Код
BEGIN
m1 : for i in 0 to N-1 generate
mul: Dmull port map (
        clk => clk,
        a => std_logic_vector(SumA1a(i)),
        b => std_logic_vector(CoeffDiff(i)),
        p => SumA2V(i));
end generate m1;


Вот пример подключения умножителя для Xilinx.Объявляете его после BEGIN. N - количество умножителей.
rising_edge тут не нужен - на перемножитель клок подаётся.


Сделал фильтр, все компилится, стал проверять в симулинке АЧХ и вообще как фильтрует, а фильтр ничего не хочет делать. Выдает то, что поступает на вход. Ниже то, что наработал. Не пойму в чем ошибка.



Код
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
USE IEEE.numeric_std.ALL;
use work.FilterPak.all;

ENTITY FilterFormII IS
   PORT( clk                    :   IN    std_logic;
          clken            :   IN    std_logic;
            reset                    :   IN    std_logic;
         filter_in            :   IN    std_logic_vector(POW_IN-1 DOWNTO 0);
         filter_out            :   OUT   std_logic_vector(POW_OUT-1 DOWNTO 0)
         );

END;

ARCHITECTURE rtl OF FilterFormII IS
COMPONENT mult

    PORT
(      aclr        : IN STD_LOGIC;
        clken        : IN STD_LOGIC;    
        clock        : IN STD_LOGIC;
        dataa        : IN signed (9 DOWNTO 0);
        datab        : IN signed (15 DOWNTO 0);
        result    : OUT signed (25 DOWNTO 0)
    );
END COMPONENT;
    TYPE regmul_pipeline_type IS ARRAY (NATURAL range <>) OF signed(POW_IN+POW_COEFF-1 DOWNTO 0);
    TYPE regsum_pipeline_type IS ARRAY (NATURAL range <>) OF signed(POW_SUMM-1 DOWNTO 0);
    TYPE coeff_type IS ARRAY (NATURAL range <>) OF signed(POW_COEFF-1 DOWNTO 0);
    signal reg_mul : regmul_pipeline_type(N_COEFF-1 DOWNTO 0):= (OTHERS => (OTHERS => '0'));
    signal reg_sum : regsum_pipeline_type(FILTER_ORDER+1 DOWNTO 0):= (OTHERS => (OTHERS => '0'));
    signal input : signed(POW_IN-1 DOWNTO 0);


BEGIN

input <= signed(filter_in);


multiple:        for i in 0 to N_COEFF-2 generate
mult_inst: mult port map
         (aclr    => not reset ,
           clken    => clken,
            clock => clk,
            dataa => input,
            datab => coeff(i),
            result => reg_mul(i) );
            
    --        reg_mul(i) <= input * coeff(i);
            reg_sum(i) <= resize(reg_sum(i+1),POW_SUMM) + resize(reg_mul(i),POW_SUMM);
            reg_sum(FILTER_ORDER-i) <= resize(reg_sum(FILTER_ORDER+1-i),POW_SUMM) + resize(reg_mul(i),POW_SUMM);
        end generate;
        
b2v_inst : mult
  PORT MAP(clock => clk,
            clken    => clken,
            aclr    => not reset,
            dataa => input,
            datab => coeff(N_COEFF-1),
            result =>  reg_mul(N_COEFF-1)
         );
        
    --    reg_mul(N_COEFF-1) <= input * coeff(N_COEFF-1);
        reg_sum(N_COEFF-1) <= resize(reg_sum(N_COEFF),POW_SUMM) + resize(reg_mul(N_COEFF-1),POW_SUMM);

filter_out <=std_logic_vector( resize(reg_sum(0)(POW_SUMM-1 DOWNTO POW_POINT),POW_OUT));

END rtl;


Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use ieee.std_logic_unsigned.all;
USE IEEE.numeric_std.ALL;

package FilterPak is
    constant POW_IN            : natural := 10;--разрядность входных данных
    constant POW_OUT         : natural := 10;--разрядность выходных данных
    constant POW_COEFF        : natural := 16;--разрядность коэффициентов
    constant POW_SUMM        : natural := 28;--разрядность сумматоров
    constant POW_POINT        : natural := 10;--позиция точки
    constant FILTER_ORDER    : natural := 64; --порядок фильтра чётный(общее число коэффициентов = FILTER_ORDER+1)
    constant N_COEFF         : natural := FILTER_ORDER/2+1;
    TYPE coeff_type IS ARRAY (NATURAL range <>) OF signed(POW_COEFF-1 DOWNTO 0);
    constant coeff             : coeff_type(0 TO N_COEFF-1) := (
to_signed(   -48, POW_COEFF),
to_signed(   -22, POW_COEFF),
to_signed(    80, POW_COEFF),
to_signed(   -22, POW_COEFF),
to_signed(   -98, POW_COEFF),
to_signed(    58, POW_COEFF),
to_signed(   134, POW_COEFF),
to_signed(  -140, POW_COEFF),
to_signed(  -134, POW_COEFF),
to_signed(   244, POW_COEFF),
to_signed(    98, POW_COEFF),
to_signed(  -370, POW_COEFF),
to_signed(     2, POW_COEFF),
to_signed(   494, POW_COEFF),
to_signed(  -180, POW_COEFF),
to_signed(  -588, POW_COEFF),
to_signed(   446, POW_COEFF),
to_signed(   610, POW_COEFF),
to_signed(  -800, POW_COEFF),
to_signed(  -510, POW_COEFF),
to_signed(  1228, POW_COEFF),
to_signed(   228, POW_COEFF),
to_signed( -1698, POW_COEFF),
to_signed(   310, POW_COEFF),
to_signed(  2176, POW_COEFF),
to_signed( -1226, POW_COEFF),
to_signed( -2612, POW_COEFF),
to_signed(  2806, POW_COEFF),
to_signed(  2966, POW_COEFF),
to_signed( -6086, POW_COEFF),
to_signed( -3194, POW_COEFF),
to_signed( 20562, POW_COEFF),
to_signed( 36042, POW_COEFF)

);
end package FilterPak;
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 2 2013, 12:30
Сообщение #26


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jul 2 2013, 11:36) *

Вникать сейчас времени нет.Навскидку - клок вы только на перемножители подали?Это не правильно.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 3 2013, 04:53
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jul 2 2013, 16:30) *
Вникать сейчас времени нет.Навскидку - клок вы только на перемножители подали?Это не правильно.


Да, только на перемножители. Но если сделать промежуточные регистры, быстродействие падает до 6 МГц (
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01681 секунд с 7
ELECTRONIX ©2004-2016