FPGA chips

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


Демультиплексор на verilog

Демультиплексор выполняет функцию обратную мультиплексору - "подключает" входной сигнал к нужному выходному, номер которого задается селектором. Если входной сигнал - логическая единица, то он ведет себя точно, как декодер. Если же входной сигнал - это ноль, то не зависимо от значения селекторов, на всех выходах будет ноль.

Демультиплексор можно рассматривать как частный случай дешифратора, если считать, что входной полезный переключаемый сигнал и сигналы селекторов - это все просто "входные сигналы".

Посмотрим, как демультиплексор можно описать на языке Verilog.

Дешифратор - это устройство преобразующее один двоичный код в другой код.

Самый простой пример дешифратора - управление семисегментным индикатором. На вход устройства подается 4х битное число, которое определяет отображаемый на индикаторе символ. К 7ми выходам устройства подключаются по отдельности все семь сегментов индикатора.

Управление семисегментным индикатором на Verilog

Вот на этой картинке я показал индикатор и пронумеровал его сегменты по своему разумению. Ниже показаны возможные отображаемые символы и их двоичные коды. Я планирую показывать на индикаторе все возможные символы "0123456789ABCDEF" для 4х битного двоичного числа.

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

Требуется обеспечить этой коробке волшебность - а именно сказочное свечение изнутри. Самый простой для меня способ реализовать это - использовать плату Марсоход. Это и было сделано:

На разных форумах по электронике иногда вижу люди задают вопрос: "Как реализовать демультиплексор на Verilog?"

Честно говоря, я думаю, что программируя на Verilog HDL врядли вы будете прямо оперировать такими понятиями, как дешифратор, декодер или демультиплексор. Все эти понятия пришли из схемотехники или даже из дискретной логики. Когда-то давным давно выпускались отдельные микросхемы типа SN74155N (или ее советский аналог К155ИД4), и еще всякие другие.
sn74155n, 155ИД4
Такая микросхема могла гордо называться "сдвоенный дешифратор-демультиплексор". Вот оттуда все и пошло поехало.

Декодер - устройство, преобразующее двоичный код в позиционный код.

Рассмотрим полный декодер. Если входных линий декодера N, то выходных линий будет 2^N. например, декодер с тремя входными линиями имеет 2^3=8 выходов. Только на одном из выходов декодера будет единица, на том, номер которого подается на шину входных сигналов. На остальных выходах декодера будет ноль.

Есть несколько способов описать декодер на языке Verilog HDL. Самый очевидный способ - с помощью конструкции языка case-endcase. Вот как можно это сделать:


module my_decoder1(
  input wire [2:0]addr,
  output reg [7:0]selector
);

always @*
begin
  case
(addr)
   3'd0: selector=8'b00000001;
   3'd1: selector=8'b00000010;
   3'd2: selector=8'b00000100;
   3'd3: selector=8'b00001000;
   3'd4: selector=8'b00010000;
   3'd5: selector=8'b00100000;
   3'd6: selector=8'b01000000;
   3'd7: selector=8'b10000000;
  endcase
end
endmodule


Если откомпилировать такой код с помощью Altera Quartus II и потом посмотреть netlist с помощью утилиты RTLViewer из комплекта Quartis II, то мы увидим, что в схеме получился... декодер!

декодер в цифровой схемотехнике