Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
373.76 Кб
Скачать

Контрольные вопросы:

  1. В чем отличие поведенческого описания от структурного в языке VHDL?

  2. Что такое «синтезируемое подмножество» языка VHDL?

  3. Может ли начаться выполнение процесса в языке VHDL во время выполнения другого процесса?

  4. Укажите на ошибку в приведенном ниже описании счетчика:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

USE ieee.std_logic_unsigned.all;

ENTITY count IS

PORT

(

clk : IN STD_LOGIC;

out1 : OUT STD_LOGIC_VECTOR (2 downto 0)

);

END count;

ARCHITECTURE beh OF count IS

BEGIN

PROCESS (clk)

BEGIN

IF (rising_edge(clk)) THEN

IF (out < 5) THEN

out <= out + 1;

ELSE out <= (OTHERS =>'0');

END IF;

END IF;

END PROCESS;

END beh;

  1. Какова область видимости сигналов? переменных?

Лабораторная работа №4

Цель работы: Синтез контроллера клавиатуры стенда.

Задание на лабораторную работу:

  1. Изучите структурную схему контроллера клавиатуры 4х4:

Устройство работает следующим образом. Сигнал тактового генератора преобразуется устройством формирования сигналов сканирования в последовательность импульсов с последовательно появляющимся нулем в каждом из разрядов:

В нулевом такте опроса нуль устанавливается на линии S0, в первом – на S1, во втором – на S2, в третьем – на S3. Далее процесс повторяется. Данная последовательность подается на строки клавиатуры через диоды VD1-VD4. Диоды служат для предохранения от выхода из строя устройства формирования сигналов сканирования в случае, если замкнуты 2 и более кнопок. В случае, если ни одна из кнопок не замкнута, на линиях D0 – D3 будут присутствовать логические ‘1’ в любом такте опроса. Если нажата одна из клавиш, в одном из тактов опроса на одной из линий D0 – D3 будет присутствовать логический ‘0’ (для кнопки S10 логический ‘0’ будет присутствовать на линии D2 во втором цикле опроса).

Устройство формирования сигналов сканирования может быть получено из сдвигового регистра или из четырехразрядного двоичного счетчика. В последнем случае достоверными сигналы сканирования будут, если на выходе счетчика числа 14, 13, 11, 7. Поскольку схема опроса клавиатуры совмещена со схемой динамической индикации в стенде, устройство формирования сигналов сканирования фактически уже имеется, и было синтезировано в лабораторной работе №3 (счетчик адреса разряда схемы динамической индикации). Таким образом, задача сводится к синтезу дешифратора кода клавиши. Данный дешифратор должен выполнять двоякую функцию: формирование кода клавиши и формирования стробирующего импульса нажатия клавиши.

  1. Разработайте на языке VHDL дешифратор кода клавиши (без формирования стробирующего импульса нажатия клавиши). Дешифратор кода клавиши должен работать следующим образом: в каждом цикле опроса в старшие 2 бита кода клавиши записывать номер цикла опроса, а в младшие 2 бита – номер линии D0…D3, на которой присутствует логический ‘0’. Если логического ‘0’ нет ни на одной из линий D0…D3, запись не производить. Эту операцию необходимо делать противофазно с инкрементированием счетчика адресов разрядов индикатора, т.е. если инкрементирование производится по переднему фронту сигнала CLK32, чтение данных с клавиатуры необходимо делать по заднему фронту этого сигнала. Это необходимо для исключения дребезга сигналов с клавиатуры.

  2. Создайте символ проекта, загрузите схему, полученную после выполнения лабораторной работы №3. Поставьте символ дешифратора и входной порт на схему. Соедините вход “Адрес” дешифратора с выходом счетчика адресов, тактовый вход – с входом счетчика адресов. Вход “Данные” дешифратора соедините с входным портом. Выход “Код клавиши” дешифратора соедините с одним из входов мультиплексора данных индикатора.

  3. Откомпилируйте проект, загрузите его в ПЛИС. При нажатии на клавиши в одном из разрядов индикатора должен отображаться код нажатой клавиши – символы от 0 до F. После отпускания клавиши информация на индикаторе должна сохраняться.

  4. Дополните дешифратор функцией формирования стробирующего импульса нажатия клавиши. Если ни одна клавиша не нажата, на этой линии должна присутствовать логическая ‘1’. Если нажата хотя бы одна клавиша – логический ‘0’. Реализовать эту функцию можно следующим образом: ввести дополнительные сигналы для каждого цикла опроса f0…f3, которые устанавливались бы в состояние ‘1’ в случае, если в данном цикле опроса клавиша нажата, и в состояние ‘0’ если не нажата. Результирующий сигнал может быть получен логическим суммированием данных сигналов.

  5. Сигнал стробирования нажатия клавиши подключите вместо данных сегмента ‘h’ индикатора. После компиляции и загрузки проекта при нажатии и удержании клавиши на индикаторе должны светиться точки. В соответствующем разряде должен высвечиваться код нажатой клавиши.

Контрольные вопросы:

  1. Что понимается под глитчами в устройствах на ПЛИС?

  2. Какие существуют методы для борьбы с глитчами?

  3. Какие меры предприняты для исключения глитчей в синтезированном дешифраторе?

  4. Можно ли исключить диоды VD1-VD4 в схеме контроллера клавиатуры?

  5. Для чего нужны резисторы R1-R4 в схеме контроллера клавиатуры?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]