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

Проблемы с отладкой проекта.

Я занимаюсь ПЛИС уже 2 года, и дошел до сложных проектов, которые просто так не работают на больших частотах.

Вот так выглядит мой проект, он реализует управление РЛС, посредством различных интерфейсов. Его центром является система ЦОС состоящая из КИХ фильтра и NCO, все написано на Verilog.

У меня возникла проблема, на выходе NCO (управляемый генератор синуса) и Фильтра вылезают помехи. Если отделить систему ЦОС от всего проекта, то помехи мне удавалось убрать, я задерживал clk идущий на NCO на 333ps и все отлично работало, в большом проекте я не могу подобрать задержку.

Если с АЦП подать сигнал на фильтр, то на выходе фильтра он будет с помехами. Если снимать сигнал с NCO, то помехи так же присутствуют. Как они выглядят я записал на видео. Бывало, что помехи на фильтре пропадали, а на NCO появлялись и наоборот.

Я понимаю, что проблемы в задержке сигнала, но я никогда не работал с Timing Analysis и не знаю с чего начать. Подскажите как решаются такие проблемы?

 

image.thumb.png.67ad1a2e0114883ab02cda0ba7aaa5b2.pngimage.thumb.png.f3bd9b8824675f9604c7559e6e260c88.png

293716353_.thumb.png.adfe17b55fb92a5f84d8f3f9a7fefb82.png

Вот я задержал clk на NCO, фильтр заработал без помех, но на выходе NCO как-будто один из младших битов не успевает устанавливаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно, за два года вы не узнали про Timing Analyzer. Это же основы. На этом всё и стоит. Сейчас вендоры считают, что если констрейны удовлетворяются, то всё должно работать правильно, и не дают нетлист после разводки, с которым это можно было бы проверить.

Если что-то не работает, то неправильно обконстрейнено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это у Вас NCO на 5  МГц не работает? Как реализовывали? Если на RAM, то очень странно, если на регистрах, то может действительно не работает, что тоже странно. Что в констрейнах задавали?

А понял, вы генерите 5 МГц, Тогда какую частоту подаёте на NCO?

Изменено пользователем EgorT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 minutes ago, andrew_b said:

Сейчас вендоры считают, что если констрейны удовлетворяются, то всё должно работать правильно,

обязательно должно работать)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, EgorT said:

Это у Вас NCO на 5  МГц не работает? Как реализовывали? Если на RAM, то очень странно, если на регистрах, то может действительно не работает, что тоже странно. Что в констрейнах задавали?

А понял, вы генерите 5 МГц, Тогда какую частоту подаёте на NCO?

 

5 МГц это частота сигнала, а NCO у меня на RAM и работает от clk 300мГц. Я добивался что бы она работала без помех, но это в тестовом проекте. Когда я интегрирую ее в основной проект она перестает работать без помех даже от clk 50 Мгц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вы пробовали смотреть, как проект разводит по кристаллу в тестовом проекте и попробовать развести его точно так же в основной проект? Если там проблемы в плейсменте, тогда такое решение должно спасти. Если проблемы в другом (изменение энерготопребления, другая оптимизация и т.д.) тогда нужно копать дальше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообщем как проект отлаживать то..... ? Я могу сделать 4 клока. clk1, clk2,clk3,clk4. Первый clk1 на NCO без задержек, clk2 подать на фильтр на линию задержки и задержать на четверть периода относительно clk1, clk3 подать на умножители в фильтре и задержать еще на четверть периода относительно clk2, clk4 подать на cумматоры и задержать еще за четверть периода относительно clk3. И тогда данные будут успевать устанавливаться, так кто-нибудь делал? Или когда с сделаю этот sdc файл он сам задержит нужные клоки в нужных местах? как работает этот sdc файл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Макимальная частота, с которой может работать RAM (M10K Block)  в Cyclone V со speed-grade -С6  - 315 МГц, в тестовом проекте вполне возможно вы уложились в это ограничение, в проекте побольше уже не уложились. Попробуйте сначала задать клок в sdc файле, потом посмотреть репорт. И каким образом Вы задерживаете клок?

Изменено пользователем EgorT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, Icedevil777228 said:

Или когда с сделаю этот sdc файл он сам задержит нужные клоки в нужных местах?

По крайней мере с этим файлом компилятор будет знать, на какой частоте работает проект (ну и, возможно, другие особенности проекта, если они есть и если описаны в файле) и попытается расположить проект в кристалле так, чтобы проект заработал.

Есть цикл статей Иосифа Каршенбойма по этому вопросу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, Yuri124 сказал:

Есть цикл статей Иосифа Каршенбойма по этому вопросу.

Это не мои статьи, а Дениса Шехалева...  В 9-12 номерах за 2010 год. У des00 см. подпись в любом сообщении и там будет ссылка. :)

Но мне кажется, что ТС на неверном пути. Он приблизился к предельным частотам, но не оптимизировал структуру проекта. Ведь память можно взять бОльшей разрядности, например вдвое и тогда на ней можно понизить тактовую. И еще посмотреть критические пути. Сократить логику... Уменьшить разрядность, при этом данные обрабатывать "на лету"... Ну и так далее...  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, iosifk said:

Это не мои статьи

Извиняюсь, перепутал :) 

У Вас тоже есть интересное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 minutes ago, Icedevil777228 said:

Вообщем как проект отлаживать то..... Или когда с сделаю этот sdc файл он сам задержит нужные клоки в нужных местах? как работает этот sdc файл?

Если ваш проект до сих пор без sdc файла (и на 300MHz), то нужно идти в ближайшую церковь, ставить побольше свечек и молится, молится, молится ....

Отладка не поможет :crazy:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если посмотреть отчет в папках под строкой "Clocks" - Slow.... и Fast...   - там же будут показаны максимально возможные гарантированные частоты клоков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, EgorT said:

И каким образом Вы задерживаете клок?

 

В PLL есть функция задержки сигнала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, Icedevil777228 said:

В PLL есть функция задержки сигнала.

Ну тогда Вам точно не обойтись без описания констрейнов в sdc файле. Кроме того, добавляя кучу клоков, сдвинутых по фазе, Вы создадите себе еще больше проблем. Начните с sdc файла, почему Вы еще этого не сделали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...