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

Holy Priest

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

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

  • Посещение

Репутация

0 Обычный

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

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Правильно ли я понял, что для линейного доступа предлагается сделать несколько счётчиков, запускающихся друг за другом, и каждый из них подавать на вход адреса своей памяти размером с разрядность счётчиков? То есть, скажем, четыре счётчика на 8 бит и к ним четыре памяти на 256 значений.
  2. А как быть, если счётчик используется в качестве формирователя адресов? Например, мне требуется записать 4000 значений. Я делал две памяти: первая записывала нечётные отсчёты, вторая – чётные. Это улучшило работу схемы, но размерность счётчика уменьшилась же всего на один бит.
  3. Благодарю за ответы. Клоки в sdc файле я описал, вижу в квартусе, что в простом проекте слаков нет, частота позволяет (один из сигналов ActualData не поспевает за клоком, но он не принципиален для работы, так как может быть заменён комбинаторной схемой, а не описан регистрами). С анализом отчётов в TimeQuest я разобрался, но, как мне кажется, проблема возникает тогда, когда размещать на кристалле начинает ПО для 5578ТС024, а не квартус. ПО тоже выдаёт отчёты в формате sdf, там имеются ключевые слова временного анализа: setup, hold и прочие, но как их анализировать, мне не совсем ясно. (Пример таких отчётов для проекта MainDD3: https://disk.yandex.ru/d/05xt2or9yqhtSQ, https://disk.yandex.ru/d/HI6Ux3u4ehiaAg) В ТУ указано, что микросхема может работать на частотах 100 МГц, хотя обычный счётчик на 14 бит, требующийся для смены адресов памяти, сбоил: пропускал отсчёты (..., 1023, 16338, 1026, 1027, ...), тогда я подумал, что какой-либо из битов при переключении не успевает доходить до счётчика или регистра, поэтому и стал разбираться во временных задержках и том, как сравнять пути прохождения сигнала. К слову, при выполнения лабораторных работ из файла в первом посте я наблюдал, что время распространения сигнала уравнялось между битами (был разброс 15-17 нс, после задания временных ограничений – стал 16,5-16,8). Вот ссылка на Яндекс.Диск с проектом: https://disk.yandex.ru/d/gwF-TyFheBNaZg
  4. Начну с основной проблемы. Потребовалось выполнить несколько операций ЦОС на ПЛИС. Разобравшись с языками описания цифровых схем были созданы три модуля: для БПФ, для взаимной корреляции сигнала и ещё один математический. По отдельности они проходили проверку работоспособности в железе на столе, но иногда всё разваливалось: бывали неудачные случаи разводки и результаты были неадекватные. После объединения всех трёх модулей в один проект работоспособная прошивка и вовсе перестала получаться. Почитав форумы и статьи понял, что может помочь задание временных ограничений на пути прохождения сигнала. (Например: "Если временные требования не заданы, то компилятор не производит оптимизацию задержек и они имеют произвольные значения и большой разброс." Источник: Lab1.pdf (spbstu.ru)) Я начал заниматься описанием временных ограничений, вижу на Chip Planer, что пути меняются, но какие-либо выводы по этому сделать не могу. Поэтому хотелось бы получить совет от тех, кто уже этим успешно занимался. Правильно ли вычислена ошибка? В верном ли направлении двигаюсь? Правильно ли мной описаны временные задержки блока БПФ: я описал прохождение сигнала из входной памяти (FFT:inst2, FFT:inst4 проекта) на бабочку (FFT:inst23), с результата вычисления бабочки до буферной памяти (FFT:inst21, FFT:inst22) и из буферной памяти до входа в бабочку при условии, что выполнение бабочки и установка адресов памяти выполняется не дольше, чем за 80 нс? Весь проект для Quartus II 13.0.1: MainDD3.zip — RGhost — файлообменник Ниже прикреплён файл временных ограничений sdc. P.S. Разработка ведётся под ПЛИС 5578ТС024. Для её конфигурирования используется прилагающееся к ПЛИС ПО и список цепей vqm из Quartus. Собственное ПО ПЛИС – одна из причин почему не использовалась мегафункция БПФ. Также для одного и того же списка цепей ПО может выдать как работоспособную прошивку, так и нет. В ПО есть возможность подгрузки файла временных ограничений, но тоже со своими особенностями. Если кто-то может и имеет желание помочь разобраться в этом, то оставьте контакт в телеграмм. MainDD3.sdc
  5. При создании в YAT терминала как UDP сервера с портом 2054 терминал выводит то, что отправляется с устройства. Какая последовательность MAC адреса та? Я посмотрел в свойствах подключений, там строка: физический адрес (MAC) BC-2E- и еще 8 символов. В той же последовательности шлю с устройства. 
  6. Добавил. Теперь устройство шлёт первые шесть байт MAC адрес сетевой карты компьютера вместо 0xFFFFFFFFFFFF. Также ни в одном из режимов MATLAB не принимает данные. В Wireshark вижу прописанный MAC.
  7. Спасибо за ответ. Действительно, один из режимов работы подразумевает наличие начального и завершающего символа. Сделал принудительно, что первый символ, приходящий с устройства, всегда 0xF, последний – всегда 0x0. Не заработало. Затем с помощью команд u.BytesAvailableFcnMode = 'byte', u.DatagramTerminateMode = 'off' и u.BytesAvailableFcnCount = 822 (знаю из wireshark, что идёт всего 822 байта данных) изменил режим работы, но всё равно на выходе пустая переменная с тем же предупреждением о таймауте, что и на рисунке 2.
  8. Есть устройство, у которого определён IP – 192.168.1.41, оно шлёт пакеты по IP 192.168.1.160 в порт 2054. Wireshark видит пакеты (рисунок 1), пришедшие по протоколу UDP по Ethernet, но MATLAB возвращает пустую переменную после тайм аута (рисунок 2). Использую функции из справки udp(IP, port) и fread(u, n). Почему MATLAB возвращает пустую переменную?
  9. Кто-нибудь сталкивался с тем, что один и тот же список цепей (vqm) при одинаковых настройках программного обеспечения даёт разные прошивки? Как этого избежать? Дело в том, что Вы в аккаунте администратора, в котором, как я понял, нельзя редактировать проекты. Нужно создать нового пользователя в разделе пользователи (слева на Ваших фото).
×
×
  • Создать...