Найти тему
ПЛИСовод.

FPGA. Простой сумматор

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

Первый видос был вводным, во втором рассказывали, как создавать повторитель. Именно его я взял за основу проекта, который впоследствии снабдил Makefile-ом для быстрого построения и заливки на macOs.

Ну - теперь возьмёмся за 3-й видос, в котором создаётся сумматор:

И пусть я уже давно знаю, что сумматор на языке verilog можно создать при помощи одного лишь оператора "+", но я предпочитаю повторять всё, чему учат, раз чему-то там учусь. Хотя... просто повторять - это же скучно. Давайте что-нибудь привнесём своё.

Например, воспользуюсь я циклом для создания нескольких однотипных элементов. svls заботливо подсказал, что у них так не принято, и цикл почему-то нужно засунуть внутрь какого-то там generate. Ну что-ж, гуглим, копипастим, работает. Получилось как то так.

Вот только на ПЛИС заливать такое - нет смысла, на платке у меня всего 4 кнопки, как то уж слишком мало для подобных тестов. Значит обойдёмся testbench-ем. Набираю:

make

в консоли появилось:

iverilog -g2009 -o output/adder adder_tb.v
output/adder;
VCD info: dumpfile adder.vcd opened for output.
21 + 12 = 33
85 + 5 = 90
77 + 1 = 78
mv ./adder.vcd output/adder.vcd

А ещё был создан файлик output/adder.vcd, в котором вот такое.

вывод сумматора
вывод сумматора

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

И пусть у меня нет диплома о высшем математическом образовании, я могу предположить, что сумматор решил всё верно
(особенно в примере 77 + 1 = 78)

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

https://github.com/alexey-asmodean/fpga-learn/tree/master/01_adder

Ну и да - открыл vcd файл с изображением сигналов я прямо в VSCode, используя это расширение