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

Профессия RTL Designer не имеет будущего?

А про их реальные возможности интересно было узнать. Поэтому и сделал предложение:

Вот ведь как интересно - Вам интресно, а другие - давай вникай, разбирайся, потом разжевывай :) Может бы наоборот, раз уже это в первую очередь Вам интересно, поглядели бы на доки, прикинули бы что там к чему, да нам рассказали?

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


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

Синтезируемый модуль "Hello,world!", ~15 ЛУТ, ~300МГц (Спартан3):

module tst(
  output reg [7:0] q,
  input clk
);
always@(posedge clk) begin
  seq();
  out("H"); out("e"); out("l"); out("l"); out("o"); out(",");
  out("w"); out("o"); out("r"); out("l"); out("d"); out("!");
  out("");
end

reg [3:0] pos = 1; 
reg [3:0] pc = 1;
task seq;
begin
  pos = 1;
end  
endtask

task out;
input [7:0] d;
begin
  if( pc == pos ) begin
    pc <= pc+1;  
    q <= d;
  end 
  pos = pos+1;
end  
endtask
endmodule

Предлагайте свои варианты описания.

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


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

Предлагайте свои варианты описания.

 

module test2(
  output reg [7:0] q,
  input clk
);

logic [11:0][7:0] let = {"H","e","l","l","o",
                         ",",
                         "W","o","r","l","d",
                         " "};
logic [3:0] pos = 4'd11;

always_ff @(posedge clk)
  if(pos > 0)
    pos <= pos - 1'b1;
  
always_ff @(posedge clk)
  q <= let[pos];
   

endmodule

 

Cyclone III, 681 Мгц, 11 LE.

 

При том, что Ваш модуль на этом же Циклоне: 376 Мгц, 19 LE.  :)

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


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

module tst(
  output reg [7:0] q,
  input clk
);
reg [8*12-1:0] let = "Hello,world ";
reg [3:0] pos = 11;
always@(posedge clk) begin
  q <= let[pos*8 +: 8];
  if(pos > 0) 
    pos <= pos-1;
end   
endmodule

- 12 ЛУТ в ISE.

 

Просто меня сейчас интересуют разные общие варианты описания "последовательных" алгоритмов ("устройство печати ..." и тп). Вот и обратил внимание на task-и.

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


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

Leka:

Да, что-то я не подумал, о том, что с упакованным массивом можно и проще:

logic [11:0][7:0] let = "Hello,world ";

 

А так, по результатам синтеза, наши последние варианты идентичны. :)

 

Только у Вас со строкой лучше вышло, но при этом такие строки, как:

 

q <= let[pos*8 +: 8];

 

мне нравятся меньше. Перегружают код. :)

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


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

ISE не понимает SV, поэтому проблемы с массивами.

Велкам ту Альтера!  :)

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


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

Попробовал синтез со вложенными циклами на task-ах:

reg [7:0] loopvar [1:0];
always@(posedge clk) begin
  seq(); 
  out(13); out(10); 

  out("H"); out("e"); out("l"); out("l"); out("o"); 
  out(13); out(10); 
  
  loop(0, 1);
    out(13); out(10); 
  
    loop(1, "0");
      out(loopvar[1]); 
    endloop(1, "9");
    out(13); out(10);  
  
    loop(1, "A");
      out(loopvar[1]); 
    endloop(1, "Z");
    out(13); out(10); 
  
    loop(1, "a");
      out(loopvar[1]); 
    endloop(1, "z");
    out(13); out(10);   

  endloop(0, 3);  
  out(13); out(10); 
  
  out("B"); out("y"); out("e"); 
  out(13); out(10);   

  out(".");
end

- 70 ЛУТ, вывод (250 тактов):

.
Hello

0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

Bye
.......................

Долой case-стиль описания FSM ?

Изменено пользователем Leka

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


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

Попробовал добавить пару условных переходов на task-ах в пример выше - 75 ЛУТ. Так что уже есть минимальный набор для описания последовательных алгоритмов в стиле ЯП - вложенные циклы и условные переходы. :rolleyes:

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


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

Попробовал добавить пару условных переходов на task-ах в пример выше - 75 ЛУТ. Так что уже есть минимальный набор для описания последовательных алгоритмов в стиле ЯП - вложенные циклы и условные переходы. :rolleyes:

 

Вы что,хотите в итоге описывать синтезируемые модули в стиле ЯП?  :)

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


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

Вы что,хотите в итоге описывать синтезируемые модули в стиле ЯП?  :)

Не целиком, а только в части последовательных алгоритмов - интерфейсы, переборы, итерации и тд и тп.

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


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

Написал первый вариант "устройства печати таблицы умножения", ~340 LE ~100 МГц в Квартусе, ISE зависает... (просимулировал в Icarus verilog).

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


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

ISE зависает...

Теперь и синтезирует, и симулирует, в чем ошибка была - пока не понял. А как в Квартусе симулировать, так и не понял - tb() на Верилоге не берет...

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


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

Нюансы синтаксиса в task-ах :07: :

if ( a == b ) if ( c ) ...

- зависает в ISE и дает 340 ЛЕ в Квартусе;

 

if (( a == b ) && c ) ...

- синтезируется в ISE и дает 270 ЛЕ в Квартусе;

 

if ( ab && c ) ... //wire ab = ( a == b );

- неправильно симулируется в ISE.

 

В Icarus Verilog - все варианты дают одинаковый результат симуляции.

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


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

module tst(
output reg q1, q2);
reg  d;
wire q = d;
always@* begin
  d = 1; 
  q1 <= q; 
  d = 0;
  q2 <= q; 
end
endmodule

q1=? Почему?

Изменено пользователем Leka

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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