jenya7 0 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба В Квартусе есть корка FIFO вполне такая ничего. Но там единица - байт. А как мне сделать FIFO пакетов по 13 байт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andk 0 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Эээ.. Что вы имели ввиду под словом "единица"? В версии 18: Разрядность данных - от 1 до 256. Глубина - от 4 и до конца памяти (ну или триггеров). Вообще, не плохо бы знать про какой камень идёт речь. В приаттаченой картинке скриншот. Если имеется ввиду разрядность 13*8=104 бита, возьмите ближайшее значение - 108. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 августа, 2018 Опубликовано 2 августа, 2018 (изменено) · Жалоба Эээ.. Что вы имели ввиду под словом "единица"? В версии 18: Разрядность данных - от 1 до 256. Глубина - от 4 и до конца памяти (ну или триггеров). Вообще, не плохо бы знать про какой камень идёт речь. В приаттаченой картинке скриншот. Если имеется ввиду разрядность 13*8=104 бита, возьмите ближайшее значение - 108. это ФИФО байт. а мне нужно ФИФО объектов, скажем так. каждый объект 13 байт. объект вошел объект вышел. ааа...понял. вы предлагаете сделать ширину шины в 13 байт. не знаю. мне это не очень нравиться. Изменено 2 августа, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Вместо того чтобы выбирать значения из списка можно это значение вписать руками. И будет Вам счастье :1111493779: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Вместо того чтобы выбирать значения из списка можно это значение вписать руками. И будет Вам счастье :1111493779: а как передать 13 байт на шину? они у меня в РАМ лежат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба а как передать 13 байт на шину? они у меня в РАМ лежат. А чем вариант FIFO не устраивает ? Я не совсем понимаю Вашу задачу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба А чем вариант FIFO не устраивает ? Я не совсем понимаю Вашу задачу. но данные надо ведь на шину загрузить. на вход. создал я data[0..103] но 13 байт лежат в РАМ. Как их загрузить из РАМ в data[0..103]? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба а как передать 13 байт на шину? они у меня в РАМ лежат. Напишите свой контроллер поверх FIFO, который будет определять последовательное заполнение FIFO по 13 байт (пачкой) и выдавать их на выход непрерывной пачкой. но данные надо ведь на шину загрузить. на вход. создал я data[0..103] но 13 байт лежат в РАМ. Как их загрузить из РАМ в data[0..103]? В RAM эти 13 байт лежат один словом (word) шириной 104 бита или 13-тью байтными словами? Если одним словом, то не вижу проблем паралельной выгрузки этой пачки на шину. Если 13-тью словами, то нужен перевод из последовательного формата в параллельный (serdes). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Напишите свой контроллер поверх FIFO, который будет определять последовательное заполнение FIFO по 13 байт (пачкой) и выдавать их на выход непрерывной пачкой. В RAM эти 13 байт лежат один словом (word) шириной 104 бита или 13-тью байтными словами? Если одним словом, то не вижу проблем паралельной выгрузки этой пачки на шину. Если 13-тью словами, то нужен перевод из последовательного формата в параллельный (serdes). у меня РАМ 8х1024 - 1 килобайт. так как это сделать практически? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба у меня РАМ 8х1024 - 1 килобайт. так как это сделать практически? Выдайте из RAM 13 байт и запишите их в 13 байтных регистров, затем защелкните эти 13 регистров на шину шириной 104 бита с сигналом валидности. Вообще, у производителя должны быть FIFO с настраиваемыми разными размерностями входных и выходных шин (вход - байтный, выход 13-ти байтный). По крайней мере, у Xilinx есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Приветствую! у меня РАМ 8х1024 - 1 килобайт. так как это сделать практически? Если практически сначала нужно полностью и подробно описать то что у Вас есть и то что Вы хотите (целевую задачу). Тогда глядишь и самому станет все понятно (а не только нам) :) Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба А как вам такое решение? Я создал двухмерный массив type packet_t is array (12 downto 0) of std_logic_vector(7 downto 0); type packet_fifo_t is array (31 downto 0) of packet_t; signal tx_mailbox_fifo : packet_fifo_t; shared variable g_fifo_head_idx : integer range 0 to 255 := 0; shared variable g_fifo_tail_idx : integer range 0 to 255 := 0; В одном процесе я загружаю байты в очередную ячейку из РАМ when ST_RAM_TO_TX_BUF_3 => if (idx2 < 13) then tx_mailbox_fifo(g_fifo_head_idx)(idx2) <= slave_data_out2; idx2 := idx2 + 1; else --get ready the next fifo slot g_fifo_head_idx := g_fifo_head_idx + 1; if (g_fifo_head_idx > 31) then g_fifo_head_idx := 0; end if; RamState_b <= ST_RAMB_IDLE; end if; В другом слежу за индексом TX_MAILBOX_FIFO_MANAGER: process (REG_CLK) begin if (rising_edge(REG_CLK)) then --send previous message - g_fifo_head_idx incremeted by 1 in other process if (g_fifo_tail_idx < g_fifo_head_idx) then tx_buf_ready <= '1'; end if; if (update_tail_idx = '1') then tx_buf_ready <= '0'; g_fifo_tail_idx := g_fifo_tail_idx + 1; if (g_fifo_tail_idx > 31) then g_fifo_tail_idx := 0; end if; end if; end if; end process TX_MAILBOX_FIFO_MANAGER; И есть процесс посылки when ST_TX_DATA => --send 13 byte of data if (tx_byte_idx < 13) then MSPI_WR_DATA <= X"00" & tx_mailbox_fifo(g_fifo_tail_idx)(tx_byte_idx); MSPI_WR_START_TRIG <= '1'; --send a byte tx_byte_idx := tx_byte_idx + 1; NextState <= ST_TX_DATA; McpState <= ST_WAIT_DONE; else MSPI_CS <= '1'; --chip select high update_tail_idx <= '1'; NextState <= ST_MCP_IDLE; McpState <= ST_REQ_TO_SEND0; end if; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andk 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба И всё таки, что вы хотите сделать? Есть какая-то RAM. Есть какое-то Fifo. Зачем их нужно скрещивать? Ну хорошо, почему нельзя сделать Ram с разной разрядностью входа и выхода? Ну а сделать FIFO с разной разрядностью входа и выхода в чём проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 3 августа, 2018 Опубликовано 3 августа, 2018 · Жалоба Ну а сделать FIFO с разной разрядностью входа и выхода в чём проблема?Нельзя просто так взять и сделать асимметричное ФИФО. Для этого должны выполняться определённые соотношения между разрядностями входа и выхода. 13 байт сюда не очень хорошо вписывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 3 августа, 2018 Опубликовано 3 августа, 2018 · Жалоба И всё таки, что вы хотите сделать? Есть какая-то RAM. Есть какое-то Fifo. Зачем их нужно скрещивать? Ну хорошо, почему нельзя сделать Ram с разной разрядностью входа и выхода? Ну а сделать FIFO с разной разрядностью входа и выхода в чём проблема? я пришел к тому же выводу - ФИФО наше все. сериально загонять байты по 13 штук и считывать тоже по 13. единственно я не понимаю - я должен стробировать сигнал wrreq? иначе как ФИФО знает что нужно принять следующий байт? и то же самое при чтении - нужно стробировать rdreq? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться