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

 
 
> Тестовый проект, Загрузка 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
Ответов
johan
сообщение May 6 2014, 14:18
Сообщение #2


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

Группа: Свой
Сообщений: 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



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

 


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


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