Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 508

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 502 503 504 505 506 507 < 508 > 509 510 511 512 513 514 .. 528 >> Следующая

ИСПОЛЬЗОВАНИЕМ ЯЗЫКОВ ОПИСАНИЯ АППАРАТУРЫ
IF(Reset=T)THEN sreg <= Idle;
ELSE
sreg <= next_sreg;
END IF;
END IF;
END PROCESS;
PROCESS (sreg,Max,Rd,ReadyADC,ReqADC,Reset)
BEGIN
IncAdr <= "0"; ReadyData <= "0"; ResAdr <= "0";
StartADC <= "0"; We <= "0"; next_sreg<=AdrNew;
IF ( Reset='1') THEN next_sreg<=ldle;
lncAdr<='0'; ReadyData<='0'; StartADC<='0';
We<='0'; ResAdr<='1';
ELSE
CASE sreg IS i
WHEN AdrNew =>
ResAdr<='0'; StartADC<='0'; ,
We<='0';
lncAdr<='1'; ReadyData<='1';
next_sreg<=Pause3;
WHEN Idle =>
lncAdr<='0'; ReadyData<='0';
StartADC<='0';
We<='0'; ResAdr<='1';
IF (ReqADC='1') THEN
next sreg<=StartWr;
END IF;
IF (ReqADC='0') THEN
next_sreg<=ldle;
END IF;
WHEN IncWr => 1 -
ReadyData<='0'; ResAdr<='0';
StartADC<='0';
We<='0'; lncAdr<=T;
IF (Max='0') THEN J
next sreg<=StartWr;
END IF;
IF(Max=T)THEN
next_sreg<=Pause1; !
END IF;
WHEN Pausel => 4 ¦¦
lncAdr<='0'; StartADC<='0'; ,
We<='0';
ResAdr<='1'; ReadyData<='1';
next_sreg<=WaitRd; V
WHEN Pause2 =>
lncAdr<='0'; ResAdr<='0';
StartADC<='0';
We<='0'; ReadyData<='1';
IF (Rd-0') THEN
next sreg<=Pause2;
END IF;
897
ПРОЕКТИРОВАНИЕ МПС
IF (Rd=T) THEN
next_sreg<=RdByte2; END IF;
WHEN Pause3 ~>
lncAdr<='0'; ResAdr<='0'; StartADC<='0';
We<='0'; ReadyData<='1';
IF (Max='1')THEN next_sreg<=ldle;
END IF;
IF(Max='0')THEN next_sreg<=WaitRd; END IF;
WHEN RdBytel =>
lncAdr<='0'; ResAdr<='0'; StartADC<='0';
We<='0'; ReadyData<='1';
IF (Rd='0') THEN
next_sreg<=Pause2; END IF;
IF ( Rd-1') THEN
next_sreg<=RdByte1; END IF;
WHEN RdByte2 =>
lncAdr<='0'; ResAdr<='0'; StartADC<='0';
We<='0'; ReadyData<='1';
IF ( Rd='0') THEN
next__sreg<=AdrNew; END IF;
IF (Rd=T) THEN
next_sreg<=RdByte2; END IF;
WHEN StartWr =>
lncAdr<='0'; ReadyData<='0'; ResAdr<='0';
We<='0'; StartADC<='1';
IF ( ReadyADC='1') THEN next_sreg<=WrData; END IF;
IF (Ready ADC='0') THEN n ext_s reg<=Sta rtW r; END IF;
WHEN WaitRd =>
lncAdr<='0'; ResAdr<='0'; StartADC<='0';
We<='0'; ReadyData<='1';
IF ( Rd='1') THEN
next_sreg<=RdByte1; END IF;
IF ( Rd='0') THEN
n ext_sreg<=Wa it Rd; END IF;
ПРИИЕР АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ ЦИФРОВОГО УСТРОЙСТВАС
ИСПОЛЬЗОВАНИЕМ ЯЗЫКОВ ОПИСАНИЯ АППАРАТУРЫ
WHEN WrData =>
lncAdr<='0'; ReadyData<='0';
ResAdr<='0';
StartADC<='0'; We<='1 next_sreg<=lncWr;
WHEN OTHERS =>
END CASE;
END IF;
END PROCESS;
END BEHAVIOR;
Разделы проектного модуля типичны для языка VHDL. В самом начале
перечисляются используемые в проекте библиотеки (IEEE и Synopsys). В
заголовочном разделе ENTITY перечислены имена и типы всех сигналов:
входных внешних управляющих сигналов-тактового сигнала (CLK), сигнала
окончания блока данных (Мах), запросов на чтение и запись блока данных
(Rd и ReqADC) соответственно, флага готовности АЦП (ReadyADC) и, наконец,
начального сброса (Reset) и выходных управляющих сигналов - сигнала
запуска АЦП (StartADC), сигналов управления счетчиком адреса (IncAdr,
ResAdr), сигнала управления режимом записи буферного ОЗУ (We) и внешним
выходным сигналом (ReadyData).
Следующий раздел - ARCHITECTURE - представляет собой описание архитектуры
или поведения (в нашем случае поведения) блока, интерфейс которого был
описан в ENTITY. Как и в обычных языках, в начале раздела дается описание
типов и объявление переменных, используемых при описании действий,
выполняемых в разделе ARCHITECTURE. В данном автомате определен
перечислительный тип данных type_sreg со всем списком допустимых значений
(они, естественно, совпадают с именами, введенными в граф схеме
переходов). Далее в тексте объявлены два сигнала (Signal) - sreg и
next_sreg введенного типа type_sreg. Введение двух сигналов связано с
необходимостью определения текущего и следующего состояний автомата при
переходе от одного состояния к другому.
Главная часть архитектурного тела содержит два оператора параллельного
типа (процесса). Первый процесс запускается на исполнение каждый раз,
когда происходит изменение сигнала CLK. Однако его основное действие -
назначение автомату нового состояния -происходит только по переднему
фронту сигнала CLK. Использование для тактирования автомата переднего
фронта синхронизирующего сигнала (предложение IF CLK-1' AND CLK'event
THEN sreg<=next_sreg; END IF;) служит для синхронизации выбранных
библиотечных операционных узлов и обеспечит стабильность входных
управляющих сигналов в моменты тактирования. При составлении программы
автомата учитывалась необходимость его установки в исходное состояние при
подаче сигнала сброса (выражение IF (Reset-1') THEN sreg<=ldle;).
Поведение управляющего автомата в тексте программы задано вторым
процессом. Второй процесс запускается каждый раз, когда изменяется
состояние автомата (sreg) или изменяется какой-либо входной сигнал.
Содержимое этого процесса и определяет поведение управляющего автомата.
Конечные автоматы в языке VHDL удобно описывать посредством оператора
выбора "CASE", используя в качестве ключа выбора варианта переменную
Предыдущая << 1 .. 502 503 504 505 506 507 < 508 > 509 510 511 512 513 514 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed