Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Мысловский Э.В. Цифровые сигнальные процесссоры (2003)

Мысловский Э.В. Цифровые сигнальные процесссоры (2003), страница 8

PDF-файл Мысловский Э.В. Цифровые сигнальные процесссоры (2003), страница 8 Компьютерные методы и технологии автоматизации и управления (108592): Книга - 9 семестр (1 семестр магистратуры)Мысловский Э.В. Цифровые сигнальные процесссоры (2003): Компьютерные методы и технологии автоматизации и управления - PDF, страница 8 (108592) - Студ2021-07-29СтудИзба

Описание файла

PDF-файл из архива "Мысловский Э.В. Цифровые сигнальные процесссоры (2003)", который расположен в категории "". Всё это находится в предмете "компьютерные методы и технологии автоматизации и управления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 8 страницы из PDF

Незагружаемая память определена как начальная структурапамяти программ и памяти данных перед загрузкой какой-либо страницы или исполнениякода. Девять частей структуры содержатся независимо одна от другой, если в объявлениипрограммного модуля (или буфера данных) не используется параметр STATIC.

При48отсутствии параметра STATIC редактор связей принимает, что каждая из девяти частейстартует с чистого состояния памяти программ и памяти данных, и что каждаязагружаемая страница имеет доступ ко всему пространству памяти.Следуйте следующему правилу: если у вас есть программный модуль или буферданных, который не должен быть перезаписан при загрузке новой страницы, вы должныиспользовать при его объявлении параметр STATIC. В противном случае, редактор связейпринимает, что для загрузки новой страницы доступна вся память, и допустимопереписывать любые существующие программы/данные.Пример: Декларация модулей routinel и bootfilter.MODULE/SEG=ext_pm/RAM routinel;.MODULE/RAWBOOT=0 bootfilter;.VAR/SEG=ext_pm/PM/RAM coeffs[16];Пока подпрограмма routinel не объявлена как STATIC, редактор связейигнорирует ее расположение в памяти при определении места для буфера coeffs в памятипрограмм.

Поэтому редактор связей может зарезервировать место для coeffs в областипамяти, которая частично перекрывает routinel. При загрузке страницы 0,буфер coeffsзагружают во внутреннюю память программ ADSP-218x,откуда она копируется вовнешнюю память программ РМ. Тем не менее, если при объявлении routinel указатьпараметр STATIC редактор связей зарезервирует ее адреса в пространстве памятипрограмм и расположит coeffs где-нибудь в другом месте внешней памяти программ.Пример:Декларациястатическогомодуляroutinel.MODULE/SEG=ext_pm/RAM/STATIC routinel;3.6.2 Переменные данные и буфера (.VAR)Директива .VAR объявляет буферы данных.

Буфер данных - это множествоадресов расположения данных. Переменная объявляется как буфер с единственнымадресом. Вы должны объявить все переменные и буфера до использования их впрограмме. Если буфер инициализирован директивой .INIT объявление и инициализациядолжны выполняться в одном и том же модуле. Директива .VAR имеет форму:.VAR /параметр/параметр ...имя буфера [длина],... ;49Объявлениепоумолчаниюподразумеваетоднословнуюпеременную,перемещаемую в памяти RAM. Одна директива .VAR может объявить несколько буферов,разделенных запятыми на одной строке (до 200 символов).При многочисленном объявлении переменных и буферов в одной строке,редактор связей размещает их в смежных областях памяти.

Если при таком объявлениииспользуется параметр CIRC, то создается единственный кольцевой буфер, а отдельныебуфера будут линейными. С директивой могут использоваться следующие параметры: РМили DM, размеры в программной памяти или данных RAM или ROM, тип памятиABS=aдpec абсолютный адрес (не использовать со STATIC), SEG-сегмент размещениебуфера в сегменте, объявленным системным конфигуратором, CIRC кольцевой буфер,STATIC предотвращает перезапись буфера во время загрузки. Параметр STATICиспользуют только для систем с памятью начальной загрузки, т.е.

для всего семействапроцессоров, за исключением ADSP-2100.Буфера могут быть размещены как в памяти программ, РМ, так и в памятиданных, DM по умолчанию. Тип памяти по умолчанию устанавливается в RAM дляпамяти DM и РМ. Параметр ABS размещает буфер с указанного стартового адреса, делаяего неперемещаемым. Параметр SEG размещает буфер в указанном сегменте памяти,который был объявлен в файле системного конфигуратора.Параметр CIRC определяет кольцевой буфер.

Буфер будет адресоваться влинейном виде, если не применен атрибут CIRC. Параметр STATIC предотвращаетперезапись буфера, когда загружается страница начальной загрузки. Если вы хотитеиспользовать буфер в программах с нескольких загрузочных страниц, он долженоставаться неизменным во время загрузки. Это выполняется приданием буферу атрибутаSTATIC. Статические буфера управляются редактором связей точно так же, какстатические модули - смотрите раздел «Статические модули» для уточнения деталей.Для объявления переменной применяется директива .VAR без указания длиныбуфера:Пример:ОбъявлениепеременнойseedсадресомОхОООА..VAR/DM/RAM/ABS=0х000A seed;Этот оператор объявляет однословную переменную с именем seed в памятиданных RAM по адресу 10 (десятичный). Следующий пример показывает объявлениебуфера:50Пример: Объявление линейного буфера coefficients в сегменте pmdata памятипрограммы.VAR/PM/RAM/SEG=pmdata coefficients[10];Здесь линейный буфер объявлен в памяти программ RAM, который перемещаем впределах сегмента с именем pmdata.

Название буфера coefficients и он состоит из 10записей в памяти программ. Длина буфера должна быть помещена внутри скобок. Нижеприведен пример объявления перемещаемого кольцевого буфера, длина которогоопределяется величиной константы lapsПример: Объявление кольцевого буфера data_buffer в памяти данных .CONSTtaps = 15;.VAR/DM/CIRC data_buffer[taps];Кольцевой буфер может быть размещен в памяти с некоторыми ограничениями,связанными с характеристиками процессоров ADSP-21xx по аппаратной реализацииадресации кольцевого буфера. Вообще, кольцевой буфер должен стартовать с базовогоадреса, который кратен 2n, где n - количество бит, требуемых для представления длиныбуфера в двоичном виде. Редактор связей будет придерживаться этих требований дляразмещения кольцевых буферов.

Вы должны иметь это в виду, если явно выбрали базовыйадрес буфера параметром ABS. Приведенные ниже примеры помогут понять, где можноразмещать циклические буферы в памяти. Следующий оператор объявляет кольцевойбуфер из пяти позиций:Пример: Объявление кольцевого буфера аа.VAR/CJRC аа[5];Так как для представления длины аа необходимо три разряда, редактор связейприсвоит буферу базовый адрес кратный 8.Три младших значимых разряда (МЗР) этогоадреса нули. Если на одной строке объявлены несколько буферов и используется параметрCIRC, создается один кольцевой буфер, а отдельные буфера будут только простымилинейными буферами. Например, следующее объявление создает один 15-словныйкольцевой буфер.51Пример: Объявление одного кольцевого буфера.VAR/CIRC аа[5], bb[5], cc[5];Базовый адрес кольцевого буфера равен адресу аа; этот символ будетиспользоваться для доступа к буферу в программе.

Адрес bb это аа +5, а адрес сс этоаа+10. Три пятисловных буфера могут быть индивидуально доступны как линейные. Таккак величина 15 требует четырех разрядов для двоичного представления, кольцевой буфераа будет размещен по адресу, который кратен 16 (четыре младших значащих разрядаравны нулю).Следующий пример показывает использование трех директив для объявлениятрех различных циклических буферов:Пример: Объявление трех кольцевых буферов.VAR/CIRC аа[5];.VAR/CIRC bb [5];.VAR/CIRC сс[5]:Поскольку они объявлены отдельно, буфера не будут объединены.

В следующемпримере создаются структуры для поисковых таблиц синуса/косинуса:Пример: Объявление одного кольцевого буфера для поисковых таблиц синуса икосинуса.VAR/CIRC sin[256], cos[768],Здесь определен один кольцевой буфер, который имеет длину 1024.Чтобыполучить доступ к буферу из программы, вы должны инициализировать индексныерегистры DAG и регистры длины буфера следующими инструкциями:Пример: Загрузка указателей на поисковые таблицы в регистрыI0 = ^cos; {^ это оператор получения адреса}L0=1024;I1= ^sin;L1=1024;52Эти инструкции загружают регистры I0 и I1 базовыми адресами cos и sin.Соответствующие регистры L загружаются значением длины кольцевого буфера дляразрешения кольцевой адресации.

