Генератор адресов команд и данных: схемы, устройство, принципы

Пример HTML-страницы

Структурнофункциональная организация процессоровГенератор адресов команд

Назначение и состав. Генератор адресов команд (Program Sequencer— PS) формирует последовательность адресов, обес­печивая гибкий контроль выполнения программы.

В состав генератора входят следующие блоки (рис. 8.3.6):

● регистр команд, хранящий код исполняемой команды;

● программный счетчик PC , инкрементор и стек PC;

● счетчик циклов CNTRи его стек;

● цикловый компаратор (Loop Comparator ) и его стек;

● контроллер прерываний;

● регистры статуса и стек статуса;

● логика выбора, селектор источника следующего адреса и мультиплексоры.

рис. 8.3.6

 

Принцип формирования следующего адреса

В процессе выполне­ния команды процессором логика генератора адресов формирует адрес следу­ющей команды. Источником адреса могут служить (рис. 8.3.6):

● программный счетчик (ProgramCounter— PC) при последовательном выпол­нении команд программы;

● стек PC программного счетчика при возврате из подпрограммы или из обра­ботки прерывания;

● регистр команд при безусловном переходе;

● контроллер прерываний при обработке прерывания.

К источнику адреса можно также отнести индексные регистры I0–I7 генератора адресов данных DAG

На основании данных, извлекаемых из регистра команд и других устройств ге­нератора (см. рис. 8.3.6) логика выбора и селектор выбирают источник адреса следующей команды.

Логика выбора определяет, какая из команд должна выпол­няться: условная команда (например, переход, вызов подпрограммы) или вычис­лительная команда. Для этого она контролирует:

● последовательность исполнения команд в цикле, используя значения сигнала СЕ (Count Expire— окончание счета) и условие завершения цикла, находяще­гося на вершине стека циклового компаратора;

● статусные условия, которые формируются на основании содержимого реги­стра арифметического статуса ASTATи счетчика циклов CNTR. Условия завершения цикла и статусные условия приведены в табл. 8.4.4.

 

Программный счетчик и его стек

Программный счетчик PC представ­ляет собой 14–разрядный регистр. Выход счетчика подключен к 14–разрядному инкрементору, который увеличивает на единицу текущее значение счетчика.

Свя­занный с программным счетчиком стек содержит шестнадцать 14–битных ячеек памяти, в которые заносят данные при выполнении команды циклов DO UNTIL, а также при обработке прерывания.

При обработке прерывания в стек помещает­ся текущее значение счетчика (без инкрементации), чтобы вернутся к выполне­нию прерванной команды по завершении обработки прерывания.

Для записи и чтения стека можно использовать команды:

TOPSTACK= sreg; {запись в стек} sreg= TOPSTACK; {чтение из стека} NOP;

где sreg— любые регистры данных ALU, MAC, SHIFTERи индексные регистры DAG; NOP

— пустая операция обусловлена тем, что верхнее значение стека считывается с задержкой в один цикл.

Счетчик циклов и его стек.

Счетчик циклов CNTR представляет собой 14–разрядный регистр с автоматической декрементацией (уменьшением на единицу) содержимого после завершения каждого цикла. Перед выполнением циклов счет­чик загружается требуемым числом повторений N в беззнаковом формате с 14 младших линий шины DMD. Логика окончания счета СЕ (Count Expire) в начале каждого процессорного цикла проверяет условие окончания циклов, а в конце каждого процессорного цикла уменьшает на единицу содержимое счетчика. Вы­полнение циклов завершается после того, как содержимое счетчика станет рав­ным единице.

Содержимое счетчика может быть считано на шину DMD

(рис. 8.3.6). При этом два старших разряда 16–разрядного кода заполняются нулями.

Стек счетчика циклов позволяет хранить четыре 14–битных значения, что со­путствует организации вложенных циклов. При выполнении внутреннего цикла в стеке хранится значение счетчика для внешнего цикла.

При загрузке в счетчик нового значения с шины DMD текущее значение счетчика помещается в стек. Если при проверке статуса СЕ выясняется, что число повторений истекло, из сте­ка автоматически восстанавливается занесенное ранее значение счетчика.

Счет­чик циклов может быть восстановлен вручную при досрочном выходе из циклов.

Содержимое счетчика циклов не заносится в стек при записи с шины DMD но­вого значения в двух случаях:

●когда счетчик содержит некорректное значение. Такая ситуация складывает­ся после перезапуска процессора и после проверки условия СЕ при пустом стеке;

●при использовании псевдорегистра (или команды) OWR CNTRдля изменения содержимого CNTR. При записи в OWRCNTR переписывается (но не заносит­ся) в стек содержимое CNTR.

 

Цикловый компаратор и его стек

Эти средства позволяют выполнять команды DO UNTIL циклов без тактов ожидания. При выполнении команды DOUNTIL:

● в стек компаратора помещаются находящиеся в этой команде 14–разрядный адрес последней команды цикла и 4–разрядное условие завершения цикла (табл. 8.4.4), представляющие в совокупности 18–разрядный элемент. Возможно 4 уровня вложения. При вложении циклов появляется один допол­нительный процессорный цикл, необходимый для выполнения самой команды DO UNTIL. Запись и чтение 18–разрядного элемента происходит автоматически;

● в стек программного счетчика помещается выходной сигнал инкрементора программного счетчика PC и адрес первой команды цикла;

