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

7777777alex

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

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

  • Посещение

Репутация

0 Обычный

Информация о 7777777alex

  • Звание
    Участник
    Участник

Контакты

  • Сайт
    Array
  • ICQ
    Array

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

1 548 просмотров профиля
  1. Может кому поможет. Проблема все еще жива. На днях столкнулся с ней. Стоит centos 7 + Matlab2020b + gcc 7 Все работало месяца 4. А потом началось выше описанное. Никакие способы не помогали. (переустановка, пересборка конфигов, очистка кешей) Странным образом помогало на время выключать сетевое соединение. Проблема решилась накатом update (он не завершился, повис на надписи Installation .. я подождал минут 15, убедился что файлы матлаба обновились, что сеть больше не активна - и грохнул процесс) Сломалась таблетка после обновления, пролечил точно также как и первый раз. После запуска матлаба он опять заработал ( хелп открывается, в симулинке меню бар - виден) Повторно пока не ломался. Согасен с товарищем nice_vladi что ломается в момент некорректного завершения матлаба. Я перед багой выключил свой по удаленке по VNC и возможно он завершился не верно.
  2. Уважаемый krux. Я так понимаю вы работали, и не могли бы тогда пояснить. Есть у них такой модуль module noc_block_ddc #( parameter NOC_ID = 64'hDDC0_0000_0000_0000, parameter STR_SINK_FIFOSIZE = 11, //Log2 of input buffer size in 8-byte words (must hold at least 2 MTU packets) parameter MTU = 10, //Log2 of output buffer size in 8-byte words (must hold at least 1 MTU packet) parameter NUM_CHAINS = 2, parameter COMPAT_NUM_MAJOR = 32'h2, parameter COMPAT_NUM_MINOR = 32'h0, parameter NUM_HB = 3, parameter CIC_MAX_DECIM = 255 )( input bus_clk, input bus_rst, input ce_clk, input ce_rst, input [63:0] i_tdata, input i_tlast, input i_tvalid, output i_tready, output [63:0] o_tdata, output o_tlast, output o_tvalid, input o_tready, output [63:0] debug ); Вместо которого пока в теории хотел бы воткнуться. в нем есть 1. noc_shell 2. axi_wrapper 3. axi_tag_time 4. axi_rate_change 5. ddc С ddc все понятно. С остальной концепцией пока только примерно. Особенно вопрос с модулями noc_shell, axi_tag_time В какой мануал можно ткнуться? если таковой имеется или может своими словами скажите, по опыту? Благодарю Коды ниже. noc_shell #( .NOC_ID(NOC_ID), .INPUT_PORTS(NUM_CHAINS), .OUTPUT_PORTS(NUM_CHAINS), .STR_SINK_FIFOSIZE({NUM_CHAINS{STR_SINK_FIFOSIZE[7:0]}}), .MTU({NUM_CHAINS{MTU[7:0]}})) noc_shell ( .bus_clk(bus_clk), .bus_rst(bus_rst), .i_tdata(i_tdata), .i_tlast(i_tlast), .i_tvalid(i_tvalid), .i_tready(i_tready), .o_tdata(o_tdata), .o_tlast(o_tlast), .o_tvalid(o_tvalid), .o_tready(o_tready), // Computer Engine Clock Domain .clk(ce_clk), .reset(ce_rst), // Control Sink .set_data(set_data), .set_addr(set_addr), .set_stb(set_stb), .set_time(set_time), .set_has_time(set_has_time), .rb_stb(rb_stb), .rb_data(rb_data), .rb_addr(rb_addr), // Control Source .cmdout_tdata(cmdout_tdata), .cmdout_tlast(cmdout_tlast), .cmdout_tvalid(cmdout_tvalid), .cmdout_tready(cmdout_tready), .ackin_tdata(ackin_tdata), .ackin_tlast(ackin_tlast), .ackin_tvalid(ackin_tvalid), .ackin_tready(ackin_tready), // Stream Sink .str_sink_tdata(str_sink_tdata), .str_sink_tlast(str_sink_tlast), .str_sink_tvalid(str_sink_tvalid), .str_sink_tready(str_sink_tready), // Stream Source .str_src_tdata(str_src_tdata), .str_src_tlast(str_src_tlast), .str_src_tvalid(str_src_tvalid), .str_src_tready(str_src_tready), // Stream IDs set by host .src_sid(src_sid), // SID of this block .next_dst_sid(next_dst_sid), // Next destination SID .resp_in_dst_sid(resp_in_dst_sid), // Response destination SID for input stream responses / errors .resp_out_dst_sid(resp_out_dst_sid), // Response destination SID for output stream responses / errors // Misc .vita_time(64'd0), .clear_tx_seqnum(clear_tx_seqnum), .debug(debug)); axi_wrapper axi_wrapper #( .SIMPLE_MODE(0), .MTU(MTU)) axi_wrapper ( .bus_clk(bus_clk), .bus_rst(bus_rst), .clk(ce_clk), .reset(ce_rst), .clear_tx_seqnum(clear_tx_seqnum[i]), .next_dst(next_dst_sid[16*i+15:16*i]), .set_stb(set_stb_int), .set_addr(set_addr_int), .set_data(set_data_int), .i_tdata(str_sink_tdata[64*i+63:64*i]), .i_tlast(str_sink_tlast[i]), .i_tvalid(str_sink_tvalid[i]), .i_tready(str_sink_tready[i]), .o_tdata(str_src_tdata[64*i+63:64*i]), .o_tlast(str_src_tlast[i]), .o_tvalid(str_src_tvalid[i]), .o_tready(str_src_tready[i]), .m_axis_data_tdata(m_axis_data_tdata), .m_axis_data_tlast(m_axis_data_tlast), .m_axis_data_tvalid(m_axis_data_tvalid), .m_axis_data_tready(m_axis_data_tready), .m_axis_data_tuser(m_axis_data_tuser), .s_axis_data_tdata(s_axis_data_tdata), .s_axis_data_tlast(s_axis_data_tlast), .s_axis_data_tvalid(s_axis_data_tvalid), .s_axis_data_tready(s_axis_data_tready), .s_axis_data_tuser(s_axis_data_tuser), .m_axis_config_tdata(), .m_axis_config_tlast(), .m_axis_config_tvalid(), .m_axis_config_tready(), .m_axis_pkt_len_tdata(), .m_axis_pkt_len_tvalid(), .m_axis_pkt_len_tready()); axi_tag_time axi_tag_time #( .NUM_TAGS(1), .SR_TAG_ADDRS(SR_FREQ_ADDR)) axi_tag_time ( .clk(ce_clk), .reset(ce_rst), .clear(clear_tx_seqnum[i]), .tick_rate(16'd1), .timed_cmd_fifo_full(timed_cmd_fifo_full), .s_axis_data_tdata(m_axis_data_tdata), .s_axis_data_tlast(m_axis_data_tlast), .s_axis_data_tvalid(m_axis_data_tvalid), .s_axis_data_tready(m_axis_data_tready), .s_axis_data_tuser(m_axis_data_tuser), .m_axis_data_tdata(m_axis_tagged_tdata), .m_axis_data_tlast(m_axis_tagged_tlast), .m_axis_data_tvalid(m_axis_tagged_tvalid), .m_axis_data_tready(m_axis_tagged_tready), .m_axis_data_tuser(m_axis_tagged_tuser), .m_axis_data_tag(m_axis_tagged_tag), .in_set_stb(set_stb_int), .in_set_addr(set_addr_int), .in_set_data(set_data_int), .in_set_time(set_time_int), .in_set_has_time(set_has_time_int), .out_set_stb(out_set_stb), .out_set_addr(out_set_addr), .out_set_data(out_set_data), .timed_set_stb(timed_set_stb), .timed_set_addr(timed_set_addr), .timed_set_data(timed_set_data)); // Hold off reading additional commands if internal FIFO is full assign rb_stb[i] = ~timed_cmd_fifo_full; axi_rate_change axi_rate_change #( .WIDTH(33), .MAX_N(MAX_N), .MAX_M(1), .SR_N_ADDR(SR_N_ADDR), .SR_M_ADDR(SR_M_ADDR), .SR_CONFIG_ADDR(SR_CONFIG_ADDR)) axi_rate_change ( .clk(ce_clk), .reset(ce_rst), .clear(clear_tx_seqnum[i]), .clear_user(clear_user), .src_sid(src_sid[16*i+15:16*i]), .dst_sid(next_dst_sid[16*i+15:16*i]), .set_stb(out_set_stb), .set_addr(out_set_addr), .set_data(out_set_data), .i_tdata({m_axis_tagged_tag,m_axis_tagged_tdata}), .i_tlast(m_axis_tagged_tlast), .i_tvalid(m_axis_tagged_tvalid), .i_tready(m_axis_tagged_tready), .i_tuser(m_axis_tagged_tuser), .o_tdata({nc,s_axis_data_tdata}), .o_tlast(s_axis_data_tlast), .o_tvalid(s_axis_data_tvalid), .o_tready(s_axis_data_tready), .o_tuser(s_axis_data_tuser), .m_axis_data_tdata({sample_in_tuser,sample_in_tdata}), .m_axis_data_tlast(sample_in_tlast), .m_axis_data_tvalid(sample_in_tvalid), .m_axis_data_tready(sample_in_tready), .s_axis_data_tdata({1'b0,sample_out_tdata}), .s_axis_data_tlast(1'b0), .s_axis_data_tvalid(sample_out_tvalid), .s_axis_data_tready(sample_out_tready), .warning_long_throttle(warning_long_throttle), .error_extra_outputs(error_extra_outputs), .error_drop_pkt_lockup(error_drop_pkt_lockup)); assign sample_in_eob = m_axis_tagged_tuser[124]; //this should align with last packet output from axi_rate_change ddc ddc #( .SR_FREQ_ADDR(SR_FREQ_ADDR), .SR_SCALE_IQ_ADDR(SR_SCALE_IQ_ADDR), .SR_DECIM_ADDR(SR_DECIM_ADDR), .SR_MUX_ADDR(SR_MUX_ADDR), .SR_COEFFS_ADDR(SR_COEFFS_ADDR), .NUM_HB(NUM_HB), .CIC_MAX_DECIM(CIC_MAX_DECIM)) ddc ( .clk(ce_clk), .reset(ce_rst), .clear(clear_user | clear_tx_seqnum[i]), // Use AXI Rate Change's clear user to reset block to initial state after EOB .set_stb(out_set_stb), .set_addr(out_set_addr), .set_data(out_set_data), .timed_set_stb(timed_set_stb), .timed_set_addr(timed_set_addr), .timed_set_data(timed_set_data), .sample_in_tdata(sample_in_tdata), .sample_in_tlast(sample_in_tlast), .sample_in_tvalid(sample_in_tvalid), .sample_in_tready(sample_in_tready), .sample_in_tuser(sample_in_tuser), .sample_in_eob(sample_in_eob), .sample_out_tdata(sample_out_tdata), .sample_out_tlast(), .sample_out_tvalid(sample_out_tvalid), .sample_out_tready(sample_out_tready) );
  3. Согласен, сейчас вспоминаю - причины выбора PCIe были несколько иные, нежели пропускная способность. Несмотра на то что там Dual 10 Gigabit Ethernet – 2x RX at 200 MSps per channel Прошу прощения.
  4. Что вы имеете в виду под этим? зачем мне единая привязка синхронизации выхода демодулятора и ПК? или я вас не так понял и эта особенность работы UHD и usrp в каком-то режиме? Идея была "вклиниться" вместо их стандартного ddc-rsmp. Кто будет забирать отсчеты, жесткие решения или результат декодирования через UHD ему синхронизация не важна. я опустил слова Express 2.0 x4, предполагая, что собеседник понимает о каком PCI я пишу. Прошу прощения если нарушил "религию".
  5. Добрый день, уважаемый krux. Благодарю за ответ. Как взаимодействует NI и ettus мы представляем. ( кто кого купил и что "впаривает" простым смертным). Я нигде не указал в вопросе про SDR, GNU Radio как раз потому, что в задаче не стоит работа с железкой аля GNU Radio или подключение к SDR Sharp. Мы занимаемся, скажем так, анализом радиоизлучений не один год, и конечно "свистелки" AirSpy HackRFOne и прочие нам известны. Устройства, серии X300 и серии NI USRP-294x и NI USRP-295x используются нами, и не только они. Режимом SDR пользуемся на этих железках, когда анализируются относительно узкополосные непрерывные или пакетные излучения. Проблем с этим режимом нет. Все для этого сделано самим NI ettus и энтузиастами GNU Radio и SDRSharp. Подключил исходники, поставил драйвер, настроил и забирай отсчеты. В задачах где нужно демодулировать декодировать сигнал непрерывного излучения на десятки или сотни МБод стандартная SDR концепция даже на ПК с высокопроизводительным GPU (например NVidia 3080 TI) не позволит получить качественный результат. За плисовым традиционным демодулятором декодером такой концепции SDR с GPU пока не угнаться. Да и стоимость, энергопотребление и т.п. Тем более, если плис итак есть на борту и используется только как простой поставщик отсчетов. Да и вообще, речь не о SDR - как я уже сказал. Конечно есть свое железо под такие задачи, где все написано свое, но в современных условиях этому заказчику проще купить за "бугром" абсолютно легально usrp. Преимущество ettus железок в рамках решаемой задачи, перед аналогичными железками от NI в том, что у них есть рабочие исходники как плисовой части так и хостовой. Купить железо за бугром можно. NI аналоги из-за закрытости исходников тут не рассматриваются. Ethernet соединение так же не рассматривается при работе с X310, используем PCI. При необходимости записать отсчеты на 200 МГц ethernet не поможет. Плисина там жирная, поэтому выкинув оттуда лишнее (ddc resampler уже имеются у демодуляторов) можно уместить даже "толстые" демодуляторы. Проблема только в конфигурировании такого демодулятора. Как залить через uhd настройки фильтров, созвездия, преамбулы и т.п. Все это просто набор 32х разрядных слов - и надо их просто прокинуть не нарушив работу всего остального. От UHD уходить не хочется чтобы не писать поддержку остальной части железа самим и не делать лишнюю работу. Не поломать настройку АЦП, выбор тактовой несущей, аналогового усиления аттенюации и тп. Уважаемый krux, вы с какой стороны имеете опыт разработки для ettus железок? со стороны хоста или fpga ? Спасибо
  6. Добрый день. Если есть у кого опыт, буду благодарен. Интересует вопросы трудоемкости подключения кастомной прошивки. Примерно с чем придется столкнуться. Какие-то свои замечания по опыту. Сами железки имеются. ( такие https://www.ettus.com/all-products/x310-kit/) Задача впихнутся именно туда. Свое железо есть, все работает. Но заказчик хочет такое. 1. https://github.com/EttusResearch/fpga Скачивалось, собиралось. Примерно понятно как оттуда выкинуть ddc и resampler на 2 канала и вставить свои демодуляторы. Но в проектах прошивок ettus пока не нашел готовых RFNoc с поддержкой в UHD для передачи абстрактных 32 бит в прошивку. Подошло бы просто передавать серию 32х разрядных слов через UHD в прошивку. По идее для телеметрии демодуляции хотелось бы считывать из прошивки 32х разрядные данные (можно и по одному адресу, аля axi-lite) - видимо это тоже через RFNoc Пока не совсем понятно - насколько сильно нужно передалть RFNoc со стороны плиса, чтобы скидывать туда свои абстрактные 32 разрядные конфигурационные пакеты. Может там уже, вообще, есть все готовое и не нужно даже переделывать. 2. Не понятно сколько времени уделить модификации UHD драйвера под свой кастомный RFNoc. Насколько это запарно. Настройку синтезаторов, АЦП планируется оставить такой же, чтобы по минимуму изменять UHD. Опять же, может в UHD есть уже готовое и я просто проглядел невнимательно. Предполагается, что хост и UHD драйвер под винду. Всем спасибо!
  7. Да это так, я предусматривал что значения a b c на самом деле не привысят WID-2 в вашей терминологии. По крайне мере, так у Xilinx, если писать в лоб, не использую примитивов LUT6. Если писать по честному, примитивами, как в data sheet на dsp48 для 3:2 компрессора, то можно по честному предусмотреть разряды переполнения. Однако, вот так в лоб, если написать на два разряда больше, то формируется совсем другая схема и таких частот уже не достичь. Я поэтому и написал - поиграться с разрядностью результата, возможно и у Альтеры это что-то даст. На сколько я читал мнения на англоязычных форумах, у Альтеры троичные сумматоры получаются лучше (т.е. написать в лоб и получить хорошую частоту) , но начиная с каких то кристаллов. Забыл о каких шла речь.
  8. Добрый день. Проделывал похожее на виртексе Насколько я себе уяснил, применение троичного суматора с целью экономии ресурсов возможно только при относительно небольших разрядностях (зависит от кристалла). То есть сделать множетсво "маленьких" троичных суматоров на высоких частотах возможно. Для 6 виртекса на 8 разрядов без каких либо телодвижений частота 500-400 мгц. Только попробуйте добавить reg [WID-1:0] sum_r, a_r, b_r, c_r; always @(posedge clk) begin a_r <= a; b_r <= b; c_r <= c; sum_r <= a_r + b_r + c_r; sum <= sum_r; end Если нужно больше разрядность, можно наверное попробовать каскадировать такие троичные сумматоры. Но ресурсы уйдут уже на это. Замечу, что у результата я намеренно поставил WID-1, у Xilinx это было кретично. Не знаю как у Альтеры, но я бы поупражнялся с разрядностью результата. А вообще, можно погуглить троичный сумматор для Альтеры Зайлинкс. Ссылок много. Успехов
  9. Добрый день, так в роде бы правильно советуют? wire нельзя обозвать клок в интерфейсе? Прошу прощения, и наверное это вопрос SystemVerilog а не конкретно Incisive?
  10. Может поможет -NOWarn warning_code[:warning_code ...] Disable printing of the warning with the specified code. The warning_code argument is the message code (mnemonic) that appears in the warning message following the error severity code. Example: % ncsim -nowarn HVAPKF worklib.top You can disable the printing of multiple warning messages either by using multiple -nowarn options or by using one -nowarn option and separating the warning_code arguments with a colon. For example, % ncsim -nowarn INTOVF -nowarn CUVWSP worklib.top % ncsim -nowarn INTOVF:CUVWSP worklib.top -NOWarn warning_code[:warning_code ...] Disable the printing of the warning with the specified code. For example, when elaborating, you may know about unconnected signals in your model. While the individual design units or source files may compile without error, the elaborator will generate port mismatch warning messages. If you are not interested in seeing these messages, use -nowarn to turn them off. The warning_code argument is the message code (mnemonic) that appears in the warning message that follows the error severity code. Example: % ncelab -nowarn CUVWSP worklib.top You can disable the printing of multiple warning messages either by using multiple -nowarn options or by using one -nowarn option and separating the warning_code arguments with a colon. For example, % ncelab -nowarn INTOVF -nowarn CUVWSP worklib.top % ncelab -nowarn INTOVF:CUVWSP worklib.top
  11. Добрый день. По первому. Процесс симуляции идет с идексами вида [-1] и нужно убрать просто сообщения из консоли? или симуляция останавливается?
  12. 7777777alex здравствуйте! Не могу отправить вам личное сообщение. Можете мне скинуть свой электронный адрес?

  13. Добрый день. Самое простое представить, что вы пишите на си, а фигурные скобки в случае верилог - это Бегин энд. А вообще "букварь" должен помочь, в вашем случае вы Бегин энд ставите на иф целиком как в vhdl, а следует мыслить как в Си и ставить только на инструкции между иф элзе. И в случае, как у вас, вообще, можно обойтись без Бегин энд, то есть просто их не ставить здесь
  14. Вопрос топика уже многократно решен и реализован в железе и у нас, и зарубежом. Примеч классифицируются не только перечисленные виды модуляций, но и типы систем (gsm, wifi, dvb-t, dvb-s2, и т.д. и т.п. в зависимости от диапазона анализа) Если классификация не налету ( не в железе), особых проблем в разработке алгоритма не возникнет. 1. Строится модуль спектра, определяется полоса сигнала по уровню (выбираете сами) 2. В этой полосе осуществляется фильтрация (обычный ФНЧ, порядок определяется наличием, отсутствие соседних каналов) у вас появляется однозначная оценка максимальной бодовой => полоса фильтра 3. Осуществляется оценка бодовой скорости и несущей частоты комплексная алгребра, комплексная огибающая 4. классифицируется тип модуляции 5. если нужно, делаем тактовую, фазовые подстройки и пишем (показываем) созвездия (llr) Для этого нужно либо иметь багаж знаний, либо приобретать его в процессе) Начните с малого научитесь определять бодовую скорость и отстройку несущей частоты. Смотрим комплексную алгебру, возведение в степень комплексного числа, операции с комплексной огибающей сигнала и т.п. Попробуйте рассмотреть сигналы с известной бодовой и несущей но с разными видами модуляции Удачи
  15. Для того чтобы понять " как надо генерировать синхроимпульс, с какой последовательностью," - нужно понять для чего вы проектируете свою систему. Задать себе вопрос какая модель канала связи, какой диапазон частот, какая предельная скорость передачи планируется. Радиовещательная система, модем, транспондер. Какая информация будет передаваться, какие протоколы планируется использовать на транспортном уровне. Все это либо определит либо скорректирует какой будет синхрокомбинация и чем вы можете пожертвовать ради нее, сколько бодов отведете, какой тип модуляции используете и как часто сможете ее вставлять. Даже если вы ни чем не ограничены и просто "фантазируете для себя", взгляните на существующие системы связи с открытыми стандартами, только все же определитесь с диапазоном частот ДВ, КВ, УКВ, СВЧ, о потом выбирайте одну из стандартизированных систем в этих диапазонах. Удачи
×
×
  • Создать...