Jump to content

    

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
46 minutes ago, Lmx2315 said:

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

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

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

Share this post


Link to post
Share on other sites
53 минуты назад, Lmx2315 сказал:

SV способен

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

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

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

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

Share this post


Link to post
Share on other sites

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

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.

Share this post


Link to post
Share on other sites
8 minutes ago, RobFPGA said:

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

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

Share this post


Link to post
Share on other sites

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

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.

Share this post


Link to post
Share on other sites
2 hours ago, RobFPGA said:

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this