Jump to content

    

AlexZabr

Свой
  • Content Count

    900
  • Joined

  • Last visited

Everything posted by AlexZabr


  1. Спасибо за ответ, нет проблем. Так и есть - банк из IIR фильтров, каждый фильтр - второго порядка, имеет вид: H(z) = 1/(1-p1*z^-1-p2*z^-2) - то бишь без нулей. Извиняюсь, обмолвился: p1, p2 - не полюса, а коеффициенты задержек в знаменателе. Для получения полюсов нужно H(z) разложить на простые дроби - и тогда действительно получим комплексные полюса. p1, p2 (т.е. коеффициенты задержек, а не полюса) вычисляются по формулам данным в моем первичном посте в ветке. По теории, p1 может принимать значения |p1| < 2 при том что |p2| < 1 - это залог устойчивости. fres - требуемый пик frequency response (АЧХ ?) полосового фильтра. Что-бы ни быть голословным, приведу конкретный пример одного из этих IIRов собранных в filter bank: fres = 1206 Hz - середина требуемой полосы пропускания fs = 22050 Hz - sampling rate выбираем Q = 0.985; p1 = 2*Q*cos(2*pi*fres/fs) = 2*0.985*cos(2*pi*1206/22050) = 1.8548 p2 = -Q^2 = -(0.985)^2 = -0.9072; Получаем фильтр: H(z) = 1/(1-1.8548*z^-1+0.9072*z^-2) Если вы прогоните данный IIR в матлабе на получение frequency response (freqz, например) - получим острый полосовой фильтр с усилением 40 дБ в центре (я его потом срезаю соотв. коеффициентом в числителе функции). Т.е. такой подход дает сразу коеффициенты IIRа второго порядка. Вот и интересует теоретическа подоплека этих формул.
  2. Да, это то что я предполагал. С одним НО (или двумя): что будет когда на обеих входах по 1 ? тогда ведь у нас Vgs (напряжение gate-source) будет близким к нулю, то бишь точно меньше порогового открытия MOSFETа, сначит он опять будет закрыт, так ?
  3. Спасибо, как мне кажется, есть определенный намек в правильную сторону (по моему), но очень желательно более подробный анализ работы, что, как и почему. По моему, там есть некоторый элемент памяти, но кажется не все так уж однозначно... Можете проанализировать (согласно положениям входов) ? Заранее спасибо, Саша
  4. Никто не знаком с этими вещами ?? Или не в нужный форум запостил ?
  5. Этот один из вопросов всплывающий периодически на интервью работодателя с потенциальным работником в сфере аналоговой интегральной схемотехники. Вопрос не сложный по идее, но требует понимания процессов. Вопрос в присоединенном файле. Дана схемка, А, Б - логические входа, S, D обозначают source, drain соответственно, C - вспомогательная точка. Нужно заполнить табличку (в том-же файле, под рисунком). Инвертор - CMOS. Буду благодарен за мнения насчет решения, как мне кажется решение не сложное, но не уверен нет ли там подковырки. Просьба ваши мнения насчет решения обосновывать (т.е. описывать процессы, можно вкратце). Спасибо, Саша Interview_analog1.doc
  6. У меня в проэкте используются банк фильтров IIR второго порядка без нулей (только 2 real полюса). В универе изучали классическую теорию дизайна IIRов согласно теории изложенной в A Course in Digital Signal Processing by Boaz Porat, т.е. при данных требуемых тех. параметрах (частоты, ripple и т.д.), подсчет требуемого порядка фильтра, расчет вспомогательных параметров (d,k), выбор или подсчет средней частоты среза, расчет полюсов и расчет transfer function. Все это для LPF. Затем, ежели нужен не LPF, то делаем трансформацию в требуемый вид (HPF, BPF, BSF). После чего делаем трансформацию полученного фильтра в цифровой domain (обычно с помощью bilinear transform, с учетеом требуемого пересчета частот) вследствии чего и получаем искомую transfer function цифрового фильтра (в z-domain). Однако, мой руководитель проэкта (старых правил DSPшник с многолетним советским и частично пост-советским стажем) преложил очень простой вариант - для band-pass второго порядка IIR без нулей. Первый полюс рассчитывается по формуле: P1 = 2 x Q x cos[(2 x pi x fres)/fs]; второй полюс: P2 = -Q^2. где Q - требуемая добротность фильтра (в пределах 0.9 - 0.99999...) fres - частота середины полосы пропускания (так как задана в обычно частотной шкале (Hz) без учете свертки на цифре) fs - sampling rate Мне этот подход не знаком, никогда не дидел таких формул и соотв. теории. Буду благодарен ежели кто подскажет где почитать (ессно online либо отгружаемый файл/книга) теоритическую подоплеку такого подхода и откуда берутся эти уравнения. Спасибо, Саша
  7. Большое спасибо, я еще весьма зелен в имплементации, моя первая попытак имплементировать алгоритмы на практике (да и на ц5402 в частности), посему по началу все кажется туманным... :) Просветили.. :a14:
  8. ОК, большое спасибо. Мои прикидки насчет подсчета cycles: например в подсчете энергий: сам MAC - это 1 cycle, но вокруг него есть пересылка данных между вспомогательными регистрами например (косвенная адресация), т.е. нужно загрузить адрес ячейки памяти в соотв. регистр - одна комманда (1 cycle), после чего вытащить след. данное в акумулятор и вспомог. регистр, и т.д. Все это добавляет еще несколько cycles вокруг да около для каждого sample. Хотя наверно не 7-10 инструкций а примерно 4-6 для каждого sample, но все-таки не одна. 4-6 инструкций (при учете адресации внутри-чипной памяти), модут дать, скажем, 4-12 cycles что как вы и говорите конечно меньше чем я первоначально прикидывал, но все-таки 12 х 66 х 15 ~ 12 000 cycles... Те-же факторы пытался учитывать и для фильтров, посему и накрутилось..., хотя я пока не освоил методику имплементации длинных FIRов (циклический буфер и т.д.) посему вполне вероятно далек от точности подсчета...
  9. Спасибо. В чипе есть 16k х16 bit dual access RAM и 4k x 16 bit ROM. Думаю 16к RAMа и для data и для program. Я пока только начинаю, пока не в курсе как конфигурировать процессор на работу с внутренней/внешней памятью, буду разбираться. Мне пока непонятно сколько нужно конкретно памяти данных для обработки кроме как сам буфер в 2000 адресов и как считать требуемое кол-во памяти (проверить влезет ли во внутреннюю). P.S. сорри за глупые вопросы, я не знаком со многими русскоязычными терминами .. латентность это latency ? камень - процессор ? отсчет - sample ? Текущий участок - это chunk данных на которые идет обрабоатка в конкретный момент ?
  10. Заканчиваю книгу своего дипломного проэкта, речь идет о разработке определенного алгоритма обрабоатки аудио сигнала. Одновременно озучаю азы программирования DSP в целях частичной реализации алгоритма на DSK платформе старенького доброго TMS320VC5402. Нужна прибилизительная оценка прозводительности реализации алгоритма на данном процессоре для хотя-бы грубой прикидки потянет ли он его в реальном времени при соотв. условиях. Я сделал прикидку в кол-ве cycles (очень грубо, но надеюсь в верном направлении), буду рад за комменты, советы, может чего неправильно себе представляю и т.д.. Параметры платформы: DSP на тактовой 100 MHz, опер. память вполне вероятно работает медленнее (занчит понадовятся наверняка wait states. Махимально отведенное время на обработку - примерно 130 милисекунд (это время накопления входного буфера данных, в течении которого может обрабатываться вторичный буфер). Что включает обработка (в порядке следования): 1. DWT (Discrete Wavelet Transform) - decomposition into 32 subbands (5 levels), на размер буфера примерно 2000 samples; 2. Подсчет энергий в 15-и subbands (т.е. сумма квадратов значений samples в каждом subband); 3. Фильтрация содержимого буфера (тех примерно 2000 samples) через filter bank состоящий из 15 IIR фильтров второго порядка и одного длинного FIR фильтра порядка 100-150. Фильтрация - параллельна для всех 16 фильтров - т.е. каждый sample проходит через все 16 фильтров независимо и результат суммируется. Прикидки: 1. Производительность DWT decomposition для соотв. функции в TIевской библиотеке алгоритмов дана формулой все параметры которой мен известны - я получил примерно 150 000 cycles на данный размер буфера при нужной mother wavelet нужного порядка. Но это ессно не учитывает задержек обращения к опер. памяти. 2. Подсчет энергии: тут у нас есть умножение на себя каждого sample и сложение - само по себе думаю делается MACом, т.е. за 1 cycle, плюс требуемые операции с регистрами/памятью. Прикинул в районе 7-10 ассемблерных инструкций что может быть примерно, скажем 20-30 cycles процессора на каждый sample. Это делается для каждого sample в каждом subband отдельно. Т.е. ежели мы имеем 15 нужных subbands, в каждом по 66 samples имеем: 30 х 66 х 15 ~ 30 000 cycles. 3. Фильтрация - тяжелая вещь. Каждый IIR второго порядка - примерно 12-20 ассемблерных комманд, что выражается в 40-50 cycles процессора на каждый sample. Имеем 15 IIRов, т.е. : 15 х 50 х 2000 ~ 1 500 000 cycles. FIR 150ого порядка наверно примерно 200-300 ассемблерных комманд (многие в цикле, посему такое кол-во) что выливается, в скажем....500 cycles на каждый sample, т.е. 500 х 2000 = 1 000 000 cycles. Итого имеем: 150 000 + 30 000 + 1 500 000 + 1 000 000 = 2 860 000 cycles. Туда-сюда, округлим до 3 000 000. При 100 MHz тактовой, получаем время выполнения (грубо) в пределах 30 милисекунд. Т.е., при махимально допустимом окне в 130 милисекунд мы укладываемся в 25% что по идее шикарно. Буду благодарен за комменты, есть ли серьезные ошибки в подходе оценки/подсчете ? Где и как ? Спасибо, Саша
  11. ОК, надеюсь поняли друг друга, тему закрыли.
  12. Хмм, :) , ну я не уверен можно ли это считать ущербностью. Отказ от поддержки в 3.3 сего DSK был принципиальным решением TIя, не ошибкой, багом или недосмотром. Вполне вероятно что в 3.3 он все-таки поддерживается через XDS510 адаптер (USB - JTAG), что обойдется в 1500$ при покупке с сайта TIя... Хотя я считаю это решение неправельным (IMHO ессно) ибо в свео время 5402 видимо был фундаментальным DSP чипом на котором очень много что делалось и мног универов базировали свои DSP лабы с этими DSK, и вот теперь фактически эти универы должны либо раскошеливаться на новые системы, либо забить на обновление софта и стоять еще годы на версиях софта 5-6 летней давности и более...
  13. "Разведчик"... можно "Геолого-разведчик" (есть какая-то параллель с топологией...) :laugh: Сорри, не удержался... :)
  14. Я в принципе не совсем в тему, просто заметка к programMakerrr: человек повесил объявление о своих услугах - насколько оно реально и т.д. - это дело его и вполне вероятно скажется в полож. либо отриц. сторону на его шансах трудоустройства. Но это ЕГО дело как себя рекламировать, нравитсья вам это или нет. Если вы потенциальный работодатель и вас не устраивает его данные - просто пройдите мимо молча, не встревая. Но ежели вы не работодатель то просто желание извините, накакать, на человека, гормогласно в публичном форуме высказать свое ФЭ, это совершенно неуместно в форумах где нормальное, взаимо-уважение считается нормой поведения (коим слава богу пока является eleсtronix - что весьма нетипично для многих русскоязыйных форумов к сожалению). У вас тоже можно найти (как и у любого другого из нас) свои изъяны (против лома нет проема... - ЕСЛИ НЕТ ДРУГОГО ЛОМА, а он всегда найдется...) и громогласно похихикать над ними - не думаю что вам это понравиться особенно в серьезной ситуации поиска работы. Мне неприятно "поучать" других, но манерам поведения на публичных форумах вам неплохо поучиться на западных многих (англоязычных) форумах специализирующихся в различных областях. Electronix пока в плане этого идет в ногу с ними. И незабываем высказывая публично свое мнение, особенно о человеке как специалисте, о зарплатах, ценах и т.д. - пожалуйста упомианть "ПО МОЕМУ МНЕНИЮ" (можно IMHO), т.е. ПО МОЕМУ МНЕНИЮ (которов на практике вполне может быть ошибочным) соот. зарплата: XYZ. Ежели вам все-таки невтерпеж высказать свое ФЭ - для этого есть PM (Персональное сообщение). Сорри ежели обидел, ничего личного, но есть надежда что советские (да простят меня уважаемые форумчане в просторах бывшего великого и могучего) манеры общения (аля - накакать на ближнего) канули в прошлое, надеюсь прочно.
  15. Столкнулся с проблемой подключения борта 5402 DSК через параллельный порт (LPT1) к CCS. Оказалось не два пальца обохххть...угробил 2.5 дня на это, но "конец" оказался со счатстливым концом. Думаю будет полезно поделиться печальным опытом с коллегами и возможно помочь кому-нить съэкономить кугу времени и нервов. Инфа относится к тем у кого окажется набор TMS320VC5402 DSK и понадобиться работать под 5402 в пален имплементации. Стандартная конфигурация этого DSK в оригинале подразумевала подключение к CCS через параллельный порт (LPT1) сконфигурированный на протоколы ECC/ECP на адрес 0х378. В принципе это все очень просто если все настроено: просто подключаем кабель LPT1 (параллельный порт принтера) между PC и бортом, конфигурируем CCS соответственно (в CCS Setup) и готово. Проблема: подключение DSK к CCS v.3.3 по параллельному порту. Результат - не работает ибо параллельно-портовой конфигурации 5402 DSK вообще нет в CCS 3.3. TI убрал поддержку 5402 DSK в версии CCS 3.3. Подтверждено TI supportом к которым обращался. След. этап головоломки: ставим CCS v.3.1 - там есть в CCS Setup конфигурация 5402 DSK по параллельному порту. Несмотря на это - все равно интерфейс выдает ошибку инициализации борта намекая на проблематичность версии чипа (силикона) в процессе инициализации JTAGа. Попытка переставить файлы параллельно-портового драйвера его DSK из CCS 3.1 в CCS 3.3 ничего на дала. Обратился к TI Support team - они долго чесали репу - 5402 снят с производства в 2003 году, посему нюанцы его подзабылись. Затем, нашли errataу TIя, где говорится о нормальной работе этого интерфейса с чипами версии силикона С и старше (последняя версия была Е). Проверив 5402 чип на моем DSK - оказалось что у меня версия силикона Б что ессно вызвало серьезные подозрения. Версия силикона у 5402 читается на маркировке в нижне левом углу - там две буквы: в моем случае CB, вторая буква означает версию силикона. Support предположил что это наверняка и есть причина неработы моего DSK по паарллельному порту несмотря на соотв. конфигурацию в CCS 3.1 След. этап: плюнул, растер, убрал CCS 3.1, инсталлировал старую 2.21 - ЭВРИКА - все работает ! ИТАК ВЫВОДЫ: Имея DSK с TMS320VC5402 версии силикона С и выше (до Е включая) - возможно конфигурация о параллельному порту будт работать. Если нет, либо версия силикона B (возможно и А) - выход: работать с CCS 2.21 и ниже. Надеюсь эта полезная инфа кому-нить поможет... Саша
  16. Отвечаю себе-же.... УРА, кажется победили сей недуг ! И возможно разобрались с причиной "болезни"... Говорил с нашим локальным саппортом TI - они тыкались туда-сюда, но 5402 очень стар посему подзабыли нюансы. Потом спросили меня прочитат маркировку чипа (процессора) - внизу в левом углу есть две буквы - в моем случае CB, вторая означает версию силикона. Затем они порылись в erratax TI на сайте spectrumlogic или как там их - те что делают борды на основе TI процессоров) и нашли errataу в которой есть намек на то что можно ожидать нормальную работы с таким интерфейсом с версиями силикона начиная с С(5402 снят с производства в 2003, последняя версия силикона: Е). В общем, убрал современные версии CCS и поставил 2.21 и ОПА - заработало ! В общем думаю это будет полезная инфа для всей DSPшной братии на форуме ежели кому достанется 5402 DSK и взумается с ним работать по параллельному порту (не покупая дорогие USB-JTAG адаптеры). Кину инфу на отдельную ветку....
  17. Дык данные обрабатываются в МАТЛАБе (посредством М-файл кодов) и соотв. их него и пишутся в файл. Затем они должны читаться в С (в CCS IDE). МАТЛАБ 7 поддерживает такие-же как в С файловые функции, те что вы и упомянули - я ими-же и пользуюсь в M-файлах (смотрите выше - это кусок кода в М-файле, не в сорсе С, хотя и идентичен).
  18. Тема довольно устарела, но кину свои 2 копейки, может прогидятся... В обрасти радио - я профан, посему советом не помогу. С другой стороны в области хифоровй связи вообще работы с DSP и исследованиями - непочатый край. Фактически вся цифровая связь стоит на DSP. Пример тому - системы cellular телефонии, космическая связь и телеметрия и т.д. Есть так-же очень много интересного в области цифрового контроля (Digital Cоntrol Systems) - область очень перспективаная, и весьма сложная. Я-же больше знаком с индустрией consumer - т.е. например цифровые камеры, home entertainment и им подобным. Там тоже все наводнено цифровой обработкой сигналов (image processing, audio processing и т.д.) и тоже много инженерных проблем с этим связанных которые требуют изучения/решения. Я сейчас заканчиваю первую степень B.Sc.EE со специализацией в DSP (хотя есть и две побочных специализации - Control и микроэлектроника), нужена была интересная тема для финального дипломного проэкта. Работая в фирме занимающейся разработкой main processors для цифровых камер, DVD, DTV, я более-менее знаком с реальными проблемами (более в системном плане, нежели на уровне чипа), вот и взял одну реальную проблемку с которой сталкиваются "строители" цифровых фото камер и которая практически осталась очень сырой в реальных продуктах. Решил попытаться разработать алгоритм обработки сигнала для борьбы (хотя-бы принципиальной) с проблемой. Там немало работы в DSPшной области, и думаю есть немало интересного если углубиться в нее с рассчетом на проэкт на вторую степень. Если будет интерес в такого типа области (аудио) - можно раскрыть детали. Кроме того, есть IMHO, очень интересные вещи связанные с более общего плана математикой/алгоритмами связанными с реализацией DSPшных алгоритмов на практике. Например: проблемы реализации алгоритмов созданных во floating point, с очень большой точностью (например в MATLABe) на реалистичных, не дорогих DSP процессорах которые fixed-point, 16 бит. Т.е. проблемы связанные с точностью/стабильностью алгоритмов с учетом таких реальных числовых вещей как trancation (finite-word length problem, quantization), rounding, scaling for fixed-point arithmetics. Это проблемы подобора/обоснования более оптимальных структур и подходов реализации цифровых систем (например фильтров) с учетвом упомянутых эффектов для достижения характеристик наиболее приближенных к теоретическим (например полученных в MATLABе). Это серьезные проблемы , отчасти о частично решенные иногда, но еще полно головоломок там. К сожалению такие вещи (т.е. возможность углубленного теоретического подхода) находятся в основном за пределами теоретической базы первой академической степени, посему мне это было не потянуть пока, Но на вторую степень вполне возможно это будет реально.
  19. Итак, отгрузил полную версию Platinum 3.3 (спасибо админам за принятие в Свои :-) ). Встроенной поддержки 5402 DSK по параллельному порту действительно нет, как и в trial. Ну ладно, подгрузил любезно предоставленные вами файлы драйвера Ь DLL + GEL и т.д. как положено - тот-же результат что и с trial - выдает ошибку инициализации борта. Увы...факир был пьян...:-( видимо они убрали подержку параллельно-портовой kонфигурации 5402 DSK сего в корне в версии 3.3...очень жаль... Следующий этам - буду отгружать по одной версии назад и проверять какая последняя поддержит сей DSK по серийному порту. Начну с 3.1 (думаю нет смысла проверять 3.2, в закромах вижу только 3.2 бета, тогда ак 3.1 есть окончательная - Platinum...) Сейчас отгружу 3.1, уберу 3.3 с диска, поставлю 3.1 и попробуем... результаты доложу... . . . . Итак, установил версию 3.1 Platinum, там действительно есть встроенная (Factory boards) конфигурация 5402 DSK Parallel Port. Но опять выдает ошибку инизиализации (но уже другого вида); Can't Initialize Target CPU: Error 0x80000240/-1073 Fatal Error during: Initialization, OCS, Bad Target Silicon Revision Number Please check your multi-processor configuration. The number of devices in the JTAG scan path must be correct for the silicon revision to be read. Or, you may have selected the wrong DSP device driver. I/O Port = 378 Board Name: C5402 DSK Cpu Name: CPU_1 Вроде-бы уже пытается прочитать процессор, но что-то мешает... не пойму в чем дело....подергаюсь еще немного с ней, еели не пойдет, придется убирать ее тоже, отгружать версию 2.2 и ставить ее....:-(
  20. ОК, спасибо. Там кстати уже вроде есть и полная 3.3. Я пока не Свой, доступа на FTP еще нет, но как только появится - скачаем, проверим... Я кстати рылся сейчас в TI инфе на сайте - наткнулся на инфу по trial/demo и подобным версиях софта где намекается что они не поддерживают hardware - только симуляторы. Не уверен насколько оно касается моего случая...ведь в CCS Setup есть полно hardwareных конфигураций под 55 и выше процессоры... Интересно проверить полную версию 3.3 насчет DSK... Как бы то ни было - запросил support TIя мейлом нсчет конфигурации и поддержки 5402 DSK CCSом 3.3 через параллеьный порт (не через USB-JTAG эмулятор) - посмотрим что скажут...
  21. Точно подмечено. Лично зчаком с такой тенденцией. Рынок мультимедии сегодня завален типовыми DSPшными задачами (image processing, audio, соотв. цифровая связь), одновременно в виду очень жесткой конкуренции идет борьба за каждый цент, т.е. производители конечно продукции (цифровые камеры, DVD например) требуют от произодителей комплектующих (процессоров особенно) все большей системной интеграции не стандартных DSPшных функций в чипе процессора (но типовых для конкретныц аппликаций, например управление моторами Servo, системным потреблением и питанием, дисплеи и т.д.) ибо это им серьезно экономит затраты (меньше элементой базы, меньше площади PCB и т.д.). Вот и получаются чипы ASICов в DSPшными корами набитые кучей дополнительной (включая аналоговой) функциональностью. Классические-же производители DSP, видя огромный потенциал рынка мультимедии пытаются отгрызать кусочки пирога тоже вынуждены подчинятся такой тенденции...
  22. Извините, я на форумах тут относительно новичок... что имеется ввиду в закромах ? на FTP форумов ?
  23. ОК спасибо, сейчас попробуем...доложу... Кстати, вы уверены что в 3.1 есть нормальня подержка сего DSK по параллельному порту (0х378) ? Это интересно...может в таком случае мне будет смысл заменит мой 3.3 на полную (рабочую) 3.1.... Если не секрет, откуда можно скачать полную 3.1 в лекарством ? попробовал - увы - тоже самое...не распознает...зараза. Не понимаю, что они убрали в 3.3 что есть в 3.1 для работы с этим DSK ? Вроде файлы уже переставляли....
  24. Спасибо, сделал, установил файлы как надо, импортировал в CCS Setup - не помогло. При запуске CCS получаю такое: Can't Initialize Target CPU: Error 0x80002240/-100 Fatal Error during: Initialization, OCS, Control, This error was generated by TI's USCIF driver. SC_ERR_BAD_GENERIC or SC_ERR_DRIVER_POS <-100> This error number is used as a last resort when something bad occurred and we don't know why. This is the most positive of the 500 error numbers that are allocated to USCIF drivers and utilities. I/O Port = 378 Board Name: C5402 DSK Cpu Name: CPU_1 Проверил параллеьный порт на своем PC - адрес 0х378, как положено, режим ECP. Попробую сменить режим на EPP....(хотя надежд мало...) . . . Почему-то у меня на desktopе нет выбора EPP в BIOSе - попробовал все на лэптопе. Там проверил все как полагается: режим EPP, адрес 0х378. Все равно не работает: Can't Initialize target CPU I/O Port = 378 Board Name: C5402 DSK Cpu Name: CPU_1 Странно.... Кстати, этто файл c54x_pp.ccs - не имеет вид c54xx...что может быть более бы пдоходило для C5402... Может у вас так-же найдется: c54xх_pp.ccs ? (не знаю или такой существует вообще...)