dimka76 42 27 января, 2023 Опубликовано 27 января, 2023 · Жалоба On 1/27/2023 at 4:39 PM, des00 said: потому что там ошибка, внимательно посмотрите) Да, увидел. Пятница, вечер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба Здравствуйте. Теперь подключил к проекту 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. 2. 3. Что я опять не так делаю ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба Почему в @always (posedge clk), если у вас одноклоковое FIFO тактируется от clk_core? Это первый вопрос. Второй будет после ответа на первый. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба On 1/31/2023 at 12:31 PM, andrew_b said: Почему в @always (posedge clk), если у вас одноклоковое FIFO тактируется от clk_core? Это первый вопрос. Второй будет после ответа на первый. Потому что при инстанцировании модуля my_fifo на его вход clk передается сигнал clk_core от PLL. (две нижние строчки в приведенном мною фрагменте кода) Если, конечно, я правильно понял ваш вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба Я неправильно понял ваш код. Прошу прощения. У вас одноклоковое FIFO. Все приходящие на него сигналы должны формироваться в одном домене. У вас же wr очевидно генерируется медленным клоком, в то время как внутри FIFO используется быстрый. То есть вам нужно сначала перенести wr и rd с быстрого клока на медленный (классика жанра -- синхронизатор из двух триггеров), и только потом заводить их в FIFO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба On 1/31/2023 at 1:18 PM, andrew_b said: Я неправильно понял ваш код. Прошу прощения. У вас одноклоковое FIFO. Все приходящие на него сигналы должны формироваться в одном домене. У вас же wr очевидно генерируется медленным клоком, в то время как внутри FIFO используется быстрый. То есть вам нужно сначала перенести wr и rd с быстрого клока на медленный (классика жанра -- синхронизатор из двух триггеров), и только потом заводить их в FIFO. Спасибо. Но я понадеялся на то, что выходная частота PLL кратна исходной и все фронты будут совпадать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба 15 minutes ago, dimka76 said: Но я понадеялся на то, что выходная частота PLL кратна исходной и все фронты будут совпадать. В идеальном случае (то есть в симуляторе) они будут совпадать по времени. Но тут надо вспомнить про дельта-циклы. В рельной микросхеме они совпадать не будут из-за разных путей распространения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 31 января, 2023 Опубликовано 31 января, 2023 · Жалоба 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: Но тут надо вспомнить про дельта-циклы. Да, выходит, что в ним и проблема была. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться