Alice 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Может кто-то реализовывал ГОСТ на VHDL. Я написала проект на VHDL, при создании конфигурации Number of 4 input LUTs: 6,648 out of 4,704 141% (OVERMAPPED) Number of occupied Slices: 4,024 out of 2,352 171% (OVERMAPPED) Total Number 4 input LUTs: 7,632 out of 4,704 162% (OVERMAPPED) Как решить вопрос с перегрузкой? Помогите, плз Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
oval 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Либо использовать кристалл (микросхему) большей емкости, либо пытаться создать более оптимальную с точки зрения занимаемых ресурсов архитектуру проекта. По первому варианту кристалл подобрать можно, по второму существует естественно некоторый предел, при котором в меньший объем уже не уложиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Renom 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба Так же проверьте какой тип оптимизации стоит в настройках синтезатора, если стоит скорость измените на оптимизацию по занимаемому месту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба Alice Можно посмотреть тут и тут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость urri 30 августа, 2007 Опубликовано 30 августа, 2007 · Жалоба Несколько лет назад делал ГОСТ для Spartan 2E. Частота 160 Мгц. Одновременно 4 слова за 132 такта. Поместилось всё в S2E-50 и осталось еще много места т.к. это был блок в составе хэша. Делал и для Altera Flex10K, но там не так удобно делать блоки замены. Несколько лет назад делал ГОСТ для Spartan 2E. Частота 160 Мгц. Одновременно 4 слова за 132 такта. Поместилось всё в S2E-50 и осталось еще много места т.к. это был блок в составе хэша. Делал и для Altera Flex10K, но там не так удобно делать блоки замены. Соврал. Непосредственно ГОСТ занимал 36 тактов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 30 августа, 2007 Опубликовано 30 августа, 2007 · Жалоба Интересно, как это у Вас 160 МГц в Спартане 2е получилось :07: ? У меня выходило максимум 70 и заоптимизировано было по самое некуда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Very_hard 0 31 августа, 2007 Опубликовано 31 августа, 2007 · Жалоба Интересно, как это у Вас 160 МГц в Спартане 2е получилось ? Присоединяюсь к вопросу! Имхо предел для кристалла для этого алгоритма где-то в районе 90-100 МГц (у меня выходило около 83МГц). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость urri 31 августа, 2007 Опубликовано 31 августа, 2007 · Жалоба Интересно, как это у Вас 160 МГц в Спартане 2е получилось :07: ? У меня выходило максимум 70 и заоптимизировано было по самое некуда. Вечером посмотрю что осталось, бо прошло уже лет 5 и после я уже над этим не работал. Плата осталась, проект по-моему тоже. Над оптимизацией работал очень много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 6 сентября, 2007 Опубликовано 6 сентября, 2007 · Жалоба Так где же обещанные результаты анализа закромов? Ждем-с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ASN 0 7 сентября, 2007 Опубликовано 7 сентября, 2007 · Жалоба BSV Может под словом частота подразумевалось 160 мбит/с? Тогда, IMHO, результат вполне реальный. Или конвеерная схема. Но это уже, по ресурсам, как минимум 2 устройства. Два независимых устройства, IMHO, поудобнее будут. urri Присоединяюсь к BSV. Интересно как сложный вычислитель может работать на такой частоте. А то слышал жалобы, что Spartan 2E на 133 МГц работает нестабильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Epikur 0 20 сентября, 2007 Опубликовано 20 сентября, 2007 · Жалоба Может кто-то реализовывал ГОСТ на VHDL. Я написала проект на VHDL, при создании конфигурации Number of 4 input LUTs: 6,648 out of 4,704 141% (OVERMAPPED) Number of occupied Slices: 4,024 out of 2,352 171% (OVERMAPPED) Total Number 4 input LUTs: 7,632 out of 4,704 162% (OVERMAPPED) Как решить вопрос с перегрузкой? Помогите, плз Alice, а вы вообще использовали синхронную реализацию (занимает 33 и более тактов) или это единый асинхронный компонент? И ещё. В большинстве FPGA есть встроенные блоки DRAM. Их можно применять для ГОСТ-а, например, чтобы упаковать в них ключ - немало экономит остальные ресурсы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lincolndsp 0 20 сентября, 2007 Опубликовано 20 сентября, 2007 · Жалоба помогите пожалуйста, нужны исходники ГОСТа на VHDL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Epikur 0 20 сентября, 2007 Опубликовано 20 сентября, 2007 · Жалоба Вот здесь лежат исходники для ГОСТ 28147-89 для режима простой замены http://www.sendspace.com/file/haeds8 Режим с обратной связью предлагаю доделать самостоятельно, если он нужен. Я исходники подкорректировал сейчас (поубирал лишнее), так что с некоторой вероятностью могут не заработать - негде проверить. ЗЫ. Ежели кто присоветует чего - как лучше сделать, то буду только рад. Единственное: ключ хранится в специально выделенном для него блоке DRAM, и это не устранимо. В моём случае. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lincolndsp 0 23 сентября, 2007 Опубликовано 23 сентября, 2007 · Жалоба Спасибо за исходники. Но отсутсвует файл с описанием архитектуры компонента gost key_mem. еще объясните пожалуйста как работает компонент gost89_nowkey: непонятно взаимодействие с компонентом LUT4 и что выполняет этот компонент gost89_nowkey. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 23 сентября, 2007 Опубликовано 23 сентября, 2007 · Жалоба gost key_mem - это двухпортовая память, правда с разной разрядностью по портам (названия сигналов полностью отражают их назначение) - на распределенной памяти. Сделано по всей видимости потому, что ключи грузятся по 16-разрядной шине. gost89_nowkey - элемент, преобразующий номер цикла шифрования в номер ключа. При зашифровании в простой замене ключи подаются в порядке 0 1 2 3 ... 7 0 ... 7 0 ... 7 7 ... 0, при расшифровании - в обратном. LUT4 - это look-up-table - элемент, позволяющий построить логическую функцию от 4-х переменных, является основным элементом реализации логических функций в различных ПЛИС (Xilinx и Altera, за остальных не скажу). INIT в данном случае задает таблицу истинности логической функции. Добавлю свои 5 копеек. Шина 64 разряда для загрузки и выдачи результата - зряшнее расходование ресурсов. Достаточно 32 без снижения скорости. (дело в том, что после предпоследнего цикла алгоритма в накопителе N1 лежит младшее 32-разрядное слово результата, а после последнего - старшее, по описанию после последнего цикла они меняются местами.) В предлагаемом варианте совершенно не рассмотрен такой эротичный и каверзный момент, как загрузка узла замены (подстановки). Видимо, предполагается работа с фиксированным узлом замены, однако не всегда это допустимо. Кроме того, что касается выработки адреса для ключа - незачем удлинять дополнительной логикой и без того длинную цепочку (32 разрядный сумматор, две памяти), лучше построить хитрый счетчик, с которого непосредственно и брать адрес для выборки нужной части ключа (если для хранения ключа используется память с регистром на выходе, т.е. синхронная, то пойдет и так). Также, этот участок кода -- Каждый цикл выполняется это Datareg1_proc : process (Clk, CalcEn, LongWordIn, Xorer, DataReg1) begin if StartDelay = '1' then DataReg1 <= LongWordIn (31 downto 0); DataReg2 <= LongWordIn (63 downto 32); elsif rising_edge(Clk) then DataReg1 <= Xorer; DataReg2 <= DataReg1; end if; end process; вряд ли будет нормально синтезировано. А правильно так: -- Каждый цикл выполняется это Datareg1_proc : process (Clk) begin if rising_edge(Clk) then if StartDelay = '1' then DataReg1 <= LongWordIn (31 downto 0); DataReg2 <= LongWordIn (63 downto 32); else DataReg1 <= Xorer; DataReg2 <= DataReg1; end if; end if; end process; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться