МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное образовательное учреждение бюджетное высшего профессионального образования «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ Им. Проф. М.А. БОНЧ-БРУЕВИЧА» Кафедра конструирования и производства радиоэлектронных средств связи Отчёт по Лабораторной работе №2 “ШИФРАТОР И ДЕШИФРАТОР. КОДОПРЕОБРАЗОВАТЕЛИ” Дисциплина “Микропроцессорные устройства” Вариант №16 Группа РК-92 Сеньков А. Летягин Н. Преподаватель Березин А. Ю. Санкт-Петербург 2021 Цель работы: Познакомиться с принципами работы дешифратора и шифратора. Спроектировать кодопреобразователь на примере драйвера для семисегментого индикатора отладочной платы DE1-SoC. Задание на лабораторную работу: 1) Создать модуль дешифратора на языке Verilog; 2) Выполнить временную симуляцию дешифратора согласно варианту; 3) Создать модуль шифратора на языке Verilog; 4) Выполнить временную симуляцию шифратора согласно варианту; 5) Создать модуль драйвера для семисегментого индикатора на языке Verilog; 6) Получить RTL-схему драйвера; 7) Выполнить временную симуляцию драйвера согласно варианту. 1.Создание модуля дешифратора на языке Verilog module dc_3_8 ( input [2:0] addr, output reg [7:0] mng ); always @(*) case(addr) 3'd0: mng = 8'b00000001; 3'd1: mng = 8'b00000010; 3'd2: mng = 8'b00000100; 3'd3: mng = 8'b00001000; 3'd4: mng = 8'b00010000; 3'd5: mng = 8'b00100000; 3'd6: mng = 8'b01000000; 3'd7: mng = 8'b10000000; default: mng = 8'bz; endcase endmodule Временная симуляцию дешифратора RTL-схема шифратора 2.Создание модуля дешифратора на языке Verilog module cd_8_3 ( input [7:0] mng, output reg [2:0] addr ); always @(*) case(mng) 8'b00000001: addr = 3'b000; 8'b00000010: addr = 3'b001; 8'b00000100: addr = 3'b010; 8'b00001000: addr = 3'b011; 8'b00010000: addr = 3'b100; 8'b00100000: addr = 3'b101; 8'b01000000: addr = 3'b110; 8'b10000000: addr = 3'b111; default: addr = 3'bz; endcase endmodule Временная симуляцию шифратора RTL-схема шифратора 3.Создать модуль драйвера для семисегментого индикатора на языке Verilog module driver ( input wire [3:0] addr, output reg [0:6] mng ); always @(*) case(addr) 4'b0000: mng = 7'b1000000; 4'b0001: mng = 7'b1111001; 4'b0010: mng = 7'b0100100; 4'b0011: mng = 7'b0110000; 4'b0100: mng = 7'b0011001; 4'b0101: mng = 7'b0010010; 4'b0110: mng = 7'b0000010; 4'b0111: mng = 7'b1011000; 4'b1000: mng = 7'b0000000; 4'b1001: mng = 7'b0010000; 4'b1010: mng = 7'b0001000; 4'b1011: mng = 7'b0000011; 4'b1100: mng = 7'b1000110; 4'b1101: mng = 7'b0100001; 4'b1110: mng = 7'b0000110; 4'b1111: mng = 7'b0001110; endcase endmodule Временная симуляция драйвера RTL-схема драйвера Вывод: В данной лабораторной работе мы познакомились с принципами работы дешифратора и шифратора. Спроектировали кодопреобразователь на примере драйвера для семисегментого индикатора на языке Verilog. Проанализировав временную симуляцию (на дешифратор подали заданный вариантом полноразрядный двоичный код на 3 адресных входа и увидели, что в каждый момент времени он преобразовывается в унитарный двоичный код на 8 выходах. На шифратор подали сигналы на линии, заданные вариантом и увидели, что в моменты когда сигнал на 2 линиях или ни на одной из линий устройство входит в состояние неопределённости, в остальных же случаях верно преобразовывает сигнал. На драйвер подавали заданные числа 16-ой системы счисления и видели на выходе двоичный код, соответствующий коду, необходимому для включения нужных сегментов на индикаторе, убедились в корректности работы.