Применение языка VHDL при проектировании специализированных СБИС. Ивченко В.Г. - 25 стр.

UptoLike

Составители: 

26
В VHDL имеется предопределенный логический тип - тип bit, принимающий значения '0' и '1'. Тем не менее,
разработчик свободен в объявлении дополнительных типов, представляющихся ему подходящими. В данном
случае он объявил wbit как четырехзначный тип, который принимает значения '0', '1' ,'Z', 'E'. Значение 'Z'
представляет высокий импеданс или отключенное состояние выхода с тремя состояниями, а значение 'E'
представляет недопустимое или ошибочное условие. Вводимые типы должны быть объявлены до того, как они
могут быть использованы. Объявления типов wbit, address, byte и tribit_vector находятся в пакете Defs.
За списком портов следует объявление константы с именем Board_id, которая будет использована в
архитектуре как часть логики декодирования адреса. На любой элемент, объявленный в объявлении объекта,
может быть ссылка в архитектуре.
Для архитектуры платы памяти Memory_Board, изображенной на рис. 2, выбрано имя Strucrture. Она
приведена на рис. 3. Эта архитектура должна быть записана в ту же самую библиотеку проекта, что и объект
Memory_Board. Архитектура Structure разбивается на две части ключевым словом begin. Объявления должны
быть расположены до begin, а предложения языка, реализующие проект, после begin.
architecture Structure of MemoryBoard is
component ROM64Kx1
port ( Addr: in half_word;
Data: out wbit;
Chip_select: in wbit );
end component;
component Businterface -- Bus handshake and
-- memory timing
generic ( Board_id: in wbit_vector(0 to 2));
port( ABus: in address;
DBus: out byte;
MemReq: in wbit;
BusReq: out wbit;
BusAck: in wbit;
DataRdy: out wbit;
Addr: out half_word;
Data: in byte;
MR: out wbit );
end component;
signal Addr: half_word;
signal Data: byte;
signal MR: wbit;
.
.
begin
INT: Businterface
generic map (Board_id)
port map( ABus,DBus,
MemReq,BusReq,BusAsk,DataRdy,
Addr,Data,MR);
M0: ROM64Kx1 port map ( Addr,Data(0),MR);
M1: ROM64Kx1 port map ( Addr,Data(1),MR);
M2: ROM64Kx1 port map ( Addr,Data(2),MR);
M3: ROM64Kx1 port map ( Addr,Data(3),MR);
M4: ROM64Kx1 port map ( Addr,Data(4),MR);
M5: ROM64Kx1 port map ( Addr,Data(5),MR);
M6: ROM64Kx1 port map ( Addr,Data(6),MR);
M7: ROM64Kx1 port map ( Addr,Data(7),MR);
end Structure;
Рис. 3. Архитектура платы памяти
Два первых объявления описывают компоненты, которые должны быть использованы. Здесь объявлены два
вида компонентов ROM64Kx1 и Businterface. За именем каждого компонента следует список портов,
определяющий интерфейс компонента. Список портов компонента похож на список портов в объявлении
объекта, то есть каждому порту присвоено имя, вид (направление) и тип. Однако следует помнить, что,
несмотря на одинаковые имена, эти порты являются различными объектами, с точки зрения языка.
С компонентом Businterface связан список классов (generic list). Использование параметров классов
позволяет описать семейство компонентов одним описанием. Члены семейства различаются значениями,
подставленными вместо каждого из параметров класса. Значения для параметров класса могут быть выбраны,
когда создается экземпляр компонента.