Комментарии 39
У меня проблемы с картинками, они отображаются так: https://i.imgur.com/QYxaqM3.png
Когда я пробую посмотреть в другой вкладке, сайт не найдено. Положите на hsto)
А почему за генерацию клока на счётчике (я так понимаю, это банальное деление частоты внешнего клока?) ругали?
Насчёт генерации "внутри", как в статье:
- Не было желания в петлю воткнуть цепочку из нескольких инверторов или повторителей? Просто чтобы гарантировать, что "генератор" не переклинит в каком-нибудь метастабильном состоянии.
- Зависимость частоты от температуры не смотрели?
Как я понимаю этот вопрос, за формирование тактовой частоты отвечает специфический аналоговый компонент (PLL). И когда вы будете переносить дизайн с FPGA на ASIC, вам всё равно придётся копаться в вендорском решении, ну, только предоставлять его будет фабрика, а не производитель FPGA. Так что лучше заранее приготовиться к тому, что генерация частот зависит от платформы. Вынести её в отдельный исходный файл, что ли.
Картинки, кроме фоток плат не открываются
Норм. Хотя частота более 11 ГГц выглядит результатом гонок, а не работы мультиплексора.
Но "анакуа"? Арриям, Виртексам и прочим "топовым" кристаллам никуда не впёрлись такие дрянные источники частоты. А у кристаллов типа "как-бы продвинутая CPLD" (MAX X) и так есть встроенный RC(?) генератор и, вроде, относительно стабильный.
2. Как внутренний, резервный независимый генератор, т.к. внешний может выйти из строя, его могут отключить или манипулировать его частотой. Можно асинхронно переключиться на него в случае ЧП и тактировать им некую аварийную логику, которая сделает что-то полезное.
3. Предполагаю, что подобные схемы можно использовать как дополнительный способ защиты от атак по питанию.
Пункты 1 и 3. Предполагаю, что как раз с питанием такой генератор будет скоррелирован очень сильно.
Пункт 2. Если у злоумышленника есть доступ к Вашему железу, то ПЛИСке останется только пошире раздвинуть… выводы.
Всё — на уровне КМК.
Пункты 1 и 3. Предполагаю, что как раз с питанием такой генератор будет скоррелирован очень сильно.Безусловно будет корреляция с питанием, но не только с ним, фактически PVT зависимость (process.voltage.temperature). Но наличие подобной корреляции не означает, что вы сможете точно предсказать состояние генератора. Да, как ГСЧ сам по себе такой генератор будет плох, но очень полезен как подсистема для усиление ГСЧ или дешевое средство для усложнения атаки по питанию.
Если у злоумышленника есть доступ к Вашему железу, то ПЛИСке останется только пошире раздвинуть… выводы.Вот тут я бы не сдавался, есть ещё за что побороться. У xilinx в 7 семействе есть возможность изнутри ПЛИС стереть энергозависимую память на батарейке, в которой хранится ключ битстрима, тем самым окирпичить девайс. А, кажется, в ultrascale есть даже возможность писать в эту память (разумеется, без возможности чтения) изнутри ПЛИС, что открывает ещё более интересные возможности.
примитивы имеют разную задержку работы в зависимости от расположения
Но здесь есть нюансы, вы всё же имеете некоторый контроль (пусть и неполный) над расположением. Это достигается с помощью физических констрейнтов: можно ведь указать какой именно элемент выбрать (координаты и т.д.). Если глянете гайды по клоковым ресурсам, то сможете найти и критерий выбора — поближе к клоковым буферам, а вот чего наверно всё же не сможете контролировать, так это выбор конкретной линии к нему, впрочем, там наверно можно констрейнт по времянкам потуже навернуть.
По поводу LUT в Spartan-e, а вы ведь пробовали примитивы из Language Templates?
По поводу влияния температуры вопросы тоже остаются.
И причина то не в глупости, а упрямстве скорее. Если бы Вы послушали знающих людей, они бы Вам рассказали, насколько шумит Ваш синтетический клок, какие методики есть устранения этого шума, а также показали вам вот такой документ для Kintex, где чёрным-по-белому написано, что максимальная частота работы единичного слайса (CPL), включительно FF, как составляющих, не может быть выше 5.5 ГГц (Setup + Hold), но при этом нужно учитывать время на Рутинг, который в Вашем случае произошёл как попало. С того же документа, можно выяснить, что максимальное время переключения мультиплексора порядка 0,4 нс — а это не более 2,5 ГГц рабочей частоты.
Если же заглянуть в документацию по Virtex-5, так там в табличке на с.28 и вовсе указаны максимальные рабочие частоты для компонентов, которые не превышают даже 500 МГц. Соответственно как у Вас получились фантастические измерения выше гигагерцов, при максимальных рабочих частотах кристалла до полугигагерца остаётся загадкой.
И это не говоря, про разброс в температурных режимах, про то, какой skew фронта у полученного «клока», про его джиттер (тут вообще страшно представить что творится) и шум.
Это написано не для оскорбления, но для того чтобы побудить автора разобраться что такое setup/hold флип-флопа, базовые принципы routing'а и фиксации проекта на floorlan, трассировки и констрейнов.
Дабы комментарий не показался голословным, у меня имеется проект по детектированию частот порядка 1.2 ГГц (расчётно) с внешнего источника, который реальную точность выдаёт не более 800-900 МГц. И схемы там накручены похлеще вашего счётчика (32-бит!!! ЗАЧЕМ? КАК?) с очень медленным компаратором и комбинационным сложением (для Xilinx есть сложение через CSA — намного менее ресурсоёмкое и быстрое).
Что действительно важно, повторюсь, это понять принципы работы констрейнов, занятся floorplan'ом и зафиксировать синтезированную схему (можно жёстко, можно по partition'ам), а также написать сопутствующие констрейны.
Когда Вы добьётесь 100% повторяемости эксперимента для разных конфигураций и с различными компонентами (как часто бОльшего проекта или дублирование текущего в 3-4 местах), тогда вы пройдёте половину нужного пути.
Дальше придётся разобраться на каких примитивах это всё построено, почему на них и как они работают. Чем отличается DSP от сумматора на LUT'ах и т.п. Также рекомендую уменьшить разрядность счётчика до адекватного. Реально контролировать изменения в 20-50 единиц не требует 2^32 счётчика. Оно и места занимает и частоту садит.
Что же касается ответа на вопрос «как провести подобные измерения в Ваших условиях» дам подсказку и если будет желание можете попробовать решить: Вам нужно построить схему детектирования, которая будет работать на порядки быстрее анализируемого компонента. тогда с точностью этого порядка Вы сможете вычислить реальную генерированную частоту. По сути нужно погуглить фразу «time to digital converter», которая внесёт кое-какую ясность.
Вопрос автору: я правильно понимаю, что внутри плис счетчики, на которых вы считаете гигагерцы, отрабатывают счет на данной частоте безо всяких проблем?
Частота на луте: 5761.1 МГц
Вы подаете этот сигнал на счетчик, что бы вы числить эту частоту. Значит счетчик считает эту частоту безо всяких проблем?
www.research.manchester.ac.uk/portal/files/169709445/FPGADefender_Malicious_Self_Oscillator_Scanning_for_Xilinx_UltraScale_FPGAs.pdf
В конце статьи есть ссылка на github. Попытаюсь сопоставить результаты с учетом того, что Kintex 7 — это 28 нм, а у англичан 16 нм. Для измерений использовался time-to-digital converter температура которого отличалась от измеряемой схемы. Интересно, что расчитанные Vivado значения задержки и частоты хорошо соответствуют измеренным. Правда, я не понял можно ли в Vivado подставлять значения температуры и напряжения питания. Конкретные цифры из Table 2: максимальная частота на MUX7 — 1126MHz (здесь 5953.89 МГц), минимальная частота на LUT6 — 1927MHz (здесь 379.98 МГц). Интересен также Fig. 11, где показаны расчитанные Vivado задержки от каждого из входов LUT6 на выход, самая большая 177ps. Правда, мне не понятно почему разница между этими задержками не постоянна и составляет примерно 25, 35 и 15ps. Кстати, если есть контроль температуры и напряжения питания, можно было бы провести эксперимент характеризующий эффект второго порядка. А именно, исследовать как происходит разбаланс задержек внутри LUT. Каждый вход LUT открывает одну группу транзисторов и закрывает другую. При комнатной температуре и номинальном напряжении питания это должно происходить (и наверное происходит) одновременно. Понятно, что есть какой-то диапазон параметров, в котором эти задержки равны друг другу, потом происходит разбаланс. Мне не попадались статьи на эту тему. Каким образом можно увидеть этот разбаланс? Собрать два кольцевых осциллятора, первый полностью на инверторах, а второй почти полностью на повторителях (буферах) и одном инверторе. Дальше делается развертка по температуре или/и напряжению. В какой-то момент задержка повторителя и инвертора начнут отличаться, что приведет к изменению частоты.
Правда, мне не понятно почему разница между этими задержками не постоянна и составляет примерно 25, 35 и 15ps.
На рисунке 11 в статье по вашей ссылке логическая схема, авторы сами говорят, что было бы неплохо увидеть низкоуровневую реализацию (low-level ASIC details of any Xilinx FPGA), в физической там как минимум длины дорожек будут отличаться и вносить разную задержку.
www.eecg.utoronto.ca/~vaughn/papers/fpt2013_coffe.pdf
а вот патенты Xilinx для второго варианта
US6809552 US6998872 US7471104
patents.google.com
В любом из вариантов имеется линейка буферов, разделяющая слои транзисторов. Зачем распределять задержки слоев именно как 25, 35, 15 конечно интересно, но для меня не принципиально.
Понятно, что есть какой-то диапазон параметров, в котором эти задержки равны друг другу, потом происходит разбаланс. Мне не попадались статьи на эту тему.
А не хотите ли глянуть тему physical design, особенно метрики и формулы? Вроде там есть всё, что вы ищете.
www.anlogic.com/down.aspx?fid=t14:11:14&typeid=11
www.isilicontech.com/page29
Это считается?
По наводке из руин известного хранилища инкунабул:
http://www.530.ru/wwwboards/fpga/91/messages/33081.shtml
можно найти, например, статью "VCO uses programmable logic" (с использованием EPM3032, стр. 106, из EDN nov. 2002?):
https://web.archive.org/web/20040406161743/www.reed-electronics.com/ednmag/contents/images/111402di.pdf
Ну и вообще там покопаться. Есть ссылки (протухшие, наверное, на документы Xilinx, Actel). ЕМНИП, и на MAX7000 кто-то делал генератор.
CPLDs в настоящее время стоят дороже FPGAs, причем для 180nm и меньше они реализуются на LUTs. В технологии меньше 55nm я CPLDs не видел. Дело лишь в области применения.
Ну-у-у… начинается… Вопрос был про Альтеру, безотносительно к архитектуре и проектным нормам. ;-)
picture.iczhiku.com/resource/ieee/sykTRpUZzHgSLbMX.pdf
nthucad.cs.nthu.edu.tw/~wcyao/publications/0171.pdf
Генерация клока в ПЛИС на примитивах