Jump to content

    

AlexZabr

Свой
  • Content Count

    900
  • Joined

  • Last visited

Everything posted by AlexZabr


  1. У меня проэкт включает несколько м-файлов обработки и подготовки файлов данных для дальнейшей обработки на С5402. Файлы обработки DSP - С + ассемблер (хотя ассемблер вызывается ис основного С файла, посему прозрачен в глобальном плане). Два смежных вопроса: 1. Как вызывается из м-файла С файл ? 2. Желательно в целях автоматизации демо проэкта (на защите например), скомпоновать C/asm файлы для процессора в exe file, таким образом при его запуске программа загружается в С5402 DSK и выполняется. Предположим сделали такой exe, как из м-файла вызвать exe ? 3. В м-файле, после вызова С/exe файла ннужно обрабатывать результат работы DSP, т.е. нужно подождать окончания работы вызванного C/exe и затем продолжить работу (продолжить выполнение м-файл скрипта). Как "сказать" матлабу в м-файле, мол, подожди окончания работы вызванного C/exe и затем продолжи ? Спасибо.
  2. Вообще-то, насколько помню основы аналоговой, наверняка имелось ввиду 2х каскадный усилитель в котором первый каскад - common emitter - усилитель по напряжению, второй каскад - common collector (follower) - усилитель по току (мощности). Соотв. и схему нужно править.... Но Omen_13 прав - вам в раздел начинающих...
  3. Прикольно Наш лектор по Control 1 & 2 рассказывал что в начале-середине 60е успехи советской космонавтики на фоне скромных успехов американской были явны в большой мере вследствии очень сильной школы (теоретической и практической) классического Контроля (Контрольные системы). Союз первый добился более-менее стабильности в успешных запусках именно благодаря сложным и robust систем контроля ракет-носителей (стабилизация и т.д.) основанных на классической теории контроля. Тогда-же америка поняв явную угрозу отставания в этом плане сделала ставку на развитие цифровой теории контроля и внедрения таковой в космос, как оказалось ставка была удачной...
  4. Большое спасибо, очень помогает укладывать в голове принципы. Есть несколько вопросов по ходу дела, пожалуйста поправляйте меня ежели ошибаюсь. FIR фильтрация есть по сути дела конволюция сигнала (data samples) с вектором коэффициентов фильтра: y[n] = h[[0]x[n] + h[1]x[n-1] + h[2]x[n-2] + ... + h[N-1]x[n-(N-1)] где h[0:N-1] - вектор коэфф. фильтра. Это означает (насколько я понял), что циклический буфер нужен только для буфера данных, но не для data, так ? Однако, в некоторых друких примерах кода реализации FIRа я вижу циклическую адресацию и для коэффициентов и для буфера данных: mac *ar2+0%, *ar3+0%, a (предварительно в ar2 был загружен указатель на адрес начала буфера коэффициентов, в ar3 - указатель на начало буфера данных). Как это понять ? Ведь по идее данные должны ккрутиться, но не коэффициенты ? Чего я не понимаю ? Пример приведен из: http://cnx.org/content/m10023/2.19/ Каким образом выравнивается начало циклического буфера по адресам нужной кратности ? (Ежели у меня фильтр 150го порядка, мне нужно выравнять по кратности 256, т.е. 8 младших нулей) Почему выходной отсчет сохраняется как high word аццумулятора А (sth a) ? Разве всегда результат будет в high word ? Насчет циклической адресации: *ar4+0% -> указатель в ar4 шагает вперед циклически по адресам с шагом заложенным в ar0, так ? т.е. если предварительно было: stm #-1,ar0 то фактичеки шагаем назад по одному ? при *ar4-0% - шагаем назад циклически в шагом в ar0, так ? Значит при -1 в ar0 - фактиечски шагаем вперед на 1, я ошибаюсь ? Когда делается инкремент содержимого регистра: до самой команды (mac) или сразу после ? Участок кода: rptz a,#xN-1 mac *ar3+,*ar4+0%,a говорит что для каждого выходного sample делается всегда одинаковое кол-во macов (равное порядку фильтра - 1). Для первого выходного sample имеем: y[0] = x[0]h[0], однако все-равно делается N macов, что должно означать что в буфере задержки, на данный момент все остальные места (кроме x[0]) должны быть равны 0, т.е. y[n] = x[0]h[0] + 0h[1] + 0h[2] +....= x[0]h[0]. Я ошибаюсь ? Если это правильно, то по идее при первой итерации внутри rptz, buffer должен выглядеть так: x[0] 0 0 0 0 . . . Если это правильно, я не пойму где просходит изначальное обнуление области памяти содержащей buffer ? Спасибо, Саша
  5. Даа, че-то у меня "чем дальше в лес тем больше дров..." :cranky: В ассемблерном коде данном мне (реализация FIR) ест- такие последовательные строки: до кода: ar4 <- адрес ячейки памяти в которой храниться порядок фильтра (100 в моем примере) ar3 <- адрес ачейки начала вектора коеффициентов фильтра (т.е. поинтер на первый коеффициент) ar2 <- адрес ячейки в которой загружен след. входной sample win <- array содержащий вектор коеффициентов фильтра кусок кода: stm #1, ar0 rpt *ar4 ;до этого в ar4 загружен адрес ячейки в которой порядок фильтра (100 в моем примере) mac *ar3+0%, *ar2+0%, a ld *ar2-0%, b я так понимаю то что происходит: делается mac между содержимым по адресу в ar3 и ar2, результат -> в А, после чего адреса в ar3, ar2 инкрементируются на 1 (ибо ar0 = 1). T.e. т.е. если данный mac был на адреса ar3 = 0x300, ar2 = 0x200, то после получения результата в А: ar3 = 0x302, ar2 = 0x202. Логично ? Однако в дебаггере постэпово я вижу ar3 = 0x302, ar2 = 0x201. Странно, чего я не понимаю ? Кроме того, судя по хелпу, rpt перед mac означает mac будет выполняться 100 раз и лишь затем перейдем на след. инструкцию: ld *ar2-0%, b. Однако в реальности mac выполняется один раз и идет дальше на ld *ar2-0%, b. Видимо я чего-то не догоняю..чего ? Означает ли ld *ar2-0%, b, что в Б загружается содержимое ячейки по адресу в ar2, после чего адрес в ar2 уменьшается на 1 ? Кстати, буду благодарен ежели кто приведет пример своего кода реализации FIR (с циклическим буфером с которым пока еще так и разобрался), на котором можно поучиться как это работает и делается в принципе, не используя FIRS Например: 1. Есть буффер samples размером К (К samples) - эту data и нужно фильтровать. 2. FIR порядка N 3. Фильтруем буффер data циклически.. Заранее благодарен.
  6. Большое спасибо, начинает потихоньку проясняться. Будем изучать TIевские доки по теме, вполне вероятно не постесняюсь задавать еще пару-другую глупых вопросиков в процессе... :)
  7. А может проще ему просто забашлять кому надо да и купить диплом... вот такие будущие инженера..... :07:
  8. Вернулся к теме..(разобраться в реализации FIRов...), парочку вопросиков от "чайника": 1. Что означает синтакс 0% ? например в MAC комманде выше ? Я понимаю + означает автоматичекий инкремент содержимого, но что означает +0% ? И когда нужно применять такое ? В хелпе по ассемблеру 54ого упоминается % как операция modulo... 2. Что акое конкретно циклический буффер (BK) и как с ним работать (на примере FIRа) ? Какая связь в вышеприведенном коде FIRа между загрузкой BK и работой FIRа ? Сорри за элементарные вопросы - "я еще не волшебник, в только учусь"... :)
  9. Спасибо, сейчас скачиваю. Вы уверены это та книга которую вы упоминали ? То что скачивается называется: "Iמtro to Microwave engineering" тогда как вы говорили насчет "High Frequency Technique".. ;)
  10. Буду благодарен ежели вышлете и мне (надеюсь размер файла не более 5-6 MB) . Хоть и не мой профиль, но интересно. В универе на физике 2 и electromagnetic fields Максвелл был хлебом (хоть и жестким.... ), тоже тяжело давался, но надо отметить сама теория небезинтересна была... Спасибо. адрес: alex AT zabrovsky DOT com
  11. Присоединяюсь тоже к поздравлениям. Вечная память павшим и ветеранам. Мой дед по отцу погиб в 41ом под Смоленском ("Смоленский котел"), как его контуженный сослуживець рассказывал бабушке в 43оем - одна винтовка на 5х, толком необученные "оружие добыть в бою" против танков. Окружение из которого очень мало кто вышел. Дед остался там. Отцу было тогда 2 года - мельком один раз видел отца на пероне при переброске их части на Смоленский фронт. Второму (по матери) посчастливилось дожить до освобождения Освенцима...
  12. Странно, у меня все нормально открывает.. Во всяком случае закинте в поиск: Kolmogorov axiom, либо Probability axiom, либо просто Probability theory - найдете полно линков
  13. Насчет формулировки вопроса - предпложительно полная, хотя я оговарилвался в процессе обсуждения в ветке о возможности не полной точности. Отвечающие принимали это в расчет, посему и ответы были не однозначны (и посему и моя неуверенность в собственном ответе). Формулировка была отчасти скопирована из начерканных вопросов на одном из рабочих интервью - интервью претендента на работу в области EE. Человек наспех записывал вопросы так какон их запомнил, сполне вероятно что есть неточности, либо неполная формулировка, ибо в данной мной формулироваке вопрос мне кажется уж больно элементарен. Нет никакой связи с "профессорским издевательством". Нсчет профессуры и формальной учебы - я это привел как аргумент к вашему, по моему безоснователному отрицанию общепринятой теоретической базы, хотя если вам не довелось ее учить формально (в универе) то это можно было-бы еще понять. Информация о монете нужна, ибо уравновешенна ли монета или нет - есть ключевое условие (или одно из таковых) для правильного решения. Вполне вероятно. Обычно ожидаю подвохов на рабочих интервью, чаще всего задают короткие и вроде как не сложные вопросы по условию, в которых часто оказываются не тривиальные вещи на которых можно попасться... :)
  14. Ну во первых, просьба оставить агрессивную манеру общения, chill down...при личной беседе понятия "трепаться", "словоблудие" и т.д. иногда могут подойти, поимейте немного уважения с собеседнику, тем более виртуальному. Вполне вероятно среди них есть те знания/опыт которых превосходят ваш, мой и других. Во вторых, "ваша" теория или "наша" теория - совершенно некорректно поставленная точка зрения IMHO. Говориться об теориях на которой базируется обоснование предмета, на основе которой построены и работают практические вещи. Ежели вы намерены оспорить сие - вам в полемику с профессурой универов, и вообще основополагающей науки данной области. Теория вероятности (ТЕОРИЯ) как раз и была обоснована во избежание "многократно повторяемых событий, которые можно ручками (экспериментом) проветить", с тем чтобы включив пару-другую извилин и будучи подкован соотв. теорией получить результат за течении минут вместо "миллионого подкидывания". Ежели вы не в курсе аксиом Колмогорова, подозреваю вы не проходили формального универского курса теории вероятности. Не проблема - при желании это можно освоить и понять по хорошим книгам, благо базисный курс основывается на математике старшей школы, и может лишь чуть-чуть "вышки". Хмм , это уже изворотливость ...теоретически конечно можно предположить, но все-таки подразумевалась простая логика вещей, т.е. монета падает остаетзя в устойчивом состоянии, значит на одной из 2х сторон..
  15. Подбрасывание 2х отдельных монет есть 2 независимых события. Если каждая монета уравновешена, имея 2 (уравновешенные) стороны, вероятность выпадания одной орла или решка будет 0.5. Аксиомы Колмогорова - основаня база на которых базируестя классическая теория вероятности. В универском курсе теории вероятности обычно как раз и начинают с 4х (или 3х ?, подзабыл уже) его аксиом, на основе которых и развивают всю теорию вероятности (классическую). Почитать о них можно в нете, например: http://en.wikipedia.org/wiki/Probability_axioms
  16. Спасибо, понял. В принципе я руководствуюсь свой настольной "библией" по DSP: A Course in Digital Signal Processing by Boaz Porat. Там этим вещам посвящен тоже большой раздел, подробно рассматриваются эффекты и предлагаются варианты как с ними бороться. Мне было-бы просто интересно услышать как кто из конкретных дизайнеров это делает. Спасибо, не знал. никогда не пользовался FDAToolом еще, всегда фильтры делал текстово... будем знать.. :a14:
  17. Wow, wow, wow, с места в карьер... Спасибо за ответ, но вопрос был поставлен конкретный. Почему 16 бит а не иначе - другой вопрос, и это заранее задано (не играет роли насколько оно правильно для конкретной задачи). Вопрос просто о конверсии 32/64-битных floating point данных в 16 бит fixed point с наименьшими неприяностями. Ну а ежели вы хотите подноготную - нет проблен: делаю дипломный проэкт - разработан определенный алгоритм для аудио, построен, отсимулилрован в Матлабе. Теперь очередь имплементации. Имплементация задана на базе TMS320C5402 DSK, без вариантов. Т.е. 16 бит, fixed point процессор. Я не описывал мои критерии выбора процессора, почему так а не иначе. Просто рпедположим платфрома заранее задана и все. Честно говоря не понял зачем сразу бросаться в атаку на задающего конкретный вопрос не зная подноготной... Кстати насчет "контроля" вычислительной погрешности - тоже интересно...
  18. Вот у вас готов алгоритм DSP, построен и отсимулирован в Матлабе. Пришло время имплементации на 16 битном, fixed point процессоре (скажем C5402). Ессно, встает задача перевода числовых данных/коеффициентов и т.д. в 16 битный, fix point формат стараясь как можно меньше ударить по точности и характеристикам алгоритма. Например, узкополосные IIR фильтры, с полюсами (в Матлабе) близкими к единице (по радиусу). Неточность/сдвиг полюсов в следствии грубой подгонки под 16 бит, fix point может вышибить фильтры из устойчивости и т.д. и т.п. Как вы переводите данные в 16 бит fixed point ? В примерах которые видел, коеффициенты умножали на 1024, брали 4е старшие десятичные цифры (16 бит) и с ними работали. Затем, данные отфильтрованного сигнала нормализировали деля каждое на (float)1024. Правильно ли это ?
  19. Да, логично, но ежели он открыт (насыщен) что его R будет не велико и отношение Rос/Rin соотв. мало, т.е. усиление ОУ - контролируемое и не большое, значит ОУ врядле будет в насыщении. Если-же каким-то образом транзистор окажется в активном режиме (а не в насыщении) - тогда да, его R вполне будет не так уж мал, но все-равно при Rin = 10kOhm усиление ОУ будет контролируемое...
  20. Сорал маленький учебый проэктик - фильтрация сигнала длинным FIRом. Из sources есть один С файл, несколько ассмеблерных (форматирование данных при чтении из файла и записи в файл, а также сама FIR фильтрация), .cmd файл и rts.lib. При build all, в конце (но кажется до линкера) выдается ошибка: >> error: library 'C:\ti\myprojects\Training\First\FIRbuilding\rts.lib', member 'fclose.obj' is of unknown type В С файле есть функции чтения и записи в файл, ессно после открытия и чтения/записи в файл они его закрывают с fclose(поинтер на файл). Наверно ошибка связанна с этой функцией. Это не первый проэктик подобного рода (работа с файлом и т.д.), везде и раньше работал с rts.lib (ибо так было предписано), все было нормально, компилировалось и работало. А тут...черт знает что... Я так поозреваю rts.lib - это какая-то общая стандартная библиотека, посему думаю многие те кто работает с TMS320 (и с С5402/55х) о ней в курсе.. Буду благодарен за намеки на возможную проблему... :cranky:
  21. Че-то мы (или как минимум я) по моему потеряли нить. :) На полож. полуволне на входе - отриц. на выходе. Вследствии заземления substrate (подложка ?) при этом на выходе образуется диод с анодом на земле и катодом на выходе ОУ - диод в приямом включении - вот и получаем -0.6V на выходе. На отриц. полуволне на входе - транзстор в отсечке - на выходе ОУ полож. насыщение. Так ?
  22. Все-таки мне кажется решение данной было приведено выше в постах... Может да а может и нет.. :) Нередко интервьюшные задачки рассчитаны на более глубокое понимание процессов и от кандидата не ожидается четкий 100% ответ в стиле "да/нет" а интересует ход его мысли направление, анализ, посему и задачи могут быть вполне не тривиальны. Досаточно вы покажете что можете анализировать не стандартные ситуации, пусть даже не приходя к однозначному ответу (если вообще таковой будет), это уже говорит в вашу пользу. Часто интервью - вешь очень напряженная психологичеки ибо на са пристально смотрят, что давит неслабо. Толковые интервьюаторы (т.е. инженера с которыми претенденту возможно предствоит работать) учитывают это (они и сами проходили через такое), посему делается весьма разумная скидка на нервы. Лет 5 тому, во время поиска своей второй работы, я интервьюировался одном небольшом start-upе. Там меня пытали 3 человека, поставили у доски в "зале заседаний", дали на бумажке какую-то здоровенную логическую схему (уже не помню что это было) и просили ее перерисовать на доске и найти нет ли там ошибки в логике....рисуя это на доске я постоянны слышал приглушенные смешки за спиной, перешептывания и т.д. что меня конкретно сбивало с толку и 6 глаз сверлящих мне спину. Понятно что я совершенно потерял нить и не смог толком ничего скумекать. Это было мой нихудший experience в тех 10-15 интервью которые проходил за свою карьеру. Нужно отметит - что на счастье такое издевательство случается редко - в основном люди нормальные и не имеют намерения поиздеваться над кандидатов показав ему свой "гений"... Все-таки мне кажется решение данной было приведено выше в постах... Кстати вы можете ради интереса его просимулировать в симуляторе как сделали в другой задачке и посмотреть что все-таки будет... Мне пока не охота ради этосо инсталлировать spice... :) Откуда беру ? Это реальные вопросы на инженерных интервью в разработки в области ASIC/logic design, curcuit/CMOS VLSI design (analog), board design/FPGA и т.д. Я сейчас меняю работу, окончил работу в последней фирме (одновременно оканчиваю своей B.Sc.EE) и сейчас в процессе поиска работы готовясь к интервью. У меня полно друзей/знакомых, и из бывших студентов и более/менее опытных инженеров и молодых инженеров. Многие меняли работу не раз, студенты или выпускники всегда активно ищут. Вот и многие записывают вопросы им заданные на интервью, те кто помнит ответы/решения или свои версии решения (правильные или нет) - их стараются записывать после интервью. Так насобиралась целая подборка вопросов.
  23. Чего-то я не совсем понимаю :cranky: у MOSFETа gate полностью изолирован пленкой оксида (посему и управление через gate полем а не током) посему сопротивление gate-source либо gate-drain измеряется сотнями мегаом и более, откуда-же эти кОмы ? Или я вас неправильно понял ?