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

Моделирование момента изменения сигнала

On 1/27/2023 at 4:39 PM, des00 said:

потому что там ошибка, внимательно посмотрите)

Да, увидел.

Пятница, вечер :dash2:

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


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

Здравствуйте.

Теперь подключил к проекту PLL.

И пытаюсь выполнить симуляцию, но при этом на выходе получается ерунда.

Код все тот же, что и первом моем сообщении.

module my_fifo(
        input clk,
        input i_rst,
        input rd,
        input wr,
  		....
);	
reg wr_old;
reg rd_old;	

always @(posedge clk or posedge i_rst)
begin
    if(i_rst) begin 
        wr_old <= 1'd0; 
        rd_old <= 1'd0;
    end else begin
        wr_old <= wr;
        rd_old <= rd;
    end 
end

wire wre = wr & ~wr_old & ~full;
wire rde = rd & ~rd_old & ~empty;

.....
endmodule
  
rPLL_10_50 PLL50 (.clkout(clk_core), .clkin(clk)); // 10 MHz input; 50 MHz output
my_fifo MFF1(.clk(clk_core), .i_rst(rst), .rd(rd), .wr(wr), .....);

При этом сигналы wre и rde в симуляторе выглядят следующим образом и в разных местах по разному

1.

image.png.0f71aded58a0d5238c1554495536e521.png

2.

image.thumb.png.f3361d0c6cbcb954daf0554da56d2b40.png

3.

image.thumb.png.795acf2a8c64c203e0398edd6719dbad.png

 

Что я опять не так делаю ?

 

 

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


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

Почему в  @always (posedge clk), если у вас одноклоковое FIFO тактируется от clk_core? Это первый вопрос.

Второй будет после ответа на первый.

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


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

On 1/31/2023 at 12:31 PM, andrew_b said:

Почему в  @always (posedge clk), если у вас одноклоковое FIFO тактируется от clk_core? Это первый вопрос. 

Второй будет после ответа на первый.

Потому что при инстанцировании модуля my_fifo на его вход clk передается сигнал clk_core от PLL. (две нижние строчки в приведенном мною фрагменте кода)

Если, конечно, я правильно понял ваш вопрос.

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


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

Я неправильно понял ваш код. Прошу прощения.

У вас одноклоковое FIFO. Все приходящие на него сигналы должны формироваться в одном домене. У вас же wr очевидно генерируется медленным клоком, в то время как внутри FIFO используется быстрый. То есть вам нужно сначала перенести wr и rd с быстрого клока на медленный (классика жанра -- синхронизатор из двух триггеров), и только потом заводить их в FIFO.

 

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


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

On 1/31/2023 at 1:18 PM, andrew_b said:

Я неправильно понял ваш код. Прошу прощения.

У вас одноклоковое FIFO. Все приходящие на него сигналы должны формироваться в одном домене. У вас же wr очевидно генерируется медленным клоком, в то время как внутри FIFO используется быстрый. То есть вам нужно сначала перенести wr и rd с быстрого клока на медленный (классика жанра -- синхронизатор из двух триггеров), и только потом заводить их в FIFO.

Спасибо.

Но я понадеялся на то, что выходная частота PLL кратна исходной и все фронты будут совпадать.

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


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

15 minutes ago, dimka76 said:

Но я понадеялся на то, что выходная частота PLL кратна исходной и все фронты будут совпадать.

В идеальном случае (то есть в симуляторе) они будут совпадать по времени. Но тут надо вспомнить про дельта-циклы.

В рельной микросхеме они совпадать не будут из-за разных путей распространения.

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


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

On 1/31/2023 at 1:46 PM, andrew_b said:

В идеальном случае (то есть в симуляторе) они будут совпадать по времени. Но тут надо вспомнить про дельта-циклы.

В рельной микросхеме они совпадать не будут из-за разных путей распространения.

В реальности это не модуль верхнего уровня. И в реальности все входящие в модуль my_fifo  сигналы будут привязаны к выходу PLL.

On 1/31/2023 at 1:46 PM, andrew_b said:

Но тут надо вспомнить про дельта-циклы.

Да, выходит, что в ним и проблема была.

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


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

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

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

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

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

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

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

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

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

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