Привет! С вами снова Александр и мой бессменный ассистент FPGA-тян!

Да, тема сегодняшней статьи комбинационная логика и её применение в электронике. Это такая логика, при которой состояние выхода комбинационной схемы определяет только множество входных сигналов. Изначально звучит довольно сложно, да?

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

Рисунок 1- транзисторное представление комб. функций
Рисунок 1- транзисторное представление комб. функций

Совершенно верно, или по академически: Конъюнкция,Дизъюнкция и Инверсия (Отрицание). На основе этих трёх элементов с помощью СДНФ и СКНФ можно реализовать любую логическую комбинационную функцию. то есть это как кирпичики для строительства дома.

Ещё существуют законы Де`Моргана по преобразованию одних логических функций в другие (Рисунок 2).

Рисунок 2- законы Де`Моргана
Рисунок 2- законы Де`Моргана

Да, верно, первый элемент- инверсия. Выполняет функцию инвертирование, то есть сигнал изменяется на свою противоположность (Рисунок 3). Также, будем приводить таблицы истинности для каждого элемента.

Рисунок 3- Инверсия
Рисунок 3- Инверсия

a

~(a)

0

1

1

0

Следующий элемент – логическое И. выход будет равен логической единице только если на обоих входах единицы (Рисунок 4).

Рисунок 4- логическое И
Рисунок 4- логическое И

a

b

x

0

0

0

0

1

0

1

0

0

1

1

1

Последний элемент логического базиса – логическое ИЛИ. В противоположность И, выход истинен всегда, кроме случая, когда на обоих входах логические нули (Рисунок 5).

Рисунок 5- логическое ИЛИ
Рисунок 5- логическое ИЛИ

a

b

x

0

0

0

0

1

1

1

0

1

1

1

1

И бонусный четвёртый элемент – исключающие ИЛИ. Выход истинен только тогда, когда один из входов 0 а другой 1 (Рисунок 6).

Рисунок 6- исключающие ИЛИ
Рисунок 6- исключающие ИЛИ

a

b

x

0

0

0

0

1

1

1

0

1

1

1

0

Ну на сегодня, наверное, уже всё. Думаю, для статьи этого будет достаточно.

Ладно-ладно, давай напишем прошивку с логическим ИЛИ на FPGA.

Вот код прошивки для ПЛИС:

//FPGA -xc7a15tcsg325-1 отладочная плата - QMTECH_XC7A15T_35T_50T_CSG325

module Logic_OR(
input a,b,//sw1 и sw2
output c,d,osc
    ); 
assign c=~(a&b); 
assign d = ~c; //
assign osc =c; //выход осцилографа
endmodule

Вот файл xdc для прошивки ПЛИС:

#FPGA -xc7a15tcsg325-1 отладочная плата - QMTECH_XC7A15T_35T_50T_CSG325

set_property PACKAGE_PIN C8 [get_ports c]
set_property IOSTANDARD LVCMOS33 [get_ports c]

set_property PACKAGE_PIN A9 [get_ports osc]
set_property IOSTANDARD LVCMOS33 [get_ports osc]

set_property PACKAGE_PIN H18 [get_ports a]
set_property IOSTANDARD LVCMOS33 [get_ports a]

set_property PACKAGE_PIN H17 [get_ports b]
set_property IOSTANDARD LVCMOS33 [get_ports b]

set_property PACKAGE_PIN D8 [get_ports d]
set_property IOSTANDARD LVCMOS33 [get_ports d]

Вид отладочной платы на Рисунке 7

Рисунок 7- Отладочная плата
Рисунок 7- Отладочная плата

Изначально у нас горит светодиод D4 который является прямым выходом С. т.к. светодиоды инверсные то они работают горят по низкому уровню, то есть по нулю, значит при нулях на входе светодиод D4 горит, а на светодиод D1 подаётся инверсный сигнал, и он не светится. Но стоит нажать один из переключателей Sw1 или Sw2, как огонёк переходит с D4 на D1 (Рисунок 8).

Рисунок 8- Нажатие Sw2
Рисунок 8- Нажатие Sw2

Также отсмотрим состояние осциллографа в момент нажатия (Рисунок 9).

Рисунок 9- Перепад сигнала на осциллографе
Рисунок 9- Перепад сигнала на осциллографе

Ладно, а на этом, вынуждены с вами расстаться. До новых встреч, друзья!

Список литературных источников

1.    https://ru.wikipedia.org/wiki/Комбинационная_логика

2.    ПЛИС С XILINX. Языки описания аппаратуры VHDL/Verilog САПР, приемы проектирования (Aвтор И. Е. Тарасов)

3.    FPGA prototyping by Verilog examples (Автор PONG P.CHU)

Комментарии (15)


  1. bodyawm
    21.05.2025 12:36

    Почему статья неделю мариновалась в песочнице?!

    Не порядок! Интересная подача у автора ведь :))

    Выдал инвайт, буду ждать интересные статьи про FPGA, сам хочу заняться этой темой уже не один год =)


    1. bodyawm
      21.05.2025 12:36

      Я думаю нужно как-то замотивировать пользователей с инвайтами заходить в песок. Может, уведомление в трекер раз в месяц слать? Я захожу в песочницу, но не очень часто, если что-то нравится - выдаю инвайт.


  1. gena_k
    21.05.2025 12:36

    Статья понравилась, для новичков самое то. Подскажите, что это за макетная плата и как можно скомпилировать и зашить код из примера?

    Про логику на транзисторах есть один момент, что потенциал от входа к выходу будет снижаться в показанных элементах И и ИЛИ, поэтому для поддержания работы нужны будут усилители напряжения (напр, пара инверторов). В приведённом инверторе также будет сильное ослабление напряжения на входе.


    1. Liarddead Автор
      21.05.2025 12:36

      Отладочная плата - QMTECH_XC7A15TCSG325

      Я прошиваюсь через vivado. Думаю написать обучающую статью о работе в САПР.


  1. KeisN13
    21.05.2025 12:36

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


    1. mozg37
      21.05.2025 12:36

      Могу про кордик написать


      1. KeisN13
        21.05.2025 12:36

        да вроде уже все заезжано


    1. Std137
      21.05.2025 12:36

      Да да, кто станет хедлайнером fpga, как сами знаете кто у ардуинщиков :)


      1. KeisN13
        21.05.2025 12:36

        не знаю, честно говоря. Нужна пояснительная бригада


    1. Liarddead Автор
      21.05.2025 12:36

      Думаю написать статью о трёх-тактном процессоре на FPGA. Но требуется много времени на разработку и написание статьи. Сейчас приоритет на болле простые обучающие темы.


      1. KeisN13
        21.05.2025 12:36

        честно говоря, эта тематика поднятия процессоров на fpga несколько подзакалибала уже. Звенит из каждого утюга, но это мое оценочное суждение


        1. Liarddead Автор
          21.05.2025 12:36

          Ну это просто интересно писать свою процессорную архитектуру. Если совсем все приелось можно поднять стать о полноценных видеокартах на fpga, или нейро-ускорителях вычислений. Там точно не заскучаете.


          1. KeisN13
            21.05.2025 12:36

            жду с нетерпением


  1. hw_store
    21.05.2025 12:36

    Кажется, в дизъюнкции нарисована лишняя палочка.


    1. butsan
      21.05.2025 12:36

      Я тоже обратил на это внимание