makc 217 2 марта, 2008 Опубликовано 2 марта, 2008 · Жалоба Думаю, что это ничего не даст, т.к. по-прежнему остается узел замены (подстановки) после сумматора и XOR для получения промежуточного результата. Более того, при использовании оного 32-разрядного сумматора будет синтезирована одна цепочка элементов ускоренного переноса, а при 32-х одноразрядных (если я правильно Вас понял и имеется в виду сумматор, прибавляющий один бит к 32-х разрядному числу) будет аж 32 таких цепочки переноса, что положительно не сможет сказаться на производительности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
masic 0 10 апреля, 2008 Опубликовано 10 апреля, 2008 · Жалоба Подскажите кнонить можно ли реализовать ГОСТ на Altera MAX3000 с задаваемыми извне S-box-ами (из внешнего ПЗУ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kadaj 0 8 сентября, 2008 Опубликовано 8 сентября, 2008 · Жалоба У кого-нибудь остались исходники ГОСТ 28147-89? Желательно на verilog'e. Очень нужно для диплома!!! :help: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kadaj 0 16 ноября, 2008 Опубликовано 16 ноября, 2008 · Жалоба Реализовал я ГОСТ2814789 с использованием регистовой памяти, теперь мне нужно написать реализацию с использованием блочной памяти... Только вот я даже не знаю с чего начать, в интернете вообще ничего нет по этому поводу... Не подскажете с чего начать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба Реализовал я ГОСТ2814789 с использованием регистовой памяти, теперь мне нужно написать реализацию с использованием блочной памяти... Только вот я даже не знаю с чего начать, в интернете вообще ничего нет по этому поводу... Не подскажете с чего начать? С того, что такое блочная память и как она работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kadaj 0 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба С того, что такое блочная память и как она работает. Ну это ежу понятно, мне бы примеры посмотреть, только вот нигде не могу найти... :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 17 ноября, 2008 Опубликовано 17 ноября, 2008 · Жалоба Вы же Альтеру применяете, если я правильно помню - так и смотрите в хэндбуке по используемому семейству. Для начала этого вполне достаточно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alice 0 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба Доброе время суток! Плз, помогите Неправильно обрабатываются данные в таблице замен (не могу понять почему). Подскажите, плз, что я неправильно делаю/пишу. Просьба сильно не пинать, я не очень давно работаю с VHDL, но очень хочу разобраться . Всем спасибо за любой совет :) . test_1.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба А что надо было сделать-то? В смысле какой режим реализовать и какие возможности (загрузка ключа, например) обеспечить? Текста много, понятного мало. Например, я вообще не понял зачем нужна ф-ия S_block. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alice 0 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба Загружается ключ и два 32-битовые блоки информации. Используется режим простой замены. S_block - поблочная замена (я немного переписала ) function S_Block (x: in STD_LOGIC_VECTOR(31 downto 0)) return STD_LOGIC_VECTOR is variable m_bit, z_bit: unsigned(31 downto 0); variable m, z1,z2,z3,z4,z5,z6,z7,z8: STD_LOGIC_VECTOR(3 downto 0); variable z : STD_LOGIC_VECTOR(31 downto 0); begin m_bit:= unsigned(x); m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z1:= S1(m); m_bit:= unsigned(x); m_bit:= m_bit sll 4; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z2:= S2(m); m_bit:=unsigned(x); m_bit:= m_bit sll 8; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z3:= S3(m); m_bit:=unsigned(x); m_bit:= m_bit sll 12; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z4:= S4(m); m_bit:=unsigned(x); m_bit:= m_bit sll 16; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z5:= S5(m); m_bit:=unsigned(x); m_bit:= m_bit sll 20; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z6:= S6(m); m_bit:=unsigned(x); m_bit:= m_bit sll 24; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z7:= S7(m); m_bit:=unsigned(x); m_bit:= m_bit sll 28; m_bit:= m_bit srl 28; m:= std_logic_vector(m_bit); z8:= S8(m); z:=z1&z2&z3&z4&z5&z6&z7&z8; return z; end S_Block; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба S_block - поблочная замена (я немного переписала ) Понял, тогда присутствующая в исходнике ф-ия S выглядит гораздо лучше и должна делать ровно то же самое, что и ваша S_Block. В приложенном файле мой вариант реализации ядра ГОСТ (без управления) с фиксированным узлом замены. Весь Ваш УЗ вбивать было лень, поэтому первая подстановка повторена 8 раз. Как управлять: Загрузка исходных данных в накопители - 2 такта (R2_SEL = R1_SEL = '1'; R2_WE = R1_WE = '1') Собственно, преобразование - 31 такт (R2_SEL = R1_SEL = '0'; R2_WE = R1_WE = '1', KEY_SEL = 0..70..70..77..0) после этого в R1 будет лежать младшее слово результата. 32-й такт преобразования - 1 такт (R2_SEL = R1_SEL = '0'; R2_WE = R1_WE = '1') после этого в R1 будет лежать старшее слово результата. При загрузке ключа нужно выбрать соответствующий подключ сигналом KEY_SEL и выставить один из сигналов KEY_WE. Для расшифрования порядок подключей обратный. Для реализации управления Вам понадобится автомат (state machine), счетчик (циклов), подстановка (память, ROM 16x3) для выбора подключа. Кроме того, неплохо бы Вам ознакомиться с этой темой, для уяснения сущности HDL-языков. gost_core_sfix.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alice 0 12 мая, 2009 Опубликовано 12 мая, 2009 · Жалоба Спасибо большое, буду разбираться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PDA 0 21 января, 2010 Опубликовано 21 января, 2010 · Жалоба BSV, сделал ядро ГОСТа похожее на ваше - спасибо за пример красивого описания. У Вас не возникало проблемы с задержками - когда сигнал управления входом регистра N1 (или N2) запаздывал по отношению к клоку, по которому в свою очередь, происходила загрузка в регистр N1 (или N2) - получалось что нужно отслеживать количество тактов (это для случая когда загружаем в накопители данные - два такта. первый такт из text_in32 в N2, второй такт тотже что и первый плюс из N2 в N1) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Niklv 0 6 ноября, 2011 Опубликовано 6 ноября, 2011 (изменено) · Жалоба Выкладываю на линч свою реализацию (по сути модификацию). Делалось с оглядкой на вариант предложенный BSV. Производительность - 4 такта на 33Мгц (115 МБит/с) на спартане 6. Ресурсов, естественно, потребуется больше. gost_core_2.vhd Изменено 6 ноября, 2011 пользователем Niklv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 7 ноября, 2011 Опубликовано 7 ноября, 2011 · Жалоба Выкладываю на линч свою реализацию (по сути модификацию). Делалось с оглядкой на вариант предложенный BSV. Производительность - 4 такта на 33Мгц (115 МБит/с) на спартане 6. Ресурсов, естественно, потребуется больше. Что-то не понял, у вас все 32 цикла шифрования выполняются за 4 такта или это один цикл? Просто моя реализация выполняется за 32 такта + 1 такт на изменение таблицы/ключа. Ну и все стадии выполняются по тактовой, т.е синхронно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться