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

Skryppy

Свой
  • Постов

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

  • Посещение

Весь контент Skryppy


  1. Нет, у микросхем одного семейства Id не может повторяться , но может повторяться для разных семейств - virtex и artix,например. Это Id можно считать внутри проекта и использовать для защиты от распространения прошивок.
  2. Я с частичной реконфигурацией никогда не работал, но вот в этом видео на 12 минуте на слайде пишут, что у альтеры все stratix и Arria поддерживают такой режим работы Partial reconfiguration
  3. Для начала оставьте только одно значение - константу и все время ее посылайте. Каким образом ваша плата стыкуется с юсб портом компьютера? Давайте временные диаграммы данного ftdi чипа с мануала. Насколько я помню у данных микросхем надо дергать порты rxf, Rd, data( прием данных) и txe, we, data (передача данных) Второй вопрос, как вы принимаете данные в компьютере, какие ftdi драйвера используете, команды?
  4. Заменять ibufgds на ibufds очень плохо. Напишите какая точно ошибка выскакивает при этом. И на какой контакт, какой конкретной плис вы его подключили. Было бы интересно получить также по паре контактов ddr данных и контакты всех клоков приходящих из вне. В проекте, как вам тут советуют, обязательно удалите всё лишнее. Оставьте только 1 бит входных данных и обвязку к нему и добейтесь, чтобы проект скручивался без ошибок. Обязательно установите какие конкретно биты сбоят, если у вас конечный результат не работает это ещё не значит, что дрожат данные. Если есть возможность послать конкретное тестовое число ( лучше много раз) и принять его , сравнив с образцом, прям сразу после буферов, без какой-либо обработки, сделайте так. Возможно iserdes и iodelay не понадобятся ( хотя их потом все равно лучше прикрутить)
  5. Давайте для начала покажите картинку, что данные у вас дрожат, как вы ее получаете? Какие именно биты сбоят; как часто; зависит от температуры; может у вас обработка данных неправильная? 1) Итак при приеме данных от АЦП в ddr режиме связка IOB+iserdes разводится намного лучше чем Iob + iddr. 2) желательно прикрутить в проект iodelay, он имеет, насколько помню, 32 градации и в зависимости от тактовой может сделать 32 шага задержки, меняя тактовую можно увеличить/уменьшить шаг. 3) чтобы понять насколько накрутить задержку, надо подать сопровождающий данные с АЦП синхросигнал (обычно отдельная lvds пара) на триггер , сам триггер тактировать внутренней тактовой частотой). Когда сопровождающий сигнал совпадает с внутренним, то на выходе триггера константа. Ваша задача добавлять задержку пока не появится случайный сигнал на триггере ( значит вы добрались до фронта сигнала). Запоминаете задержку( пусть будет 5) и добавляете ещё пока не появится константа, а потом опять случайные данные. Так вы найдете второй фронт синхросигнала( пусть, например, задержка будет равна 12). Тогда понятно, что если выставить задержку равную 8, то будете в центре синхросигнала. Если все дорожки одинаковые, то всем контактам с iodelay ставите такую задержку. Сначала поэкспериментируйте с ручной настройкой, потом напишите контроллер, чтобы он автоматически при каждом включении проделывал это всё за вас. В случае большого разбега длинны задержка у каждого контакта будет своя, но когда вы ее подберёте ( для каждого контакта) она будет на одну и ту же величину ( у каждого контакта своя) отличаться от задержки контрольного контакта (тактового сигнала) при разном включении. Просто добавите соответствующую надбавку к каждому контакту. 4) насколько большой разбег длин дорожек у вас и на какой частоте работаете? Для стеклотекстолита задержка 7 пс/мм длины, посчитайте сколько пикасекунд у вас разбег и критичен ли он для вашей частоты.
  6. В ise выбираете данный компонент( если он не топ модуль) и в левом нижнем углу выбираете пункт create hdl templates. Сгенерированные описания копируете и вставляете в топ модуль.
  7. Для автоматов состояний можно использовать матлаб stateflow -> coverage -> hdl compiler. Покрытие тестами можно довести до 100%. Матлаб
  8. Если используете xilinx, то в ise -> add new file -> ip -> dds compiler. Dds
  9. Скажите, а почему вы не используете готовый ip блок cordic для задания cos и sin?
  10. Для ddr есть готовые примитивы iddr и oddr . Используйте их. Вот похожая тема вроде на этом форуме Spartan 6 и АЦП DDR, также на Хабре статья Подключение ацп. А вообще-то непонятно что конкретно у вас не получается, данные в ddr формате принять?
  11. Тогда можно посмотреть разводку и указать конкретное место для данного регистра. Для ucf файла, например в ise: Inst "my_module/reg_array[0].fde_used.u2" LOC = SLICE_X100Y245; или указать допустимую область на кристалле (Pblock).
  12. Для квартуса не знаю, но у xilinx прописывается атрибут: Для верилог файла надо прописать до описания модуля: (* IOB = "TRUE" *) Module my_module( ... Подробно в Ug625, стр 126.
  13. Как вариант, можно обучить нейросеть. Также есть другие алгоритмы, например такой Мел-кепстральные коэффициенты (MFCC) или такой Распознавание голоса, матлаб
  14. В принципе, для ваших чисел и fixed point 32 бита хватает. Вот набросал по-быстрому модель. Поиграйтесь с разрядностью, выберите нужную вам по точности. floating_point.rar
  15. Да, я же говорю в железе нормально работала. В чипскопе данные смотрели. Но после извлечения корня стоит второй конвертор, который переводит в fixed-point 32 бита.
  16. Я как-то работал с floating-point в матлабе system generator. В железе данная модель работала хорошо. По ресурсам уже не помню. Там переход делался с помощью блока convert.
  17. Добавил второй проход по массиву. Вроде норм работает. histogram_max_tb.vhd histogram_max.vhd
  18. Так как у вас число должно встречаться половину и более раз, то можно сделать так: Задача 6 Сделал два варианта: 1 ) Использование промежуточных регистров, regs = 221, luts = 95, 2) без них, кода много, но работает Regs= 32, luts = 253. histogram_max_tb.vhd histogram_max.vhd P.S.: забыл протестировать при отсутствии всех данных, но думаю там исправлений немного будет
  19. Нет компьютера под рукой, завтра попробую набросать модуль. Гугл нашёл такой пример: Google book
  20. Если у вас плата уже есть, то посмотрите какое питание на банк подаётся, что выдумывать.
  21. Так это вроде обычный lvds https://ru.m.wikipedia.org/wiki/LVDS так что заводите 2.5 вольта на банк. А в ucf пишите iostandard = lvds;
  22. Если входной сигнал меняется по частоте, то надо ставить фильтр гильберта. Раз выходная часть работает хорошо и данные с АЦП в чипскоп красивые, то я теряюсь в догадках. Если с АЦП приходит синус в другом коде, то надо инвертировать старший бит шины.
×
×
  • Создать...