МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Поговорим о частоте?

Поговорим о частоте? 2 года 6 мес. назад #5995

  • alman
  • alman аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 263
  • Спасибо получено: 41
Вначале предыстория. Каким-то чудом удалось запустить сложный проект на частоте 100МГц. И он даже стабильно работал. Впоследствии внёс в проект значительные исправления и доработки, после чего он перестал работать. Использование SignalTap показало очень странное поведение, которое никак не удавалось объяснить. Разные попытки ни к чему не приводили. В результате попробовал уменьшить с помощью PLL частоту клока в два раза. И, о чудо, проект сразу заработал!

Понятно, что физику не обманешь, но хотелось бы обсудить приёмы для повышения частоты схемы, анализа максимальной частоты, переходе между CLOCK DOMAIN и всё такое прочее.

И первый вопрос - вносит ли сам SignalTap какие-то ограничение на частоту?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

Поговорим о частоте? 2 года 6 мес. назад #5996

alman пишет: Вначале предыстория. Каким-то чудом удалось запустить сложный проект на частоте 100МГц. И он даже стабильно работал. Впоследствии внёс в проект значительные исправления и доработки, после чего он перестал работать. Использование SignalTap показало очень странное поведение, которое никак не удавалось объяснить. Разные попытки ни к чему не приводили. В результате попробовал уменьшить с помощью PLL частоту клока в два раза. И, о чудо, проект сразу заработал!

Понятно, что физику не обманешь, но хотелось бы обсудить приёмы для повышения частоты схемы, анализа максимальной частоты, переходе между CLOCK DOMAIN и всё такое прочее.

И первый вопрос - вносит ли сам SignalTap какие-то ограничение на частоту?

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Поговорим о частоте? 2 года 6 мес. назад #5997

  • alman
  • alman аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 263
  • Спасибо получено: 41

slonok пишет: а вот хотябы структурку, чтобы общее понимае было. там что одинаковые блоки на одной частоте и как вообще эта частота и кому раздавалась.

В проекте все блоки на одной частоте. Не уверен, что общая структура имеет какое-то значение. В top модуле всё выглядит довольно пристойно, а вот во внутренних блоках весьма и весьма сложная логика.

Мне бы не хотелось превращать эту тему в обсуждение конкретного проекта, а хотелось бы поговорить об общих принципах повышения максимальной частоты устройства.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

Поговорим о частоте? 2 года 6 мес. назад #5998

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51

alman пишет: Понятно, что физику не обманешь

Про "обман физики" имеет смысл говорить, когда сложный дизайн будет работать на частоте >250МГц в Циклонах и тп. До этих частот речь может идти только про "обман Квартуса".

хотелось бы обсудить приёмы для повышения частоты схемы, анализа максимальной частоты

Приемы всем известны, но никто не хочет им следовать. Это синхронный дизайн, тк только в этом случае Квартус может правильно (без дополнительных констрейнов) синтезировать для достижения максимальной частоты, которую и показывает в отчете STA. Для оптимизации "плохих" модулей их можно выделить в отдельный топ-модуль с регистровыми входами-выходами, и пробовать менять структуру и описание, добиваясь нужной частоты.

переходе между CLOCK DOMAIN

Зарплату за это платят, что-ли? Без острой необходимости не имеет смысла заморачиваться этим, особенно, когда целью является "подъем производительности на 5%" (или даже на 25%).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Поговорим о частоте? 2 года 6 мес. назад #5999

Если вкратце, то основной способ повышения быстродействия работы проекта это "pipeline",
но до этого хорошо бы проверить проект на следующие "Правилам хорошего тона":
1. В проекте должна быть только одна тактовая частота (типа "управляющий клок", а все остальные события только через "clock_enable")
2. В проекте не должно использоваться асинхронных сигналов (за исключением глобального сброса, если он нужен из-вне)
3. В проекте не должно быть латчей ( следить за ворнингами компилятора)
4. Проект доджен удовлетворять временным ограничениям.Для этого проще всего следовать следующим правилам:
а) На всех входных сигналах (кроме клока) должны стоять регистры.
в) На всех выходных сигналах (кроме клока,если он нужен наружу) должны стоять регистры.
с) При этом частота "управляющего клока" должна быть меньше или ровна "Fmax" отчета ТаймингАналайзера.

Если все нормально, то тщательно изучать отчеты ТаймингАналайзера и "распаралеливать" и/или "пайплайнить".

alman пишет: И первый вопрос - вносит ли сам SignalTap какие-то ограничение на частоту?

Опять же , следите за отчетом ТаймингАналайзера
Спасибо сказали: alman

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от umarsohod.

Поговорим о частоте? 2 года 6 мес. назад #6000

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51

alman пишет: SignalTap

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Поговорим о частоте? 2 года 6 мес. назад #6001

Зря

Leka пишет:

alman пишет: SignalTap

сотни миллионов тактов.

Всего лишь нужно правильно выбрать условие срабатывания "триггера"

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Поговорим о частоте? 2 года 6 мес. назад #6002

  • alman
  • alman аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 263
  • Спасибо получено: 41

Leka пишет:

alman пишет: Понятно, что физику не обманешь

Про "обман физики" имеет смысл говорить, когда сложный дизайн будет работать на частоте >250МГц в Циклонах и тп. До этих частот речь может идти только про "обман Квартуса".

И как его "обмануть"? В настройках поковыраться?

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

Готов держать пари что мой дизайн 100% синхронный. Единственное, что отличает его от "простых" проектов - очень очень очень много комбинационной логики. И 32-х битные шины. И даже одна 40-битная.

которую и показывает в отчете STA.

Вот если можно, то с этого места чуть подробнее.

Для оптимизации "плохих" модулей их можно выделить в отдельный топ-модуль с регистровыми входами-выходами, и пробовать менять структуру и описание, добиваясь нужной частоты.

Вот шина адреса как раз на регистровом выходе, но на 100 МГц получаются чудеса. Причём все always всегда управляется только клоком и исключительно им.

Зарплату за это платят, что-ли? Без острой необходимости не имеет смысла заморачиваться этим, особенно, когда целью является "подъем производительности на 5%" (или даже на 25%).

Пока не использовал различные клоки - не было необходимости. Так сказать - на будущее.

Наверное всё же покажу о чём речь - s017.radikal.ru/i404/1604/a5/91b17102bf5e.png

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

Поговорим о частоте? 2 года 6 мес. назад #6003

  • alman
  • alman аватар Автор темы
  • Не в сети
  • Завсегдатай
  • Завсегдатай
  • Сообщений: 263
  • Спасибо получено: 41

umarsohod пишет: а) На всех входных сигналах (кроме клока) должны стоять регистры.

О! Вот это очень интересный момент. Я немного не понял. Вот так?
module somemodule(input wire clock, input reg in1, output reg out1 );

А как тогда соединить модули у которых на выходе регистр и на входе регистр?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Поговорим о частоте? 2 года 6 мес. назад #6004

alman пишет:

umarsohod пишет: а) На всех входных сигналах (кроме клока) должны стоять регистры.

О! Вот это очень интересный момент. Я немного не понял. Вот так?
module somemodule(input wire clock, input reg in1, output reg out1 );

А как тогда соединить модули у которых на выходе регистр и на входе регистр?

К "внутричиповым" сигналам это не относится.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.178 секунд

facebook  GitHub  YouTube  Twitter