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

    

Skryppy

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
  • День рождения 26.04.1987

Информация

  • Город
    Жуков, Калужская область

Старые поля

  • Vkontakte
    skryppy

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

1 077 просмотров профиля
  1. Посмотрите ERA-8SM+. А вообще просто просмотрите список усилителей по сайтам, например https://ww2.minicircuits.com/WebStore/Amplifiers.html По поводу обработки - если вы подадите в 4 потока данные на плис, то тактовая каждого будет 250 МГц, с этим ПЛИС справится. После приема перенесите сигнал в 0 пч и продецимируйте (если можно). Затем фильтруйте. промоделируйте примерный путь обработки в Матлаб.
  2. К сожалению, это печальная действительность. Плис цинк7000. А по поводу полуработающей Плис - virtex-7 имело место быть( но там уже темная история, после климатики получился такой результат).
  3. По поводу разного потребления: перепрошейте флешку заново и проверьте контрольную сумму. Сталкивался с тем, что несколько раз прошивалась флешка ок, а контрольная сумма не сходилась, при этом проект работал, но сбоил. Такое чувство, что у вас некоторые области Плис не работают(при условии , что проект один и тот же).
  4. Выдает ли ваш АЦП тестовые данные ( режим bist или подобный) , если да, то проверьте непосредственно данные с АЦП. Вы сейчас смотрите данные после нескольких операций, может в них дело, а не в АЦП.
  5. Проверьте длину дорожек в разводке pcb, может она разная для каждого бита.
  6. Для улучшения отношения сигнал/шум, нарежьте полосу на поддиапазоны фильтрами, это не займет много времени вычислений. Для быстрого измерения частоты можно использовать банк фильтров; банк фильтров + фазовые доопределители; банк скользящих дпф. Также посмотрите в сторону измерения частоты медленно меняющихся сигналов, как-то встречал статьи где народ за несколько тактов измеряет некоторые параметры сигналов. Может что интересное попадется. Примерные статьи:
  7. Т.к. У вас тактовая частота fs=200 кГц, а фильтруете узкую полосу, то не понижая fs ваш фильтр будет, примерно, порядка 1687. Чтобы не тратить такое огромное количество ресурсов надо понижать тактовую. Собрал модель, получается каскадное соединение фильтров займет 30+17 = 47 коэффициентов. Причем симметричных, на этом можно еще вдвое сэкономить ресурсов. Поиграйтесь с количеством каскадов, децимирование в 2 и более раз, различные типы фильтров: halfband, lowpass и т.д. untitled.rar
  8. Так как у вас сигнал медленно изменяется надо уменьшить тактовую частоту внутри плис. Поставте блок dcm, mmcm (блок xilinx) или аналогичный и поделите ваши 100 МГц на столько, сколько считаете нужным.
  9. Чтобы получить синтезируемый hdl код из fdatool, надо после получения нужной ачх перейти на вкладку quantization и выставить нужную разрядность входных/выходных портов. Только после этого генерить код. Вообще, если вам нужен максимально оптимизированный код под вашу плис, используйте matlab system generator. Тогда полученные фильтры на virtex7 работают на частотах выше 400 МГц. Красивый HDL код получается при генерации из Матлаб кода с помощью матлаб APPS-> HDL Coder (Hdl coder project).
  10. Мне проще некоторые вещи описать кодом, чем собирать из блоков simulink.
  11. Да, я так и сделаю. Но этот пример простой, блоки на 3000 строк кода тоже придется так переделывать и еще не факт, что внутри блока все успеет за такт. На форумах по матлаб пишут, что компилятор сам выбирает когда ему ставить порты, а когда нет, не понятна причина, по которой в одном случае все синхронно, а в другом и так пойдет.
  12. Здравствуйте. Генерирую VHDL код из блока Matlab Function, проблема в том, что сгенерированный VHDL код часто асинхронен и не содержит портов clk,rst,ce. Непонятно как сделать генерируемый код синхронным. Пример матлаба по генерации "Symmetric Fir Filter" делает синхронный VHDL код, так что дело в правильном написании функции. Я думаю, что умножение, сравнение чисел, должно обязательно быть синхронным, иначе все развалится на высоких частотах, может это не так? Конкретный пример, пусть есть функция матлаб: Кодfunction data_out = my_mult(data_in1, data_in2)     data_out = int32(data_in1 * data_in2); end Сгенерированный код VHDL: КодLIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.numeric_std.ALL; ENTITY my_mult IS   PORT( data_in1                          :   IN    std_logic_vector(15 DOWNTO 0);  -- int16         data_in2                          :   IN    std_logic_vector(15 DOWNTO 0);  -- int16         data_out                          :   OUT   std_logic_vector(31 DOWNTO 0)  -- int32         ); END my_mult; ARCHITECTURE rtl OF my_mult IS   -- Signals   SIGNAL data_in1_signed                  : signed(15 DOWNTO 0);  -- int16   SIGNAL data_in2_signed                  : signed(15 DOWNTO 0);  -- int16   SIGNAL data_out_tmp                     : signed(31 DOWNTO 0);  -- int32   SIGNAL mul_temp                         : signed(31 DOWNTO 0);  -- sfix32   SIGNAL cast                             : signed(15 DOWNTO 0);  -- int16 BEGIN   data_in1_signed <= signed(data_in1);   data_in2_signed <= signed(data_in2);   mul_temp <= data_in1_signed * data_in2_signed;      cast <= X"7FFF" WHEN (mul_temp(31) = '0') AND (mul_temp(30 DOWNTO 15) /= X"0000") ELSE       X"8000" WHEN (mul_temp(31) = '1') AND (mul_temp(30 DOWNTO 15) /= X"FFFF") ELSE       mul_temp(15 DOWNTO 0);   data_out_tmp <= resize(cast, 32);   data_out <= std_logic_vector(data_out_tmp); END rtl;
  13. Заработало. Внес директиву #pragma HLS INLINE внутрь каждой функции- my_func1, my_func2. Спасибо всем за помощь.