Проектирование микропроцессорного устройства цифровой обработки сигналов ![скачать рефераты скачать рефераты](/img/dali.gif)
Проектирование микропроцессорного устройства цифровой обработки сигналов
Размещено на http://www.allbest.ru/ СОДЕРЖАНИЕ Введение 1 Расчёт основных характеристик и описание алгоритма 2 Разработка структурной схемы 3 Разработка блок схемы программы 4 Разработка текста программы Заключение Обзор литературы Приложение Текст программы ВВЕДЕНИЕ В настоящее время невозможно прецизионно измерить расстояние до объекта, не используя радиоэлектронной техники, в частности радиолокационных методов. Для уменьшения массогабаритных показателей аппаратуры целесообразно в ней использовать микропроцессорную технику, в том числе и сигнальные процессоры. В этой курсовой работе необходимо спроектировать МИКРОПРОЦЕССОРНОЕ УСТРОЙСТВО ЦИФРОВОЙ ОБРАБОТКИ СИГНАЛОВ, входящее в состав ЧМ дальномера. 1. РАСЧЁТ ОСНОВНЫХ ХАРАКТЕРИСТИК И ОПИСАНИЕ АЛГОРИТМА В основе всех радиотехнических измерителей дальности лежит сравнение определенных параметров излучаемого и отраженного сигнала. Если таким параметром являетя частота,то метод радиодальнометрии называется частотным. Зондирующий сигнал в этом случае - непрерывное частотномодулированное (ЧМ) излучение. Определение дальности частотным способом заключается в измерении изменения частоты излучаемых колебаний за время прохождения сигнала до цели и назад. Структурная схема и временные диаграммы, поясняющие принцип работы ЧМ дальномера приведены на рис. 1 и 2. Размещено на http://www.allbest.ru/ Рис. 1 Структурная схема ЧМ дальномера. Размещено на http://www.allbest.ru/ Рис. 2 Временные диаграммы ЧМ дальномера. Пусть частота излучаемого сигнала меняется по пилообразному закону, т.е. колебание частотный дальность W (1) где W - девиация частоты; Tм - период ЧМ, fo - среднее значение частоты. Частота принимаемых и отраженных сигналов будет изменяться по такому же линейному закону, но смещенному по времени на величину, определяемую дальностью: W (2) где tз - временная задержка, обусловленная дальностью до цели R; C - скорость распространения сигнала, обычно равная скоростисвета в свободном пространстве(3* 10^8 м/с). В смесителе радиодальномера происходит нахождение разности частот излучаемого и принятого сигналов. В результате получается разностная частота (рис. 2 a), т.е. (3) Полученное значение для разностной частоты справедливо для участков с линейным изменением частот. На других участках разностная частота имеет нелинейный характер (рис. 2 б). Но если не выполнять анализа на этих участках, то значение измеряемой дальности до цели будет равно: (4) Разностная частота после усиления поступает на анализатор частоты, выходные сигналы которого соответствуют требованиям оконечного устройства, в частности являющимися отсчётами дальности. Усилитель разностной частоты должен иметь полосу пропускания, охватывающую все возможные значения разностной частоты в пределах измеряемых дальностей. Частотному методу, как и любому методу измерения, свойственна так называемая постоянная погрешность измерения или дискретность в отсчете дальности. Число периодов частоты биений за период модуляции, поступающих на анализатор разностной частоты равно: Следующее число периодов, которое может быть зафиксировано анализатором, должно измениться на единицу при некотором изменении дальности на dR, т.е. , откуда (5) Это значение представляет постоянную погрешность частотного измерения дальности. Из формулы (5) видно, что для уменьшения постоянной ошибки dR необходимо увеличивать девиацию частоты излучаемого сигнала. Но очень часто бывает, что возможность увеличения W практически ограничены. В этом случае применяются либо более сложные виды модуляции, либо спектральный анализ(СО). СО основан на анализе не самого сигнала, а его спектра. Для перехода в спектральную область используется прямое преобразование Фурье[2], в частности один из быстрых алгоритмов. Затем находится гармоника, на которой наблюдается максимум. При этом возможна такая ситуация, когда по имеющемуся числу отсчетов невозможно определить точное положение максимума. В этом случае используется операция дополнения спектра нулями[3]. При этом не возрастает разрешающая способность, но происходит сглаживание спектра, что в свою очередь помогает осуществлять более точное измерение дальности. Эту операцию частично можно заменить аппроксимацией спектральной характеристики сигнала. Расчет характеристик: Исходя из технического задания Используя формулу(3), С учетом того, что необходимо выдавать информацию 100 раз в секунду, Nанал=fр/100=208 С другой стороны, необходимая точность измерения дальности достигается с использованием простого счетчика в качестве анализатора при девиации частоты Из этого следует, что необходимо использовать для точного анализа разностной частоты спектральный метод. Тогда, с учетом симметричности спектра после БПФ, Nдиск > Nанал*2;а также с учетом особенностей функционирования алгоритма (, N - целое положительное число), >208*2. Окончательно Nдиск=512; Для точного описания модулирующего напряжения необходимо брать частоту формирования минимум в два раза больше , поэтому выбирается =2*=1024. Затем на второй стадии необходимо произвести операцию дополнения нолями и выполнить дискретное преобразование Фурье по двум точкам, лежащим в окрестности точки максимума, полученной пои помощи анализа спектра разностного сигнала. После этого выполняется операция интерполирования, в результате которой по полученному уравнению кривой ищется максимум спектральной составляющей сигнала. В задании также указана необходимость цифрового формирования модулирующего сигнала, т.е. необходимо формировать отсчеты модулирующего напряжения. Минимальное время между двумя отсчетами составляет Для реализации устройства необходимо выбрать микропроцессор, который может выполнить все описанные математические операции в реальном масштабе времени (темпе поступления данных), а также формировать модулирующее напряжение параллельно с вычислительным процессом. Кроме того, желательно, чтобы этот процессор смог выполнять операции с плавающей точкой аппаратно, а также иметь достаточно простой интерфейс с ЦАП и АЦП. В качестве такого процессора выбран сигнальный процессор ADSP-2189M. Его основные характеристики: Память программ(ROM), слов.........................................32к Память данных(RAM), слов.............................................48к Максимальная тактовая частота, МГЦ.............................66 Длинна цикла, нсек...........................................................<15 Напряжение питания, В.....................................................3.3 Корпус.......................................................................PQFR128 Цена на апрель 2002 года.................................................23 $ Этот процессор будет ядром анализатора разностной частоты. Подключения внешней памяти не требуется. В качестве интерфейса с ЦАП и АЦП исрользуется т.н. HOST - адаптер, непосредственно подключаемый к HOST - интерфейсу, содержащему в себе АЦП и ЦАП. 2. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ С учетом выше сказанного, структурная схема будет иметь следующий вид: Размещено на http://www.allbest.ru/ Из-за того, что необходимо формировать отсчеты модулирующего напряжения, а также выдавать результаты в порт с частотой 100 посылок, и этот процессор имеет только 1 таймер, необходимо использовать внешний синхронизатор для вывода в порт. МП БЛОК включает в себя HOST - процессор и сигнальный процессор. Микропроцессорный блок формирует модулирующее напряжение, которое поступает на ЧМ - модулятор, входящий в состав ГВЧ. Затем сиигнал поступает на оконечный каскад, и излучается в эфир передающей антенной. Затем сигнал, отрвженный от цели, поступает на УВЧ, в котором находится высокочастотная часть приемника. Затем сигнал поступает на смеситель. На его выходе - разностная частота, совместимая по уровню с АЦП. Далее сигнал поступает на МП бЛОК, который анализирует частоту и в соответствии с импульсами синхронизации выдает значение частоты по стандарту RS-485 потребителю информации. Временные диаграммы, поясняющие принцип работы устройства, приведены на рис. 3. РАЗРАБОТКА БЛОК СХЕМЫ ПРОГРАММЫ В соответствии с вышеизложенным была разработана блок схема алгоритма. Для того, чтобы осуществить параллельную обработку накопленного сигнала с одновременной выдачей нового и накоплением разностного сигнала, используются прерывания от таймера. Из - за недостатка места и математической сложности процедуры не расписываются более подробно. 4. РАЗРАБОТКА ТЕКСТА ПРОГРАММЫ Текст программы приведен в приложении . Из-за ограниченности места приведен модуль работы с БПФ, а также главный модуль и модуль обработки прерываний. ЗАКЛЮЧЕНИЕ В данной курсовой работе была рассмотрена реализация ЧМ дальномера на микропроцессоре. Была составлена блок-схема алгоритма, и её программа (основная часть) на языке Ассемблер. Обзор литературы Проектирование импульсных и цифровых устройств радиотехнических систем. Под ред. Казаринова Ю. М. - М. Высшая школа. 1985 г. Марков С. Цифровые сигнальные процессоры. Книга 1. - М. Микроарт. 1996 г. Приложение Текст программы. {главный модуль} .MODULE/ABS=5 main_mod; .CONST N=512; .VAR/DM/RAM imputreal[N],works[N]; .VAR/DM/RAM result,Swith; .INIT result:0; .GLOBAL imputreal,result,Swith; .EXTERNAL initial,math_main_bpf,math_main_dpf; CALL initial;{Выполняем инициализацию и запускаем подпрограмму формирования огибающей + определение разностной частоты; работает на прерываниях таймера} main_cycle: AX1=DM(Swith) IF EQ JUMP main_cycle_1;{Закончился цикл получения массива для поиска } IDLE; main_cycle_1: AY2=N_2,DM(N)=AY2; CALL math_main_bpf;{активизируем предварительный поиск } CALL math_main_dpf;{активизируем допоиск} JUMP main_cycle; .ENDMOD; {Модуль, выполняющий обработку прерываний Передаваемые параметры; Imputreal: действительная часть спектра сигнала Возвращаемые параметры; Result: положение в спектре максимума} .MODULE interrup; .CONST N=512; .CONST cycle=2; .EXTERNAL imputreal; .EXTERNAL result,swith; {Swith - Признак окончания работы по прерыванию от таймера} .EXTERNAL outport_with_485;{Вывод по стандарту RS-485} .ENTRY initial; {Обработка прерывания от таймера} timer_interrupt:H#0020; CALL time; RTI; { Обработка прерывания от IRQ2} irq2_interrupt:H#0004; CALL irq2_int; RTI; {Начальная установка} initial: DIS TIMER; IMASK=B#01000001;{разрешено обрабатывать прерывание от IRQ2 И таймера} AX1=N_1; DM(N)=AX1; init_reg; CALL timeinit; RTS; init_reg: ENA SEC_REC; I6=^imputreal; M6=1; AX1=1; AY1=0; AX2=0; MX1=0,Swith=MX1; DIS SEC_REC; RTS; {инициализация таймера} timeinit: TPERIOD=399;{150,000 прерываний в секунду} TCOUNT=399; TSCALE=0; ENA TIMER; RTS; {Обработка прерываний от таймера} time: ENA SEC_REC; MX1=1,Swith=MX1;{Запрет продолжения расчета} DM(#H3EFD)=AY1,AR=AY1+AX1; AY1=AR,AR=AX2+1; AX2=AR,AR=AR-cycle; IF GT JUMP time1_1;{AR>0 - переходим} AX2=DM(#H3EFC); DM(I6,M6)=AX2; AX2=0; AR=DM(N)-I6; IF GT JUMP time_1;{AR>0 - переходим} DIS TIMER;{На этом интервале времени обработка от таймера закончена} AY1=0; DM(#H3EFD)=AY1; time_1: DIS SEC_REC; RTS; {Обработка сигналов синхронизации} irq2_int: outport_with_485;{Вывод по стандарту RS-485} init_reg; timeinit; RTS; {Модуль, выполняющий операцию допоиска частоты спектра Передаваемые параметры: Imputreal: действительная часть спектра сигнала Возвращаемые параметры Implacereal: квадрат модуля спектра сигнала} .MODULE math_bpf; .CONST N=512,N_div_2=256;{fft_main и остальные} .CONST mod_value=H#0009; {scramble} .CONST Ntimes2=1024;{bfp_adj} .CONST log2N=9,nover2=256,nover4=128;{fft_start); .VAR/PM/RAN/CIRC fwid_real[N_div_2]; .VAR/PM/RAN/CIRC fwid_imag[N_div_2]; .VAR/DM/RAM implanceimag[N],implancereal[N]; .VAR/DM/RAM groups,fwid_real,fwid_imag; .VAR/DM/RAM bflys_per_group,node_space,blk_exponent; .INIT fwid_real:<fwid_re.dat>;{Массив косинусоид} .INIT fwid_imag:<fwid_im.dat>;{Массив синусоид} .GLOBAL fwid_real,fwid_imag; .GLOBAL implancereal,implanceimag; .GLOBAL groups,bflys_per_group,node_space,blk_exponent; .EXTERNAL imputreal,works; .EXTERNAL result; .ENTRY math_main_bpf;{Основная подпрограмма нахождения спектра сигнала} {Подпрограмма, объединяющая все подпрограммы этого модуля} math_main_bpf:CALL initital; CALL scramble;{Перестановка данных} CALL fft_start;{Само БПФ} CALL searh_max;{Поиск максимума среди отсчетов спектра} RST; {Инициализация} initial: AX1=N_div_2,groups=AX1; AX1=2,bflys_per_group=AX1; AX1=2,node_space=AX1; AX1=0;blk_exponent=AX1; CALL copymass;{Копирование массива во временный буфер для обработки} CALL inplaceimag_zero;{Обнуление мнимой части} RST; copymass: I0=^imputreal; I1=^works; M0=1; CNTR=N; DO copy1 UNTIL CE; AY1=DM(I1,M0); copy1: DM(I0,M0)=AY1; RTS; {Перестановка данных} scramble: I4=^works;{I4 - последовательно расположенные данные} I0=^implancereal;{I0 - перестановленные данные} M4=1; M0=mod_value;{M0 - модификатор для переворачивания N бит} L4=0; L0=0; CNTR=N; ENA BIT REV; {разрешение переворачивания в DAG1} DO brev UNTIL CE; AY1=DM(I4,M4); brev: DM(I0,M0)=AY1; DIS BIT REV; RTS; {Подпрограмма блочного масштабирования чисел с плавающей точкой bfp_adj: AY0=CNTR; AR=AY0-1; IF EQ RTS; AY0=-2; AX0=SB; AR=AX0-AY0; IF EQ RTS; I0=^inplacereal; I1=^inplacereal; AY0=-1; MY0=H#4000; AR=AX0-AY0,MX0=DM(I0,M1); IF EQ JUMP strt_shift; AX0=-2; MY0=H#2000; strt_shift: CNTR=Ntimes2-1; DO shift_loop UNTIL CE; MR=MX0*MY0(RND),MX0=DM(I0,M1); shift_loop: DM(I1,M1)=MR1; MR=MX0*MY0(T=RND); AY0=DM(blk_exponent); DM(I1,M1)=MR1,AR=AY0-AX0; DM(blk_exponent)=AR; RTS; {Само БПФ} fft_start: CNTR=log2N-2; M0=0; M1=1; L1=0; L2=0; L3=0; L4=%twid_real; L5=%twid_imag; L6=0; SB=-2; {} I0=^inplacereal; I1=^inplacereal+1; I2=^inplaceimag; I3=^inplaceimag+1; M2=2; CNTR=nover2; AX0=DM(I0,M0); AY0=DM(I1,M0); AY1=DM(I3,M0); DO group_lp UNTIL CE; AR=AX0+AY0,AX1=DM(I2,M0); SB=EXPADJ AR,DM(I0,M2)=AR; AR=AX0-AY0; SB=EXPADJ AR; DM(I1,M2)=AR,AR=AX1+AY1; SB=EXPADJ AR,DM(I2,M2)=AR; AR=AX1-AY1,AX0=DM(I0,M0); SB=EXPADJ AR,DM(I3,M2)=AR; AY0=DM(I1,M0); group_lp: AY1=DM(I3,M0); CALL bfp_adj; DO stage_loop UNTIL CE; I0=^inplacereal; I2=^inplaceimag; SI=DM(groups); SR=ASHIFT SI BY -1(LO); DM(groups)=SR0; CNTR=SR0; M4=SR0; M2=DM(node_space); I1=I0; MODIFY(I1,M2); I3=I2; MODIFY(T3,M2); DO group_loop UNTIL CE; I4=^twid_real; I5=^twid_imag; CNTR=DM(bflys_per_group); MY0=PM(I4,M4),MX0=DM(I1,M0); MY1=PM(I5,M4),MX1=DM(I3,M0); DO bfly_loop UNTIL CE; MR=MX0*MY1(SS),AX0=DM(I0,M0); MR=MR+MX1*MY0(RND),AX1=DM(I2,M0); AY1=MR1,MR=MX0*MY0(SS); MR=MR-MX1*MY1(RND); AY0=MR1,AR=AX1-AY1; SB=EXPADJ AR,DM(I3,M1)=AR; AR=AX0-AY0,MX1=DM(I3,M0),MY1=PM(I5,M4); SB=EXPADJ AR,DM(I1,M1)=AR; AR=AX0+AY0,MX0=DM(I1,M0),MY0=PM(I4,M4); SB=EXPADJ AR,DM(I0,M1)=AR; AR=AX1=AY1; bfly_loop: SB=EXPADJ AR,DM(I2,M1)=AR; MODIFY(I0,M2); MODIFY(I1,M2); MODIFY(I2,M2); group_loop: MODIFY(I3,M2); CALL bfp_adj; SI=DM(bflys_per_group); SR=ASHIFT SI BY 1(LO); DM(node_space)=SR0; stage_loop: DM(bflys_per_group)=SR0; {} I0=^inplacereal; I1=^inplacereal+nover2; I2=^inplaceimag; I3=^inplaceimag+nover2; CNTR=nover2; M2=DM(node_space); M4=1; I4=^twid_real; I5=^twid_imag; MY0=PM(I4,M4),MX0=DM(I0,M0); MY1=PM(I5,M4),MX1=DM(I3,M0); DO bfly_lp UNTIL CE; MR=MX0*MY1(SS),AX0=DM(I0,M0); MR=MR+MX1*MY0(RND),AX1=DM(I2,M0); AY1=MR1,AR=AX1-AY1; SB=EXPADJ AR,DM(I3,M1)=AR; AR=AX0-AY0,MX1=DM(I3,M0),MY1=PM(I5,M4); SB=EXPADJ AR,DM(I1,M1)=AR; AR=AX0=AY0,MX0=DM(I1,M0),MY0=PM(I4,M4); SB=EXPADJ AR,DM(I0,M1)=AR; AR=AX1=AY1; bfly_lp: SB=EXPADJ AR,DM(I2,M1)=AR; CALL bfp_adj; RTS; {Нахождение максимума среди отсчетов спектра} searh_max: I0=^inplacereal;{Указатель чтения} I1=^inplaceimag;{Указатель чтения} M0=1; CNTR=groups-1; MX0=DM(I0,M0); MR=MX0*MX0(SS),MY0=DM(I2,M0); MR=MR+MY0*MY0(RND),AX0=MR1; AX1=0; MX0=DM(I0,M0);{Нахождение 1-й разности вне цикла} MR=MX0*MX0(SS),MY0=DM(I1,M0); DO searh_1 UNTIL CE; MR=MR+MY0*MY0(RND); AR=AX0-AY0,AY0=MR1; IF GE JUMP searh_2;{AR>=0 - переходим} AX1=I0-1,AX0=AY0; searh_2: MX0=DM(I0,M0); searh_1: MR=MX0*MX0(SS),MY0=DM(I1,M0); DM(result)=AX1; RTS; {Подпрограмма обнуления мнимой части массива} inplaceimag_zero:I0=^inplaceimag;{Указатель чтения} M0=1; CNTR=N; AX0=0; DO zero_1 UNTIL CE; zero_1: DM(I0,M0)=AX0; RTS; Размещено на Allbest.ru
|