Чтобы активизировать светодиоды, следует подать на вывод 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 рядом с компонентами стенда указаны выводы микросхемы, к которым они подсоединены.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.