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

Lutovid

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость
    Частый гость
  • День рождения 17.05.1992

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

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

2 706 просмотров профиля
  1. Всем привет. Возник вопрос при использовании векторных генераторов разных производителей. Есть такая опция генерации AWGN. И у этой опции зачастую есть параметр полосы. То есть мы можем ограничить полосу генерируемого шума. Вот пример: https://scdn.rohde-schwarz.com/ur/pws/dl_downloads/dl_common_library/dl_manuals/gb_1/s/smbv/SMBV100A_OperatingManual_en_18.pdf стр. 311 Scalable low-pass filters are used to produce a noise power with both a broad dynamic range and a broad bandwidth range (from 1 kHz to 60 MHz). И я не понимаю, что это за фильтр такой, который может от 60MHz до 1kHz менять свою полосу пропускания еще и с маленьким шагом. То есть вот у нас есть AWGN с плоским спектром от -Fs/2 до Fs/2, мы хотим от него получить например 1/60000 часть. Я не супер про в этой области, но мне знакомы такие варианты: 1)FIR интерполятор - для случая узкой полосы будет неадекватно много коэффициентов. 2)CIC интерполятор - разоримся на FIR компенсаторе. 3)Farrow на основе интерполяции Лагранжа - мой первый опыт с ним в моделях - матлаб позволяет максимум 4 порядок для своей внутренней функции, в итоге получается АЧХ с боковиками на 30дБ ниже основного колокола + в итоге полученный шум будет иметь далеко не прямоугольный спектр. При чем это как для 3, так для 4 порядка. clear all close all frc = dsp.FarrowRateConverter(); frc.PolynomialOrder=3; frc.InputSampleRate = 3; frc.OutputSampleRate = 7; figure; [h,f] = freqz(frc); plot(f,20*log10(abs(h))) hold on frc.PolynomialOrder=4; [h,f] = freqz(frc); plot(f,20*log10(abs(h))) frc.PolynomialOrder=2; [h,f] = freqz(frc); plot(f,20*log10(abs(h))) 4)Какая-то хитрая схема ФВЧ+DDS+ФНЧ+DDS, но я что-то не пойму как эту схему сделать гибкой и чтоб зеркала не вылезли. Мне слабо верится, что это как-то решается аналоговыми перестраиваемыми YIG фильтрами например. Буду рад любой полезной информации, спасибо!
  2. https://support.xilinx.com/s/question/0D52E00006hpi7ySAA/microblaze-dual-ethernet-problem-with-lwip?language=en_US Кто искал ответ на тот же вопрос что и я - в примере выше dma, но с fifo то же самое
  3. https://lwip.fandom.com/wiki/Network_interfaces_management Как я понимаю если у нас есть уже один рабочий netif, то его не должно выбивать добавление нового Но я вижу обратное static struct netif server_netif; static struct netif server_netif2; struct netif *echo_netif; struct netif *echo_netif2; XUartLite UartLite; struct ip_addr ipaddr, netmask, gw; struct ip_addr ipaddr2, netmask2, gw2; /* the mac address of the board. this should be unique per board */ unsigned char mac_ethernet_address[] = { 0x00, 0x0a, 0x35, 0x00, 0x01, 0x02 }; unsigned char mac_ethernet_address2[] = { 0x00, 0x0a, 0x35, 0x00, 0x01, 0x03 }; void ProcUartCommand(u8 inp) { if(inp == '1') { xil_printf("adding netif\n\r"); if (!xemac_add(echo_netif2, &ipaddr2, &netmask2, &gw2, mac_ethernet_address2, XPAR_AXI_ETHERNET_1_BASEADDR)) { xil_printf("Error adding N/W interface\n\r"); } } } int main() { u8 UARTRecvBuffer[UART_BUFFER_SIZE]; u8 ReceivedCount = 0; XUartLite_Initialize(&UartLite, XPAR_UARTLITE_0_DEVICE_ID); echo_netif = &server_netif; echo_netif2 = &server_netif2; /* Define this board specific macro in order perform PHY reset on ZCU102 */ init_platform(); /* initliaze IP addresses to be used */ IP4_ADDR(&ipaddr, 192, 168, 7, 10); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gw, 192, 168, 7, 1); IP4_ADDR(&ipaddr2, 192, 168, 7, 11); IP4_ADDR(&netmask2, 255, 255, 255, 0); IP4_ADDR(&gw2, 192, 168, 7, 1); print_app_header(); lwip_init(); /* Add network interface to the netif_list, and set it as default */ if (!xemac_add(echo_netif, &ipaddr, &netmask, &gw, mac_ethernet_address, XPAR_AXI_ETHERNET_0_BASEADDR)) { xil_printf("Error adding N/W interface\n\r"); return -1; } // if (!xemac_add(echo_netif2, &ipaddr2, &netmask2, // &gw2, mac_ethernet_address2, // XPAR_AXI_ETHERNET_1_BASEADDR)) { // xil_printf("Error adding N/W interface\n\r"); // return -1; // } netif_set_default(echo_netif); /* now enable interrupts */ platform_enable_interrupts(); /* specify that the network if is up */ netif_set_up(echo_netif); print_ip_settings(&ipaddr, &netmask, &gw); /* start the application (web server, rxtest, txtest, etc..) */ start_application(); /* receive and process packets */ while (1) { if (TcpFastTmrFlag) { tcp_fasttmr(); TcpFastTmrFlag = 0; } if (TcpSlowTmrFlag) { tcp_slowtmr(); TcpSlowTmrFlag = 0; } ReceivedCount += XUartLite_Recv(&UartLite,UARTRecvBuffer,UART_BUFFER_SIZE); if (ReceivedCount != 0) { ReceivedCount=0; ProcUartCommand(UARTRecvBuffer[0]); } xemacif_input(echo_netif); transfer_data(); } /* never reached */ cleanup_platform(); return 0; } Вот мой участок кода, который я правлю
  4. Всем привет. У меня возникла необходимость подключить 2 axi ethernet subsystem к одному microblaze. С одним я работал, а вот с двумя не доводилось. Решил танцевать от примера echo, но пока меня интересует только ответ на ping. Подключил оба интерфейса. Запустил пример - все пингуется. Как только добавляю строки if (!xemac_add(echo_netif2, &ipaddr2, &netmask2, &gw2, mac_ethernet_address2, XPAR_AXI_ETHERNET_1_BASEADDR)) { xil_printf("Error adding N/W interface\n\r"); return -1; } Что бы добавить новый netif в lwip, отваливается и первый интерфейс. Кто это реализовывал? может у меня есть какое-то принципиальное недопонимание? Любой подсказке буду рад
  5. Удалось. В консоли более подробные описания ошибок оказались, так как это проблемы сборки именно библиотеки(до этого смотрел просто эррор репорт) - нужно было еще в паре мест make файлы поправить.
  6. Всем привет! Появилась необходимость поднять snmp агент на microblaze. Я полазил в lwip, который в xsdk подключается - там есть функции snmp, но такой опции в gui bsp settings нет. Среда Vivado17.1/xsdk17.1 Что бы включить этот функционал надо задефайнить LWIP_SNMP в lwipopts.h. Но это автогенерируемый файл - пришлось править скрипт tcl создания этого хедера(https://support.xilinx.com/s/article/35787?language=en_US - вот по этому примеру добавил этот дефайн) прямо в папке библиотеки там где установлен xsdk После того как дефайн прошел - повалились ошибки: cannot find -llwip4 main_processing C/C++ Problem expected expression before ';' token standalone_bsp_0 line 536 C/C++ Problem Кто этот функционал включал? Может этот функционал был частично обрезан? Или я просто делаю что-то не так? P/S запуллил из гита соответствующую версию lwip/ Ничего там не выпилино вроде как, кроме ppp
  7. Ну там действительно должен иметься высокодобротный фильтр пилота, его удобно делать через IIR, но задержки нужно будет конечно учитывать. В общем, можно сделать вывод что функционал не доступен пока, как я понимаю...
  8. Привет! Возник вопрос по реализации стерео модулятора/демодулятора. На базе примера из help https://www.mathworks.com/help/comm/ref/comm.fmbroadcastmodulator-system-object.html реализовал коротенький скрипт: clear all; [y,Fs] = audioread('stereo_file.mp3'); % soundsc(y, Fs) AirFs = 441000; fmbMod = comm.FMBroadcastModulator('AudioSampleRate',Fs, ... 'SampleRate',AirFs, 'Stereo', true); fmbDemod = comm.FMBroadcastDemodulator( ... 'AudioSampleRate',Fs, ... 'SampleRate',AirFs,'PlaySound',true, 'Stereo', true); audioData = y(1:AirFs*2, 1:2); modData = fmbMod(audioData); demodData = fmbDemod(modData); В результате выполнения проигрывается моно сигнал(взял запись теста стереоэффекта с поочередным появлением звука то в одном канале, то в другом). Если убрать комментарий и проиграть soundsc(y, Fs), то стереоэффект есть. Еще информация - в исходном стереосигнале есть большая разница между сигналами R и L, после демодуляции разница между каналами на 4 порядка ниже. Если использовать пример из хелпа, то он не репрезентативный(пример с RBDS) так как там хоть и стоит флаг stereo, но в исходном сигнале нет стереоэффекта(rbds_capture_47500.wav) Так же пробовал повторить в симулинке - там такая же проблема. Более того если построить спектр от моделированного сигнала, я ожидал увидеть нечто похожее на картинку из help - то есть L+R, L-R и пилот на 19кГц, я же такой картины не вижу, то есть явно есть какая-то проблема с модуляцией. Помогите пожалуйста разобраться. Вот тут этот же вопрос задал, но может на этом форуме мне быстрее помогут. Извините за копипаст https://hub.exponenta.ru/quest/fmbroadcastmodulator-vopros-po-stereo-demodulyatsii680
  9. Вдруг будет полезно - в Vivado в Language templates есть макросы для CDC xpm_cdc_single, xpm_cdc_array_single, xpm_cdc_handshake - для них отдельно задавать тайминг констрэйнты не нужно, если их функционал устраивает.
  10. До этого проводил тесты с флешкой 16 гигов fat 32, сейчас 4Гига fat16 - тест прошел, спасибо!
  11. там написано * To test with different logical drives, drive number should be mentioned in * both FileName and Path variables. By default, it will take drive 0 if drive * number is not mentioned in the FileName variable. Раз я тестирую SD0, то по идее не нужно задавать имя "0:/Test.bin" А Path указан корректно TCHAR *Path = "0:/"; Я отформатировал с компа sd под fat32. Надо попробовать fat16, но мне как-то это не пришло в голову, раз не написано какой fat
  12. Привет всем! Возникла проблема с sd картой. Решил в качестве тестов использовать пример от xilinx (прикрепил файл). Плата zc702. Беру в sdk пребилд hw_platform для zc702, в bsp ставлю галку на использование библиотеки xilffs, в качестве исходников софта использую этот файл. По идее, я полагал, что при настолько дефолтных условиях пример должен работать из коробки. В итоге фэйлится на f_write - возвращает FR_DISK_ERR. После ряда тестирований начало фэйлиться на f_mkfs - возвращает FR_NOT_READY. Я грешу на то, что SD карта не поддерживается, но линукс с нее стартовал когда-то на этой же плате. Подскажите пожалуйста, что может быть причиной такого поведения? P/S Ключ защиты записи на самой карте не стоит, переключатели бута ставил и в положение загрузки с флешки и в положение загрузки по джтаг - это не изменило картины. xilffs_polled_example.c
  13. У меня есть возможность оптику из tx в rx в sfp ткнуть. Попробую спасибо,
  14. Всем привет! Возникла проблема с переводом проекта с меди 1000BASE-T на одномодовую оптику 1000BASE-LX Отладочный проект состоит из микроблэйза, ядра axi ethernet subsystem и ядра ethernet pcs/pma - стандартные ксаевские. Дифпара от трансиверов идет на sfp. Внешнего фая нет, есть только iic для общения с sfp. Я полагал, что поддерживаться должна как медь так и оптика, стандарт в pcs/pma выбран sgmii, линк всегда 1Гигабит для обоих режимов. В итоге для оптики линк поднимается, но данных на gmii с pcs/pma никаких не наблюдается кроме интерфрэйм гэпа(BC50). Подскжите пожалуйста в какую сторону копать? Возможно нужна специфическая инициализация через iic? или для одномодовой оптики есть свое кодирование, fec какой-нибудь?
×
×
  • Создать...