StewartLittle 45 1 февраля, 2022 Опубликовано 1 февраля, 2022 · Жалоба 55 минут назад, DSIoffe сказал: В списке IP Core Generator оно есть, но неактивно. Нужно выбрать "правильное" семейство ПЛИС (в данном случае - GW2A), тогда это ядро станет активным :) Документацию действительно опубликовать не успели. Когда Китай закончит праздновать новый год - попрошу, чтобы выложили. С китайской страницы сайта скачивается референс дизайн (но доки на ядро в нем тоже нету). Gowin_MJPEG_Encoder_RefDesign.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 14 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Было бы хорошо если бы Gowin в своих ядрах перешли на стандартные шины типа AXI4-Stream / AXI4, а не "куча проводов" как сейчас :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба Цитата Документацию действительно опубликовать не успели. Прислали прелиминари юзер гайд на ядро MJPEG Encoder. Пока он не опубликован официально, выкладывать в открытый доступ я его не хочу. Кому нужен - прошу в личку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 2 часа назад, BSACPLD сказал: Было бы хорошо если бы Gowin в своих ядрах перешли на стандартные шины типа AXI4-Stream / AXI4, а не "куча проводов" как сейчас :) ИМХО, "не по Хуану сомбреро". Вот когда появятся GW5AT (на 128 килолутов), тогда этот вопрос можно поднимать. А пока ПЛИСки слишком мелкие... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 14 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 45 minutes ago, StewartLittle said: ИМХО, "не по Хуану сомбреро". В том же AXI4-Stream нет ничего емкого в плане ресурсов. Вот пример подключения "классического" FIFO на AXI4-Stream: module axi4s_fifo #( parameter SIZE = 512, parameter WIDTH = 8, parameter TID_WIDTH = 0, parameter NUM_SYNC = 3, parameter RST_TYPE = "ASYNC", // "ASYNC", // "SYNC_SLAVE", // "SYNC_MASTER" parameter SIM_INIT = "FALSE" // "TRUE", // "FALSE" ) ( // Reset input axis_aresetn, // AXI4-Stream (video input) input s_axis_aclk, input s_axis_tvalid, output s_axis_tready, input [WIDTH-1:0] s_axis_tdata, input [TID_WIDTH-1:0] s_axis_tid, input s_axis_tuser, // start of frame input s_axis_tlast, // end of line // AXI4-Stream (video output) input m_axis_aclk, output m_axis_tvalid, input m_axis_tready, output [WIDTH-1:0] m_axis_tdata, output [TID_WIDTH-1:0] m_axis_tid, output m_axis_tuser, // start of frame output m_axis_tlast // end of line ) ; reg reset_n ; wire [(WIDTH+TID_WIDTH+1+1)-1:0] s_axis_d ; wire wrfull ; wire [(WIDTH+TID_WIDTH+1+1)-1:0] m_axis_q ; wire rdempty ; initial begin if (SIM_INIT == "TRUE") begin #0.01 ; if (RST_TYPE != "ASYNC") reset_n <= 1'b0 ; end end generate if (RST_TYPE == "ASYNC") begin always @* begin reset_n = axis_aresetn ; end end else if (RST_TYPE == "SYNC_SLAVE") begin always @(posedge s_axis_aclk) begin reset_n <= axis_aresetn ; end end else if (RST_TYPE == "SYNC_MASTER") begin always @(posedge m_axis_aclk) begin reset_n <= axis_aresetn ; end end endgenerate generate if (TID_WIDTH > 0) begin assign s_axis_d = {s_axis_tuser, s_axis_tlast, s_axis_tid, s_axis_tdata} ; end else begin assign s_axis_d = {s_axis_tuser, s_axis_tlast, s_axis_tdata} ; end endgenerate d_c_fifo #( .DATA_WIDTH (WIDTH+TID_WIDTH+1+1), .Q_WIDTH (WIDTH+TID_WIDTH+1+1), .DATA_SIZE (SIZE), .NUM_SYNC (NUM_SYNC), .SIM_INIT (SIM_INIT) ) d_c_fifo_0 ( .reset (~reset_n), .data (s_axis_d), .wrreq (s_axis_tvalid & s_axis_tready), .wrclk (s_axis_aclk), .rdreq (m_axis_tvalid & m_axis_tready), .rdclk (m_axis_aclk), .q (m_axis_q), .wrempty (), .wrfull (wrfull), .rdempty (rdempty), .rdfull () ) ; generate if (TID_WIDTH > 0) begin assign {m_axis_tuser, m_axis_tlast, m_axis_tid, m_axis_tdata} = m_axis_q ; end else begin assign {m_axis_tuser, m_axis_tlast, m_axis_tdata} = m_axis_q ; end endgenerate assign s_axis_tready = ~wrfull ; assign m_axis_tvalid = ~rdempty ; endmodule Как видите, это всего лишь переименование сигналов с небольшим количеством логики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба DK-START-GW1N4 где посмотреть наименование элементов D1 и F1 ? почему F1 установлен после D1? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 58 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 16 часов назад, BSACPLD сказал: В том же AXI4-Stream нет ничего емкого в плане ресурсов. А можно в нём создать TDATA шириной 11 бит? Или таки придётся делать 16? И не будет ли синтез нудеть пустыми предупреждениями о неиспользуемых сигналах (с 12 по 15-й)? С AXI4-Stream почти всё хорошо. А вот AXI4 уже далеко не так удобен, если дизайн построен не вокруг какого-нить CPU. Поэтому нативный интерфейс должен быть. Если надо AXI - врапер нахлобучить не так уж сложно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 1 час назад, dxp сказал: А можно в нём создать TDATA шириной 11 бит? Или таки придётся делать 16? В AXI разрядность данных кратна байту. Точнее, 8 битам. Так что да, 11 нельзя, только 16. 2 часа назад, dxp сказал: И не будет ли синтез нудеть пустыми предупреждениями о неиспользуемых сигналах (с 12 по 15-й)? Конечно, будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 14 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 5 hours ago, dxp said: А можно в нём создать TDATA шириной 11 бит? Или таки придётся делать 16? И не будет ли синтез нудеть пустыми предупреждениями о неиспользуемых сигналах (с 12 по 15-й)? Ну в моей реализации выше можно и 11 бит :) При этом она совместима и со стандартной реализацией 16 бит если поставить WIDTH = 16. 5 hours ago, dxp said: А вот AXI4 уже далеко не так удобен, если дизайн построен не вокруг какого-нить CPU. Поэтому нативный интерфейс должен быть. Если надо AXI - врапер нахлобучить не так уж сложно. Я делал хитрее. Написал модуль который преобразует AXI4 в набор проводов и уже к нему подключал все управляющие сигналы от своих модулей. И уже группу модулей объединял в одном большом врапере. Для экономии ресурсов. Но хотелось бы чтобы в готовых корках был выбор AXI4 или Native. Чтобы самому не наворачивать код поверх уже "готовых" модулей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 24 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 6 hours ago, dxp said: А можно в нём создать TDATA шириной 11 бит? Или таки придётся делать 16? Можно три старших бита упаковать в TUSER, а восемь оставшихся бит упаковать в TDATA. Насколько я понял, стандарту IHI0051A это не противоречит. Это если требуется воспользоваться готовыми IP Cores из PG085. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба Изучаю GOWIN FPGA Designer. Подскажите : Что это за предупреждение : WARN (PR1014) : Generic routing resource will be used to clock signal 'clk_d' by the specified constraint. And then it may lead to the excessive delay or skew? SDC одна строка -> create_clock -name clk -period 10 -waveform {0 5} [get_ports {clk}] clk на пин назначил. откуда берется clk_d? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 11 минут назад, Freibier сказал: Изучаю GOWIN FPGA Designer. Подскажите : А в документации посмотреть не??? 12 минут назад, Freibier сказал: Как указать питание банков? После синтеза, на закладку Process - FloorPlanner, там IO Constraints 14 минут назад, Freibier сказал: Что это за предупреждение : WARN (PR1014) : Generic routing resource will be used to clock signal 'clk_d' by the specified constraint. And then it may lead to the excessive delay or skew? Это означает, что у Вас тактовый сигнал разводится по проекту через обычные ресурсы развродки (а не через глобальные линии). 16 минут назад, Freibier сказал: clk на пин назначил. На какой именно пин? Тактовые сигналы жедательно назначать на глобальные входы GCLK. 17 минут назад, Freibier сказал: откуда берется clk_d? Из постсинтетического нетлиста. Это выход IO буфера, на вход которого Вы назначили сигнал clk. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 8 минут назад, StewartLittle сказал: После синтеза, на закладку Process - FloorPlanner, там IO Constraints Вроде так и сделал. FloorPlanner отчет в планере 3.3 в отчете 1.2 V Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 37 минут назад, StewartLittle сказал: На какой именно пин? Тактовые сигналы жедательно назначать на глобальные входы GCLK. Пин G5 В документе GW1N-9 Pinout вроде как это GCLKC_7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба Еще вопрос возник : простенький проектик тестовый сделал : module top( input clk, output [19:0]Q, output ck); reg [19:0]QP; always @(posedge clk) QP <= QP + 20'h00001; assign Q = QP; assign ck = ~clk; endmodule получил отчет : Действительно можно на обычном I/O пине получить частоту 266 MHz LVCMOS33 ? Никаких предупреждений касательно CK нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться