FPGA & Verilog БлогFPGA chips

САПР Altera Quartus II / Intel Quartus Prime, язык Verilog HDL и кое-что про VHDL, FPGA Cyclone III, Cyclone IV, MAX II, MAX10. Платы разработчика серии Марсоход, Марсоход2, Марсоход3.


Какой бы проект для CPLD или FPGA мы ни делали: сложный или простой, всегда полезно произвести его симуляцию. Симуляция – это программное тестирование проекта, всегда делается до его проверки в железе. Микросхема имеет входы и выходы. Если мы зададим, например, последовательность и длительность входных импульсов, то система проектирования сможет просчитать результирующие сигналы на всех выходах. И не только на выходах! С помощью симуляции можно заглянуть внутрь всех модулей проекта и посмотреть на процессы, происходящие внутри чипа. Так, еще до тестирования в реальном чипе можно понять правильно работает проект или нет – ведь вы же знаете какие сигналы должны быть на выходах вашей микросхемы?

симуляция сигналов D-триггера

Этот урок про средство разработки Altera Quartus II и про симуляцию проекта. Дальше будет очень много картинок!

Verilog HDL

На предыдущих уроках мы уже познакомились с типами источников сигналов, узнали как установить экземпляры разных модулей в свой модуль и как соединить их проводами. Так же мы уже рассмотрели разные арифметические и логические выражения в поведенческом коде. Теперь нам осталось познакомиться с синхронной логикой и триггерами.

Существует несколько видов триггеров. Наиболее важные для практического применения – это D-триггера. Вот графическое изображение D-триггера:

D-триггер (flipflop)

Урок Verilog

Раньше мы уже познакомились с постоянным назначением сигналов, оно выглядит, например, вот так:


wire a,b,c;
assign c = a & b;

Постоянные назначения весьма полезны, но и они имеют недостатки. Такой код, когда его много, не очень легко читать. Чтобы сделать язык Verilog более выразительным, он имеет так называемые "always" блоки. Они используются при описании системы с помощью поведенческих блоков (behavioral blocks). Использование поведенческих блоков очень похоже на программирование на языке С. Оно позволяет выразить алгоритм так, чтобы он выглядел как последовательность действий (даже если в конечном счете в аппаратуре это будет не так).

В холле нашего офиса установлен вот такой  кондиционер:

Кондиционер

Нужно сказать, он очень хорошо охлаждает и имеет массу всяких наворотов, один из которых - светодиодный индикатор температуры входящего воздуха.

В той же комнате, где работаем мы, установлен обычный оконный кондиционер, который и холодит гораздо слабее и в нем, конечно-же, нет такого замечательного индикаторчика. Итак, нами было решено ликвидировать эту чудовищную несправедливость.

Сейчас, мы уже знаем про модули, их входные и выходные сигналы и как они могут быть соединены друг с другом. На прошлом уроке  я рассказал, как можно сделать многобитный сумматор. Нужно ли каждый раз, когда складываем два числа, делать такие сложные модули, как на том уроке? Конечно нет! Давайте познакомимся с основными арифметическими и логическими операторами языка Verilog.

Уроки Verilog

С помощью комбинаторной логики посчитаем некоторые арифметические и логические функции. Программисты C/C++ будут чувствовать себя просто как дома.