[an error occurred while processing this directive]
|
Есть проект фильтра (вообще в матрице еще много чего есть, но оно не критично). Он должен на вход получать отсчеты с АЦП (в количестве 2000 штук), а выходные данные лежат в двухпортовой памяти, из которой они считываются процессором ТМС6711.
Есть такие проблемы:
1. Получение данных с АЦП. Частота дискретизации 80 МГц. При этом должна обеспечиваться синхронизация отсчетов с внешним запускающим импульсом. Для этого я беру две фазы 80 МГц (она получается на ДЛЛ) - clk0 и clk180. По фронту запускающего импульса устанавливаю FF. Каждую фазу завожу еще на два FF, а на D-вход обоих с выхода предыдущего триггера. Каждый из этих двух FF еще запрещает другого (по CE). Тогда получаю, что взодится тот FF, фаза clk-а которого была первее. Затем выходами этих двух FF управляю выбором тактовой частоты, которая идет на фильтр. Да еще внутри фильтра есть коммутация частоты для изменения частоты дискретизации: идет та же 80 МГц на вход (и на саму АЦП), просто берутся отсчеты с АЦП так - либо каждый, либо каждый второй, либо каждый третий и т.д. Проблема в том, что не очень-то хорошо коммутировать тактовую, да еще 80 МГц. Вопрос: может как-то иначе сделать синхронизацию? Другие идеи есть?
2. Проблема с другого конца. Двухпортовая память, используемая на выходе, используется в фильтре полностью, т.е. обеими портами. Поэтому, чтобы организовать чтение процессором данных приходится опять же коммутировать тактовую. С одной стороны, это тактовая фильтра при записи/чтении памяти, с другой, это тактовая процессора. А она 100 МГц. Такая коммутация тоже не нравится компиллятору. Как быть?
В общем проект скомпиллирован, но получаются плохие результаты (ISE 5.2.03i, режим XST). Design score ~2500, Timing score ~2000. Проект без фильтра (но с синхронизацией, а память отсчетов была внешней типа ZBT, при этом процессор) имел соответственно 300 и 0, да и работал нормально. После добавления фильтра и использования внутренней памяти матрицы (всей) получились вот такие неутишительные результаты.
Матрица Spartan-II XC2S200. Заполнение проектом 40%.
Что можно предпринять для оптимизации? Куда копать?
Вообще как грамотнее коммутировать тактовую?
Что присоветуете?
E-mail: info@telesys.ru