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

 
 
> Сравнить (через сжатие) два 512разядных(и более)сущности, Прошу совета по минимуму аппаратного рессурса
Мур
сообщение Mar 10 2011, 08:47
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Уважаемые форумчане!
Обращаюсь к вашему опыту, ибо боюсь при такой разрядности съесть рессурс уже готового проекта.
Время не жмёт, его достаточно. ...Пугает здоровенный мультиплексор, если прогонять по CRC32 всю последовательность(64байта) через автомат.
Может нечто древовидное организовать? Может и не CRC, а сигнатуры какие породить?...
Итог,- убедиться в одинаковости сигнатур приходящей извне(в последовательном коде) со сгенерированной у себя.
Кто что подобное ваял?
Интуитивно, чтобы не создавать проблемы основному проекту, просится что-то разнесённое, древовидное, т.к. сами сущности размазаны по ПЛИС.
Я пока готовлюсь к простому автомату CRC ...в лоб. Но неуютно в перспективе!
Спасибо! Рад любым идеям и заделам... tort.gif
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3 >  
Start new topic
Ответов (15 - 29)
dvladim
сообщение Mar 14 2011, 08:58
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(Мур @ Mar 14 2011, 09:48) *
Не думаю... Вызов функции происходит по каждому тику клока. Так что подача данных порциями по 8 точно есть!
Я это применял в побайтном темпе. Вот оттуда ваш код(с указанного сайта) мною применяемый

Вызов функции - ваше дело. Хотите каждый такт, хотите не каждый. Это уж как вы решите.
Ширина данных - вещь параметризуемая. Нужна ширина в 1 бит - ну так сгенерите. Не вижу проблемы.
Да, и кстати, код не мой.
Go to the top of the page
 
+Quote Post
Мур
сообщение Mar 14 2011, 09:17
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(dvladim @ Mar 14 2011, 12:58) *
Вызов функции - ваше дело. Хотите каждый такт, хотите не каждый. Это уж как вы решите.
Ширина данных - вещь параметризуемая. Нужна ширина в 1 бит - ну так сгенерите. Не вижу проблемы.
Да, и кстати, код не мой.

Да, там якобы можно менять ширину шины выходной. Но на самом деле 1 не получишь....
Попробуйте!
Go to the top of the page
 
+Quote Post
dvladim
сообщение Mar 14 2011, 20:43
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(Мур @ Mar 14 2011, 12:17) *
Да, там якобы можно менять ширину шины выходной. Но на самом деле 1 не получишь....
Попробуйте!

Ширина выходной шины соответствует разрядности полинома.
Извините, но проблемы в упор не вижу.
Go to the top of the page
 
+Quote Post
Мур
сообщение Mar 15 2011, 06:43
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(dvladim @ Mar 15 2011, 00:43) *
Ширина выходной шины соответствует разрядности полинома.
Извините, но проблемы в упор не вижу.

Ой, это я лоханулся. Извините! Конечно же входная шина!...
Выходная всегда по размеру CRC.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Mar 15 2011, 20:26
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(Мур @ Mar 15 2011, 09:43) *
Ой, это я лоханулся. Извините! Конечно же входная шина!...
Выходная всегда по размеру CRC.

Ну а ширину входных данных, как я уже говорил, можно выбрать при генерации.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 15 2011, 20:49
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Я вам вот какой момент расскажу. Если написать функцию для однобитного потока данных и потом её применить столько раз за такт, сколько нужно битов обрабатывать в параллель, то Xilinx разведет это дело на частоту в ~1.5 раза большую, чем получается с кодом всех этих генераторов и opencores.

ЗЫ: исходник продается sm.gif
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Mar 15 2011, 20:56
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Shtirlits
а какой синтезатор ?
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 15 2011, 21:28
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



xst, хотя это не важно, synplify при этом тоже хорош sm.gif чего я только не пробовал, чтобы поднять тактовую... а оказалось все так просто и сногсшибательно.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Mar 15 2011, 22:07
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



За XST я такое замечал, а вот Synplify в таких случаях синтезировал однаково..
То есть вы хотите сказать, что применительно к этой задаче, разбиение на биты дало одинаковые результаты для XST и Synplify то есть увеличило тактовую ?
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 15 2011, 22:23
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



crc32 - задача, которая сильно зависит от способа реализации и размещения. И чем больше её регистры пытается дублировать синтезатор, тем она занимает больше площади и получается еще хуже.
Сражался я с этим 5 лет назад, утверждать не буду, но помнится, что я никак не мог сделать больше 212MHz на virtex-2pro никаким синтезатором. Когда уже замучался и написал себе модель для тестирования и тупо попытался её развести, получил 270Mhz. Сильно удивился.
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 16 2011, 03:50
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shtirlits @ Mar 15 2011, 14:49) *
ЗЫ: исходник продается sm.gif

гыыы, если учесть что я раза 3 его выкладывал на форуме...... то вы сударь почти барыга wink.gif


--------------------
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 16 2011, 06:06
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Дык! Но вы выкладывали разве мой исходник? sm.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 16 2011, 06:35
Сообщение #28


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shtirlits @ Mar 16 2011, 00:06) *
Дык! Но вы выкладывали разве мой исходник? sm.gif

а будет разница ? wink.gif


--------------------
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 16 2011, 06:46
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Хотел было предложить соревнование, но заленился, да и некогда.
Наверное не будет разницы, если у вас все написано так, как я про это думаю.
Go to the top of the page
 
+Quote Post
Мур
сообщение Mar 17 2011, 13:17
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(Shtirlits @ Mar 16 2011, 10:46) *
..Наверное не будет разницы, если у вас все написано так, как я про это думаю.

Ну вот для куражу за 2 минуты CRC24
Цитата
-------------------------------------------------------------------------------
--
-- Description : X24+X23+X6+X5+X1+1
--
-------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity signature is
port(
CLK : in STD_LOGIC;
Reset : in STD_LOGIC;
ind : in STD_LOGIC;
dat : out STD_LOGIC_VECTOR(23 downto 0)
);
end signature;

architecture signature_body of signature is
signal rg_baza : STD_LOGIC_VECTOR(23 downto 0);
signal rg_bz : STD_LOGIC_VECTOR(23 downto 0);
begin
process (CLK,Reset)
begin
if Reset = '1' then
rg_baza <= "000000000000000000000000";
elsif CLK'event and CLK = '1' then
rg_baza <= rg_bz;
end if;
end process;
rg_bz(0) <= rg_baza(23)xor ind;
rg_bz(1) <= rg_baza(0) xor (rg_baza(23) xor ind);
rg_bz(2) <= rg_baza(1);
rg_bz(3) <= rg_baza(2);
rg_bz(4) <= rg_baza(3);
rg_bz(5) <= rg_baza(4) xor (rg_baza(23) xor ind);
rg_bz(6) <= rg_baza(5) xor (rg_baza(23) xor ind);
rg_bz(21 downto 7) <= rg_baza(20 downto 6);
rg_bz(22) <= rg_baza(21) xor (rg_baza(23) xor ind);
rg_bz(23) <= rg_baza(22) xor (rg_baza(23) xor ind);
dat<= rg_baza;
end signature_body;


Сообщение отредактировал Мур - Mar 18 2011, 06:41
Go to the top of the page
 
+Quote Post

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

 


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


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