пытаясь узнать больше о языке verilog, vhdl и языке ассемблера

Я хотел бы знать, в чем разница между verilog и языком ассемблера.

В следующем семестре мы будем работать с микроконтроллерами, но я хотел бы немного узнать об этом до начала семестра. Я провел много исследований в области низкоуровневого программирования, и до сих пор я хорошо разбирался в языке ассемблера, но я запутался, пытаясь понять Verilog и VHDL?


person user3059925    schedule 03.01.2014    source источник
comment
Вы понимаете, что у ассемблера и verilog/vhdl столько же общего, сколько у установки расписания поездов и прокладки путей. Будьте более конкретны в своем вопросе. Расскажите, что вас смущает, что вы пробовали, и исправьте теги. SystemVerilog не имеет отношения к этому вопросу. Попробуйте сборку микроконтроллера verilog vhdl. stackoverflow.com/help/how-to-ask   -  person Greg    schedule 04.01.2014


Ответы (2)


Verilog и VHDL — совершенно разные языки для описания аппаратного обеспечения для целей программирования ПЛИС.

ПЛИС — это устройства, которые можно на лету запрограммировать для реализации любой цифровой логики (а иногда и аналоговой).

Таким образом, используя Verilog или VHDL, я могу спроектировать схему, которая создает пару защелок, несколько сумматоров с дополнением до двух, мультиплексор и источник тактового сигнала, и вдруг вы только что разработали схему, которая может выполнять вычисления. Затем вы можете взять вывод компилятора VHDL (или как там он называется), «загрузить» его в FPGA, и теперь у вас фактически есть некоторое оборудование, которое можно использовать для выполнения вычислений.

Конечно, вы можете использовать FPGA для реализации всевозможных сложных вещей — даже полностью настраиваемого процессора. Один использует Verilog и VHDL для разработки схем, которые запрограммированы на FPGA. Эти схемы могут реализовать что-то простое, например, счетчик пульсаций, или что-то более сложное, например, драйвер ЖК-дисплея, или что-то еще более сложное, например, приемопередатчик USB. Вы можете перейти от простого, как несколько защелок, к такому сложному, как полностью работающий ЦП; пока это цифровое оборудование, вы можете делать все, что хотите, с VHDL и некоторыми FPGA.

Чтобы уточнить дальше -

«Язык ассемблера» обычно относится к необработанным инструкциям, отдаваемым какому-то процессору. Конечно, существует множество различных типов процессоров (x86, ARM, SPARC, MIPS) и, кроме того, множество различных вариантов этих типов процессоров. Каждый ЦП имеет свой собственный набор инструкций.

Машинный код завершен, полностью специфицирован, готов к выполнению инструкций. Языки ассемблера позволяют вам вводить инструкции из набора инструкций вашего ЦП в виде простого текста, использовать метки и тому подобное, а также описывать структуру размещения памяти программы. Пропустите сборку через ассемблер, и вы получите машинный код в наборе машинных инструкций вашего процессора.

Вы можете спроектировать свой собственный ЦП с нуля, используя VHDL. Когда вы проектируете ЦП, вы должны реализовать свой собственный набор инструкций. Оттуда вы можете взять VHDL для своего ЦП, скомпилировать его, записать на ПЛИС и получить свой собственный ЦП. Затем вы можете начать писать программы для вашего искусственного процессора, используя свой собственный набор инструкций, написав собственный ассемблер. Некоторые мои друзья в колледже сделали это для смеха.

Например, вы знаете, что большинство процессоров основаны на загрузке и хранении, основанных на регистрах? Инструкции, как правило, выглядят примерно так:

  • Загрузите значение «1» в регистр A
  • Загрузите значение «2» в регистр B
  • Добавьте регистр A и регистр B, сохраняя результат в регистре A

(Вы только что добавили 1 + 2! Хех)

Такого рода модель вычислений оказалась наиболее популярной, но это не единственный способ выполнения вычислений. Что, если бы у вас был ЦП на основе стека, где вы помещаете значения в аппаратный стек, а затем вычисления работают со значениями на вершине стека, возвращая результаты обратно в стек.

Например:

  • Поместите 1 в стек (текущий стек содержит: 1)
  • Поместите 2 в стек (текущий стек содержит: 2 1)
  • Поместите 3 в стек (на данный момент стек содержит: 3 2 1 )
  • Add
    • 'Add' takes the top two elements on the stack, adds them together, and pushes the result on the top of the stack.
    • Стек теперь содержит: 5 1
  • Add
    • Stack now contains: 6

Аккуратно, не так ли? Что касается вычислительной модели, то у нее есть свои преимущества — операнды, как правило, короткие и требуют меньшего количества битов. Меньшие инструкции означают, что ЦП может быть быстрее.

Проблема в том, что такого процессора больше не существует.

Но если бы вы знали, что делаете, вы могли бы спроектировать один на VHDL, запрограммировать его на FGPA, и внезапно у вас появился бы один из немногих существующих процессоров на основе стека.

Скажем, если вы пишете магистерскую диссертацию, например, вы можете покопаться и выяснить, что языки программирования на основе виртуальных машин, такие как C# и Java, компилируются в байт-код для процессора, которого на самом деле не существует, но модель поскольку этот ЦП оказывается полезным для переносимости кода. Вы можете обнаружить, что воображаемые машины, используемые этими языками, основаны на моделях процессоров на основе стека. Если вы искали что-то интересное, возможно, вы пишете на VHDL процессор, который изначально реализует язык байт-кода Java. Теперь вы будете единственным человеком, у которого есть компьютер, на котором можно напрямую запускать Java.

person antiduh    schedule 03.01.2014

Verilog и VHDL — это оба HDL (языки описания оборудования) в основном для описания цифровой электроники. Их целями могут быть FPGA или ASIC (специальный кремний).

С другой стороны, уровень Assembly использует процессоры набор инструкций для выполнения ряда вычислений. Любая вещь, выполняемая на компьютере, в конечном итоге превращается в инструкцию на уровне ассемблера. Одним из примеров набора инструкций может быть x86 ISA.

Резюме: Verilog, VHDL описывает оборудование. Assembly — это низкоуровневая программа, выполняемая на процессоре.

person Morgan    schedule 06.01.2014