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

 
 
> Тестовый проект, Загрузка FPGA на XX %
alexadmin
сообщение May 6 2014, 07:10
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



У многих, наверное, возникают задачи для вновь создаваемого устройства создать тестовый проект, который бы "загружал" FPGA на 80-90% - проверить температуру/энергопотребелние и т.д. Понятно, что можно нагородить что-то в каждом конкретном случае, но надоело. Может кто-то писал (или встречал) готовый тестовый проект, в котором можно параметрами задать входную разрядность данных, примерное использование логики/регистров/dsp/памяти и получить готовый результат? Неохота в очередной раз городить велосипед.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 13)
Bad0512
сообщение May 6 2014, 08:08
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(alexadmin @ May 6 2014, 14:10) *
У многих, наверное, возникают задачи для вновь создаваемого устройства создать тестовый проект, который бы "загружал" FPGA на 80-90% - проверить температуру/энергопотребелние и т.д. Понятно, что можно нагородить что-то в каждом конкретном случае, но надоело. Может кто-то писал (или встречал) готовый тестовый проект, в котором можно параметрами задать входную разрядность данных, примерное использование логики/регистров/dsp/памяти и получить готовый результат? Неохота в очередной раз городить велосипед.

Всё это очень "пальцем в небо". Правильнее ИМХО использовать power estimator (по уже разведённому дизайну). Точность в районе 30% если всё правильно задано.
Go to the top of the page
 
+Quote Post
count_enable
сообщение May 6 2014, 08:27
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



В любом случае все интересующие параметры очень зависят от разводки. Пока тестовый проект будет иметь другую разводку, ценность его очень сомнительна. Поставив кучу кольцевых осциляторов в одном месте можно сжечь плисину, а если их размазать по кристаллу то он даже не почувствует.
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 6 2014, 09:23
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(count_enable @ May 6 2014, 11:27) *
В любом случае все интересующие параметры очень зависят от разводки. Пока тестовый проект будет иметь другую разводку, ценность его очень сомнительна. Поставив кучу кольцевых осциляторов в одном месте можно сжечь плисину, а если их размазать по кристаллу то он даже не почувствует.


энергопотребление зависит от количества тригеров переключаемых в еденицу времени (в основном) + потребление портов I/O...
от разводки мало чего зависит (мое мнение, но могу ошибаться)
что можно сжечь плис от "проект, который бы "загружал" FPGA на 80-90%" - впервые слышу, да нагрев для "больших" плис возможен...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
alexadmin
сообщение May 6 2014, 09:26
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Я согласен, что у такого метода есть свои недостатки. Но и важный плюс - проверка на практике. Можно тнуть пальцем и сказать, типа вот FPGA ест 20А и все работает (ну или пытается есть 20А, а ваш говеный источник...). Конечно, на готовом [завершенном] проекте было бы лучше, но где ж его взять...
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 6 2014, 09:33
Сообщение #6


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(alexadmin @ May 6 2014, 12:26) *
Я согласен, что у такого метода есть свои недостатки. Но и важный плюс - проверка на практике. Можно тнуть пальцем и сказать, типа вот FPGA ест 20А и все работает (ну или пытается есть 20А, а ваш говеный источник...). Конечно, на готовом [завершенном] проекте было бы лучше, но где ж его взять...

так возьмите сгенерируйте множество однотипных модулей (где есть множество тригеров переключаемых в еденицу времени (на каждом такте клока), например FFT), которые б занимали необходимое кол-во ресурсов - запрограмируйте и посмотрите потребелние и температуру. Да, будет погрешность в потребелении, т.к. в настоящем проeкте будут "правильно" использоваться блоки I/O
Если есть контроллеры памяти или шины (например PCIe) задествуйте их - непрерывным чтением и записью данных (например значений счетчика).
PS например у тексаса (кажется это есть и у линертехнолоджи) есть рекомендации выбора микросхем источников питания под конкретную плис...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 6 2014, 09:41
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Например, длинную линию задержки на триггерах сделать. На все триггеры! yeah.gif
А чтобы все входы-выходы использовать, сделать не одноразрядную задержку, а шину размером IO / 2.
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 6 2014, 09:44
Сообщение #8


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(ViKo @ May 6 2014, 12:41) *
Например, длинную линию задержки на триггерах сделать. На все триггеры! yeah.gif

прикольное предложение и простое как пять копеек sm.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
yes
сообщение May 6 2014, 09:46
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(Maverick @ May 6 2014, 13:23) *
от разводки мало чего зависит (мое мнение, но могу ошибаться)


