Jump to content

    

islava

Участник
  • Content Count

    13
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. Объясните пожалуйста такие абстрактные вещи... При передаче по беспородному каналу при увеличении частоты необходимо организовывать сеть, чтоб все компоненты находились в прямой видимости (т.к. уровень затухания сигнала очень высокий) при этом уменьшается эффект межсимвольной интерференции, но пропадает возможность передавать данные вне зоны прямой видимости. Например (10-66 ГГц). Если передавать данные на низкой частоте (например 450 МГц), то соответственно увеличивается дальность связи. В случае города, т.е. плотной застройки, что будет происходить: будет ли наблюдаться высокий уровень интерференции и при этом необходимость снижение и так низкой скорости передачи из-за введения охранных интервалов? Но с другой стороны сигнал будет доходить и внутрь зданий... Т.е. не понятен уровень качества связи? Можено ли как-то сравнить дальность и качество связи для разных несущих: 800 МГц, 2.6 ГГц и 3.5 ГГц? Спасибо!
  2. там как раз и говорится, что одним из методов решения этой проблемы является применение адаптивной фильтрации. Но конкретно где она используется не написано, а в этом и заключается весь смысл! Просто мне по диплому сказали реализовать адаптивный фильтр, а точку приложения я типа должен придумать сам, но вот и хотел это как-то обыграть!)
  3. Не, вчера весь день убил... Получилось ее скомпилить, просто я взял готовый код на Си (а в Си я дилетант) 6 страниц готовый, в котором была реализация взаимодействий проца с кодеком AD1847. И в итоге оказалось, что в этом самом коде были опечатки... и в библиотеке были (я не знаю точно, но вроде старые, в которых не все функции были описаны), и с моим небольшим опытом работы в VisualDSP это было нелегко исправить! А не подскажете ... вот в конце файла приводится еще листиг кода файла архитектуры, и в начале дается пример как это все линковать (или компилировать... что-то типа этого): To compile this demo to be run using diag21k: g21k -a ttc.ach -o ttc.21k talkthru.c To compile this demo to be run using ezldr: g21k -a ttc.ach -o ttc.21k talkthru.c ldr21k -a ttc.ach -bhost -fascii -o ttc.ldr ttc.21k и вот не совсем понял, нужен ли мне вообще этот файл ttc.ach если я работаю в Visual'е?
  4. Привет всем! Делаю диплом, но что-то не получается, а сроки уже поджимаю и становится слегка стремно( Может у кого-нибудь есть опыт с работой на Sharc 210xx? Как бы все есть: основная часть проги, которую надо зашить в проц, пример работы с кодеком на плате, просто надо все это откомпилировать (кстати не получается у меня) и зашить... Короче, реально нужна помощь! Если кто-нибудь откликнется, то условия обговорим уже в индивидуальном порядке! Мое мыло - m.v.s@bk.ru Спасибо!
  5. Так, как я понял, межсимвольная интерференция присутствует всегда. Одно дело, когда приемник и передатчик находятся в прямой видимости, и совсем другое, когда вне ее! В случае, когда приемник не в прямой видимости, то все плохо..) И не могли бы пояснить "еще можно работать на такой скорости - полоса, где этой интерференции практически нет"? Так вот, я как раз и хочу сделать эквалайзер, который и будет с ней бороться!)
  6. Привет! Никто не подскажет, какие приемы для борьбы с межсимволной интерференцией используются (или вообще используются) в обычных узкополосных приемопередатчиках на, к примеру, 433 мГц? Спасибо!
  7. Привет всем! Хотел задать такой вопрос. В дипломе надо связать адаптивный фильтр (LMS-алгоритм) с передачей информации по беспроводному каналу (узкополосный вариант: 300 - 1000МГц). Проблема с обоснованием разработки (собственно сам фильтр). Не подскажете, как мне это сделать? Была мысль такая: написать, что есть проблема с межсимвольной интерференцией, и чтоб скорректировать передаточную характеристику канала передачи, необходимо перед транспортировкой данных проводить настройку коэффициентов фильтра... Но возник вопрос, ведь в современных модулях это уже давно применяется?! Или нет? Если все-таки применяется, может написать, что для более гибкой организации настроек канала необходимо строить систему передачи с 0 на дискретных элементах (а не покупать готовые модули) и вот как раз там собственно и реализовывать адаптивную фильтрацию своими силами??? Очень был бы признателен за любые предложенные варианты, а то получается, что зря все делал!((
  8. Доброго всем времени суток! На ассемблере написал LMS-фильтр, но выдает следующие ошибки и предупреждения: ----------------Configuration: Project - Debug---------------- .\Project.asm [Warning ea1121] ".\Project.asm":34 main: -g assembly with global function without ending label. Use 'main.end' or 'main.END' to mark the ending boundary of the function for debugging information for automated statistical profiling of assembly functions. [Warning ea1121] ".\Project.asm":65 input_samples: -g assembly with global function without ending label. Use 'input_samples.end' or 'input_samples.END' to mark the ending boundary of the function for debugging information for automated statistical profiling of assembly functions. Assembler totals: 0 error(s) and 2 warning(s) Linking... [Error li1021] The following symbols referenced in processor 'p0' could not be resolved: 'main [_main]' referenced from '061_hdr.doj' 'rx_buf' referenced from '.\Debug\Project.doj' 'setup_1847' referenced from '.\Debug\Project.doj' 'tx_buf' referenced from '.\Debug\Project.doj' Linker finished with 1 error cc3089: fatal error: Link failed Tool failed with exit/exception code: 1. Build was unsuccessful. И собственно сам код: // ------------------------------------------------------------------------------ #define NR_COEF 16 #define STEPSIZE 0.005 #include "def21060.h" // ADSP-21060 System Register bit definitions // ---------------------- Data Memory ------------------------------------------- .segment /dm seg_dmda; .extern setup_1847; // routine to initialize the AD1847 converter .extern spt0_asserted; // SPORT0 transmit isr - used to initilize AD1847 .extern rx_buf; /* rx_buf[0] = status rx_buf[1] = left channel A/D rx_buf[2] = right channel A/D */ .extern tx_buf; /* tx_buf[0] = configuration tx_buf[1] = left channel D/A tx_buf[2] = right channel D/A */ .var dline[NR_COEF]; // circular buffer holding samples from A/D (noise) .endseg; // ---------------------- Program Data Memory ----------------------------------- .segment /pm seg_pmda; .var coef[NR_COEF]; // circular buffer holding filter coeffs .endseg; // ---------------------- Program Code Memory ----------------------------------- .segment /pm seg_pmco; .global main; .global input_samples; main: call setup_1847; b0 = dline; l0 = @dline; m0 = -1; b8 = coef; b9=b8; l8 = @coef; l9=l8; m8 = 1; f7=STEPSIZE; f0=0.0; f1=1.0; lcntr=NR_COEF, do clear_bufs until lce; clear_bufs: dm(i0,m0)=f0, pm(i8,m8)=f1; /* clear delay line & weights */ rts; /* ReTurn from Subroutine */ wait: idle; jump wait; input_samples: // ------------ The LMS filter is here ------------------------ // ACQUIRE THE INPUT SAMPLE, CONVERT TO FLOATING POINT r0 = dm(rx_buf + 1); // move the input sample into r0 from left channel (noise) r1 = dm(rx_buf + 2); // move the input sample into r1 from right channel (signal and noise) r0 = lshift r0 by 16; // shift to the highest 16 bits to preserve the sign r1 = lshift r1 by 16; // shift to the highest 16 bits to preserve the sign r2 = -31; // set the scaling for the conversion f0 = float r0 by r2; // convert from fixed to floating point left data f1 = float r1 by r2; // convert from fixed to floating point right data dm(i0,m0) = f0; // store the sample in dline[] (noise) // CALCULATE THE SUM SAMPL'S PRODUCTS f12 = 0; f2 = dm(i0,m0), f4 = pm(i8,m8); lcntr = NR_COEF-1, do (pc,1) until lce; f8 = f2*f4, f12 = f8+f12, f2 = dm(i0,m0), f4 = pm(i8,m8); f8 = f2*f4; // complete the last loop f12 = f8+f12; // CALCULATE THE ERROR f13 = f1-f12; // e(n) = y-sum(x(n-i)*w(i)) // UPDATE WEIGHTS f1 = f13*f7; /* f1 = STEPSIZE*e(n) */ lcntr = NR_COEF, do (pc,4) until lce; f4 = dm(i0,m0), f12 = pm(i8,m8); /* f4 = noise, f12 = weights */ f0 = f1*f4; /* f0 = STEPSIZE*e(n)*u(n) */ f8 = f12+f0; /* f8 = w(n+1) = w(n) + STEPSIZE*e(n)*u(n) */ pm(i9,m8) = f8; // CONVERT THE OUTPUT SAMPLE TO FIXED POINT & OUTPUT r2 = 31; // set the scaling for the conversion r8 = fix f13 by r2; // convert from floating to fixed point rti(db); // return from interrupt, but execute next 2 lines r8 = lshift r8 by -16; // shift to the lowest 16 bits dm(tx_buf + 1) = r8; // move the sample to the output .endseg; Прокомментируйте пожалуйста!
  9. Хотел бы задать такой вопрос... Как прочесть данные с левого и правого каналов AD1847 (плата EZ-KIT sharc ADSP-21061)? Нашел пример на ассемблере для чтения только с левого: r0 = dm(rx_buf + 1); r0 = lshift r0 by 16; r1 = -31; f0=floatr0byr1; dm(i0,m0) = f0; А как одновременно с этим считать и с правого? И зачем сдвигать на 16 бит (r0 = lshift r0 by 16;)? И чтоб одновременно считать с лев и прав надо написать так?: r0 = dm(rx_buf + 1); rr = pm(rx_buf + 2); r1 = -31; \\\\\\\\\\\\\\\\\\\\\ rr = lshift rr by 16; ??? (pm регистр 24-битный) fr = float rr by r1; dm(i1,m1) = fr; ///////////////////// r0 = lshift r0 by 16; f0 = float r0 by r1; dm(i0,m0) = f0 Спасибо!
  10. Спасибо огромное за информацию!!! Буду читать...)
  11. Привет всем! Я студент, и мое задание на диплом - реализовать адаптивный алгоритм (LMS) на ez-kit sharc 21061 фирмы analog devices. Нашел на их сайте описание реализации fir-фильтра на assembler. Достаточно сложновато с учетом того, что не могу найти мануала по assembler для этих процев. Не мог ли кто-нибудь посоветовать с чего мне начать? Где я могу найти мануал по ассемблеру? И если кто-нибудь сконнектил бы со мной и посоветовал бы что-нибудь конкретное, то был бы очень признателен! Мое мыло m.v.s@bk.ru