Перейти к содержанию
    

PetrovichKR

Участник
  • Постов

    30
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о PetrovichKR

  • Звание
    Участник
    Участник
  1. Да, у них даже описание регистров SPI на эту микросхему только по NDA. А качество их кода с гитхаба, как на Си, так и на Verilog, оставляет желать лучшего... Часть информации есть еще в вики AD, но конкретно по согласованию уровней при внешнем тактировании там ничего нет.
  2. CP2105 и RS485

    Доброго времени суток! Возникла следующая проблема при прошивке преобразователя интерфейсов USB->2xUART CP2105 от Silicon Labs: микросхема отказывается записывать бит, отвечающий за настройку одной из ее ног (GPIO.1_ECI/DSR_ECI) в качестве ноги управления направлением передачи драйвера RS485. Для прошивки микросхемы использовалась утилита CP21xx Customization Utility, были сделаны попытки под операционными системами Windows 7 и Ubuntu 13.10. На попытку изменить свойство пина ECI GPIO1 Auto Mode Type на значение 1 - RS485 и записи настроек в устройство, утилита выдает следующее сообщение: CP2105 FAILED write of CP2105PortConfigGroup: PinConfig [pinConfig=[1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0], resetValue, suspendValue, useECISuspendValues=FEFE, useSCISuspendValues=0, invertECISuspend=0, invertSCISuspend=1 enableWeakPullUp=1, rs485Invert=1] К ноге NC/DCD_ECI/VPP подключен конденсатор 4,7 мкФ, как и требуется для возможности прошивки микросхемы. Проблема усугубляется тем, что данная микросхема однократно программируемая. Официальный форум компании Silicon Labs молчит по данному вопросу. Кто-нибудь сталкивался с подобной проблемой или знает ее решение? Документация и инструменты: Даташит Application note по программированию микросхем CP21xx Утилита CP21xx Customization Utility Заранее спасибо
  3. Да ничего такого нет. Данные при синтезе преобразуются в нужный тип, и, соответственно, будут синтезироваться компаратор и инкремент. Тут наверняка подключены нужные для этого библиотеки. Я считаю, что использовать std_logic_vector здесь правильнее, поскольку можно явно задать разрядность счетчика, и сразу видно, какой сигнал описывает триггерные ячейки.
  4. Доброго времени суток! При проектировании радиотракта навигационного приемника, встала задача покупки необходимых фильтров на ПАВ. С нахождением фильтров для GPS L1 (1575,42 МГц) проблем нет, они есть в наличии в любом крупном магазине. С фильтрами для GPS L2 (1227,6 МГц), ГЛОНАСС L1 (1602 МГц) и L2 (1246 МГц) ситуация прямо противоположная: поиск дал очень мало результатов. Может быть кто подскажет, где можно найти такие фильтры?
  5. Вам нужна линейная ФЧХ? Я думаю, лучше использовать КИХ-фильтры в таком случае. Для DSP у меня есть реализация КИХ-фильтра на ассемблере, для процессора ADSP-2181, но вряд ли она здесь подойдет. Есть еще реализация КИХ-фильтра на Си, я ее недавно постил в одной из веток форума.
  6. Пределы эти ограничиваются лишь амплитудой данных сигналов. Собственно, их амплитуды и несут в себе полезную информацию. А частоты составляющих I и Q должны быть одинаковыми, точно так же, как и сдвиг фаз между ними должен быть ровно 90 градусов. Варьируя амлитудой этих составляющих, мы осуществляем амплитудно-фазовую манипуляцию, коей и является QAM.
  7. Реализация КИХ-фильтрации на архитектуре AVR. Числа в формате 1.1.14 //Порядок НЦФ #define N 22 //Сдвиг умножителей НЦФ #define SHIFT 14 //Весовые коэффициенты НЦФ #define FIR_COEFFS \ {\ (int)(-0.02144952651096*16384),\ (int)(-0.05675564761031*16384),\ (int)(-0.00722412687546*16384),\ (int)(-0.01824005662087*16384),\ (int)( 0.00295576469554*16384),\ (int)( 0.02091815981809*16384),\ (int)( 0.04723483351816*16384),\ (int)( 0.07439211184117*16384),\ (int)( 0.10087221829014*16384),\ (int)( 0.12272427450964*16384),\ (int)( 0.13727372353230*16384),\ (int)( 0.14230086051190*16384),\ (int)( 0.13727372353230*16384),\ (int)( 0.12272427450964*16384),\ (int)( 0.10087221829014*16384),\ (int)( 0.07439211184117*16384),\ (int)( 0.04723483351816*16384),\ (int)( 0.02091815981809*16384),\ (int)( 0.00295576469554*16384),\ (int)(-0.01824005662087*16384),\ (int)(-0.00722412687546*16384),\ (int)(-0.05675564761031*16384),\ } typedef struct //Сигнальная память с указателем { int X[N]; unsigned char offset; } memory; //НЦФ без сдвига сигнальной памяти int fir(int x, memory *mem) { static const int h[N] PROGMEM = FIR_COEFFS; //Весовые коэффициенты int out = 0; //Выходная переменная int *X = mem->X; //Указатель на сигнальную память unsigned char offset = mem->offset; //Смещение сигнальной памяти X[offset] = x; //Загрузка текущего отсчета в сигнальную память for(unsigned char i = 0, j = offset; i < N; i++, j++) //Цикл ДВС { out += (int) pgm_read_word(&h[i]) * ((long) X[j]) >> SHIFT; //Операция умножения с накоплением if(j == N - 1) j = -1; //Закольцовывание сигнальной памяти } mem->offset = offset? offset - 1: N - 1; //Сдвиг смещения сигнальной памяти return out; } Конкретно в цифровой фильтрации, исключение переполнений достигается путем масштабирования. Насчет БПФ не знаю.
  8. А разве не косинус это синфазная составляющая, а синус квадратурная? Вроде как, синус отстает от косинуса по фазе на 90 градусов. И преобразователь Гильберта вносит фазовый сдвиг на 90 градусов со знаком минус, то бишь задержку по фазе. Если я не прав, поправьте меня, пожалуйста.
  9. То есть, шаг моделирования и шаг дискретизации никоим образом не связаны?
  10. С параметром start time играться не пробовали? А чем отличается шаг моделирования от шага дискретизации?
  11. Да, я с этим согласен. Но взятие модуля, ровно как и амлитудное ограничение для получения из синуса меандра - операции нелинейные. Поэтому и возникает наложение спектров. Но я не думаю, что у автора темы стоит настолько большой шаг по времени при моделировании, чтобы проявлялся этот эффект. Я сомневаюсь, что он он там вообще задается.
  12. Нет, не следует. Спектр дискретного сигнала периодичен и неограничен. Но основная полоса частот дискретного сигнала ограничена и занимает область от нуля до половины частоты дискретизации (от -fд/2 до fд/2, если быть до конца точным). Где здесь может присутствовать оцифровка и алиасинг, если БПФ берется от исходного дискретного сигнала? Если бы перед вычислением БПФ выполнялось понижение частоты дискретизации - тогда другое дело. Здесь нет алиасинга, и быть не может. У каждой гармоники будут разные периоды, потому что частоты разные. Поэтому, само собой, в окно будет влазить разное количество периодов для разных гармоник. Для второй гармоники будет 16, для третьей 24 и т. д. Достаточно соблюсти условие, что в окно влазит целое число периодов основной гармоники сигнала, то есть целое число периодов самого сигнала. Но если предположить что представленный в окне сигнал непериодичен, то пропадают сами понятия гармоник. Спектр такого сигнала является непрерывным, что мы и наблюдаем на спектрограмме с точностью до бинов БПФ. Всё же, их конечное количество, потому что сигнал дискретный.
  13. Нет, здесь нет размазывания спектра, скорее всего. Для анализа берутся ровно 8 периодов сигнала. Этот параметр, судя по всему, даже задается отдельно в окошке Number of cycles. Хотя действительно очень похоже на это. Еще непонятно, как здесь вычисляется ДПФ, где задается число точек, весовая функция и т. п. Может, следует поиграться с параметром fundamental frequency... Но я больше склоняюсь к своему первому варианту, либо к варианту, который предложил Самурай. Здесь нет никакой оцифровки, аналогового сигнала и алиасинга. Это модель, значит она уже дискретная изначально. На временной диаграмме представлен уже дискретный сигнал.
  14. Я сделаю предположение, что это связано с Вашим сигналом. Если присмотреться внимательнее, то видно что он непериодический. Форма сигнала в первом и последем периодах визуально отличается. Спектр непериодического сигнала непрерыввен. Очевидно, на этом участке не завершился переходной процесс. Попробуйте увеличить значение начала окна анализа.
×
×
  • Создать...