Кольцевой буфер реализуется только при ненулевомзначении регистра L.3.6.3 Инициализация переменных и буферов (.INIT)Директива .INIT используется для инициализации переменных и буферов в ПЗУ.Редактор связей помещает данные инициализации в файл образа памяти, которыйзагружается разделителем программ для записи в ППЗУ. Разделитель переводит ПЗУчасти этого файла в формат, совместимый с промышленным стандартом программатораППЗУ.

Инициализирующие значения могут быть перечислены в директиве или указаны вовнешнем файле; директива .INIT принимает одну из следующих форм:.INIT имя_буфера: константа, константа,...;..INIT имя_буфера: ^…..буфер или %другой_буфер, ...;.INIT имя_буфера: <файла >;Операторы ^ и % использоваться для инициализации буфера или переменнойбазовым адресом или длиной, или даже другими буферами.

Любые комбинации констант,указателей адресов буфера и величин длины буфера могут быть заданы через запятую.Примеры:Пример: Примеры инициализаций/* Этот оператор инициализирует переменную seed шестнадцатеричнойконстантой*/.INITseed: 0х3FFF;/* Этот оператор инициализирует буфер seed_values списком констант */.INIT seed_values: 1,2,3,5,7;/* Здесь переменная buffer_ptr инициализируется указателем стартового адресабуфера input_buf Вы можете инициализировать только часть данных буфера, задаваясмещение */INIT buffer_ptr: ^input_buf,53/* Теперь инициализирующие величины будут размещены, начиная с адреса;buffer_пате + offset */.INIT buffer_name[offset] ;/* Следующий оператор, например, инициализирует восьмой, девятый идесятый элементы буфера coeffs величинами 2,3 и 4 */.INIT coeffs[7] : 2,3,4;Третья форма директивы .INIT указывает имя файла, который содержитинициализирующие величины.

Ассемблер устанавливает указатель на этот файл, и данныеприсоединяются при запуске редактора связей. Следующий пример заставляет редакторсвязей инициализировать буфер cos содержимым файла cosines.dat:Пример: Инициализация буфера cos.INIT cos: <cosines.dat>;Если файл с данными находится в текущей директории операционной системы,только необходимо указать в скобках только имя файла.

Если файл находится в другомкаталоге, вы должны указать путь к этому каталогу и имя файла. Например, если файлinits.dat для буфера с именем samples размещен в директории DOS C:\2101\filter3\,тогдадиректива .INIT должна быть применена следующим образом:Пример: Инициализация буфера samples.INIT samples : < c:\2101\filter3\inits.dat>;Это позволит редактору связей найти файл. Данный способ широко используетсядля загрузки буферов данными, выработанными другими программами, такими какнахождение коэффициентов фильтра. После того, как редактор связей считает иприсоединит содержимое файла, изменение данных потребует лишь выполнитьповторную компоновку программы. Переменные данных и буферов могут еще бытьинициализированы с помощью семиразрядного ASCII кода.

Следующий примеринициализирует один четырехпозиционный буфер данных inputs ASCII кодами А,В,С,D.ASCII коды размещаются в семи МЗР памяти данных (16 разрядов) или памяти программ(8,16 или 24 разрядов).54Пример: Инициализация буфера inputs.INIT inputs : _ABCD_;Специальный синтаксис директивы .INIT .INIT24 позволяет сохранять 24разрядные данные в памяти программ. Это позволяет получить доступ к младшим 8разрядам каждого 24- разрядного слова памяти программ при инициализации буферовданных или переменных в исходной программе.Пример: Примеры адресной арифметики при инициализации/* Эта запись вычисляет 16-разрядный адрес */.INIT var: ^label + 10/* То следующая запись вычисляет 24-разрядный адрес */.INIT24 var: ^label + 10Созданный редактором связей .EXE образ памяти содержит программные коды иинициализирующие данные.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
420
Средний доход
с одного платного файла
Обучение Подробнее