● в компараторе циклов сравнивается адрес последней команды цикла с адресом следующей команды. При равенстве адресов компаратор вырабатывает сиг­нал, информирующий логику выбора адреса следующей команды (см. рис. 8.3.6) о том, что в следующем процессорном цикле исполняется последняя коман­да цикла.

Продолжение исполнения команды DO UNTIL зависит от последней команды цикла. Рассмотрим три характерных случая.

1. Последняя команда не является командой перехода, вызова подпрограммы, возврата из подпрограммы, IDLE. В этом случае следующая команды выбирается схемой логики выбора, исходя из условия завершения циклов (табл. 8.4.4), находящегося на вершине стека циклов компаратора.

Если условие ложно, следующей командой является первая команда цикла, хранящаяся в стеке программного счетчика PC. Работа в циклах продолжается. Если условие завершения циклов истинно, из стека программного счетчика из­влекается занесенное ранее инкрементированное значение PC, представляющее собой адрес первой после завершения циклов команды. Работа в циклах прекра­щается. Из стека циклов, стека программного счетчика и стека счетчика циклов восстанавливаются старые значения.

2. Последняя команда является командой перехода, вызова подпрограммы, возврата из подпрограммы. Если условие завершения циклов ложно, сохраняется описанная выше последовательность действий для этого случая. Если условие истинно, ни одно из указанных выше действий для этого случая не происходит. Управление передается по адресу перехода, вызова подпрограммы или возврата из подпрограммы.

3. Последней командой является IDLE. В этом случае блокируется действие команды DO UNTIL. Процессор входит в режим ожидания прерывания с понижен­ным энергопотреблением. После обслуживании прерывания работа в циклах пре­кращается и начинается исполнение основной программы с команды, располо­женной за командой IDLE.

 

Контроллер прерываний

Контроллер прерываний предназначен для об­работки прерываний по вектору прерывания. В качестве примера в табл. 8.3.3 для процессора ADSP–2111 приведены источники и векторы прерывания в поряд­ке уменьшения приоритета.

Адреса векторов прерывания имеют интервал в 4 бита для записи коротких подпрограмм обработки прерываний или адресов длинных подпрограмм. табл. 8.3.3

 

Последовательность обработки прерываний

Поступивший от источника запрос на прерывание откладывается до конца выполнения текущей команды. Если прерывание не замаскировано, текущее значение программного счетчика PC, содержащее адрес следующей команды, заносится в стек PC. В стек статуса (рис. 8.3.6) помещается содержимое регистра арифметического статуса ASTAT, регистра режима и статуса процессора MSTAT и регистра разрешения прерываний IMASK в указанном порядке.

После этого из регистра конфигурирования внешних прерываний ICNTL (табл. 8.3.4) в стек статуса загружается флаг разрешения вло­женных прерываний (позиция ICNTL.4).

Во время загрузки команды, расположенной по адресу вектора прерывания, процессор выполняет пустую команду NOP. После возврата из процедуры обра­ботки прерывания извлекается содержимое стека PC и статуса, после чего возоб­новляется исполнение основной программы со следующей команды.

 

Конфигурирование прерываний



Для этой цели используются:

● пятиразрядный регистр управления прерываниями ICNTL

(табл. 8.3.4), конфи­гурирующий внешние прерывания. Состояние регистра после сброса не оп­ределено;табл. 8.3.4 - табл. 8.3.6

● восьмиразрядный регистр разрешения/маскирования прерываний IMASK(табл. 8.3.5). При входе в подпрограмму обработки прерывания содержимое IMASK автоматически сохраняется в стеке статуса и восстанавливается из стека статуса при выходе из подпрограммы. Содержимое IMASK может быть изменено в самой подпрограмме обработки прерываний. При запрещении вложенных прерываний (ICNTL .4 = 0) содержимое регистра IMASK очищается при входе в процедуру обработки подпрограммы. При разрешении вложен­ных прерываний (ICNTL.4 = 1) маскируются только прерывания с меньшим или равным приоритетом по отношению к текущему прерыванию. Внешние прерывания, сконфигурированные по спаду (ICNTL.n= 1), в случае их маски­рования фиксируются, но не обрабатываются процессором. Зафиксирован­ное прерывание можно программно распознать и обработать;

● доступный только для записи двенадцатиразрядный регистр очистки/уста­новки прерываний (табл. 8.3.6), позволяющий программно очищать и прину­дительно устанавливать любые прерывания.

 

Задержка при обработке прерываний

При обработке прерываний IRQn, SPORT k (k = 0,1), HIP существует задержка в три процессорных цикла от времени фиксации прерывания до момента исполнения первой команды подпрограммы. Прерывание от таймера исполняется с задержкой в один процессорный цикл.

Рассмотрим регистры статуса, в которых хранятся флаги, отражающие состо­яние процессора и биты для установки требуемого режима его работы.

Флаг загружается в ASTATв конце цикла, в котором он был сгенерирован. Действие флага проявляется в следующем цикле. При выполнении команды АЛУ PASS происходит установка флагов AZ AN для данного операнда X или Y и очист­ка флага АС. При загрузке любого входного и выходного регистров вычислитель­ных устройств процессора с шины DMD состояние флагов остается неизменным.

 

Регистр статуса стека SSTAT (только для чтения)

Восьмиразрядный регистр SSTAT (табл. 8.3.8) хранит информацию о четырех стеках процессора. Установленный бит в позициях «стек пуст» свидетельствует о том, что с момента сброса процессора число извлечений из данного стека превысило или равно чис­лу помещений в стек. Установленный бит в позиции «переполнение стека» свиде­тельствует о том, что число помещений в стек превысило число извлечений из стека более чем на глубину стека. При переполнении новые данные в стек не за­писываются, так как сохраняются старые данные. табл. 8.3.8

Следует отметить, что в регистре SSTAT могут быть одновременно установле­ны биты пустоты и переполнения стека. Для очистки регистра следует произвести сброс процессора.

Регистр арифметического статуса ASTAT

Восьмиразрядный ре­гистр ASTAT

(табл. 8.3.7) хранит флаги, формируемые вычислительными устрой­ствами после выполнения текущей команды. табл. 8.3.7

 

Регистр режима и статуса процессора MSTAT

 Регистр MSTAT(табл. 8.3.9) задает режим работы процессора. В отличие от других статусных ре­гистров содержимое этого регистра может быть изменено с помощью команд уп­равления режимом ENA, DIS.

Например, командатабл. 8.3.9

● ENA BIT_REV активизирует режим реверса бит в DAG1;

● ENA SEC_REC активизирует второй банк регистров ALU, MAC и Shifter;

● DIS SEC_REC активизирует основной банк регистров ALU, MAC и Shifter.

Разрешение режима предоставления шин GO (Grant Out) позволяет процессо­ру выполнить команды из внутренней памяти программ в то время, когда внешняя шина предоставлена другому устройству. Процессор перейдет в состояние ожи­дания только тогда, когда потребуется доступ к внешней памяти. При выключен­ном режиме GOпроцессор всегда переходит в состояние ожидания во время предоставления шины другому устройству.

 

Стек статуса

Автоматически принимает содержимое регистров разреше­ния/маскирования прерываний IMASK, режима и статуса MSTAT и арифметиче­ского статуса ASTATпри входе в процедуру обработки прерывания, так как они могут быть задействованы в подпрограмме. После обслуживания прерывания (при исполнении последней команды RTI подпрограммы) содержимое регистров восстанавливается из стека. Глубина и ширина стека зависит от числа прерыва­ний, поддерживаемых конкретной версией процессора. Загрузить и выгрузить из стека содержимое указанных регистров можно также с помощью команд PUSH STS и POP STS.

Генераторы адресов данных.

Назначение и состав

Генераторы адре­сов данных (DAG 1 и DAG 2) обеспечивают косвенную адресацию при передаче данных в процессор и из процессора.

Каждый из генераторов адресов данных содержит (рис. 8.3.7):

● четыре 14–разрядных индексных регистра I(I0–I3 в DAG1, I4–I7 в DAG 2) для хранения реальных адресов, по которым производится доступ к памяти в ре­жиме косвенной адресации;

● четыре 14–разрядных регистра модификации М (M0–M3 в DAG1, М4–М7 в DAG2), позволяющие модифицировать следующий адрес путем добавления к I–регистру знакового содержимого М–регистра. Поэтому модифицирован­ный адрес может быть больше или меньше текущего. Регистры I и М могут быть любыми, но должны принадлежать одному DAG;

● четыре 14–разрядных регистра длины L(L0–L3 в DAG1, L4–L7 в DAG2), отлич­ное от нуля содержимое которых задает длину кольцевого буфера при адре­сации по модулю. При L= 0 реализуется линейная адресация к памяти. Ин­дексы задействованных регистров Lи I должны совпадать, например, L1 и I1;

● логику по модулю, обеспечивающую адресацию по модулю кольцевых буферов;

● мультиплексор MUX, позволяющий выбрать содержимое для загрузки в ин­дексный регистр (см. рис. 8.3.7);

● логику реверса бит (имеется только в DAG

1), предназначенную для измене­ния порядка бит в адресе на обратный.

Содержимое регистров I и L являются беззнаковыми числами, поэтому при считывании регистров на шину DMD два старших разряда заполняются нулями. Содержимое регистра М считается знаковым, поэтому два старших разряда при Считывании М шину DMD заполняются знаковым расширением.

 

Линейная адресация

Регистр I должен быть пустым (I= 0). Текущее со­держимое индексного регистра I соответствует адресу требуемой ячейки памяти. Адрес следующей ячейки определяется как сумма беззнакового содержимого ин­дексного регистра I и знакового содержимого любого регистра модификации М, принадлежащего тому же генератору адресов данных. Значение суммы через ло­гику по модулю и мультиплексор поступает в индексный регистр для адресации к следующей ячейке (рис. 8.3.7).

Адресация по модулю

В этом режиме адресации отличное от нуля со­держимое регистра L задает длину кольцевого буфера. Базовый адрес буфера представляет собой число В = 2n, равное округленному вверх до ближайшей сте­пени n значению L. Например, если I = 6, то базовый адрес В = 23 = 8, так как бли­жайшая степень n = 3. Таким образом, кольцевой буфер размером L слов распо­лагается по адресам В…В+L–1.

Отметим, что базовым адресом может служить KxB, где K = 1, 2, 3,… При адресации по модулю адрес следующей ячейки памяти определяется как при линейной адресации с учетом того, что его значение А не должно выходит за пределы B…B+L–1.

Поэтому, если В ≤ I+М ≤ B+L–1, то А = I+M; I+M < В, тоА= I+M+L; I+M>B+L–1,тоA = I+M–L.

