Jump to content

    
Sign in to follow this  
sidy

Задержка сигнала на Verilog

Recommended Posts

41 minutes ago, Kluwer said:

RTL-код перестал вдруг портироваться на асики? Really, Elon Mask?!

А почему вдруг? Я лет 5, не меньше, знаю контору, которая разрабатывает Асики на ПЛИСах

Share this post


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

RTL-код перестал вдруг портироваться на асики? Really, Elon Mask?!

а как это бьётся с этим заявлением:

 

 

On 5/22/2019 at 10:50 AM, Kluwer said:

Никогда не мог понять желание всё подряд писать руками и обвешивать атрибутами синтеза, к-рые, на самом деле синтезатор Квартуса игнорит только в путь. Для таких задач специально сделаны удобные и вылизанные IP-коры или мегафункции.

 

 

Share this post


Link to post
Share on other sites
On 5/17/2019 at 4:17 PM, des00 said:

вот как раз этот вариант, адекватен и нормален. для альтеры я поступаю точно также. Квартус тоже глючит, особенно с пользовательскими типами.


  always_ff @(posedge iclk) begin
    if (iclkena) begin
      if (ival) begin
        addr        <= addr + 1'b1;
        raddr       <= addr;
        waddr       <= addr + delay;
        //
        ram[waddr]  <= wdata;
        rdata       <= ram[raddr];
        //
        dat2out     <= rdata;
      end
    end
  end

на все случаи жизни, завернуть в компонент и использовать.

Более того, как видно из кода, задержка меньше трех тактов, на памяти не получится при полной конвейризации и двух без оной. Это сразу показывает например, почему софту не выгодно делать мелкие задержки на памяти)

В итоге сдался и сделал так же. Хотел только узнать - двойная выходная буферизация - для того, чтобы на выходе BRAM использовать встроенные регистры, а второй регистр использовать на россыпи в месте, где эти самые данные будут использованы?

 

Похоже иного способа заставить вивадо не существует,

что примечательно, в синплифай для xilinx нет значения атрибута syn_srlstyle, который бы позволял указывать на реализацию на блочной памяти, а для Altera & Lattice такое значение атрибута есть. странно это всё....

 

Share this post


Link to post
Share on other sites

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

1 hour ago, Doka said:

В итоге сдался и сделал так же. Хотел только узнать - двойная выходная буферизация - для того, чтобы на выходе BRAM использовать встроенные регистры, а второй регистр использовать на россыпи в месте, где эти самые данные будут использованы?

Второй регистр  на выходе BRAM  это встроенный в BRAM примитив. Улучшает  времянку чтения на высоких частотах. Но при P&R  Vivado часто "вытягивает" этот регистр  в обычную логику, чтобы сбалансировать задержки межу BRAM регистром и получателями данных или улучшить времянку при высоких fanout.  Естественно если есть запас по таймингам. 

Удачи! Rob.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this