Как стать автором
Обновить

Комбинационная логика с FPGA-тян

Уровень сложностиПростой

Привет! С вами снова Александр и мой бессменный ассистент 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)

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.