Перейти к содержанию
    

sv, сложность синтеза больших циклов на большом буфере

10 часов назад, RobFPGA сказал:

Приветствую!

:scratch_one-s_head: что значит цикл в программистском смысле ?

 Цикл это многократно исполняемая последовательность одного и того же набора инструкций.

Когда в обычном veriloge применяю generate for - это не цикл, а простое размножение какого-либо кода .

И был удивлён, когда узнал что SV способен поступать по первому определению цикла - многократно использовать какие-либо ресурсы, не размножая их.

Даже не могу себе этого представить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

46 minutes ago, Lmx2315 said:

И был удивлён, когда узнал что SV способен поступать по первому определению цикла - многократно использовать какие-либо ресурсы, не размножая их.

Даже не могу себе этого представить.

Это как? Я тоже не могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, Lmx2315 сказал:

SV способен

Не всё, на что спобобен язык (SV ли, VHDL ли), реализуемо в железе.

54 минуты назад, Lmx2315 сказал:

И был удивлён, когда узнал что SV способен поступать по первому определению цикла - многократно использовать какие-либо ресурсы, не размножая их.

Видимо, вы что-то не так поняли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

1 hour ago, alexadmin said:

Это как? Я тоже не могу.

Простенький пример цикла в программистском стиле. И это не SV а обычный Verilog-2001.

function reg [31:0] swap_bits (input reg [31:0] din);
  integer ii;
  for (ii=0; ii<32; ii=ii+1) begin
    swap_bits[ii] = din[31-ii];
  end
endfunction
  
always @(posedge clk) begin
  data_swap <= swap_bits(data_in);
end

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, RobFPGA said:

Простенький пример цикла в программистском стиле. И это не SV а обычный Verilog-2001.

Но это ведь не синтезируемая конструкция в классическом понимании (оно то синтезирует, но ни регистров ни комбинаторики не даст) Это обычная инверсия шины. То же самое, что: wire [31:0] swap_bits = [0:31] din; Большинство компиляторов этой конструкции не съедят, но фактически это честная конструкция.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

1 minute ago, Nick_K said:

Но это ведь не синтезируемая конструкция в классическом понимании (оно то синтезирует, но ни регистров ни комбинаторики не даст)

Опять 'x.. логика :biggrin:   ( ...синтезируется не синтезируемая конструкция ...) Добавьте капельку фантазии ...

function reg [5:0] count_one (input reg [31:0] din);
  integer ii;
  count_one = 0;
  for (ii=0; ii<32; ii=ii+1) begin
    if (din[ii]==1) begin
      count_one = count_one + 1;
    end
  end
endfunction
      
always @(posedge clk) begin
  din_ones <= count_one(data_in);
end

Как вы думаете, будет ли здесь комбинаторика ? :wink2:

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, RobFPGA said:

Приветствую!

Простенький пример цикла в программистском стиле. И это не SV а обычный Verilog-2001.

И кто здесь "многократно использовать какие-либо ресурсы, не размножая их"? Тут ведь нет никакого многократно используемого сумматора, правда? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...