разводка в ПЛИС это буфера, мультиплексоры/демультиплекоры и т.п. то есть транзисторы, которые переключаются - то есть от разводки должно зависеть, но как измерить - не знаю, можно, наверно, длинную цепочку неоптимизируемых(!) буфферов и в одном случае разрешить их разместить автомату, а в другом задать размещения в разных углах...

если мне нужно оценить параметры ПЛИС - беру какой-нибудь масштабируемый проект - SHA, биткоины и т.п. и сравниваю результаты эстиматора с тем же кодом для известной ПЛИС
Go to the top of the page
 
+Quote Post
alexadmin
сообщение May 6 2014, 09:59
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(ViKo @ May 6 2014, 13:41) *
Например, длинную линию задержки на триггерах сделать. На все триггеры! yeah.gif
А чтобы все входы-выходы использовать, сделать не одноразрядную задержку, а шину размером IO / 2.


А логика, а DSP, а память?
На мой взгляд стоит уж тогда брать какой-нибудь готовый блок типа AES (это LUTы + DFF), и FIR (это DSP и те же DFF) ну и что-то типа FIFO для памяти и размножать это в параллель. Это и будет тот велосипед вместо которого надеялся что-то готовое найти...
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 6 2014, 10:13
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если искать предельные возможности, нужно, чтобы использовались все узлы, на максимальной частоте (или на той, на которой рабочий проект будет работать). Поэтому должно быть что-то примитивное, чтобы гарантировать, что вся логика работает. FIFO на триггерах, FIFO в памяти. В DSP - умножать слово на слово каждый такт.

У Altera тепловыделение рассчитывается Quartus-ом.
Go to the top of the page
 
+Quote Post
johan
сообщение May 6 2014, 14:18
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 3-09-12
Пользователь №: 73 371



Тоже задавался этим вопросом.
Для моей задачи этого кода хватило с лихвой, что бы нагреть и "убить" FPGA: после загрузки прошивка сразу же "падала", при уменьшении количества счетчиков FPGA стартовала, и нагревалась, как и требовалось мне. Сама FPGA в моем случае не сгорела, но будьте осторожны sm.gif
Уверен, что есть варианты как еще больше нагрузить ПЛИСину, но дальше эту тему я не копал.

Код
// Код можно использовать только на свой страх и риск.
// Последствий за то, что случится с вашей железякой я не несу :)
localparam CNT_WIDTH = 32;
localparam CNT_CNT   = 400;

logic [CNT_CNT-1:0][CNT_WIDTH-1:0] cnt0;

genvar z;

generate
  for( z = 0; z < CNT_CNT; z++ )
    begin : zzz
      if( z == 0 )
        begin
          always_ff @( posedge clk )
            cnt0[z] <= cnt0[z] + 1'd1;
        end
      else
        begin
          always_ff @( posedge clk )
           // специально инвертим сумму, что бы было больше переходных состояний, так, каждый такт у нас будет то маленькое, то большое число
           // чем больше переходных состояний - тем больше потребление должно быть
            cnt0[z] <= ~(cnt0[z] + cnt0[z-1]);
        end
    end
endgenerate

// ну и потом cnt0 объединить по ИЛИ/И и вывести на пин/статусные регистры.
// + Эти счетчики нужно повесить на блоки памяти и случайно записывать - читать, код с памятью не сохранился, но он тривиален.
// + Если у вас системный сlk маленький, то надо задрать его на максимум :)


Сообщение отредактировал johan - May 6 2014, 14:22


--------------------
Go to the top of the page
 
+Quote Post
o_khavin
сообщение May 7 2014, 14:07
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата(ViKo @ May 6 2014, 13:41) *
Например, длинную линию задержки на триггерах сделать. На все триггеры! yeah.gif
А чтобы все входы-выходы использовать, сделать не одноразрядную задержку, а шину размером IO / 2.

Во времена бурной молодости я проводил такие эксперименты - пускал чередование 0 и 1 через цепочки FF->SRL->FF во всю "ширину" кристалла (вроде это был второй Виртекс) с разрядностью во всю "высоту" кристалла. При полной загрузке такой логикой происходило срабатывание защиты - на осциллографе виделось самопроизвольное дёргание init-а чрез очень небольшое время после done-а. При неполной загрузке наблюдался прогрев чипа до 90 градусов (по показаниям внутреннего датчика). biggrin.gif
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение May 27 2014, 05:49
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Самое простое, на мой взгляд: DDS + FIR. Можно 2 фильтра, на одном умножители это DSP-блоки, а на другом умножители на логике. Варируем параметрами фильтром и загружаем плис на нужный %. Такой проект собирается за несколько минут. Сам так проверял, чтобы уже наверняка знать потребление.
Go to the top of the page
 
+Quote Post

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

 


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


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