оптимальный фильтр на ПЛИС - побитное умножение

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Prosperous »

В общем вот что получилось. Ваша идея + немного подумать. Выкладываю сам процесс обработки без описания сигналов.
Вроде работает :)

Код: Выделить всё

filter: process (CLK_RS422)

begin
if (rising_edge(CLK_RS422)) then

if (INPUT_RS422 = '1') then
koef <= 1;
elsif (INPUT_RS422 = '0') then
koef <= -1;
end if;

reg0 <= koef;
reg1 <= reg0;
reg2 <= reg1;
reg3 <= reg2;
reg4 <= reg3;
reg5 <= reg4;
reg6 <= reg5;
reg7 <= reg6;
reg8 <= reg7;
reg9 <= reg8;
reg10 <= reg9;
reg11 <= reg10;
reg12 <= reg11;
reg13 <= reg12;
reg14 <= reg13;
reg15 <= reg14;
Data <= reg0 + reg1 - reg2 - reg3 + reg4 + reg5 - reg6 - reg7 + reg8 + reg9 - reg10 - reg11 + reg12 + reg13 - reg14 - reg15;

end if;
end process;


Хотел в цикл забабахать. Но чето при компиляции ругается. Поэтому пока оставил как есть.
Реклама
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Meteor »

Можно существенно сократить и вместо

Код: Выделить всё

reg1 <= reg0;
reg2 <= reg1;
reg3 <= reg2;
...
Записать

Код: Выделить всё

reg(15 downto 1):=reg(14 downto 0);
reg(0):=koef;
Для зацикливания нужно назначить внешний сигнал по которому будет стартовать все
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение nick17 »

Разве это синтезируется? :)
koef <= -1;
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Meteor »

Не должно, речь ведь о бите
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
Эиком - электронные компоненты и радиодетали
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Prosperous »

Разве это синтезируется?
Ну а почему нет, если koef тип integer и reg тип integer? Я же сказал что описание сигналов не привожу.
reg(15 downto 1):=reg(14 downto 0);
reg(0):=koef;
Т.к. у меня тип integer, то я реализовал так

Код: Выделить всё


type reg_Type is array (integer range 15 downto 0) of integer;
signal reg : reg_Type;

for m in 1 to 15 loop

reg(m) <= reg(m-1);

end loop;

reg(0) <= koef;
смотрите внимательнее, я отслеживаю приходящий бит, и в зависимости от того какой он - присваиваю koef либо 1, либо -1
Реклама
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Meteor »

Интересно взглянуть на RTL лист. Боюсь интежер забрал слишком много ячеек. Сколько ресурсов в отчете пишет?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
Аватара пользователя
nick17
Встал на лапы
Сообщения: 134
Зарегистрирован: Пт июн 26, 2009 06:40:07
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение nick17 »

Prosperous писал(а):
Разве это синтезируется?
Ну а почему нет, если koef тип integer и reg тип integer? Я же сказал что описание сигналов не привожу.
reg(15 downto 1):=reg(14 downto 0);
reg(0):=koef;
Т.к. у меня тип integer, то я реализовал так

Код: Выделить всё


type reg_Type is array (integer range 15 downto 0) of integer;
signal reg : reg_Type;

for m in 1 to 15 loop

reg(m) <= reg(m-1);

end loop;

reg(0) <= koef;
смотрите внимательнее, я отслеживаю приходящий бит, и в зависимости от того какой он - присваиваю koef либо 1, либо -1
Я про то как вы видите знак "-" в железе :)
Как правильно пояснил Метеор, знак это всего лишь флаг: либо 1 либо 0.
А вы считаете, что синтезатор сам поймет знак и синтезирует его в схему?
Поправте если ошибаюсь..
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Prosperous »

А вы считаете, что синтезатор сам поймет знак и синтезирует его в схему?
Я не очень понимаю о чем вы. Программа синтезируется без ошибок. Если вы считаете, что в реализации косяк - укажите конкретно, попробую исправить. Если бы я знал как делать, сюда бы не писал.

2 Meteor

Приложил суммарную информацию. Если честно, меня волнует 4 строка сверху.

Хотя я не очень понимаю, насколько это серьезно :)
Вложения
summury.jpg
(73.32 КБ) 283 скачивания
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Meteor »

Ну не плохо я считаю - 83 логических элемента.
Вот у меня в квартусе получилось чуть поменьше - 64
Изображение
Вложения
bit_corel.JPG
(14.61 КБ) 586 скачиваний
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Prosperous »

Meteor а подскажите, если не сложно

Number of Slices containing only related logic 237 из 237 насколько это серьезно? и стоит ли вобще внимание на этом пункте заострять.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: оптимальный фильтр на ПЛИС - побитное умножение

Сообщение Meteor »

Вам просто сказали что все ушло в логику
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»