vak: (Default)
[personal profile] vak
В качестве примера рассмотрим проект светофора для пешеходного перехода. Имеем следующее оборудование:
  • светофор для автомобилей, три сигнала: красный, желтый, зеленый
  • светофор для пешеходов, два сигнала: стойте, идите
  • кнопка запроса на переход для пешехода
  • служебная кнопка сброса светофора в исходное состояние
  • генератор импульсов, задающий время
В обычном состоянии автомобильный светофор должен быть открыт (зеленый), а пешеходный - закрыт (красный). По нажатию пешеходной кнопки светофоры должны переключиться, открыв пешеходный переход, затем вернуться в исходное состояние.

Проектируемый модуль имеет три входа и пять выходов:

          ________
   rst ---|      |--- red
   clk ---|      |--- yellow
	  |      |--- green
	  |      |
button ---|      |--- stop
	  |      |--- walk
	  |______|
Фазы светофора:
  • Зеленый для автомобилей, “стойте” для пешеходов. Обычное состояние при отсутствии пешеходов.
  • Мигает зеленый для автомобилей, горит “стойте” для пешеходов. Включается через некоторое время (не более 30 секунд) после нажатия кнопки запроса. Длится три секунды.
  • Жёлтый для автомобилей, “стойте” для пешеходов. Длится три секунды.
  • Красный для автомобилей, “идите” для пешеходов. Длится десять секунд.
  • Красный для автомобилей, мигает “идите” для пешеходов. Длится три секунды.
  • Жёлтый+красный для автомобилей, “стойте” для пешеходов. Длится одну секунду.

“Примерная” реализация светофора на языке Plog приведена здксь: http://vak.ru/doku.php/proj/verilog/tlight-plog
Спецификация языка еще не готова, пока только образец кода. После компиляции должен получиться примерно такой код на Верилоге: http://vak.ru/doku.php/proj/verilog/tlight-v
Можно видеть, как компилятор создает набор состояний и переходов конечного автомата.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org