Примеры. 1. Для L0 = 3, В = 4, М0 = 1 пределы адресов кольцевого буфера составляют 4…6. По­этому согласно приведенным выше соотношениям при начальном значении I0 = 5 генерато­ром адресов данных будет сформирована следующая последовательность адресов: 5, 6, 4, 5, 6, 4, 5,… Первый адрес последовательности соответствует содержимому I0 = 5 в исход­ном состоянии. Второй адрес последовательности равен I0+М0 = 5+1 = 6. Текущее значе­ние I0 становится равным 6. Так как при вычислении третьего адреса I0+М0 = 6+1 = 7 > 6, его значение равно I0+M0–L0 = 6+1–3 = 4. Подобным образом определяются другие адреса последовательности. 2. Для L0 = 3, В = 4, М0 = –1 пределы адресов кольцевого буфера также составляют 4…6. Однако в этом случае при начальном I0 = 5 генератором адресов данных будет сфор­мирована следующая последовательность адресов: 5, 4, 6, 5, 4, 6, 5,…

Адресация с изменением порядка бит на обратный

Такой режим адресации может быть реализован только в DAG1. Его включение осуществляется установкой бита BIT_REV (позиция MSTAT.1) в регистре режима и статуса. При включенном режиме расположение бит в индексных регистрах I0–I3 и, следова­тельно, в адресе изменяется на обратный. Изменение порядка бит в адресе на обратный используется в алгоритмах быстрого преобразования Фурье. Последовательный порт.

Возможности портов

Каждый порт SPORTn (n = 0, 1) может:

● обеспечить двунаправленный дуплексный режим обмена информацией по двух­проводной линии, так как имеет независимые секции приема и передачи; использовать внешние и генерировать собственные синхроимпульсы в широ­ком диапазоне частот (от нуля герц);

● поддерживать длину последовательного слова от трех до шестнадцати бит;

● поддерживать два алгоритма аппаратного сжатия информации: по А–закону и μ–закону в соответствие со спецификацией CCITT G.117;

● работать в режиме автобуферизации, при котором прерывание генерируется после того, как принят или передан целый блок данных. Последовательный порт SPORT0 поддерживает многоканальный режим, при котором передаваемые данные мультиплексированы на 24 или 32 канала. Последовательный порт SPORT1 обеспечивает такие альтернативные функции как два запроса на прерывание и два флага. Каждая секция (приемная и передающая) SPORTn:

● имеет собственные регистры принимаемых/передаваемых данных в параллель­ном коде и сдвиговые регистры для приема и передачи данных в последова­тельном коде. Двойная буферизация секций обеспечивает дополнительное время для обработки данных процессором;

● обеспечивает работу:

• с сигналами синхронизации кадра при приеме и передаче данных и без них;

• с внутренними или внешними сигналами синхронизации;

• с активным высоким или активным низким уровнем кадровых сигналов;

• с нормальным или альтернативным режимом кадровой синхронизации;

• может генерировать прерывания по завершении приема/передачи отдель­ного слова или целого буфера данных (в режиме автобуферизации). рис. 8.3.8

Состав и особенности работы последовательного порта

В со­став SPORTn (n = 0, 1) входят (рис. 8.3.8):

● регистры передаваемых (TXn) и принимаемых (RXn) данных для хранения ин­формации в параллельном коде;

● сдвигающий регистр передатчика и сдвигающий регистр приемника;

● схема компрессии/декомпрессии;

● схема управления и внутренний тактовый генератор. Каждый порт имеет пять интерфейсных выводов (табл. 8.3.10). рис. 8.3.10 Для активизации работы SPORT0, SPORT1 необходимо установить в единичное состояние биты в позициях SR.12, SR.11 системного регистра (см. табл. 8.2.2). С помощью бита в позиции SR.10 этого же регистра можно изменять режим работы линий (выводов) SPORT1: при нулевом состоянии SR.10 линии ис­пользуются по прямому назначению, при единичном состоянии SR.10 выполняют альтернативные функции (табл. 8.3.10). Передаваемые и принимаемые биты дан­ных синхронизируются импульсами SCLK. Для синхронизации могут быть исполь­зованы внешние и внутренние синхроимпульсы. Источник синхроимпульсов за­дается установкой бита ISCLK в позиции CR.14 регистра управления SPORTn (табл. 8.3.11). табл. 8.3.10 табл. 8.3.11

Частота внутренних синхроимпульсов определяется по формуле: Частота SCLK = 0,5 x (частота CLKOUT)/(SCLKDIV+1), где частота CLKOUT — частота импульсов тактового генератора (на внешнем вы­воде CLKOUT); SCLKDIV — значение 16–разрядного программно доступного реги­стра–делителя частоты SCLKDIV (его адрес 0x3FF5 для SPORT0 и 0x3FF1 для SPORT1). Число передаваемых бит в слове можно изменять в пределах от 3 до 16. Дли­на слова может быть задана с помощью четырехразрядного кода (биты в позиции CRn.0–CRn.3 регистров управления SPORTn, см. табл. 8.3.11). При этом Длина слова = SLEN + 1. Рассмотрим процессы при обмене данными с внешним устройством.

Передача

После записи данных в регистр TX сигнал TFS активизирует нача­ло передачи. Данные из регистра TX поступают в сдвигающий регистр передатчи­ка, а из него по фронту импульсов SCLK каждый бит, начиная с самого младшего, посылается во внешнее устройство.

После отправления самого младшего бита SPORTn генерирует сигнал прерывания передачи. Регистр TX снова становится доступным для записи новых данных.

Прием. Первым из внешнего устройства в сдвигающий регистр приемника поступает самый младший бит передаваемого слова. Последующие биты посту­пают синхронно с импульсами SCLK. Как только сдвигающий регистр принимает все слово, оно записывается в регистр RX, после чего SPORTn генерируется сиг­нал прерывания приема данных.

Кадровые сигналы

Кадровые сигналы используются для синхронизации при передаче и приеме слов. Биты RFSR = 1 в позиции CRn.13 регистра управле­ния SPORTn (табл. 8.3.11) при приеме и TFSR=1 в позиции CRn.11 при передаче устанавливают режим работы последовательных портов с использованием кадро­вой синхронизации. При RFSR = 0, TFSR = 0 кадровые сигналы используются (аппаратно) только для приема/передачи первого бита. Д

альнейший обмен протека­ет без участия кадровых сигналов. Для кадровой синхронизации могут использоваться как внутренние, так и вне­шние сигналы.

Разрешение приема/передачи с использованием внутренних сиг­налов синхронизации производится установкой бит IRFS/ITFS (позиция CRn.8/ CRn.9) регистра управления SPORTn.

В этом режиме сигналы кадровой синхрони­зации поступают на выводы процессора RFS/TFS для передачи во внешние уст­ройства. При IRFS = 0, ITFS = 0 используются внешние сигналы кадровой синхро­низации, поступающие на выводы RFS, TFS из внешних устройств. Внутренний сигнал кадровой синхронизации при передаче генерируется после того, как последний бит текущего слова данных передан из регистра ТХn в сдви­гающий регистр. Внутренний сигнал кадровой синхронизации при приеме конт­ролирует прием данных. Период следования сигналов должен обеспечить синх­ронный прием данных, поступающих из внешнего устройства. Он устанавливает­ся соответствующей загрузкой 16–разрядного регистра–делителя частоты RFSDIV (его адрес 0x3FF4 для SPORT0 и 0x3FF0 для SPORT1):

Число циклов между сигналами RFS =RFSDIV + 1. Для приема и передачи могут быть использованы как раздельные сигналы кадровой синхронизации, так и один общий сигнал. После сброса устанавливает­ся режим с внешними сигналами кадровой синхронизации. Возможны два режима кадровой синхронизации:

● нормальный кадровый режим, если биты ширины сигнала кадровой синхро­низации приема RFSW = 0 (позиция CRn.12) или передачи TFSW = 0 (позиция CRn.10) в регистре управления SPORTn. В этом режиме сигналы кадровой синхронизации проверяются на заднем фронте импульсов SCLK.

В случае ре­гистрации сигнала передаваемые данные отправляются на переднем фронте следующего импульса SCLK, а принимаемые данные фиксируются на заднем фронте следующего импульса SCLK.

При непрерывном приеме или передаче данных, когда за последним битом одного слова сразу же следует первый бит следующего, сигнал кадровой синхронизации должен приходить в том же цикле, что и бит данных. После сброса устанавливается нормальный кадровый режим;

● альтернативный кадровый режим, если биты ширины сигнала кадровой синх­ронизации приема RFSW = 1 (позиция CRn.12) или передачи TFSW = 1 (позиция CRn.10) в регистре управления SPORTn. В этом режиме сигналы кадровой синхронизации должны приходит в том же цикле, в котором принимается/от­правляется первый бит. При этом также передаваемые данные отправляются на переднем фронте следующего импульса SCLK, а принимаемые данные фиксируются на заднем фронте следующего импульса SCLK. Однако сигнал кадровой синхронизации проверяется только для первого бита. С помощью бит INVRFS/INVTFS в позиции CRn.6/CRn.7 регистра управления SPORTn можно изменять активный уровень сигналов кадровой синхронизации при приеме/передаче данных независимо друг от друга. При этом:

● низкому активному уровню соответствуют биты INVRFS = 0, INVTFS = 0;

● высокому активному уровню соответствуют биты INVRFS = 1, INVTFS = 1. Установки влияют на внутренние и внешние сигналы синхронизации. После сброса устанавливается высокий активный уровень.

Компрессия/декомпрессий, или компандинг (COMpressing/ exPANDING), позволяет путем логарифмического кодирования/ декодированиям минимизиро­вать число посылаемых бит данных при передаче, а при приеме восстановить на­чальное число переданных бит.

Процессоры ADSP–21XX Поддерживают алгоритмы компандинга по А–закону и μ–закону в соответствии со спецификацией CCITT G.117.

Разрешение компандинга и выбор его алгоритма осуществляется битами DATE1, DATE0 (позиция CRn.5, CRn.4) регистра управления SPORTn (табл. 8.3.11): 10 — по μ–закону; 11 — А–закону.

При установке двухразрядных двоичных кодов 00 и 01 используются форматы данных, при которых все значащие биты сдвинуты к правому краю, а незначащие разряды заполнены соответственно нулями или знаковым расширением. При выборе этих кодов компандинг запрещен. При передаче сжатых данных:

● сначала передаваемые данные поступают в регистр ТХn;

● с помощью схемы компрессии/декомпрессии производится компрессия данных;

● сжатые данные вновь поступают в регистр ТХn;

● из регистра ТХn данные переписываются в сдвигающий регистр передатчика, после чего начинается передача данных во внешнее устройство. Первым пе­редается младший бит. После этого генерируется прерывание и в регистр ТХn может быть записано следующее слово. При приеме сжатых данных:

