iiv 29 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба Добрый день, вычитал, что в GoWin Quote Each I/O of the GW1N series of FPGA products has an IODELAY cell. The longest delay it can provide is about 128 steps x 30ps = 3840ps. но нигде не нашел примера использования. Мне хочется на 20 пинах выставить задержку выходного сигнала (около 300МГц) свою на каждый пин и изменять на лету (примерно каждые 20 микросекунд) эти задержки. Предполагаю, что я слишком губу раскатал и это невозможно, но вдруг? Если таки возможно, пожалуйста, скажите какими средствами можно это реализовать на GoWin, а конкретно на GW1N-9? Спасибо ИИВ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewkrot 0 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба Вот здесь UG289E.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 29 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба 12 hours ago, andrewkrot said: Вот здесь UG289E.pdf 1.48 MB · 3 downloads Спасибо большое, andrewkrot !!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 77 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба кто-нибудь с китайского может перевести: Quote VALUE is the delay value of negedge dynamic adjustment, and it moves one delay step per pulse. есть STDAP - enable для динамической подстройки, есть SETN для направления подстойки в плюс или минус. есть DF который показывает что доподстраивались до края. и есть VALUE, по его фронту (отрицательному???) фаза на один шаг подстраивается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 220 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба 32 минуты назад, _pv сказал: кто-нибудь с китайского может перевести: Посмотрите на исходник модели. По-моему глядя на него всё сразу понятно: Скрытый текст //Input IO logic module IODELAY (DO, DF, DI, SDTAP, VALUE, SETN); parameter C_STATIC_DLY = 0; //integer,0~127 input DI; input SDTAP; input SETN; input VALUE; output DF; output DO; reg [6:0] delay_data; //wire [127:0] delay_in; reg pre_value; wire delay_out; always @(SDTAP or VALUE) begin if (!SDTAP) begin delay_data <= C_STATIC_DLY; end else begin if(pre_value == 1'b1 && VALUE == 1'b0) begin if (SDTAP) begin if (SETN && (delay_data != 7'd0)) delay_data <= delay_data - 1; else if ((!SETN) && (delay_data != 7'd127)) delay_data <= delay_data + 1; end end end end always @(VALUE) begin pre_value <= VALUE; end assign DF = (SETN && (delay_data == 7'd0)) || ((!SETN) && (delay_data == 7'd127)); assign #(0.025*delay_data) delay_out = DI; assign DO = (delay_data == 0) ? DI : delay_out; /*assign #0.025 delay_in[0] = DI; generate genvar i; for(i=1;i<128;i=i+1) begin: gen_delay assign #0.025 delay_in[i] = delay_in[i-1]; end endgenerate assign DO = (delay_data == 0) ? DI : delay_in[delay_data-1];*/ endmodule // IODELAY (input delay in IOB) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 29 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба 16 minutes ago, makc said: Посмотрите на исходник модели. По-моему глядя на него всё сразу понятно: Ой, здорово, спасибо! А сразу вопросы вдогонку, скажите, пожалуйста, 1. где вы эту модель у китайцев нашли, возможно там такие же модели и на остальные примитивы, например, PLL, можно найти? 2. а можно ли как-то эту модель модифицировать и всунуть на каждый пин? Конкретно я хочу, чтобы 7-ми битная величина задержки была бы заслана в IODELAY целиком, а не тикая 127 раз вперед и назад. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 77 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба 44 minutes ago, makc said: По-моему глядя на него всё сразу понятно да, спасибо. +1 к вопросу откуда исходник модели. хотя и конструкции вида always @(SDTAP or VALUE) begin if (!SDTAP) begin ... end else begin if (SDTAP) begin ... end end end немного настораживают 11 minutes ago, iiv said: 2. а можно ли как-то эту модель модифицировать и всунуть на каждый пин? Конкретно я хочу, чтобы 7-ми битная величина задержки была бы заслана в IODELAY целиком, а не тикая 127 раз вперед и назад. это модель для симуляции, assign #(0.025*delay_data) delay_out = DI и её модифицировать можно сколько угодно, но там физически из iodelay блока наружу торчит только "STEP/DIR" для управления и поможет это не особо. можно сбрасывать каждый раз не в 0, а в С_STATIC_DLY=64, и тогда тикать придётся в среднем в два раза меньше, ну либо самому отдельно запоминать сколько там натикало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 29 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба 4 minutes ago, _pv said: самому отдельно запоминать сколько там натикало. Спасибо! Да, пока я именно так и планировал, но как-то криво это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 220 30 мая, 2022 Опубликовано 30 мая, 2022 · Жалоба 11 часов назад, iiv сказал: 1. где вы эту модель у китайцев нашли, возможно там такие же модели и на остальные примитивы, например, PLL, можно найти? Это модели для симуляции из штатного комплекта поставки среды, лежат в Gowin_v1.9.8.06/IDE/simlib/gw1n/prim_sim.v и других файлах рядом с ним. 11 часов назад, iiv сказал: 2. а можно ли как-то эту модель модифицировать и всунуть на каждый пин? Конкретно я хочу, чтобы 7-ми битная величина задержки была бы заслана в IODELAY целиком, а не тикая 127 раз вперед и назад. Можно, но только в следующей ревизии кристалла и за отдельные деньги. ;-) А пока только в порядке личных экспериментов. PS: Странно, кстати, что они не зашифровали эти модели, как делают многие другие вендоры... Но так для нас даже лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 29 30 мая, 2022 Опубликовано 30 мая, 2022 · Жалоба Спасибо большое, makc !!! 3 hours ago, makc said: PS: Странно, кстати, что они не зашифровали эти модели, как делают многие другие вендоры... Но так для нас даже лучше. да, верно, я на альтере такое не видел (может конечно не находил) - по крайней мере сразу видно, что можно, а что - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
komah 4 13 сентября Опубликовано 13 сентября · Жалоба Попробую оживить тему. А есть простой способ получить на GW1 задержку больше, чем 128*30 пс, например, 6 нс, без PLL или DLL? Например, блок DLLDLY - дает 256 элементов в линии задержки. А сколько таких блоков на кристалле, столько же, как и DLL? Или они синтезируются по мере надобности из стандартных ячеек? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться