jenya7 0 24 марта, 2019 Опубликовано 24 марта, 2019 (изменено) · Жалоба чтоб не плодить темы спрошу тут у меня в FIFO режим Show-Ahead включен. lpm_showahead => "ON" Не очень понимаю зачем он нужен. Может отключить? Изменено 24 марта, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 24 марта, 2019 Опубликовано 24 марта, 2019 · Жалоба Если не надо, отключите. Если надо, не отключайте. Show-ahead они называют то, что другие называют FWFH — First Word Falls Through. Такое FIFO работает немного по-другому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 марта, 2019 Опубликовано 24 марта, 2019 · Жалоба 6 minutes ago, andrew_b said: Если не надо, отключите. Если надо, не отключайте. Show-ahead они называют то, что другие называют FWFH — First Word Falls Through. Такое FIFO работает немного по-другому. вот это немного по другому меня и беспокоит. попробую отключить. спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 24 марта, 2019 Опубликовано 24 марта, 2019 · Жалоба 1 час назад, jenya7 сказал: чтоб не плодить темы спрошу тут у меня в FIFO режим Show-Ahead включен. lpm_showahead => "ON" Не очень понимаю зачем он нужен. Может отключить? Вы документацию читали на FIFO ? У Altera очень хорошо описана эта корка. Ещё можно отмоделировать FIFO. Вы задаете странные вопросы. Если очень упрощенно: если включен режим Show-Ahead, то сигнал чтения данных из FIFO (rdreq) фактически является сигналом подтверждения чтения. При этом ещё одной важной особенностью являет то, что данные автоматически появляются на выходе FIFO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 марта, 2019 Опубликовано 24 марта, 2019 (изменено) · Жалоба 21 hours ago, Flip-fl0p said: Если очень упрощенно: если включен режим Show-Ahead, то сигнал чтения данных из FIFO (rdreq) фактически является сигналом подтверждения чтения. При этом ещё одной важной особенностью являет то, что данные автоматически появляются на выходе FIFO. я понял. спасибо. что то не срастается с сигналами rdreq и wrreq. я так понимаю что если выставить rdreq\wrreq то на каждый клок будет читаться\писаться новое значение в FIFO. У меня почему то пишется в два раза больше значений чем я посылаю. как будто wrreq выставлен на два клока. U_RX_FIFO : fifo generic map ( SIZE => 32 ) port map ( clock => REG_CLK, data => rx_fifo_data_in, rdreq => rx_fifo_rdreq, sclr => '0', wrreq => rx_fifo_wrreq, almost_empty => rx_fifo_almost_empty, almost_full => rx_fifo_almost_full, empty => rx_fifo_empty, full => rx_fifo_full, q => rx_fifo_data_out, usedw => rx_fifo_usedw ); пишу when ST_MCP25625_TO_RX_FIFO_2 => rx_fifo_wrreq <= '1'; rx_fifo_data_in <= rx_fifo_buf_in; RamState_b <= ST_MCP25625_TO_RX_FIFO_3; when ST_MCP25625_TO_RX_FIFO_3 => rx_fifo_wrreq <= '0'; RamState_b <= ST_RAMB_IDLE; читаю when ST_RX_FIFO_READ_1 => rx_fifo_rdreq <= '1'; RxFifoState <= ST_RX_FIFO_READ_2; when ST_RX_FIFO_READ_2 => rx_fifo_buf_out <= rx_fifo_data_out; rx_fifo_rdreq <= '0'; RxFifoState <= ST_RX_FIFO_IDLE; Вроде все на один такт. Но пишется два сообщения. Посылаю одно а rx_fifo_usedw = 2. дело было не в бобине. из за неправильной алгоритмики я как бы принимал еще одно сообщение. Изменено 25 марта, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 14 апреля, 2019 Опубликовано 14 апреля, 2019 (изменено) · Жалоба Такая вот проблема. С одной стороны посылаю данные - ФИФО заполняется с другой микроконтролером считываю данные - ФИФО опустошается. Вижу лед мигает - данные пришли\ушли. Ставлю точку останова в микроконтролере - естественно ФИФО переполняеися и full = 1. Убираю точку останова - и ничего не считывается - контролер читает usedw = 0 но с другой стороны full = 1 то есть флаг не чиститься. Что то можно настроить чтоб избежать такой проблемы? Изменено 14 апреля, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 14 апреля, 2019 Опубликовано 14 апреля, 2019 · Жалоба 15 часов назад, jenya7 сказал: Такая вот проблема. С одной стороны посылаю данные - ФИФО заполняется с другой микроконтролером считываю данные - ФИФО опустошается. Вижу лед мигает - данные пришли\ушли. Ставлю точку останова в микроконтролере - естественно ФИФО переполняеися и full = 1. Убираю точку останова - и ничего не считывается - контролер читает usedw = 0 но с другой стороны full = 1 то есть флаг не чиститься. Что то можно настроить чтоб избежать такой проблемы? Ну вы бы хоть сказали какие настойки у FIFO... Телепаты в отпуске. Могу предположить: контроллер видит порт usedw = 0 ---> считает, что FIFO пустое ---> не выставляет запрос на чтение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 13 hours ago, jenya7 said: Такая вот проблема. С одной стороны посылаю данные - ФИФО заполняется с другой микроконтролером считываю данные - ФИФО опустошается. Вижу лед мигает - данные пришли\ушли. Ставлю точку останова в микроконтролере - естественно ФИФО переполняеися и full = 1. Убираю точку останова - и ничего не считывается - контролер читает usedw = 0 но с другой стороны full = 1 то есть флаг не чиститься. Что то можно настроить чтоб избежать такой проблемы? 1. Сделать обработку флага full на обоих сторонах. 2. Использовать полную, а не усеченную разрядность сигнала usedw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 15 апреля, 2019 Опубликовано 15 апреля, 2019 (изменено) · Жалоба 11 hours ago, Flip-fl0p said: Ну вы бы хоть сказали какие настойки у FIFO... Телепаты в отпуске. Могу предположить: контроллер видит порт usedw = 0 ---> считает, что FIFO пустое ---> не выставляет запрос на чтение. настройки такие scfifo_component : scfifo GENERIC MAP ( add_ram_output_register => "ON", almost_empty_value => 1, almost_full_value => 62, intended_device_family => "MAX 10", lpm_numwords => 64, lpm_showahead => "ON", lpm_type => "scfifo", lpm_width => 104, lpm_widthu => 6, overflow_checking => "ON", underflow_checking => "ON", use_eab => "ON" ) конечно если я вижу нулевой размер (usedw = 0) я не обращаюсь в ФИФО. Но почему флаг full поднят. Пока со стороны контролера сделал заплату if (size == 0) { if (stus_rx_fifo && RX_FIFO_FULL_MASK) { //dummy read SPI_can_rd(opcode, 0, buff_in, 14); } return 0; } Изменено 15 апреля, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 55 minutes ago, jenya7 said: конечно если я вижу нулевой размер (usedw = 0) я не обращаюсь в ФИФО. Но почему флаг full поднят. т.е., при генерации и примении вашей корки, у вас не возникло вопросов, почему при количестве слов в фифо 64, разрядность сигнала usedw, который обозначает количество слов в фифо, 6 бит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 1 hour ago, des00 said: т.е., при генерации и примении вашей корки, у вас не возникло вопросов, почему при количестве слов в фифо 64, разрядность сигнала usedw, который обозначает количество слов в фифо, 6 бит? а что он должен сгенерировать? Размер ФИФО 64 - это 6 бит. что не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба Приветствую! 6 minutes ago, jenya7 said: а что он должен сгенерировать? Размер ФИФО 64 - это 6 бит. что не так? Попробуйте в 6 битах записать число 64 :) Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 1 hour ago, RobFPGA said: Приветствую! Попробуйте в 6 битах записать число 64 :) Удачи! Rob. минуточку! 0х3F - это 63 - начинаем то с нуля 0-63 - 64 сообщения зайдут в ФИФО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 3 минуты назад, jenya7 сказал: начинаем то с нуля 0-63 - 64 сообщения зайдут в ФИФО Ну то есть, по вашей логике, если usedw == 0, то в FIFO лежит одно сообщение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 15 апреля, 2019 Опубликовано 15 апреля, 2019 · Жалоба 1 hour ago, andrew_b said: Ну то есть, по вашей логике, если usedw == 0, то в FIFO лежит одно сообщение? ааа. блин. я понял. а почему кор генерирует 6 бит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться