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

    

diwil

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Местный
  • День рождения 05.06.1968

Контакты

  • ICQ
    2658389

Информация

  • Город
    Санкт-Петербург

Посетители профиля

3 531 просмотр профиля
  1. для оссцилла слишком хорошо! :) на анализаторе, кстати, у меня получается полная фигня (ригол), а вто записанные данные - хорошо. Завтра картинку сделаю
  2. похоже, все-таки, что-то не то с ЦАПом. из картинок - или где-то потерялось 6дБ, или такт слишком шумный, или двучастотный сигнал не совсем "чистый".
  3. благодарю за ссылку. Однако, мне бы конкретный синтезатор...
  4. Здравствуйте. Стоит задача застабилизировать частоту генератора CVHD-950 VCXO 122.88 Mhz. Что имеем: 1. собственно CVHD-950 VCXO, джиттер 40фс, фазовый шум: 1kHz -140 dBc/Hz 10kHz -155 dBc/Hz 100kHz -164 dBc/Hz 1MHz -166 dBc/Hz 2. Стабильный генератор (10^-11) 10 Mhz:10Hz -125dBc/Hz100Hz -145dBc/Hz1KHz -150dBc/Hz10KHz -155dBc/Hz100KHz -160dBc/Hz Нужен синтезатор, который не испортит генератор. Желательно со своей ROM на борту, абы не вешать еще и контроллер сбоку. Кто что посоветует? Заранее благодарен
  5. Да, Роб. Спасибо! вопрос именно в этом. Такое чуство, что у ква это криво.
  6. Уважаемые, скажите, пожалуйста, правильно ли квартус реагирует на задание параметров (А0, А1... ) как в коде ниже: module blakmanharris #( parameter DATA_WIDTH = 32, parameter OUT_WIDTH = 28 ) ..... localparam [OUT_WIDTH -1 : 0] A0 = 0.35875 * (2**(OUT_WIDTH-2) - 0) * 1.99; wire [DATA_WIDTH -1 : 0] A[1] = (2**(DATA_WIDTH-2) - 0) * 0.48829; wire [DATA_WIDTH -1 : 0] A[2] = (2**(DATA_WIDTH-2) - 0) * 0.14128; wire [DATA_WIDTH -1 : 0] A[3] = (2**(DATA_WIDTH-2) - 0) * 0.01168; .... reg [5:0] cnt = 0; .... assign XX = A[cnt]; .... endmodule при этом мультисим работает правильно, а вот в железе создается впечатление, что все А - нули. При этом все разрядности в коде согласованы. мне надо вызывать это в двух местах, причем первый раз с разрядностью большой, а второй с маленькой. Поэтому не хочу задавать цифры явно. Что я не так делаю? А так вообще можно делать? И еще вопос - что или какую либу нужно прицепить к мультисиму чтобы можно было пользоваться функциями типа $sin, $cos ? Заранее благодарен.
  7. о! примного благодарен! получилось! (не могу, правда сказать, что с первого раза, но получилось) И получилось так (это еще один ворос): Я объявляю мега-ром с данными CONTENT BEGIN 0000 : 0000012f; 0001 : 00000045; 0002 : 00000028; 0003 : ffffffec; ит.д. , но самые последние коэффициенты - нули. а так же ром2 с данными: FFFFFC 000001 000002 и т.д. и такой код: always @(posedge clock) address <= address + 1; filter_rom rom (address,clock,q); always @(posedge clock) zz <= q; reg [23:0] rom2[215:0]; initial $readmemh("coefs1024-24bits.txt", rom2); always @(posedge clock) y1 <= rom2[address]; на выходе получается: Правильно ли я понимаю, что для того, чтобы выровнять "фазы" мега-рома и ром2 (регистр zz в коде выше) я должен написать-добавить конвеер в симуляторе (мне так проще) типа такого: always @(posedge clock) y1 <= rom2[address]; always @(posedge clock) y2 <= y1; always @(posedge clock) yy <= y2; и тогда (опять же в модельсиме) получится т.е. zz и yy синхронны. Но тогда возникает еще вопрос - если я объявляю RAM и квартус делает ее, по сути дела, асинхронной, (при этом данные в ончип памяти), то можно ли как-либо сконфигурить мега ром, чтобы она вела себя как reg [23:0] rom2[215:0]; (при этом если я пишу как строчкой выше, при этом нет никакого асинхронного доступа и даже записи, то он упорно не хочет размещать коэффициенты в памяти) ? Заранее благодарю.
  8. другой вопрос - если я пишу так (это двухпортовая рам): (* ramstyle = "M9K, no_rw_check" *) reg signed [DATA_IN_SIZE-1:0] delay [511:0]; ... always @(posedge clk) ... dd <= delay[rdaddr]; ... и квартус это запихивает действительно в память, то будет ли соответствие чтению из памяти в симутяторе и в железе (такт порядка 8мгц, но это наверное, не важно)?
  9. спсибо за ответ! Но квартус 18 не дает скомпилировать либы и говорит, что все они уже есть в модельсиме.
  10. и, кстати да, почему с (* ramstyle = "M9K, no_rw_check" *) (и множеством других комбинаций) память на регистрах квартус оставляет?
  11. сброс для коэффициента. наверное и не нужен. про латентность я не нашел. кто по существу может ответить?
  12. Здравствуйте, уважаемве. Я в квартусе 18 создаю мегафункцию ROM - однопортовую, простую с инициализированой памятью. Квартус не хочет автоматически создавать ром в on-chip memory, за сим приходится использовать мегу. Потом я достаю данные из нее как: wire signed [32-1 : 0] coefsC; rom470 rom(caddr, clk,coefsC); always @(posedge clk) if (reset_n == 0) cc <= 0; else cc <= coefsC; и мне оч хочется это в модельсиме просимулировать. Я не знаю как квартуса мегу впихнуть в модельсим, за сим я пишу так: reg signed [32-1 : 0] coefsC [0:479]; initial $readmemh("coefs470.txt", coefsC); always @(posedge clk) if (reset_n == 0) cc <= 0; else cc <= coefsC[caddr]; Будет ли второй, "ручной" вариант, эквивалентен мегафункции в железе. Заранее благодарен
  13. Уважаемые господа, у меня возникла задача передать данные по воздуху. Ограничения для канала и протокола (обусловленные дизайном системы вообще) такие: 1. Частота дискретизации выходного потока 8кГц 2. Длина фрейма, с которым можно работать - 8мс (64 отсчета) 3. Динамик хреновый 4. Микрофон еще хуже 5. Шума, наверное мало и он , в основном, низкочастотный 6. А вот эха (реверберации) может быть много - мне прислали запись с длиной эха до 200мс (по уровню -13дБ от исходного) Первое, что мне пришло в голову, так это сделать ОФДМ на 4х частотах (1.5кГц, 2, 2.5 и 3 - гармоники друг в друга не попадают). И оно заработало при С/Ш аж -6 дБ (правда с рида соломовой 11,15 коррекцией) Однако, при наличии даже малого эха (длина символа 8мс), все к чертям разваливается. Я не спец в ОФДМ, но почитав про межсимвольную интерференцию и т.д. и вообще, у меня возникло несколько вопросов: 1. Насколько я понимаю межсимвольный интервал должен быть больше длины интерференции. Т.е. в моем случае более 200мс. Это так? 2. Я не совсем понял что такое channel equalization. Это калибровка фаз и амплитуд в ссответствующих каналах? Или как раз борьба с эхом? 3. При наличии clock skew какой длины и как часто надо вставлять сиинхропоследовательность (типа калиброваться)? Я посмотрел кто что делает и ничё сильно разумного не нашел. Ну да, передают там по 100 бит в секунду . но тогда можно в моем случае использовать М-последовательность и коррелятор в приемнике. Известные алгоритмы модемов я тоже не особо представляю как использовать. Подскажите, плз. Может есть какое-то решение?
  14. Цитата(Mt_ @ Jan 24 2018, 10:48) Да, в шлем задувает. Он не герметичный. Очень интересная идея, но пока я не видел хорошей реализации, которая давала бы приемлимое качество Да. Кроме ветрозащиты, как показала практика, нужна еще и виброзащита. Т.к. вибрации шлема от набигащего потока высоки. Реализация ее тоже вопрос. А шлем, случаем, не кисс или куки?
  15. Цитата(Mt_ @ Jan 20 2018, 12:10) Были сделаны первые практические прикидки. Результаты: ветер полностью перегружает микрофоны, от речи там остается очень мало. Ларингофоны чуть лучше, но с разборчивостью проблемы (сильно завалена ВЧ голоса). Разборчивость определяется тестовой группой. Нужно, чтобы любой, даже неподготовленный человек, смог использовать наше устройство. Да. ну.. да. и микрофоны тоже. но можно посмотреть это - http://alango.com/technologies-awnr.php