- •Оглавление
- •Часть 1
- •Введение
- •Современные плис фирмы xilinx:серия virtex
- •Введение
- •Краткая классификация современных микросхем фирмы xilinx
- •Плис fpga
- •Отличительными системными особенностями являются:
- •Процесс конфигурации
- •Потребление энергии
- •Корпуса933
- •Серия Virtex
- •Серия virtex
- •Семейство Virtex-II
- •Семейство Virtex-II Pro
- •Семейство Virtex-4
- •Семейство Virtex-5
- •Серия Spartan
- •Семейство SpartanXl
- •Семейство Spartan-II
- •Семейство Spartan-iie
- •Семейство Spartan-3/3l
- •Плис фирмы Xilinx: семейство SpartanTm-3
- •Обзор архитектурных особенностей
- •Блоки ввода/вывода (бвв)
- •Конфигурируемые Логические Блоки (клб)
- •Блочная память
- •Блоки умножителей
- •Цифровые блоки управления синхронизацией
- •Линии связи
- •Конфигурирование в устройстве
- •Архитектура плис Spartan-6
- •Slice Spartan-6
- •Блочная память. (Block ram)
- •Потребляемая мощность плис. Эксперимент.
- •Практический эксперимент
- •Расчет потребляемого тока плис. Xilinx Power Estimator (xpe)
- •Xilinx xPower
- •Результат
- •Xilinx Documentation Navigator
Практический эксперимент
Для практической реализации идеи была взята подручная плата, с ПЛИС Spartan-3 400К (XC3S400-PQ208-4I) от одного из проектов. В обозначенном кристалле имеются следующие ресурсы:
Блочная память 18кБит |
16 |
Умножители 18х18 бит |
16 |
DCM |
4 |
LUT |
3584 |
Триггеры |
7168 |
Для того, чтобы использовать все это хозяйство был создан проект fpga_burn, структурная схема которого получилась примерно такая:
Естественно проект я создал не с помощью схемотехнического редактора (подумать только, нарисовать 3584 LUT и в два раза больше триггеров!). Все получилось довольно элегантно, с помощью конструкций generate языка VHDL.
Параметры проекта (число триггеров, блоков памяти, умножителей) задаются в VHDL пакете global.vhd. Если кто по этому проекту измерит потребление ПЛИС на своей плате – буду весьма признателен, результаты размещу здесь, с ссылкой на вас.
Вы наверняка слышали расхожую фразу, что заполнять ПЛИС более, чем на 80% от емкости кристалла не есть гуд. Но для настоящего, сурового Чиповода не проблема забить кристалл на все 100%.
Вы спросите, а как же времянка? С логикой все было отлично. Результирующая частота глобального тактового сигнала (на котором висели луты и триггеры) составила около 400МГц (я почти в это поверил)! Память и умножители, расбросанные как корабли на карте морского боя конечно в серьезную времянку не укладывались, но тем не менее даже для них констрейны выполнялись почти до 200МГц.
Схема для измерения тока была очень не хитрая.
Итак результаты испытаний представлены в таблице ниже.
Fclk, МГц |
40 |
50 |
100 |
150 |
200 |
250 |
300 |
320 |
ICC_INT, A |
0,2 |
0,24 |
0,41 |
0,63 |
0,75 |
0,73 |
0,7 |
0,64 |
Как мы видим потребляемый ток ядра (Icc INT) линейно возрастает до частоты примерно 200МГц, а дальше констрейны перестают выполняться, реальная частота переключения ресурсов ПЛИС падает, падает и потребляемый ток. Ради интереса, я немного оптимизировал проект и добился выполнения констрейнов на частоте 250МГц, потребляемый ток составил 1.2А, что абсолютно точно укладывается в линейный график.
Расчет потребляемого тока плис. Xilinx Power Estimator (xpe)
Xilinx до сих пор поддерживает свою утилиту Xilinx Power Estimator, она представляет собой Excell скрипт, в котором нужно вбивать ручками объем занимаемого проекта (по пунктам: логика, регистры, блочная память и т.д), тактовую частоту проекта и коэффициент заполнения (toggle rate), после чего автоматом рассчитывается мощность. Результат можно смотреть в окошке.
Вбивать каждый раз после компиляции проекта новые цифрки это полный фуфел. Но зато можно оценить потребляемую мощность проекта, когда проекта как такового еще нет, а есть только примерный расчет необходимых ресурсов ПЛИС. Кроме того, из этого скрипта можно получить отчет о доле потребляемой мощности, вносимой каждым ресурсом ПЛИС.
Тоже интересная информация. Как мы видим больше всего потребляет логика, и это не удивительно, так как это основной ресурс ПЛИС. Блочная память на удивление потребляет очень мало, на уровне статического потребления (quiescent). В проекте использовалась однопортовая память, настроенная на постоянную запись. Двухпортовая память наверное прибавила бы в потреблени.