Отладочный стенд SDK 7.1. Общие сведения. Принципиальная схема учебного стенда, страница 3

Чтобы активизировать светодиоды, следует подать на вывод SEG0 Лог.0. Чтобы активизировать левый семисегментный индикатор, Лог.0 надо подать на вывод SEG1.

На стенде цепи SEG0 и SEG1 подключены к выводам ПЛИС, имеющим соответственно номера 39 и 41. Следовательно, в процессе проектирования вы должны побеспокоиться о том, чтобы один из этих контактов был подключён к земле GND.

Рекомендации по работе со стендом

1. Мы уже знаем, что кнопка SW9, выполняющая функции генератора одиночных импульсов, из-за дребезга контактов плохо справляется со своими функциями. Поэтому лучше вместо неё использовать один из восьми переключателей SW7 …SW0.  

2. Для установки вашего проекта в исходное состояние рекомендуется использовать штатную кнопку SW8 (RESET). Следует, однако, помнить, что при нажатии на эту кнопку формируется низкий уровень Лог.0 (инверсный сброс).

3. Выше отмечалось, что в статическом режиме на стенде не предусмотрена одновременная работа левого семисегментного индикатора и линейки светодиодов (см. рис.6). Общее управление, казалось бы, исключает их совместное использование. Но оказывается в режиме разделения времени можно реализовать их «независимую» работу.

Для этого требуется коммутировать цепи SEG0 и SEG1 с частотой, превышающей частоту мерцания (несколько десятков герц). Одновременно и синхронно с коммутацией названных цепей надо подавать на общую восьмиразрядную шину LED7… LED0 (см. рис.6) либо двоичный код (когда SEG0=0 и работают светодиоды), либо семисегментный код (когда SEG1=0 и работает семисегментный индикатор).

4. Так как светодиоды на стенде загораются от уровня Лог.0, то в проекте рекомендуется ставить дополнительные отладочные инверторы, чтобы Лог.1. соответствовала светящемуся диоду.

5. Для отображения информации на семисегментных индикаторах в ваш проект необходимо включать семисегментные преобразователи. В зарубежной литературе их обычно называют hex2led converter. VHDL - код такого преобразователя показан на рис.7. На вход семисегментного преобразователя подается 4-разрядный двоичный код HEX, а на выходе получается семисегментный код для управления индикатором LED.

Для получения VHDL-модели на рис.7 нет необходимости вводить текст с клавиатуры. Достаточно воспользоваться услугами языкового помощника LanguageAssistantили сгенерировать его с помощью инструмента IPCOREGenerator.

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity hex2led is

port(

HEX : in STD_LOGIC_VECTOR(3 downto 0);

          LED : out STD_LOGIC_VECTOR(6 downto 0));

end hex2led;

architecture behavioral of hex2led is

begin

     with HEX select

     LED<=  "1111001" when "0001",--1

            "0100100" when "0010",--2

            "0110000" when "0011",--3

            "0011001" when "0100",--4

            "0010010" when "0101",--5

            "0000010" when "0110",--6

            "1111000" when "0111",--7

            "0000000" when "1000",--8

            "0010000" when "1001",--9

            "0001000" when "1010",--A

            "0000011" when "1011",--b

            "1000110" when "1100",--C

            "0100001" when "1101",--d

            "0000110" when "1110",--E

            "0001110" when "1111",--F

            "1000000" when others;--0

end behavioral;

Рис.7. VHDL-код преобразователя двоичного кода в семисегментный код

6. Если вы хотите наблюдать результаты работы созданного устройства в автоматическом режиме, то вам потребуется низкочастотный генератор прямоугольных импульсов. Такого элемента на стенде нет. Единственная возможность - понизить частоту штатного генератора частотой 16MHz.

Чтобы понизить частоту до 1Hz, вам понадобится 24-разрядный счётчик-делитель. На его реализацию уйдёт значительная часть ресурса ПЛИС (24 триггера из 72 имеющихся на кристалле).

7. Для удобства назначения контактов ПЛИС на рис.2 рядом с компонентами стенда указаны выводы микросхемы, к которым они подсоединены.