Worldmaster 0 25 марта Опубликовано 25 марта · Жалоба Здравствуйте. НАшел тут интересный документ по примитивам ПЛИС. Правильно ли я понимаю что я могу использовать их в своем коде чтобы добиться нужного поведения?? Это нормальная практика?? К примеру у меня SDRAM ругается на то что ссигналы выставляются не в то время что нужно. У меня идея взять такой вот блок: И тупо сдвинуть частоты на какое нибудь время. Вроде моделсим нормально так отработал, сдвиг получился, да и на качество кода это вроде как влияет минимально. Можно так делать или есть какие нибудь подводные камни или ограничения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 25 марта Опубликовано 25 марта · Жалоба Конечно можно и нужно 🙂 Они для этого и сделаны 🙂 Само собой если они от той плис которая у вас 🙂 И вы понимаете где именно они стоят. Например IODelay это задержка для входов выходов и не может применятся внутри проекта. Только на внешних выводах и т.д. Стабильность задержки нужно читать дополнительно. Она может плавать от температуры. Есть семейства где есть доп калибровка. Есть где будет плавать и нужно следить. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 25 марта Опубликовано 25 марта · Жалоба В 25.03.2024 в 11:57, MegaVolt сказал: Например IODelay это задержка для входов выходов и не может применятся внутри проекта. Только на внешних выводах и т.д. То то я и смотрю что IDE ругается. А чем внутренний сигнал задержать не подскажете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 25 марта Опубликовано 25 марта · Жалоба 43 minutes ago, Worldmaster said: А чем внутренний сигнал задержать не подскажете? Триггером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 25 марта Опубликовано 25 марта · Жалоба On 3/25/2024 at 12:43 PM, Worldmaster said: чем внутренний сигнал задержать на какое время? прописать время задержки в файл sdc... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 25 марта Опубликовано 25 марта · Жалоба В 25.03.2024 в 13:26, attaboy сказал: Триггером. А можно примерчик? В 25.03.2024 в 13:34, Yuri124 сказал: на какое время? прописать время задержки в файл sdc... А моделсим это учтет? у меня он пишет что надо чтобы 1ns была. $hold( posedge Clk:312188750 ps, Ras_n:312188750 ps, 1 ns ); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 25 марта Опубликовано 25 марта · Жалоба 58 минут назад, Worldmaster сказал: То то я и смотрю что IDE ругается. А чем внутренний сигнал задержать не подскажете? На сколько и с каким шагом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 25 марта Опубликовано 25 марта · Жалоба В 25.03.2024 в 13:41, MegaVolt сказал: На сколько и с каким шагом? 1ns Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 25 марта Опубликовано 25 марта · Жалоба 2 hours ago, Worldmaster said: А можно примерчик? reg some_sig; reg some_sig_dly; always @ (posedge clk) some_sig_dly <= some_sig; some sig_dly задерживается на один такт. Время задержки определяется частотой clk. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 25 марта Опубликовано 25 марта · Жалоба 4 часа назад, Worldmaster сказал: 1ns А диапазон? 1ГГц в плис не живёт. Можно 500ГГц и DDR но это опять же уже на выходах в каких нибудь SerDes там вполне реально. Ну или в DDR триггерах выходных.... Но это означает что внутри плис оно будет более широкой шиной и некая логика обеспечивает крупную задержку. А SerDes мелкую. Плюс опять же задержка в самом кристалле которую в ноль не убрать никак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 25 марта Опубликовано 25 марта · Жалоба 6 часов назад, MegaVolt сказал: Например IODelay это задержка для входов выходов и не может применятся внутри проекта. Только на внешних выводах А если сделать финт ушами и пустить сигнал с ноги на ногу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsmv 0 25 марта Опубликовано 25 марта · Жалоба 9 hours ago, Worldmaster said: То то я и смотрю что IDE ругается. А чем внутренний сигнал задержать не подскажете? Внутренние сигналы обычно не задерживают. В случае острой необходимости это можно сделать, например на тех IODELAY заняв какую то неиспользуемую ногу ПЛИС. Но вряд ли вам это нужно. SDRAM прекрасно заработает с IODELAY Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Worldmaster 0 26 марта Опубликовано 26 марта · Жалоба В 25.03.2024 в 22:00, dsmv сказал: SDRAM прекрасно заработает с IODELAY Чего то не очень. MyIODel:IODELAY GENERIC MAP (C_STATIC_DLY=>55 ) PORT MAP ( DO=>dout, DF=>df, DI=>sdram_clk, <- сюда приходим с PLL SDTAP=>'0', SETN=>setn, VALUE=>value ); MySDRAM: SDRAM_Controller_HS_Top port map ( O_sdram_clk => O_sdram_clk, O_sdram_cke => O_sdram_cke, O_sdram_cs_n => O_sdram_cs_n, O_sdram_cas_n => O_sdram_cas_n, O_sdram_ras_n => O_sdram_ras_n, O_sdram_wen_n => O_sdram_wen_n, O_sdram_dqm => O_sdram_dqm, O_sdram_addr => O_sdram_addr, O_sdram_ba => O_sdram_ba, IO_sdram_dq => IO_sdram_dq, I_sdrc_clk => sdrc_clk, I_sdram_clk => dout, <------------------------ затем вот сюда I_sdrc_rst_n => rst_n, I_sdrc_cmd_en => I_sdrc_cmd_en, I_sdrc_cmd => I_sdrc_cmd, I_sdrc_precharge_ctrl => I_sdrc_precharge_ctrl, I_sdram_power_down => I_sdram_power_down, I_sdram_selfrefresh => I_sdram_selfrefresh, I_sdrc_addr => I_sdrc_addr, I_sdrc_dqm => I_sdrc_dqm, I_sdrc_data => I_sdrc_data, I_sdrc_data_len => I_sdrc_data_len, O_sdrc_data => O_sdrc_data, O_sdrc_init_done => O_sdrc_init_done, O_sdrc_cmd_ack => O_sdrc_cmd_ack ); ERROR (CK0018) : Instance 'SDRAM/MySDRAM/MyIODel' is not connected to buffer WARN (ST0001) : Ignored static timing analysis because of the failure of circuit analysis checking Можно конечно использовать задержку PLL но там углы слишком большие и почему то перестает работать модуль при 90 градусном сдвиге. Но зато пропадают ошибки SDRAM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 26 марта Опубликовано 26 марта · Жалоба 16 часов назад, Jackov сказал: А если сделать финт ушами и пустить сигнал с ноги на ногу? В каких то очень странных случаях может помочь... Но вы бы спросили что решаете причём в отдельной теме и вам бы скорее ответили. С плис работает почти всё что угодно включая DDR память... и почти под всё уже есть готовые решения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 26 марта Опубликовано 26 марта · Жалоба 8 hours ago, Worldmaster said: Чего то не очень. MyIODel:IODELAY GENERIC MAP (C_STATIC_DLY=>55 ) PORT MAP ( DO=>dout, DF=>df, DI=>sdram_clk, <- сюда приходим с PLL SDTAP=>'0', SETN=>setn, VALUE=>value ); MySDRAM: SDRAM_Controller_HS_Top port map ( O_sdram_clk => O_sdram_clk, O_sdram_cke => O_sdram_cke, O_sdram_cs_n => O_sdram_cs_n, O_sdram_cas_n => O_sdram_cas_n, O_sdram_ras_n => O_sdram_ras_n, O_sdram_wen_n => O_sdram_wen_n, O_sdram_dqm => O_sdram_dqm, O_sdram_addr => O_sdram_addr, O_sdram_ba => O_sdram_ba, IO_sdram_dq => IO_sdram_dq, I_sdrc_clk => sdrc_clk, I_sdram_clk => dout, <------------------------ затем вот сюда I_sdrc_rst_n => rst_n, I_sdrc_cmd_en => I_sdrc_cmd_en, I_sdrc_cmd => I_sdrc_cmd, I_sdrc_precharge_ctrl => I_sdrc_precharge_ctrl, I_sdram_power_down => I_sdram_power_down, I_sdram_selfrefresh => I_sdram_selfrefresh, I_sdrc_addr => I_sdrc_addr, I_sdrc_dqm => I_sdrc_dqm, I_sdrc_data => I_sdrc_data, I_sdrc_data_len => I_sdrc_data_len, O_sdrc_data => O_sdrc_data, O_sdrc_init_done => O_sdrc_init_done, O_sdrc_cmd_ack => O_sdrc_cmd_ack ); ERROR (CK0018) : Instance 'SDRAM/MySDRAM/MyIODel' is not connected to buffer WARN (ST0001) : Ignored static timing analysis because of the failure of circuit analysis checking Можно конечно использовать задержку PLL но там углы слишком большие и почему то перестает работать модуль при 90 градусном сдвиге. Но зато пропадают ошибки SDRAM. Вам нужен как я понимаю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться