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