Вы находитесь на странице: 1из 11

Оглавление

Мультиплексор........................................................................................................2
Демультиплексор.....................................................................................................4
Шифратор.................................................................................................................7
Дешифратор.............................................................................................................8
Оформление отчета.................................................................................................9

1
Мультиплексор
Мультиплексором называется комбинационное логическое
устройство, предназначенное для управления передачей данных от
нескольких источников одному выходному каналу. В соответствии с
определением, мультиплексор должен иметь один выход и две группы
входных контактов: информационные и адресные. Код, поступающий на
адресные входы, определяет, какой из информационных входов в данный
момент подключен к выходному каналу. Если количество адресных входов
мультиплексора равно n, то максимально возможное количество его
информационных входов будет 2n.
Рассмотрим в качестве примера восьмиразрядный мультиплексор 4-в-1
с четырьмя восьмиразрядным входами [7:0] D0-D3, двумя адресными
входами А0 и А1, и одним восьмиразрядными выходом [7:0] С. В
зависимости от комбинации адресных входов А0 и А1 мы должны
передавать данные с одного из информационных входов [7:0] D0-D3 на
выход [7:0] С. Составим таблицу истинности для всех возможных
комбинаций входов A0 и A1 (Таблица 1)
Таблица 1 – Таблица истинности мультиплексора 4-в-1.
A1 A0 [7:0] C
0 0 [7:0] D0
0 1 [7:0] D1
1 0 [7:0] D2
1 1 [7:0] D3

Листинг 1 – Модуль мультиплексора 4-в-1


`timescale 1ns / 1ps
module mux (
input [7:0] D0, D1, D2, D3,
input [1:0] A,
output [7:0] C

2
);
assign C = A[1]?(A[0]?D3:D2):(A[0]?D1:D0);
endmodule

Листинг 2 – Модуль тестового окружения


`timescale 1ns / 1ps
module mux_tb;
reg [7:0] D0_in, D1_in, D2_in, D3_in;
reg [1:0] A_in;
wire [7:0] C_out;
mux mux_1 ( .D0(D0_in), .D1(D1_in), .D2(D2_in), .D3(D3_in), .A(A_in), .C(C_out) );
integer i;
reg[1:0] test_val;
initial
begin
D0_in=8'b10000000;
D1_in=8'b10101010;
D2_in=8'b11110000;
D3_in=8'b11110100;
for (i = 0; i < 4; i = i + 1)
begin
test_val = i;
A_in[0] = test_val[0];
A_in[1] = test_val[1];
#10
end
end
endmodule

3
Демультиплексор
Демультиплексором называется комбинационное логическое
устройство, предназначенное для управления передачей данных от одного
входного канала на несколько выходных. В соответствии с определением,
демультиплексор в общем виде имеет один информационный вход, n
адресных входов и 2n выходов.
Рассмотрим в качестве примера восьмиразрядный демультиплексор 1-
в-4 с одним восьмиразрядным входом [7:0] D, двумя адресными входами А0
и А1, и четырьмя восьмиразрядными выходами [7:0] С0-С3. В зависимости
от комбинации адресных входов А0 и А1 мы должны передавать данные с
информационного входа [7:0] D на один из четырех выходов [7:0] С0-С3.
Составим таблицу истинности демультиплексора (Таблица 1).
Таблица 2 – Таблица истинности демультиплексора 1-в-4
A1 A0 [7:0] C0 [7:0] C1 [7:0] C2 [7:0] C3
0 0 [7:0] D 8`b0 8`b0 8`b0
0 1 8`b0 [7:0] D 8`b0 8`b0
1 0 8`b0 8`b0 [7:0] D 8`b0
1 1 8`b0 8`b0 8`b0 [7:0] D

Исходя из таблицы истинности нужно присваивать одному из выходов


значение входа D, а остальным выходам - 8`b0, наглядный способ сравнить
выражение сразу с несколькими вариантами использовать структуру «switch-
case». Синтаксис структуры на языке Verilog:
case (<выражение>)
case_item1: <одно утверждение>
case_item2: < одно утверждение >
case_item3: begin
<несколько утверждений>
end
default: < утверждение >
endcase

4
Переменная проверяется на строгое равенство первому значению case_item1,
затем второму case_item2 и так далее.
Если соответствие установлено – switch начинает выполняться от
соответствующей директивы case и далее.
Если ни один case не совпал – выполняется (если есть) вариант default.
Для нашего случая вариант «default» использоваться не будет

Листинг 3 – Модуль демультиплексора


module DMX (C1, C2, C3, C4, A, D);
input wire [1:0] A;
input wire [7:0] D;
output reg [7:0] C1, C2, C3, C4;
always @ (C1, C2, C3, C4, A)
begin
case (A)
2'b00: begin
C1=D; C2=0; C3=0; C4=0;
end
2'b01: begin
C2=D; C1=0; C3=0; C4=0;
end
2'b10: begin
C3=D; C1=0; C2=0; C4=0;
end
2'b11: begin
C4=D; C2=0; C3=0; C1=0;
end
endcase
end
endmodule

5
Листинг 4 – Создание тестового окружения
module DMX_tb;
wire [7:0] C_in1, C_in2, C_in3, C_in4;
reg [1:0] A_in;
reg [7:0] D_in;

DMX DMX_1 (.C1(C_in1), .C2(C_in2), .C3(C_in3), .C4(C_in4), .A(A_in), .D(D_in));

initial
begin
D_in='b10000100;
A_in[1]=0; A_in[0]=0;
#200 A_in[1]=0; A_in[0]=1;
#200 A_in[1]=1; A_in[0]=0;
#200 A_in[1]=1; A_in[0]=1;
#200 A_in[1]=0; A_in[0]=0;
end
endmodule

Рисунок 1 – Результат моделирования демультиплексора

6
Шифратор
Шифратором или кодером называется комбинационное логическое
устройство, преобразующее входной код из десятичной системы счисления в
двоичную. Входам шифратора последовательно присваиваются значения
десятичных чисел, а активный логический уровень сигнала на одном из
входов воспринимается шифратором как подача соответствующего
десятичного числа. На выходе шифратора формируется соответствующий
двоичный код. Соответственно, если шифратор имеет n выходов, то
количество входных сигналов не должно превышать 2n. Шифратор, который
имеет 2n входов и n выходов называется полным. Если количество входов
шифратора меньше 2n, он называется неполным
Рассмотрим в качестве примера полный шифратор, преобразующий
десятичные числа от 0 до 7 в двоичный код. У такого шифратора 8 входов.
Запишем таблицу истинности такого устройства
D7 D6 D5 D4 D3 D2 D1 D0 C2 C1 C0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 1
0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 1 0 1
0 1 0 0 0 0 0 0 1 1 0
1 0 0 0 0 0 0 0 1 1 1

Листинг 5 – Модуль шифратора десятичных чисел от 0 до 7


module CD (C, D);
input wire [7:0] D;
output reg [2:0] C;
always @ (D, C)
begin
case (D)
8'b00000001: C=3'b000;
8'b00000010: C=3'b001;

7
8'b00000100: C=3'b010;
8'b00001000: C=3'b011;
8'b00010000: C=3'b100;
8'b00100000: C=3'b101;
8'b01000000: C=3'b110;
8'b10000000: C=3'b111;
default: C=3'b000;
endcase
end
endmodule

Создание тестового окружения


module CD_tb;
wire [2:0] C_in;
reg [7:0] D_in;

CD CD_1 (.C(C_in),.D(D_in));
initial
begin
D_in=7'b00000001;
#100 D_in=7'b00000010;
#100 D_in=7'b00000100;
#100 D_in=7'b00001000;
#100 D_in=7'b00010000;
#100 D_in=7'b00100000;
#100 D_in=7'b01000000;
#100 D_in=7'b10000000;
end
endmodule

Результат моделирования

8
Рисунок 2 – Результат моделирования шифратора

9
Дешифратор

Дешифратором или декодером называется комбинационное


логическое устройство для преобразования чисел из двоичной системы
счисления в десятичную. Это значит, что каждому входному двоичному
числу ставиться в соответствие сигнал, формируемый на определенном
выходе дешифратора. Дешифратор, который имеет n входов и 2n выходов
называется полным. Если количество выходов дешифратора меньше 2n , он
называется неполным.
Рассмотрим в качестве примера полный дешифратор, преобразующий
двоичный код в десятичные числа от 0 до 7. У такого шифратора 3 входа и 8
выходов. Запишем таблицу истинности такого устройства
D2 D1 D0 C7 C6 C5 C4 C3 C2 C1 C0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0

10
Оформление отчета.

Графики и временные диаграммы


Для сохранения временных диаграмм из среды Vivado в отчет по
лабораторным работам необходимо изменитьa формат чисел и цвета

изображения с помощью пиктограммы окне симуляции. На вкладке


«General» изменить значение параметра «Radix» на «Binary» (по умолчанию
установлен шестнадцатеричный формат) и выбрать цвета, как представлено
на рисунке

Рисунок 3 – Установка цветов

Рисунок 4 – Итоговый результат

11

Вам также может понравиться