● поступающие из внешнего устройства биты накапливаются в сдвигающем ре­гистре приемника;

● после приема последнего бита слова, содержимое сдвигающего регистра пе­реписывается в регистр RXn;

● с помощью схемы компрессии/декомпрессии производится декомпрессия данных;

● восстановленные в схеме компрессии/декомпрессии данные переписывают­ся обратно в регистр RXn;

● генерируется сигнал прерывания. Так как оба порта SPORTn (n = 0, 1) обслуживаются одной схемой компрессии/ декомпрессии, при одновременном запросе на компандинг обоих портов приори­тет имеет SPORT0.

Автобуферизация

В режиме автобуферизации прерывания генерируются после того, как передан или получен целый блок данных. Поэтому подпрограммы прерываний работают с целым блоком данных (а не с одним словом, как в обыч­ном режиме), что уменьшает временные затраты при обмене данными с внешни­ми устройствами. табл. 8.3.11

Режим автобуферизации при приеме/передаче активизируется битами RBUFn/TBUFn в позициях САn.0/САn.1 регистра управления автобуферизацией SPORTn (табл. 8.3.12). После сброса процессора режим автобуферизации деактивизиру–ется.

Трехразрядный двоичный код позволяет выбрать номер (0–7) индексного регистра I, используемого при приеме/передаче (биты RIREGn.0–RIREGn.2 в по­зициях САn.4–САn.6/биты TIREGn.0–TIREGn.2 в позициях CAn.9–CAn.11).

Двухразрядный код позволяет выбрать номер регистра модификации М, используемого при приеме/передаче (биты RMREGn.0, RMREGn.1 в позициях САn.2–САn.З/биты TIREGn.0,TIREGn.2 в позициях САn.7–САn.8). Номера регистров I и М могут быть любыми: 0–3 для DAG1 и 4–7 для DAG2, т. е. регистры I и М должны принадлежать одному и тому же генератору адресов данных. Поэтому старшие разряды трех­разрядного кода для регистров I и М совпадают и для выбора номера регистра М используется двухразрядный код. табл. 8.3.12 табл. 8.3.12-1 В режиме автобуферизации с помощью генераторов адресов данных DAG ис­пользуется изложенный выше принцип адресации кольцевых буферов. Многоканальный режим. Многоканальный режим может быть реализован только в порте SPORT0. В этом режиме каждое последующее слово передается по следующему каналу. Порт SPORT0 поддерживает 24– и 32–канальные режимы работы. При этом имеется возможность для разрешения и запрета любого канала. Многоканальный режим устанавливается битом МСЕ = 1 в позиции CR0.15 регистра управления SPORT0 (табл. 8.3.11). В этом режиме биты в позициях CR0.9–CR0.13 задействованы для обслуживания многоканального режима:

● при значении бита MCL = 0 (позиция CR0.9) устанавливается 24–канальный режим, при MCL = 1 — 32–канальный;

● четырехразрядный код MFD3…MFD0 (позиции CR0.10–CR0.13) задает задерж­ку сигнала кадровой синхронизации, т. е. число циклов SCLK между сигналом кадровой синхронизации и первым битом данных. С помощью 32–разрядных регистров разрешения многоканального приема/ передачи SPORT0 можно разрешить или запретить любой из 24 или 32 каналов. Для обращения к регистрам используются два адреса: 0x3FF9, 0x3FFA — при приеме; 0x3FF7, 0x3FF8 — при передаче. Для запрещенных каналов:

принимаемые слова игнорируются. Для этих слов прерывания не генериру­ются, автобуферизация запрещена и они не заносятся в регистр RX0;

● подлежащие передаче слова не передаются. Для этих слов прерывания не генерируются, автобуферизация запрещена. Выход передачи данных DT на­ходится в высокоомном состоянии. В многоканальном режиме остаются в силе многие опции, устанавливаемые битами регистра управления SPORT0 и управления автобуферизацией (табл. 8.3.11 и 8.3.12).

Например: SLEN — длина слова; DTYPE — компандинг и формат данных; IRFS — внутренние/внешние сигналы кадровой синхронизации; INVRFS — актив­ный уровень кадровых сигналов и др.

Устройство обмена между шинами PMD–DMD. Это устройство (рис. 8.3.9) предназначено для обмена данными между шинами данных памяти программ (PMD) и данных памяти данных (DMD) в обоих направлениях. рис. 8.3.9 Как видно из рис. 8.3.9, возможен обмен данными между 16 старшими разря­дами 24–разрядной шины PMD и 16–разрядной шиной DMD, который реализуется с помощью двух буферов с тремя состояниями. Для обмена младшими байтами данных используется восьмиразрядный регистр РХ. В процессорах ADSP–21 воз­можны следующие способы доступа к регистру РХ:

● регистр РХ автоматически загружается с шины PMD при считывании данных с этой шины в любой регистр. Например: при выполнении команды AX0 = PM(I4,M4) старшие 16 бит 24–битного слова памяти программ считываются в регистр АХ, а младшие 8 бит автоматически загружаются в РХ;

● из регистра РХ автоматически считываются младшие 8 бит на шину РМD при записи данных в память программ. Например: при выполнении команды PM(I4,M4) = AX0 записываются в память программ 16 бит, считанных из реги­стра АХ, и 8 бит, считанных из регистра РХ;

● регистр РХ доступен для записи/чтения при использовании команд пересыл­ки, в которых он указан как приемник/источник. Например, РХ = АХ0; АХ0 = РХ. При записи 8 старших бит отбрасываются, при считывании — заполняются нулями.

