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
Можно видеть, как компилятор создает набор состояний и переходов конечного автомата.

Date: 2007-06-22 23:18 (UTC)
From: [identity profile] panchul.livejournal.com
Кстати, это я dubolom-у коварную жизненную диверсию учинил - разжег интерес, даже книжек по верилогу прислал. Теперь он будет C -> Verilog писать - вместо того, чтобы ходить по лесам, читать интересные книжки, ростить детей, ходить в музеи.

Date: 2007-06-22 23:40 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Ставлю тебе за это на вид! :)

Date: 2007-06-23 00:21 (UTC)
From: [identity profile] panchul.livejournal.com
Знаю, знаю. Советский фантаст Ефремов назвал бы меня "проводником инфернальности" (см. "Час Быка").