Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задание условий в ChipScopePro Analizer ?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
lim
Проясните, пожалуйста, как правильно задать trigger/storage qualification options для следующей ситуации:

1. В начале ожидаем спада определённого сигнала RESET.
2. Затем, после фиксации данного факта требуется ПЕРИОДИЧЕСКИ собирать данные по приходу сигнала "clock_enable".

Я сейчас делаю так:
1. Объявляю Trigger Condition - Falling Edge of the "RESET"
2. Объявляю Storage Qualification Condition, когда "clock_enable" = 1 ( пробовал давать здесь и спад и фронт - не помогает ).

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


В документации написано следующее:

A window is a contiguous sequence of samples containing one (and only one) trigger event.

Сразу хочу спросить: Samples ВСЕГДА берутся с тактовой частотой ILA CORE ?

Если это так, то как же понять следующее ( насчёт расхода внутрикристальной памяти):

The triggering and storage qualification capabilities of the ILA, IBA/OPB and IBA/PLB
cores allow you to locate and capture exactly the information that you want without
wasting valuable on-chip memory resources.

Далее ещё пару цитат из документации:

The trigger condition is used to mark a distinct point of origin in the data capture window and
can be located at the beginning, the end, or anywhere within the data capture window.

The storage qualification condition differs from the trigger condition in
that it evaluates trigger port match unit events to decide whether or not to capture and
store each individual data sample. The trigger and storage qualification conditions can be
used together to define when to start the capture process and what data is captured.

Пример "Using Trigger and Storage Qualification Conditions" уже приводить не буду - вроде всё понятно,
но почему в моём случае не работает Storage Qualification Conditions по "clock_enable" ???

Сделал Trigger Condition - по сигналу "clock_enable" ( При этом использую, конечно, несколько Windows ) - данные собираются, но только естественно не с того временного места, с которого надо.
Сейчас попробую использовать Sequencer - кое что смущает.

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

С Уважением,
Игорь
DmitryR
Цитата(lim @ Aug 4 2009, 14:26) *
Сразу хочу спросить: Samples ВСЕГДА берутся с тактовой частотой ILA CORE ?
Да, ведь другой-то нет. Что же касается Storage Qualification, то там надо поставить везде X, кроме того сигнала, который clken.
lim
Цитата(DmitryR @ Aug 4 2009, 14:31) *
Да, ведь другой-то нет. Что же касается Storage Qualification, то там надо поставить везде X, кроме того сигнала, который clken.


У меня clken - это отдельный триггерный порт. Так что я просто задаю Storage Qualification Condition по его фронту.

Так если выборки идут с тактовой частотой ILA CORE - как же экономиться внутрикристальная память ???
Ведь получается, что независимо выполняется или нет Storage Qualification Condition - данные то собираются и буфер заполняется.
DmitryR
Цитата(lim @ Aug 4 2009, 15:51) *
У меня clken - это отдельный триггерный порт. Так что я просто задаю Storage Qualification Condition по его фронту.
Мне сейчас недосуг рыть доки, но кажется что Storage Qualification должен идти по тому же порту, по которому сработал триггер. То есть в вашем случае rst и clken должны быть в одном триггерном порту. Проверьте.

Цитата(lim @ Aug 4 2009, 15:51) *
Так если выборки идут с тактовой частотой ILA CORE - как же экономиться внутрикристальная память ???
Ведь получается, что независимо выполняется или нет Storage Qualification Condition - данные то собираются и буфер заполняется.
Ну как, тактовая частота подается на вход тактовой частоты буфера, а Storage Qualification - на enable.
syoma
Цитата
Мне сейчас недосуг рыть доки, но кажется что Storage Qualification должен идти по тому же порту, по которому сработал триггер. То есть в вашем случае rst и clken должны быть в одном триггерном порту. Проверьте.

Нет, наоборот - триггер и Storage Qualification должны быть на разных портах, чтобы для них настроить разные Matching units.
Например - смотри картинку: Нажмите для просмотра прикрепленного файла

Допустим сигнал по котрому я хочу триггероваться находится в Triggerport15 (4ый бит) - запуск должен произойти если там будет 1.
Значит ставим 1 в нужный бит в TriggerPort15 и внизу, где Trig выставляем Trigger Condition Equation на M15.

Теперь я хочу записывать в буффер не с системной частотой - он же быстро переполнится, а с частотой другого, более медленного клока, который например у меня есть на Triggerport6 в бите 1.
Значит ставим в нужный бит R,F,или B(если надо записывать по фронту, спаду или тому и другому) - 1 или 0 ставить НЕЛЬЗЯ - у вас же этот клок медленный - если вы поставите его по уровню - у вас в буфер запишется все с системной частотой, пока клок будет иметь данный уровень. Так что только по фронтам.
Затем в Storage Qualification вписываете M6 и готово.
lim
Цитата(syoma @ Aug 6 2009, 10:26) *
Нет, наоборот - триггер и Storage Qualification должны быть на разных портах, чтобы для них настроить разные Matching units.
Например - смотри картинку: Нажмите для просмотра прикрепленного файла

Допустим сигнал по котрому я хочу триггероваться находится в Triggerport15 (4ый бит) - запуск должен произойти если там будет 1.
Значит ставим 1 в нужный бит в TriggerPort15 и внизу, где Trig выставляем Trigger Condition Equation на M15.

Теперь я хочу записывать в буффер не с системной частотой - он же быстро переполнится, а с частотой другого, более медленного клока, который например у меня есть на Triggerport6 в бите 1.
Значит ставим в нужный бит R,F,или B(если надо записывать по фронту, спаду или тому и другому) - 1 или 0 ставить НЕЛЬЗЯ - у вас же этот клок медленный - если вы поставите его по уровню - у вас в буфер запишется все с системной частотой, пока клок будет иметь данный уровень. Так что только по фронтам.
Затем в Storage Qualification вписываете M6 и готово.


Извините, что потерял некоторую оперативность в ответах - большая загрузка по работе !

Именно описанный Вами алгоритм и предполагалось реализовать. В вышеприведённом куске:

Triggerport15 - это мой сигнал RST ( Задано: Falling Edge Trigger Condition ).
Triggerport6 - это мой сигнал "clock enable" ( Storage Qualification Condition ).

Правда в моём случае можно Storage Qualification Condition ставить в 1, а не только по Rising/Falling Edges, т.к. длительность импульса
"clock enable" - один период тактовой (системной) частоты, а период сигнала "clock enable" - значительно превышает период тактового сигнала.
Но я пробовал давать на нём по Rising/Falling Edges. Почему-то не работало ! Иными словами буфер заполнялся с системной частотой.

Сейчас нашёл пока временную отдушину - оба сигнала формируют Trigger Condition, одна выборка в Window и количество Windows=размеру буфера.
Приходиться задействовать ещё отладчик Microblaze - т.е. переключаться туда и сюда. Неудобство налицо !

Ещё раз попробую Вернутся к Вышеописанному алгоритму !

Большое спасибо за Ответы !!!

С Уважением,
Игорь
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.