Сигнальные микропроцессоры и их применение в системах телекоммуникаций и электроники (В.С. Сперанский, 2008). Сигнальные микропроцессоры и их применение в системах телекоммун. УМссэ дгбо Jdjcov p f f f
Скачать 14.91 Mb.
|
131 Сигнальные микропроцессоры гл П 1 11 01 11 - Sn 11 00 10 01 Частичное произведение, Р 01 00 00 11 =100 Частичное произведение, Р 01 00 10 00 =011 Выходной сигналу 011 00 100 011 =1010 Аналогично формируется частичное произведение Р в случае 4-хразрядных сигналов, Р вычисляются также, только результат нужно сдвинуть на 1 разряд влево. М-модули высокоскоростных децимирующих фильтров Фильтры на основе параллельной арифметики производят фильтрацию в реальном времени с понижением частоты дискретизации в ш раз. Используется принцип параллельной арифметики с временным мультиплексированием. Для хранения коэффициентов используется распределенное ОЗУ. Архитектура оптимизирована под ПЛИС. in m ; out m ; coeff Характеристики М модулей по занимаемому объему на ПЛИС Децимация 16 отводов 256 отводов Частоты F BX =0...48 МГц F BX = 0 . . . 3 МГц КЛБ 1780 КЛБ 32 240 КЛБ 230 КЛБ М-модули высокоскоростных интерполирующих фильтров Разрядность 12 и 16 бит число отводов 16, 32, 64, 128, 256. Работа сданными производится в дополнительном коде. Тактовая частота увеличивается враз Глава 9. Программируемые логические интегральные схемы М-модули сверхкомпактных КИХ фильтров Используется принцип последовательной распределенной арифметики, производится высокопроизводительная цифровая фильтрация, логика ускоренного переноса и взаимно ориентированных макросов. Схема фильтра дана на рис. 9.14 Разрядность 8, 9, 12 и 16 бит, отводов 5 - 64, in mf out mf coeff вычисления проводятся в дополнительном коде. Данные записываются во входные регистры. Результаты накапливаются в аккумуляторе. Там же производится однобитовый сдвиг. Обработка входных данных идет побитно. Хранение коэффициентов производится в поисковых таблицах, также используются ОЗУ для промежуточного хранения данных. Тактовая частота враз выше F T входных данных, где N - разрядность входных операндов. М-модули быстродействующих параллельных умножителей oirt Используется логика ускоренного переноса и взаимного относительного ориентирования маку росов (RLOC). (congt) 8x8, 10x10, 12x12, 16x16 быстродействующие параллельные умножители. Асинхронные или синхронные вход (выход) конвейерные вариант используют принцип Бута с последующей сверткой сумматорами разрядов одинакового веса. Асинхронные не содержат элементов дополнительной памяти, асинхронные содержат регистры на входи выходе, результат выдает с задержкой на такт. Конвейерные умножители обеспечивают наибольшую производительность и выдают результат затакта. Разряды Асинхронные Синхронные Конвейерные Разряды время, НС КЛБ время, не КЛБ время, НС КЛБ 8x8 29,7 57 23,7 63 9,8 63 16x16 52,9 218 49 226 20,6 223 133 Сигнальные микропроцессоры 9.5. Система на кристалле как развитие ПЛИС и программируемых процессоров [19] Усложнение методов и алгоритмов ЦОС требует новых архитектурных решений системного уровня. К ним относится системы на кристалле, в которых на кристалле объединены процессорное ядро, внутреннее ОЗУ, массив программируемых логических вентилей, выполняющих отдельные операции цифровой обработки, и периферийные устройства ввода/вывода. В частности, к системам на кристалле относится архитектура ARM, включающая высокопроизводительное разрядное RISC процессорное ядро, поддерживающее команды ЦСП, блок памяти из скоростного ОЗУ и кэш- память для увеличения производительности ядра, вычислители высокого уровня с жесткой логикой (после предварительного программирования, выполняющие стандартные операции обработки и гибкий интерфейс к внешним устройствам. Встроенные периферийные устройства, включающие контроллер прерываний, тайме ры-счетчики, асинхронные приемопередатчики, многоканальный порт ПДП, обеспечивают необходимую поддержку вычислений. Структура системы на кристалле показана на рис. 9.15. Система на кристалле обычно содержит одно или несколько процессорных ядер, которые могут быть микроконтроллерами или ЦСП, массив программируемой логики и различные цифровые или аналоговые устройства. Различаются аппаратные и программные 134 Глава 9. Программируемые логические интегральные схемы Рис. 9.15 Система на кристалле ядра. Во втором случае ядро процессора содержит обычный набор команд и программируемую логику, система реализуется на кристалле. В первом случае ядро процессора и массив программируемой логики представляют отдельные устройства, связанные через интерфейсы. Рассмотрим программное процессорное ядро, имеющее гарвардскую архитектуру. Набор инструкций делится натри группы 1) адресные инструкции, 2) условного и безусловного переходов, 3) вызова и выход из подпрограммы. Они выполняются контроллером указателя адреса памяти программ. Внутренние инструкции (логические операции, команды переноса, сдвиг, запись констант) выполняются АЛУ. Внутренние инструкции изменяют состояние регистров общего назначения (РОН), с которыми работают. 135 Сигнальные микропроцессоры Внешние инструкции выполняются отдельными исполняющими модулями. Ядро только подает данные на вход исполнительных модулей и считывает результаты. Модули выполняют разные задачи и могут меняться или заменяться. Время выполнения различно. Для внешних модулей определен интерфейс. В каждом модуле 2 входа UDn_IO, UDn_Il и один выход UDn_0 Код внешней инструкции UDn POH(i), POH(j) Результат выполнения внешней инструкции доступен по команде, РОН ()1, где move - передача. Для каждой новой задачи можно реализовать новые операции, при этом синтаксис ассемблера и исполняющих модулей остается прежним. Переход к решению новой задачи проще и быстрее. Для обмена с памятью данных организован синхронный параллельный интерфейс Имеется набор периферийных устройств контроллер прерываний, поддерживающий до 16 линий прерываний, программируемый и сторожевой таймеры, последовательный порт, загрузчики отладчик программ. UDO ABS UDI LIM UD2 sign(x) UD3 умн. r r UDO ABS UDI sin(x) UD2 tg(x) UD3 умн. Рис. 9.16. Переопределение внешних команд Контрольные вопросы 1. Перечислите основные типы ПЛИС. 2. Какие устройства реализуются на ПЛИС 3. Какова структура стандартной ПЛИС PLD (PAL)? 136 Глава 9. Программируемые логические интегральные схемы 4. Какова структура и особенности ПЛИС FPGA? 5. Каковы общие свойства ПЛИС 6. Каковы основные этапы проектирования устройств на ПЛИС 7. Поясните классификацию и характеристики ПЛИС фирмы ALTERA. 8. Поясните классификацию и характеристики ПЛИС Xilinx. 9. Поясните структуру вычислителя алгоритма БПФ на ПЛИС. 10. Для чего нужны сдвиги и буфер FIEO при вычислении бабочки по комплексной выборке 11. Поясните как реализуется нерекурсивный фильтр на ПЛИС. 12. Поясните структуру системы на кристалле. Что такое архитектура. Поясните назначение внешних и внутренних инструкций. 14. Каковы функции исполнительных модулей 137 ПРИЛОЖЕНИЕ У" Список сокращений английских терминов- цифровой сигнальный процессор МС- микроконтроллер PLD (programmable logic Devices) - программируемые логические ИС (ПЛИС) RISC (reduced instruction on set computing) - вычислитель с ограниченным числом команд. CISC (continual instruction on set computing) - вычислитель с бесконечным числом команд. MIPS - миллионов инструкций в секунду MFLOPS - миллионов операций с плавающей точкой в сек M M A C S - миллион операций M A C в сек Floating point - плавающая точка MS (multiprocessor Systems) - многопроцессорная система RAM - ОЗУ с произвольной выборкой, SRAM (read only memory) - статическая ОЗУ ROM - постоянное запоминающее устройство Flash memory - быстрая память DM (data memory) - память данных РМ (program memory) - память программ DMA (direct memory access) - прямой доступ к памяти (ПДП) порт прямого доступа к памяти) RG - регистр MUX (MX) - мультиплексор CORE - ядро процессора M A C - умножитель - накопитель (аккумулятор) RND - округление результата SAT (saturation) - операция насыщения, ограничения ALU - арифметически логическое устройство SHIFTER - кольцевой сдвигатель LSHIFT - логический сдвиг ASHIFT - арифметический сдвиг 138 Приложения DAG (data address generator) - генератор адресов данных Programm sequencer - устройство управления программой Timer - таймер SPORT (serial port) - последовательный порт Host Port - управляющий порт Clock PLL - генератор тактовых импульсов SCLK - генератор тактовых импульсов FIR - фильтр с конечной импульсной характеристикой (нере- курсивный фильтр) IIR (infinite impulse response) - фильтр с бесконечным импульсным откликом (рекурсивный фильтр) FFT (fast fourier transformation) - быстрое преобразование Фурье VC (video control) - видеоконтроллер FIFO (first-in, first-out) - память типа первый пришел, первый вышел 139 Сигнальные микропроцессоры ПРИЛОЖЕНИЕ Программа реализация нерекурсивного фильтра на процессоре A D S P 2181 0100 IDLE; цикл ожидания прерывания SPORTO} 0101 CNTR = LENGTH-1; задание длины циклического буфера коэффициентов 0102 MR = 0; МХО = DM(I0,M0), MY0 = РМ(14,М4); обнуление накопителя, считывание значений x(n-N+l) и h(N-l) из памяти 0103 DO Со UNTIL СЕ цикл умножения h(k)*x(n-k) с накоплением, МХО = DM(I0,M0), MYO = PM(I4,M4) 0105 MR = MR + умножение h(0)*x(n-k) сна- коплением 0106 IF MV SAT MR; и округление с насыщением 0107 ТХО = MR1; запись у(п) изв регистр передачи SPORTO} 0108 JUMP Wl; переход к началу цикла (возврат к режиму ожидания следующего прерывания ОООС SRI = RX0; чтение отсчета данных х(п) спорта пересылка х(п) в начало очереди данных Е RTI; возвращение в главную программу 10 -начало очереди данных. 14 - начало буфера коэффициентов. МОМ возвращаемые значения ТХО - выходной отсчет (с округлением. 10 - указывает начало очереди данных. 14 - указывает начало таблицы коэффициентов. Изменяемые регистры SI, МХО, MYO, MR, CNTR. Программа реализации цифрового фильтра содержит главный модуль, подпрограмму инициализации и модуль подпрограммы обработки данных. Подпрограмма обработки данных вызывается из главного модуля по прерыванию приема очередного отсчета данных. Главный модуль обеспечивает управление синхронизированным вводом/выводом данных и их алгоритмической обработкой. 140 Приложения Ввод/вывод данных осуществляется через последовательный порт сигнального процессора ЗГОКТО. Порт работает в режиме внутренней тактовой и кадровой синхронизации. Источниками - приемниками данных могут быть любые внешние последовательные устройства, в том числе АЦП и ЦАП, непосредственно сопрягаемые с последовательными портами процессора. При этом импульсы внутренней кадровой синхронизации порта, выводимые наружу, используются также в качестве импульсов частоты дискретизации преобразуемого в код сигнала. Возможен также вариант с внешней кадровой синхронизацией порта с частотой выборок сигнала, то есть с внешней частотой дискретизации. Ввод данных в процессор и их обработка выполняются по прерываниям приема данных, генерируемых портом, Также как ивы- вод обработанных данных. В главном модуле программы осуществляется настройка прерываний и системных регистров процессора, выполняется программирование последовательного порта SPORTO, организуется цикл ожидания прерывания приема данных. По генерируемому портом прерыванию вызывается подпрограмма обработки данных цифрового фильтра, при возврате из которой процессор снова переводится в цикл ожидания очередного отсчета данных из последовательного порта. Значения h(N - 1), h(N - 2 ) , ... h(l), h(0) в указанной последовательности размещаются по возрастающим адресам памяти программ, образуя массив или циклический буфер коэффициентов. Они умножаются на соответствующие отсчеты входного сигнала x(n-N+l), х(п- N+2), ... х(п-1), х(п), которые образуют сигнальную память фильтра или циклический буфер отсчетов сигнала в памяти данных процессора. Ему соответствует структура данных типа очередь постоянной длины. Очередной отсчет сигнала х(п) после его обработки замещает самое старое значение сигнала в очереди x(n-N). Адрес этого отсчета определяет начало очереди, которое циклически перемещается в буфере в процессе обработки сигнала. Такому способу обработки соответствует алгоритм программной реализации нерекурсивного фильтра без сдвига сигнальной памяти. Исходный адрес начала очереди соответствует обычно началу буфера в памяти данных. В модуле подпрограммы, реализующем базовую операцию свертки осуществляется алгоритмическая обработка очередного отсчета сигнала, который считывается с приемного регистра порта RXO. Выходной отсчет данных записывается в передающий регистр последовательного порта ТХО. Все коэффициенты и значения данных для не- рекурсивного фильтра представляются в формате 1.15. 141 Сигнальные микропроцессоры ПРИЛОЖЕНИЕ 3 Программа формирования гармонического колебания методом аппроксимации на процессоре A D S P 2181 Программа генерации синуса (sin.dsp) .MODULE/RAM sin; .VAR/DM sin_coeff[5]; .INIT sin_coeff: H#3240, H#0053, H#AACC, H#08B7, H#1CCE; инициализация коэффициентов) .ENTRY sin; sin: 13 = A sin_coeff; (загрузить указатель на коэффициенты) AYO = 0x4000; AR = АХО, AF = АХО AND AYO; (проверка квадранта синуса) IF NE AR = -АХО; (инверсия) AYO = 0x7FFF; (удаление знакового разряда) AR = AR AND AYO; MY1 = AR; (вычисление синуса) MF = AR * MY 1 (RND), MX1 = DM(I3, M3); MR = MX1 * MYl(SS), MX1 = DM(I3, M3); CNTR = 3; DO approx UNTIL CE; MR = MR + MX1 * MF(SS); approx: MF = AR * MF(RND), MX1 = DM(I3, M3); MR = MR + MX1 * MF(SS); SR = ASHIFT MR1 BY 3 (HI); (преобразование к формату Л) SR = SR OR LSHIFT MRO BY 3 (LO); AR = PASS SRI; (округление и инвертирование) IF LT AR = PASS AYO; AF = PASS AXO; IF LT AR = -AR; RTS; .ENDMOD; 142 Приложения ПРИЛОЖЕНИЕ Программа реализации алгоритма БПФ на процессоре ADSP 2181 Параметры вызова inplacereal = действительные входные данные в скремблиро- ванном порядке inplaceimag = все нули (предполагается, что входные данные действительные числа) twid_rea 1 = значения косинуса twid_imag= значения синуса groups = N/2 bflys_per_group= 1 node_space=1 Возвращаемые значения inplacereal = действительные результаты БПФ по порядку inplaceimag = мнимые результаты БПФ по порядку Изменяемые регистры 10, II, 12,13, 14,15, L0, L I , L2, L3, L4, L5 МОМ, М 2 , МЗ, ММ АХО, АХ, AYO, AY1, AR, AF МХО, МХ1, MYO, MY1, MR, SB, SE, SR, SI Изменяемые области памяти inplacereal, inplaceimag, groups, node_space, bflys_per_group, blk_exponent} .MODULE fft; .CONST log2N=10, N=1024, nover2 = 512, nover4 = 256; .EXTERNAL twid_real, twid J m a g ; .EXTERNAL inplacereal, inplaceimag; .EXTERNAL groups, bflys_per_group. node_space; .EXTERNAL bfp_adj; .ENTRY fft_strt; fft_strt: CNTR=log2N-2; Инициализация счетчика стадий M0=0; M l = l ; L1=0; 143 Сигнальные микропроцессоры L1=0; L3=0; L4=%twid_real; L5=%twid_imag; L6=0; SB=-2; { Стадия 1 } IO= A inplacereal; Il= A inplacereal+l; I2= A inplaceimag; I3= A inplaceimag+1; M2=2; CNTR=nover2; AXO=DM(IO,MO); A YO=DM(11 ,M0); AY1=DM(I3,M0); DO group_lp UNTIL CE; g r o u p j p : AR = AXO + AYO, AX1=DM(I2,M0); SB=EXPADJ AR, DM(I0,M2) = AR; AR = AXO-AYO; SB=EXPADJ AR; DM(I1,M2) = AR, AR = AX1+AY1; SB=EXPADJ AR, DM(I2,M2) = AR; AR = AX1-AY1, AXO = DM(I0,M0); SB=EXPADJ AR, DM(I3,M2) = AR; AYO = DM(I1,M0); AY1=DM(I3,M0); CALL bfp_adj; | Стадии с 2 до N-l } DO stage_loop UNTIL СЕ вычисление всех стадий БПФ} IO= A inplacereal; х вой группе стадии I2= A inplaceimag; у вой группе стадии SI=DM(groups); SR=ASHIFT SI BY-l(LO); {groups/2} 144 Приложения DM(groups)=SRO; {groups=groups/2} CNTR = SRO; {CNTR=c4eT4inc групп M4=SR0; {М4=модификатор коэффициента с тильдой M2=DM(node_space); {М2=модификатор пересекающейся области у вой группе стадии 13=12; M O D I F Y ( I 3 М у вой группе стадии D O g r o u p _ l o o p U N T I L СЕ Сот) от WO} C N T R = DM(bflys_per_group); CNTR=C4CTHHK bfly M Y 0 = P M ( I 4 , M 4 ) , M X 0 = D M ( I 1 , M 0 ) ; M Y 1 = P M ( I 5 , M 4 ) , M X 1 = D M ( I 3 , M 0 ) D O b f l y j o o p U N T I L CE; - M R = M X O * M Y 1 ( S S ) , A X O = D M ( I O , M O ) ; M R = M R + M X 1 * M Y O ( R N D ) , A X 1 = D M ( I 2 , M 0 ) ; A Y 1 = M R 1 , M R = M X O * M Y O ( S S ) ; M R = M R - M X 1 * M Y 1 ( R N D ) ; A Y O = M R 1 , A R = A X 1 - A Y 1; S B = E X P A D J A R , D M ( I 3 , M 1 ) = A R ; проверка увеличения бит A R = A X O - A Y O , M X 1 = D M ( I 3 , M 0 ) , M Y 1 = P M ( I 5 , M 4 ) ; S B = E X P A D J A R , D M ( I 1 , M 1 ) = A R ; проверка увеличения бит A R = A X O + A Y O , M X 0 = D M ( I 1 , M 0 ) , M Y 0 = P M ( I 4 , M 4 ) ; S B = E X P A D J A R , D M ( I O , M 1 ) = A R ; проверка увеличения бит A R = A X 1 + A Y 1 ; SB=EXPADJ AR,DM(I2,M1) = AR; проверка увеличения бит bflyloop: MODIFY(IO,M2); первое xO в следующей группе M0DIFY(I1,M2); первое x l в следующей группе MODIFY(I2,M2); первое уО в следующей группе MODIFY(I3,M2); первое y l в следующей группе group_loop: CALL bfp_adj; компенсация увеличения бит SI=DM(bflys_per_group); SR=ASHIFT SI BY 1(L0); stage_loop: DM(node_space)=SRO; DM(bflys_per_group)=SRO; { Последняя стадия — } 145 Сигнальные микропроцессоры IO= A inp!acereal; Т 1 — Л 1 п пола га ах п гм А г Охни, MX0=DM(I1,M0); MY1=PM(I5,M4), MX1=DM(I3,M0); DO bflyjp UNTIL CE; MR=MX0*MY1(SS), AX0=DM(I0,M0); MR=MR+MX 1 *M YO(RND), AX 1 =DM(I2,M0); AY1=MR1. MR=MX0*MY0(SS); MR=MR-MX 1 *MY 1 (RND); AY0=MR 1, AR=AX 1 -AY 1; SB=EXPADJ AR,DM(I3,M 1 )=AR; AR=AX0-AY0, MX 1 =DM(I3,M0), MY1=PM(I5,M4); SB=EXPADJ AR,DM(11 ,M 1 )=AR; AR=AX0+AY0, MXO=DM(11 ,M0), MY0=PM(I4.M4); SB=EXPADJ AR,DM(IO,M 1 )=AR; AR=AX1+AY1; SB=EXPADI AR, DM(I2,M1)=AR; b f l y j p : CALLbfp_adj; RTS; .ENDMOD; |