Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > ARM > ARM7TDMI |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Интерфейс сопроцессораВ данном разделе описывается интерфейс сопроцессора ядра ARM7TDMI в следующей последовательности:
1. Кратко о сопроцессорах Набор инструкций ядра ARM7TDMI позволяет реализовать специальные дополнительные инструкции, поддерживающие сопроцессоры для расширения функциональных возможностей. Они являются отдельными блоками обработки информации и вплотную связаны с процессором ARM7TDMI. Типичный сопроцессор содержит:
Сопроцессор подключается к той же шине данных, к которой подключается процессор ARM7TDMI в системе, и отслеживает конвейер в процессоре ARM7TDMI. Это означает, что сопроцессор может дешифрировать инструкции в потоке инструкций и выполнять те из них, которые он поддерживает. Каждая инструкция продвигается по конвейеру одновременно, как в ядре ARM7TDMI, так и в сопроцессоре. Выполнение инструкций распределяется между ядром ARM7TDMI и сопроцессором. Процессор ARM7TDMI:
Сопроцессор:
Если сопроцессор не может выполнить инструкцию, то вызывается ситуация неопределенной инструкции. В этом случае можно либо сэмулировать сопроцессорные функции программно, либо разработать отдельный сопроцессор. 1.1 Доступные сопроцессоры В системе может использоваться до 16 сопроцессоров, каждый из которых должен иметь свой единообразный идентификационный номер. Ядро ARM7TDMI содержит один внутренний сопроцессор:
Остальные сопроцессорные номера зарезервированы. В таблице 4.1 представлен перечень доступных сопроцессоров. Таблица 4.1. Доступные сопроцессоры
Если вы разрабатываете сопроцессор, то отправьте email с указанием темы "coprocessor" по адресу info@arm.com и вы получите свежую информацию о назначении сопроцессорных номеров. 2. Сигналы интерфейса сопроцессора Сигналы, которые используются для подключения ядра ARM7TDMI к сопроцессору, сгруппированы в четыре категории. Сигналы синхронизации и управления синхронизацией:
Сигналы следования по конвейеру:
Сигналы подтверждения передачи:
Сигналы данных:
3. Сигналы следования по конвейеру Каждый сопроцессор в системе должен содержать логику отслеживания инструкций на конвейере процессора ARM7TDMI. Сопроцессоры подключаются к сконфигурированной шине ввода данных ядра ARM7TDMI D[31:0] или DIN[31:0], через которые под управлением сигналов MCLK и nWAIT осуществляется выборка инструкции. Важно, чтобы оба конвейера всегда работали синхронно. При разработке логики отслеживания инструкции на конвейере сопроцессора необходимо учесть следующие правила:
Данные условия сигнализируют, что текущая инструкция близка к завершению исполнения, поэтому, первым действием любой инструкции, выполняющей выборку инструкции, является повторное заполнение конвейера. Любая инструкция, загруженная из конвейера процессора ARM7TDMI:
В наборе инструкций Thumb нет сопроцессорных инструкций и, поэтому, сопроцессоры должны следить за состоянием выхода TBIT для гарантирования, что они не будут дешифрировать Thumb-инструкции, как ARM-инструкции. 4. Подтверждение передачи по интерфейсу сопроцессора Подтверждение передачи по интерфейсу сопроцессора описывается в следующей последовательности:
Ядро ARM7TDMI и любые сопроцессоры в системе выполняют подтверждение передачи с помощью сигналов, представленных в таблице 4.2. Таблица 4.2. Сигналы подтверждения передачи
Данные сигналы более детально обсуждаются в параграфе "Сигнализация сопроцессора". 4.1 Сопроцессор Сопроцессор дешифрирует текущую инструкцию на ступени "Дешифрация" своего конвейера и проверяет, является ли эта инструкция сопроцессорной. Инструкция сопроцессора содержит номер сопроцессора, который должен совпадать с идентификационным номером сопроцессора. Если текущая инструкция на ступени "Дешифрация" является сопроцессорной инструкцией, то:
Прим.: Сопроцессор может управлять CPA и CPB как только он дешифрирует инструкцию. Для этого не нужно ожидать установления низкого уровня на nCPI, но выполнять инструкцию до установления низкого уровня на nCPI нельзя. 4.2 Процессор ARM7TDMI Инструкции сопроцессора продвигаются по конвейеру ядра ARM7TDMI синхронно с конвейером сопроцессора. Инструкция сопроцессора выполняется, если действительно следующее:
Если все данные требования выполняются, то ядро сигнализирует установкой низкого уровня nCPI, тем самым, передавая сопроцессору возможность исполнения сопроцессорной инструкции. 4.3 Сигнализация сопроцессора Отклики сопроцессора представлены в таблице 4.3. Таблица 4.3. Сигнализация сопроцессора
CPA и CPB игнорируются процессором ARM7TDMI, когда он не содержит неопределенных или сопроцессорных инструкций на ступени "Исполнение" конвейера. Сводная информация по откликам сопроцессора представлена в таблице 4.3. 4.4 Последовательности "занят - ожидание" Инструкция сопроцессора, который находится в состояние "занят - ожидание", может быть прервана. Если возникает действительное быстрое прерывание FIQ или прерывание IRQ, а также сброшен соответствующий бит в CSPR, то процессор ARM7TDMI отклоняет сопроцессорную инструкцию и сигнализирует об этом установкой высокого уровня на nCPI. Сопроцессор, который может переходить в состояние "занят - ожидание", должен контролировать состояние nCPI для определения данного условия. Если ядро ARM7TDMI отклоняет сопроцессорную инструкцию, то сопроцессор также отклоняет инструкцию и продолжает следить за конвейером процессора ARM7TDMI. Замечание: Важно, чтобы любое действие, выполняемое сопроцессором, когда он находится в состоянии "занят - ожидание" было идемпотентным. Это означает, что действия, выполняемые сопроцессором не должны нарушать состояние сопроцессора и должны быть повторяемыми с идентичными результатами. Сопроцессор может изменить свое состояние только сразу после завершения выполнения инструкции. Процессор ARM7TDMI, как правило, повторно исполняет сопроцессорную инструкцию после возврата из процедуры обработки прерывания. Другие сопроцессорные инструкции могут выполняться перед повторным выполнением прерванной инструкции. 4.5 Инструкции передачи регистра сопроцессора Инструкции передачи регистра сопроцессора, MCR и MRC, используются для передачи данных между регистром в регистровом банке процессора ARM7TDMI и регистром в регистровом банке сопроцессора. Пример последовательности при передаче регистра сопроцессора показан на рисунке 4.2.
4.6 Операции над данными сопроцессора Инструкции операций над данными сопроцессора (CDP) выполняют обработку операций над данными, находящимися в регистровом банке сопроцессора. В результате данной операции не передается информация между процессором ARM7TDMI и сопроцессором. Пример последовательности показан на рисунке 4.3.
4.7 Операции чтения и записи сопроцессора Инструкции чтения и записи сопроцессора используются для передачи данных между сопроцессором и памятью. Они могут использоваться для передачи одного слова данных или нескольких сопроцессорных регистров. Не существует ограничений по количеству слов данных, которые могут передаваться с помощью одной инструкции LDC или STC, но по договоренности одна инструкция не должна передавать больше 16 слов. Пример последовательности показан на рисунке 4.4. Прим.: при передаче более 16 слов данных за один цикл инструкции в худшем случае увеличится задержка прерывания процессора ARM7TDMI.
5. Подключение сопроцессоров Сопроцессор в составе системы с процессором ARM7TDMI должен иметь 32-разрядное подключение к:
Сопроцессор может иметь опциональное подключение к:
5.1 Подключение одного сопроцессора Пример подключения:
На рисунке 4.6 используются следующая логика:
5.2 Подключение нескольких сопроцессоров Если вы используете несколько сопроцессоров в системе, то необходимо подключить сигналы подтверждения связи, следующим образом: nCPI - подключите данный сигнал ко всем сопроцессорам, присутствующим в системе. CPA и CPB - индивидуальные выходы CPA и CPB из каждого сопроцессора необходимо логически умножить и подключить к входам CPA и CPB процессора ARM7TDMI. Также необходимо мультиплексировать выходы данных сопроцессоров. Подключение нескольких сопроцессоров показано на рисунке 4.7.
6. Действия в случае неиспользования внешнего сопроцессора Если вы разрабатываете систему, в которую не входят внешние сопроцессоры, то необходимо на оба входа CPA и CPB подать высокие уровни. Этим сигнализируется об отсутствии сопроцессоров в системе. Если принимается инструкция какого-либо сопроцессора, то выполняется последовательность неопределенной инструкции и, при необходимости, она может быть проэмулирована программно. Внутренний сопроцессор CP14 можно оставить в работе. Выходы сопроцессора из процессора ARM7TDMI обычно оставляют неподключенными, но они могут использоваться в других частях системы, как, например, следующие выходы:
7. Неопределенные инструкции Неопределенные инструкции обрабатываются процессором ARM7TDMI как сопроцессорные инструкции. При появлении неопределенной инструкции все сопроцессоры должны ответить отсутствием путем установки высоких уровней на CPA и CPB. Процессор в этом случае инициирует последовательность неопределенной инструкции. Для того, чтобы корректно обработать ситуацию неопределенной инструкции, все сопроцессоры в системе должны формировать отклик отсутствия (установка высоких уровней на CPA и CPB) на неопределенную инструкцию. Это позволяет ядру выполнить обработку исключительной ситуации неопределенной инструкции. Сопроцессор должен проверить разряд 27 инструкции для того, чтобы различать следующие типы инструкций:
Сопроцессорные инструкции не поддерживаются набором инструкций Thumb, а неопределенные инструкции - поддерживаются. Все сопроцессоры должны следить за состоянием выхода TBIT ядра ARM7TDMI. Когда ядро ARM7TDMI находится в состоянии Thumb, то сопроцессор должен установить высокие уровни на CPA и CPB, а инструкции, представленные на шине данных, должны игнорироваться. В этом случае сопроцессоры не выполнят ошибочно Thumb-инструкции и все неопределенные инструкции будут обработаны корректно. 8. Привилегированные инструкции Выходной сигнал nTRANS позволяет реализовать сопроцессоры или сопроцессорные инструкции, таким образом, чтобы доступ предоставлялся только из привилегированных режимов. Назначение сигнала дано в таблице 4.4. Таблица 4.4. Назначение сигнала идентификатора режима (nTRANS)
Если сигнал nTRANS используется, то его необходимо считывать вместе с выборкой сопроцессорной инструкции и использовать на ступени "Дешифрация" конвейера сопроцессора. Прим.: Если выполняется попытка доступа сопроцессорной инструкции, которая может выполняться только в привилегированном режиме, в режиме пользователя с nTRANS = 0, то сопроцессор отреагирует установкой высоких уровней на CPA и CPB. Этим в процессоре ARM7TDMI инициируется последовательность неопределенной инструкции.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|