BSU 0 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба Машина состояний для xilinx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба Машина состояний для xilinx задайте пожайлуста вопрос по конкретнее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSU 0 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба задайте пожайлуста вопрос по конкретнее Есть 10 сигналов, которые идут втечении 10мс(половина кадра). Полкадра разделено на интервалы: запись, адресиция, начало индикации, индикация и стирание. В каждом интервале сигналы описывобтс по-разному. Нужно корректно организовать переключение между интервалами. P.S. Цикл адресиция- начало индикации-индикация - стирание повторяется 7 раз. В каждом периоде длительность индикации разная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба Есть 10 сигналов, которые идут втечении 10мс(половина кадра). Полкадра разделено на интервалы: запись, адресиция, начало индикации, индикация и стирание. В каждом интервале сигналы описывобтс по-разному. Нужно корректно организовать переключение между интервалами. P.S. Цикл адресиция- начало индикации-индикация - стирание повторяется 7 раз. В каждом периоде длительность индикации разная. На сайте xilinx документ xst.pdf. Там есть машина состояний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSU 0 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба На сайте xilinx документ xst.pdf. Там есть машина состояний. Структура машины состояний ясна. Проблема заключается в следующем. Указатели на то или иное состояние машины переходят в 1, в 0 не возвращаются. Также для того, чтобы перейти в следующее состояние приходится проверять слишком большое условие. Т. е. осуществляется привязка к конкретному времени, которое пришлось пересчитать, т. к. длительность периода индикации в каждом цикле разная. Без пересчета времени никак нельзя? Кажется проблема именно в этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба Структура машины состояний ясна. Проблема заключается в следующем. Указатели на то или иное состояние машины переходят в 1, в 0 не возвращаются. Также для того, чтобы перейти в следующее состояние приходится проверять слишком большое условие. Т. е. осуществляется привязка к конкретному времени, которое пришлось пересчитать, т. к. длительность периода индикации в каждом цикле разная. Без пересчета времени никак нельзя? Кажется проблема именно в этом. Причем тут слишком большое условие. У Вас дискрет 0.5 мкс. За это время можно перейти в другое состояние за один такт. Можно по старинке. Поставьте ПЗУ. (Старшие разряды ПЗУ Ваши субполя и повторы). Или табличный метод. (if - (case (case)) - else if(case (case)) - else (case (case)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 сентября, 2008 Опубликовано 26 сентября, 2008 · Жалоба Если не вдаваться в детали, то общее решение таково: Автомат + таймер. таймер - загружаемый счетчик, который декрементирует до нуля. Этот сигнал идет в автомат и по нему автомат делает загрузку счетчика новым значением и переходит в след. состояние, где опять ждет заданное время... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSU 0 29 сентября, 2008 Опубликовано 29 сентября, 2008 · Жалоба Причем тут слишком большое условие. У Вас дискрет 0.5 мкс. За это время можно перейти в другое состояние за один такт. Можно по старинке. Поставьте ПЗУ. (Старшие разряды ПЗУ Ваши субполя и повторы). Или табличный метод. (if - (case (case)) - else if(case (case)) - else (case (case)) Простите мне мою настойчивость и не понимание. Мне кажется я примерно так и сделала , но почему не работает никак не пойму. MS.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 29 сентября, 2008 Опубликовано 29 сентября, 2008 (изменено) · Жалоба Простите мне мою настойчивость и не понимание. Мне кажется я примерно так и сделала , но почему не работает никак не пойму. Вместо next_state <= state; должно быть state <= next_state; И тут: if (pol_kadr_count >= 0 and pol_kadr_count < 447 ) then state <= st_write; end if; аналогично if (pol_kadr_count >= 0 and pol_kadr_count < 447 ) then next_state <= st_write; end if; Кстати, из за этого куска кода конечный автомат может не распознаться (и не синтезироваться) Изменено 29 сентября, 2008 пользователем XVR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 29 сентября, 2008 Опубликовано 29 сентября, 2008 · Жалоба Мне кажется я примерно так и сделала , но почему не работает никак не пойму. Проект не рабочий с точки зрения синтезатора. Нет состояния next и списков чувствительности в процессе. Или добейтесь хоть какого нибудь автомата при синтезе. Или вообще окожитесь от автомата и работайте в case. Но опять таки за Вас вряд ли кто сделает синтезируемую конструкцию. (Для анализа выкладывают проект без ошибок с точки зрения синтезатора). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSU 0 29 сентября, 2008 Опубликовано 29 сентября, 2008 · Жалоба Вместо next_state <= state; должно быть state <= next_state; И тут: if (pol_kadr_count >= 0 and pol_kadr_count < 447 ) then state <= st_write; end if; аналогично if (pol_kadr_count >= 0 and pol_kadr_count < 447 ) then next_state <= st_write; end if; Кстати, из за этого куска кода конечный автомат может не распознаться (и не синтезироваться) Спасибо большое. Мне это помогло. Машина состояний работает!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SFx 0 29 сентября, 2008 Опубликовано 29 сентября, 2008 · Жалоба Описание автомата, основанное на Вашем исходнике. mash_sost.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSU 0 30 сентября, 2008 Опубликовано 30 сентября, 2008 · Жалоба Описание автомата, основанное на Вашем исходнике. Спасибо. Я только месяц после института работаю, поэтому очень благодарна за помощь!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSU 0 3 октября, 2008 Опубликовано 3 октября, 2008 · Жалоба Описание автомата, основанное на Вашем исходнике. Я не очень поняла вашу машину состояний. Она выдает по одному импульсу(запись, адресация и т.д.) в соответствующее время, а мне нужно по 7 импульсов (адресации, начала индикации , индикации и стирания) за половину кадра. Может я чего-то не понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SFx 0 3 октября, 2008 Опубликовано 3 октября, 2008 (изменено) · Жалоба а мне нужно по 7 импульсов Вам ничего не мешает поставить еще один счетчик. а счетчик который pol_kadr_count инкременировать только тогда когда subpole_count = 7 тогда значение автомата будет меняться раз в 7 clock'ов. process(CLK) begin if (CLK'event and CLK = '1') then if (subpole_count < 7) then subpole_count <= subpole_count + 1; else subpole_count <= (others => '0'); if (pol_kadr_count < 20030) then pol_kadr_count <= pol_kadr_count + 1; state<=next_state; else pol_kadr_count <= (others => '0'); state <= st_write; end if; end if; end if; end process; Изменено 3 октября, 2008 пользователем SFx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться