2014-10-30 1 views
3

Действительно ли VHDL Turing? Мое понимание заключается в том, что VHDL создает регистрационную машину, и эти регистрационные машины - без произвольной ОЗУ - не являются Тьюрингом.Готово ли VHDL Turing?

Является ли это точным? Для проблем, которые не могут быть решены в регистрационных машинах, существует ли стандартный подход - использовать RAM вне VHDL и управлять им через VHDL, например?

+1

Вы можете, конечно, реализовать RAM в VHDL, для начала. Для синтеза большинство FPGA будут отображать вашу RAM в выделенные блоки памяти. Это не самая дешевая форма памяти, но это экономический аргумент, а не фундаментальный. –

+1

VHDL имеет динамическое распределение памяти, поэтому он является таким же полным, как и любой другой язык системного программирования. –

ответ

4

Есть 3 основных criteria for Turing Completeness:

  1. последовательности. делайте эту вещь, а затем делайте эту вещь, а затем делайте другую вещь
  2. Выбор. если это то что-то
  3. Итерация (или рекурсии). не делать это снова и снова, пока это

Требования памяти не то, что она бесконечна (что невозможно с помощью современных технологий, и все языки потерпят неудачу), но что она неограниченна, или бесконечно расширяемая: то есть. если вы закончите, вы можете добавить еще и попробовать еще раз.

Так что да, я думаю, что VHDL безусловно подходит. Он может все это делать.

+0

Можете ли вы привести пример кода, показывающий рекурсию в VHDL? – SRobertJames

+0

Я нашел [поток, который имеет пример] (https://groups.google.com/d/topic/comp.lang.vhdl/6iriCKNutv8/discussion). –

+0

@SRobertJames: машина состояния может очень легко выставить рекурсию, и я не думаю, что кто-то собирается утверждать, что мы не можем построить конечный автомат в VHDL. –

5

Другой способ показать Тьюринга полноту представляет собой цепочку преобразований:

  1. Тьюринга Машины Тьюринга.
  2. Машины Turing можно моделировать регистрационными машинами и наоборот.
  3. Регистрация машины реферата и простая модель современного процессора
  4. Вы можете описать процессор с VHDL

Так VHDL является Тьюринга.