Таймер

Назначение и состав

Таймер предназначен для генерирования периодических прерываний через заданное число процессорных циклов. рис. 8.3.10 В состав таймера входят (рис. 8.3.10):

● 16–разрядный регистр–счетчик TCOUNT с декрементацией содержимого каж­дый процессорный цикл;

● 16–разрядный регистр TPERIOD, содержимое которого определяет период ге­нерирования прерываний;

● 8–разрядный регистр TSCALE, содержащий коэффициент масштабирования, который на единицу меньше числа процессорных циклов между декремента­ми счетчика.

Принцип работы

Включение таймера осуществляется установкой бита TIMER (позиция MSTAT.5) регистра режима и статуса процессора (табл. 8.3.9). Через каждый процессорный цикл содержимое регистра–счетчика TCOUNT уменьшается на единицу. Когда регистр–счетчик становится пустым, тай­мер генерирует прерывание и в него загружается содержимое регистра TPERIOD. Число циклов между прерываниями определяется по формулам:

● для первого прерывания число циклов = (TCOUNT + 1 ) х (TSCALE + 1 );

● для последующих прерываний число циклов = (TPERIOD + 1) х (TSCALE +1). Изменения содержимого регистров TCOUNT и TSCALE активизируются немед­ленно, изменения содержимого регистра TPERIOD — только после перезагрузки регистра TCOUNT содержимым TSCALE. Интерфейс с ведущим процессором. Назначение и состав. Интерфейс с ведущим процессором (Host Interface Processor — HIP) представляет собой па­раллельный порт ввода–вывода, обеспечивающий обмен данными между вне­шним ведущим и ведомым процессорами. Его можно также представить:

● для ведущего процессора как область памяти или регистров ведомого процессора, доступную для чтения и записи. Эта область задается набором 8– или 16–разрядных адресов;

● для ведомого процессора набором из восьми регистров, адресуемых по ад­ресам памяти данных. Ведущий процессор может быть подключен к HIP нескольких ведомых процес­соров. Обмен данными между ведомыми процессорами происходит через веду­щий процессор. табл. 8.3.13 Интерфейс HIP имеет 27 выводов (табл. 8.3.13), из которых 11 служат для уп­равления, а 16 являются входами/выходами для данных. В состав интерфейса HIP входят (рис. 8.3.11): рис. 8.3.11 ● блок управления интерфейсом (HCI), обеспечивающий управление чтением/ записью регистров HIP и загрузкой внутренней памяти программ процессора;

● 16–разрядные регистры данных HDR0–HDR5, доступные по адресам памяти данных 0xFE0–0xFE5 как ведущему, так и ведомым процессорам. При чтении и записи в регистры ведущим процессором генерируется маскируемое пре­рывание чтения и записи HIP;

● статусные регистры HSR6 (табл. 8.3.14) и HSR7 (табл. 8.3.15), в которые за­писывается состояние HDR–регистров. Младшие шесть бит регистра HSR7 копируются из регистра HSR6, чтобы 8–битные ведущие процессоры могли считать оба статуса;

● регистр маскирования прерываний HMASK (табл. 8.3.16). табл. 8.3.14 табл. 8.3.15 - табл. 8.3.16

Работа с HIP

Ведущий процессор помещает данные в один из регистров HDR для последующего их считывания ведомым процессором (и наоборот). Для ведущих процессоров (с подтверждением) сигнал подтверждения HACK устанав­ливается ведомым процессором в том же цикле, что и сигнал доступа HSEL. В ре­жиме перезаписи, который устанавливается битом HSR7.7 статусного регистра HSR7, неустановкой сигнала подтверждения можно отложить доступ к HIP.

Веду­щий процессор, требующий подтверждения, может оказаться в состоянии «бес­конечного ожидания». Инициализация регистров данных HDR не предусмотрена.

Поэтому ведущий процессор может записать данные в регистр HDR до сброса, а ведомый процес­сор считать эти данные из регистра после сброса.

Метод опроса

Наличие в интерфейсе HIP статусных регистров HSR позво­ляет путем их опроса определить состояние регистров данных HDR. Следова­тельно, опрос можно использовать как способ передачи данных между ведущим и ведомым процессорами. При записи данных в один из регистров HDR ведущим процессором в младшем байте статусного регистра HSR6 в соответствующей по­зиции устанавливается бит.

Аналогично при записи данных в один из регистров HDR ведомым процессором в старшем байте статусного регистра HSR6 (или в младшем байте статусного регистра HSR7) в соответствующей позиции уста­навливается бит.

Установленные биты сохраняются до их прочтения ведомым или ведущим процессором.

Процессы в ведущем и ведомом процессорах протекают асинхронно и, если не принять никаких мер, содержимое статусных регистров HSR может изменяться во время считывания из них информации, что приведет к непредсказуемым ре­зультатам. Однако HIP располагает аппаратными средствами, гарантирующими постоянство содержимого HSR при чтении.

Получение достоверных результатов при чтении статусных регистров HSR ведущим процессором базируется на псевдосинхроимпульсах HCLK = ¯(¯HSEL ^ ¯HRD ^ ¯HWR). При HCLK = 1 ведущий процессор имеет доступ к HIP.

Аппаратные средства по­зволяют обновлять статус при его изменении. Как показано на рис. 8.3.12, неза­висимо от того, когда произошло изменение статуса при HCLK = 0 или HCLK = 1, бит статуса ведущего процессора в статусных регистрах HSR обновляется (пере­писывается) на срезе следующего импульса HCLK.

Поэтому чтение регистров HSR с задержкой в один процессорный цикл даст достоверное значение статус­ного бита. Для ведомого процессора обновление статуса всегда происходит по переднему фронту импульса CLKOUT, при этом один импульс пропускается. рис. 8.3.12

Работа с прерываниями

При этом способе передачи данных после за­писи данных ведущим процессором в один из регистров HDR интерфейсом HIP автоматически генерируется внутреннее прерывание. В процессе обслуживания этого прерывания происходит считывание данных ведомым процессором из HDR. Для передачи данных ведущему процессору ведомый процессор записывает данные в один из регистров HDR, после чего устанавливает выходной флаг, кото­рый информирует ведущий процессор о поступлении новых данных.

Если ведо­мый процессор передает данные через один регистр HDR, ведущий процессор может непосредственно считать этот регистр по получению прерывания. Если же при передаче данных используется несколько регистров HDR, ведущий процес­сор сначала определяет, в какой из регистров произведена запись. Для этого ис­пользуется соответствующий HSR–регистр.

Режим перезаписи HDR –регистров

Как правило, ведомый процессор успевает считывать данные из регистра HDR, посылаемые ведущим процессо­ром. В противном случае могут возникать задержки при обработке прерываний записи ведущего процессора. Если ведущий процессор использует сигнал под­тверждения HACK, выставляемый ведомым процессором, можно задержать пере­дачу последующих данных ведущим процессором до тех пор, пока ведомым про­цессором не будут обработаны текущие данные.

При очищенном бите перезаписи (позиция HSR7.7) сигнал HACK не устанавли­вается до тех пор, пока ведомый процессор не считает старые данные. Ведущий процессор не может записать новые данные в регистр HDR и должен ожидать ус­тановки сигнала подтверждения HACK.

Однако наличие синхронизационной за­держки между фактическим изменением состояния и отражением его в статус­ном регистре позволяет ведущему процессору сделать повторную запись в HDR–регистр даже при очищенном бите режима перезаписи. При установленном бите перезаписи в статусном регистре HSR7 предыдущее содержимое HDR–регистра переписывается и сразу же устанавливается сигнал подтверждения HACK для записи ведущим процессором новых данных.

Ведомый процессор не должен считывать содержимое HDR–регистра до записи новых данных. Для ведущих процессоров, не использующих сигнал подтверждения HACK, бит режима перезаписи HDR–регистров должен быть установлен, поскольку в этом случае не существует возможности предотвратить перезапись.

Прерывания от HIP

После записи ведущим процессором данных в HDR–регистр интерфейс HIP генерирует сигнал прерывания записи. После того, как ведущий процессор прочитал содержимое соответствующего HDR–регистра и ве­домый процессор может производить в него запись, интерфейс HIP генерирует сигнал прерывания чтения. Сигналы прерывания чтения и записи не очищаются после обработки преры­вания. При чтении/записи HDR–регистра происходит очистка сигнала прерывания записи/чтения.

Логическая комбинация всех запросов прерываний чтения и запи­си генерирует прерывание от HIP. Запрос прерывания сохраняется до тех пор, пока все сигналы прерывания HIP не будут очищены чтением или записью соот­ветствующих HDR–регистров.

При чтении ведомым процессором HDR–регистра, в который может быть записана информация ведущим процессором, прерывание HIP может не генерироваться. Если ведущий процессор никогда не читает HDR–регистр, при каждой записи в него данных ведущим процессором интерфейс HIP генерирует прерывание. Информация из статусных регистров может быть счита­на во время обработки прерывания.

Прерывания от HIP могут быть программно сгенерированы и очищены. Регистр маскирования HMASK (табл. 8.3.16) позволяет запретить прерывания чтения и записи любого из HDR–регистров путем сброса (в нулевое состояние) соответствующего бита.

Начальная загрузка внутренней памяти с использованием HIP

Этот способ загрузки реализуется при BMODE = 1 (табл. 8.3.13). Сигнал BMS = 0 (см. рис. 8.2.3) активизирует загрузочную память и служит индикатором того, что происходит начальная загрузка. Начальная загрузка внутренней памяти программ процессора выполняется по следующему алгоритму:

● шаг 1. После сброса ведущий процессор записывает в регистр данных HDR3 длину загрузочной последовательности и переходит в режим ожидания (ми­нимум два процессорных цикла);

● шаг 2. По самому старшему адресу внутренней памяти загружается первая команда программы. Для этого ведущий процессор предварительно записы­вает команду в регистры НDR0, НDR2, НDR1. Сначала записывается старший байт в регистр НDR0, затем младший байт — в НDR2 и, наконец, средний байт — в НDR1. Ведомый процессор сначала читает длину загрузочной по­следовательности, затем загружает байты во внутреннюю память, начиная с самого старшего адреса;

● шаг 3. Для записи следующей команды адрес уменьшается на единицу и шаг 2 повторяется до тех пор, пока не будет загружена последняя команда. Число загружаемых команд должно быть кратным восьми. При этом длина загрузочной последовательности = (число 24–битных команд/8) – 1. Если ведущий процессор работает быстрее ведомого, вводятся циклы ожида­ния или пустые команды NOP.


Понравилась статья? Поделиться с друзьями:
Все об энергетике, электротехнике и электронике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: