Разработка контроллеров клавиатуры и динамической индикации. Вариант № 2, страница 4

3.  Разработка устройства ввода и отображения данных с использованием разработанных контроллеров.

3.1.  Разработайте сдвигающий регистр по схеме рис.5. Выполните его верификацию, создайте символ.

3.2.  Разработайте блок Check, который по команде MEM позволяет запомнить отображаемый на индикаторах код и по команде Compare сравнить его с текущим кодом на индикации. При совпадении кодов включаются точки (Point) на всех четырех семисегментных индикаторах.

3.3.  Реализуйте схему устройства ввода и отображения данных с использованием разработанных блоков (см. рис.1). Убедитесь в его работоспособности на предложенном вами тесте. Продемонстрируйте работу.

4.  Выполните индивидуальное задание (см. ниже).

Варианты индивидуальных заданий.

  1. Синтезируйте устройство, позволяющее складывать однозначные числа. Для вывода результатов использовать семисегментный индикатор.
  2. Синтезируйте устройство, позволяющее складывать цифры в стек небольших размеров и вынимать их оттуда. Для вывода цифр использовать семисегментный индикатор.
  3. Синтезируйте устройство, позволяющее складывать цифры в очередь небольших размеров и вынимать их оттуда. Для вывода цифр использовать семисегментный индикатор.
  4. Модифицируйте контроллер так, чтобы он фиксировал одновременное нажатие двух заданных преподавателем клавиш в разных строках и столбцах.
  5. Модифицируйте контроллер так, чтобы он фиксировал одновременное нажатие двух заданных преподавателем клавиш в одной строке.
  6. Модифицируйте контроллер так, чтобы он фиксировал одновременное нажатие двух заданных преподавателем клавиш в одном столбце.
  7. Модифицируйте контроллер так, чтобы он фиксировал последовательное нажатие двух заданных преподавателем клавиш в течение 4 секунд.
  8. Модифицируйте контроллер так, чтобы он фиксировал удерживание заданной преподавателем клавиши в течение 3 секунд.
  9. Модифицируйте контроллер так, чтобы он фиксировал двойное нажатие заданной преподавателем клавиши за интервал времени в 1 секунду.
  10. Модифицируйте контроллер так, чтобы он подсчитывал число нажатий одной заданной преподавателем клавиши за интервал времени в 10 секунд.
  11. Модифицируйте контроллер так, чтобы он подсчитывал число нажатий на клавиатуре за интервал времени в 10 секунд.

Приложение 2.

Файл с расширением MIF (memory initialization file) используется компилятором и симулятором в проектах, содержащих устройства памяти. Для инициализации памяти также может быть использован файл в стандартном формате фирмы Intel (Hexadecimal File .hex). MIF – файл содержит вектора начальных значений для каждого адреса памяти.  В MIF – файле требуется также указать число (memory depth) и разрядность (memory width) слов. MIF – файл может быть создан в любом текстовом редакторе.

Формат MIF – файла:

DEPTH =     <число слов>;           --    Задание разрядности слов и       

WIDTH =     <разрядность слов>;     --    числа слов – обязательно         

ADDRESS_RADIX = HEX;          -- Задание формы представления адреса и данных

 DATA_RADIX = HEX;            -- не обязательно. По умолчанию считается HEX 

-- Могут задаваться BIN, DEC, HEX или OCT          

CONTENT

BEGIN

<значение адреса>            :     <значение данных>;

<[диапазон адресов] >        :     <значение данных>;

<стартовое значение адреса>  :     <перечень значений данных, загружаемых

начиная со стартового значения адреса, разделитель - пробел >;

END; 

Check.

Значение загружаемых данных может быть представлено как для отдельных адресов, так и для диапазона адресов. Если для некоторого адреса определено несколько загружаемых значений, то используется только последнее. Если для ОЗУ (RAM) файл инициализации не задан, то он создается автоматически, с нулевыми значениями данных.