Jump to content

    

Проблемы с симуляцией FIFO корки в Vivado

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

1 hour ago, Vengin said:

Как видим значение на выходе dout появляется через 2 такта + 100ps, т.е. 3 такта для синхронной логики. Как же так?

Опять "за рыбу гроши"

2 hours ago, RobFPGA said:

Ну и опять же для functional - в синхронной схеме latency считается  не от момента когда сигнал изменил значение (rd_en в 585000+(0..ps))  а от такта в котором этот сигнал привел к смене состояния в дизайне (чтение в 595000) и до такта в котором это событие изменило состояние соответствующего выхода (data в 605000).

То есть latency 1 - но данные появляются на 2 такте после установки rd_en. Bсе зависит о точки зрения

 

Что вы берете за точки отсчета?    

 

Удачи! Rob

Share this post


Link to post
Share on other sites

За точку отсчёта в обоих случаях берётся фронт rd_en (T=585ns). Как это получается, что если FIFO сконфигурировано без выходного регристра, то rd_en защёлкивается при T=585ns (и выход появлятеся через 1 такт на T=595ns), а если сконфигурировано с выходным регистром, то абсолютно тот же rd_en защёлкивается на такт позже T=595ns?

Как-то могут одни и те же одинаковые входные сигналы тактироваться в FIFO по разному?

Share this post


Link to post
Share on other sites

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

7 minutes ago, Vengin said:

За точку отсчёта в обоих случаях берётся фронт rd_en (T=585ns). Как это получается, что если FIFO сконфигурировано без выходного регристра, то rd_en защёлкивается при T=585ns (и выход появлятеся через 1 такт на T=595ns), а если сконфигурировано с выходным регистром, то абсолютно тот же rd_en защёлкивается на такт позже T=595ns?

Как-то могут одни и те же одинаковые входные сигналы тактироваться в FIFO по разному?

Вы прикалываетесь?  Как может rd_en который установился в 1 ПОСЛЕ такта 585 защелкнутся этим же тактом? :shok: Сигнал rd_en разрешит чтение (защелкнется) только на фронте такта 595. Со всеми вытекающими последствиями

Удачи! Rob. 

Share this post


Link to post
Share on other sites

Нет я не прикалываюсь, я недоумеваю. Да, периодически при симуляции начинаешь ломать голову, когда же этот момент синхронизации происходит. И после долгих мучений вроде приходишь к некому консенсусу. Но в данном случае я решительно не понимаю, как абсолютно одинаковые входные данные могут трактоваться по разному. Это у меня в голове пока не укладывается...:dash1:

И как может добавление одного регистра увеличивать задержку на 2 такта?

Share this post


Link to post
Share on other sites

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

10 minutes ago, Vengin said:

Нет я не прикалываюсь, я недоумеваю. Да, периодически при симуляции начинаешь ломать голову, когда же этот момент синхронизации происходит. И после долгих мучений вроде приходишь к некому консенсусу. Но в данном случае я решительно не понимаю, как абсолютно одинаковые входные данные могут трактоваться по разному. Это у меня в голове пока не укладывается...:dash1:

Все очень просто - в синхронном дизайне изменение состояния (синхронизация) происходит только в момент активного фронта клока.  Все что происходит между клоками к изменению состояния дизайна не приводит. А вы берете то фронт клока то фронт сигнала (от клока зависящий) - отсюда и сумятица.

Удачи! Rob.

Share this post


Link to post
Share on other sites

Ладно, надо сделать перерыв, пока понятнее не становится. Но по крайней мере есть надежда, что раз кому-то это понятно, значит не всё потеряно :wacko2:.

Ещё раз, спасибо за разъяснения.

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