des00 25 11 июня, 2021 Опубликовано 11 июня, 2021 · Жалоба 12 hours ago, RobFPGA said: Еще раз уточню - нет проблемы реализации выхода из ошибочных состояний автомата - есть проблема не попадания в оные под действием ожидаемых входных сигналов. да нет там проблемы, я уже несколько раз писал, что не надо теоретизировать об автомате в вакууме, речь про конкретный случай, конкретного применения. Вы код ТС и суть его вопросов вообще читали? он ловит тупо один такт с проца, длительностью в 1 такт частоты до 162МГц. Ловит скорее всего на частотах порядка 200-300МГц. Автомат, перейдя в любое состояние от текушего уже выполнит свою программу, а именно сигнализирует о том, что факт события был. А зависший автомат, у него падает в то самое ожидание, где этот импульс, который длится порядка 1.5-2 тактов частоты его автомата, будет уже нормальным импульсом и автомат тем более выполнит свою задачу. On 6/9/2021 at 7:50 PM, RobFPGA said: Метастабильность не выйдет если параметры триггеров целевой FPGA, и частот сигнала и тактовой дадут вам адекватное время MBTF. Но даже для современных FPGA для одного триггера эта цифра будет приемлемой лишь при достаточно низких частотах. В том то и дело, что следуя докам о современных чипах, эта частота уже составляет величины до 300МГц и более того, олдскульная рекомендация 2-3 триггера уже не актуальна. Ссылку не дам, но читал пару лет назад wp на сайте хилых, про седьмое семейство. Там уже шли выводы в разрез Кена Чапмена и Ко по CDC. ЗЫ. Зачем именно так делает ТС, мне не ведомо, но решение имеет место быть. Да оно не каноническое, но все же предлагаю закончить дискус сей Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 11 июня, 2021 Опубликовано 11 июня, 2021 · Жалоба 21 hours ago, vt313 said: Как? Кодирование тут никакой роли не играет. Ещё как играет. У ТС автомат в кодах Грея, при этом все переходы последовательные, кроме STATE_STM_FLAG->STATE_STM_WAIT. При последовательном переходе меняется 1 бит, что не приведёт к неправильным переходам (бит либо изменится, либо останется прежним - автомат либо перейдёт в правильное состояние либо останется в прежнем состоянии). В переходе STATE_STM_FLAG->STATE_STM_WAIT будет меняться несколько битов (он не последовательный). Из за метастабильности реальный набор изменившихся битов может быть подмножеством требуемого. Какие при этом получатся переходы предсказать трудно. Например, если изменяются одновременно 2 бита, то возможно 4 варианта реального изменения. При этом 1 вариант будет соответствовать правильному переходу, в ещё 1 варианте автомат останется в прежнем состоянии и в 2х вариантах будут переходы в неправильное состояние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 176 11 июня, 2021 Опубликовано 11 июня, 2021 · Жалоба 4 часа назад, des00 сказал: сигнализирует ..другому автомату, что "можно принимать данные", которые из того же домена, т.е. асинхронные, либо их предустановка заведомо больше периода — тогда тем более не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 июня, 2021 Опубликовано 12 июня, 2021 · Жалоба 19 hours ago, Plain said: ..другому автомату, что "можно принимать данные", которые из того же домена, т.е. асинхронные, либо их предустановка заведомо больше периода — тогда тем более не понятно. не из того же. про автомат мура я уже писал. ну блин, в тетрадке порисуйте различные схемы, как оно там будет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vt313 0 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба 11.06.2021 в 12:47, xvr сказал: Ещё как играет. У ТС автомат в кодах Грея, при этом все переходы последовательные, кроме STATE_STM_FLAG->STATE_STM_WAIT. При последовательном переходе меняется 1 бит, что не приведёт к неправильным переходам (бит либо изменится, либо останется прежним - автомат либо перейдёт в правильное состояние либо останется в прежнем состоянии). В переходе STATE_STM_FLAG->STATE_STM_WAIT будет меняться несколько битов (он не последовательный). Из за метастабильности реальный набор изменившихся битов может быть подмножеством требуемого. Какие при этом получатся переходы предсказать трудно. Например, если изменяются одновременно 2 бита, то возможно 4 варианта реального изменения. При этом 1 вариант будет соответствовать правильному переходу, в ещё 1 варианте автомат останется в прежнем состоянии и в 2х вариантах будут переходы в неправильное состояние. Так я не общую теорию имею ввиду, а конкретный пример. В этом примере я ничего не увидел. Собственно говоря, я думаю, что там вот такое process(clk) begin if clk = '1' and clk'event then if oe = '0' and wr = '1' then comand <= data; end if; res <= f(comand); end if; end process; Вся метастабильность между сигналами oe, wr, data убирается на уровне мастера. В внутри автомата нет ничего, что нарушит работу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба 1 hour ago, vt313 said: Так я не общую теорию имею ввиду, а конкретный пример. Я вам и привожу конкретный пример - посмотрите первое сообщение темы, там приведён вполне конкретный автомат. 1 hour ago, vt313 said: Собственно говоря, я думаю, что там вот такое Там не такое Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vt313 0 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба 48 минут назад, xvr сказал: Я вам и привожу конкретный пример - посмотрите первое сообщение темы, там приведён вполне конкретный автомат. Там не такое Так я посмотрел. И где там будет неправильный переход? А что там еще может быть? Давайте пофантазируем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба Приветствую! 37 minutes ago, vt313 said: А что там еще может быть? Давайте пофантазируем. IMHO неблагодарное это дело фантазировать по RTL как именно он будет реализован в нетлисте. В этом основная проблема таких "скользких" решений. Сложно контролировать как разложится такой код в нетлисте при синтезе и P&R, нужно прикладывать дополнительные усилия и специально констрейнить полет фантазий синтезатора и P&R. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба 2 hours ago, vt313 said: Так я посмотрел. И где там будет неправильный переход? Я писал где именно. При переходе STATE_STM_FLAG->STATE_STM_WAIT будет изменено более одного бита в регистре состояния автомата. Все другие переходы происходят последовательно, и при них меняется 1 бит (автомат кодируется в коде Грея). Этот переход НЕ последовательный - как минимум 2 бита будет изменено. Изменение зависит от асинхронного внешнего сигнала (STM_U_QBUS_IN_L) - автомат может попасть как минимум в 2 неожиданных состояния Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vt313 0 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба 1 час назад, xvr сказал: STM_U_QBUS_IN_L 1 час назад, xvr сказал: Я писал где именно. При переходе STATE_STM_FLAG->STATE_STM_WAIT будет изменено более одного бита в регистре состояния автомата. Все другие переходы происходят последовательно, и при них меняется 1 бит (автомат кодируется в коде Грея). Этот переход НЕ последовательный - как минимум 2 бита будет изменено. Изменение зависит от асинхронного внешнего сигнала (STM_U_QBUS_IN_L) - автомат может попасть как минимум в 2 неожиданных состояния В какие состояния он может попасть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 июня, 2021 Опубликовано 16 июня, 2021 · Жалоба 4 hours ago, vt313 said: В какие состояния он может попасть? В любые: STATE_STM_CLANK1, STATE_STM_CLANK2, STATE_STM_CLANK3, STATE_STM_DATA, STATE_STM_OPER, STATE_STM_END. Какие именно из этого списка будут (2 штуки) зависит от того, как синтезатор разложит номера на состояния. Например если кодировка будет такая: STATE_STM_WAIT 000 STATE_STM_CLANK1 001 STATE_STM_CLANK2 011 STATE_STM_CLANK3 010 STATE_STM_FLAG 110 STATE_STM_DATA 111 STATE_STM_OPER 101 STATE_STM_END 100 То переход STATE_STM_FLAG->STATE_STM_WAIT будет 110->000, т.е. могут получиться 100 STATE_STM_END 010 STATE_STM_CLANK3 ну и ожидаемые STATE_STM_FLAG и STATE_STM_WAIT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vt313 0 18 июня, 2021 Опубликовано 18 июня, 2021 · Жалоба 16.06.2021 в 19:55, xvr сказал: В любые: STATE_STM_CLANK1, STATE_STM_CLANK2, STATE_STM_CLANK3, STATE_STM_DATA, STATE_STM_OPER, STATE_STM_END. Какие именно из этого списка будут (2 штуки) зависит от того, как синтезатор разложит номера на состояния. Например если кодировка будет такая: STATE_STM_WAIT 000 STATE_STM_CLANK1 001 STATE_STM_CLANK2 011 STATE_STM_CLANK3 010 STATE_STM_FLAG 110 STATE_STM_DATA 111 STATE_STM_OPER 101 STATE_STM_END 100 То переход STATE_STM_FLAG->STATE_STM_WAIT будет 110->000, т.е. могут получиться 100 STATE_STM_END 010 STATE_STM_CLANK3 ну и ожидаемые STATE_STM_FLAG и STATE_STM_WAIT Ну и что? 110, 100, 000, 000, 000 - автомат в STATE_STM_WAIT или 110, 010, 000, 000, 000 - автомат в STATE_STM_WAIT Вся суть этого автомата сводится к тому чтобы по сигналам stm_sync==1 и STM_U_QBUS_IN_L== 0 принять данные в регистр команд и выполнить эту команду. Я написал свое понимание этого протокола. То что Вы написали, предполагает, что данный автомат по команде чтения. каким-то образом выполнит команду записи, примет данные и выполнит не ту команду. Я и спрашиваю как? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 18 июня, 2021 Опубликовано 18 июня, 2021 · Жалоба 7 hours ago, vt313 said: То что Вы написали, предполагает, что данный автомат по команде чтения. каким-то образом выполнит команду записи, примет данные и выполнит не ту команду. Я ничего не предполагаю. И не строю никаких догадок по тому, что подключено на выходе этого автомата. Да, по любому переходу он в конце концов свалится в STATE_STM_WAIT, но по дороге он может пройти не по тому маршруту, что описан в verilog описании. И это целиком вопрос к ТС - устраивает его это, или нет. 7 hours ago, vt313 said: Я написал свое понимание этого протокола. IMHO слишком мало информации, что бы гарантировать устойчивость (неизвестного нам) протокола к таким переходам :) Quote То что Вы написали, предполагает, что данный автомат по команде чтения. каким-то образом выполнит команду записи, примет данные и выполнит не ту команду. Например можно предположить, что в результате непредвиденного перехода STATE_STM_FLAG->STATE_STM_END дальнейшая схема потеряет команду вообще (перехода через STATE_STM_DATA и STATE_STM_OPER не будет) Quote Я и спрашиваю как? Никак, вообще ничего не сделает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться