реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AXI или TCM
quandr
сообщение Apr 11 2016, 09:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Добрый день!
Объясните, по возможности, какой вариант интерфейса AXI или TCM в STM32F7 дает большую предсказуемость по времени выполнения кода?
Спасибо.
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 09:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



А почему вы интересуетесь? Просто праздный интерес или какую-то задачу надо решить?
Пардон, что отвечаю вопросом на вопрос.
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 09:32
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 13:24) *
А почему вы интересуетесь? Просто праздный интерес или какую-то задачу надо решить?
Пардон, что отвечаю вопросом на вопрос.

В коде есть циклы, которые должны выполняться за определенное кол-во тактов, как в STM32F4. Просто у F4 силенок не хватает на пару фильтров. Пришлось на переходить на F7, но там хитрые конвейеры команд и т. д.
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 09:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(quandr @ Apr 11 2016, 12:32) *
В коде есть циклы, которые должны выполняться за определенное кол-во тактов, как в STM32F4. Просто у F4 силенок не хватает на пару фильтров. Пришлось на переходить на F7, но там хитрые конвейеры команд и т. д.

Вот именно. Хитрые конвейеры и т.д. Весьма вероятно, что там просто невозможно гарантировать повторяемость числа тактов. Но если очень надо, попробуйте, конечно. Я бы начал с TCM и исполнял бы код из ITCM RAM.
А что, к таймерам привязаться не получается?
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 10:09
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 13:50) *
Вот именно. Хитрые конвейеры и т.д. Весьма вероятно, что там просто невозможно гарантировать повторяемость числа тактов. Но если очень надо, попробуйте, конечно. Я бы начал с TCM и исполнял бы код из ITCM RAM.
А что, к таймерам привязаться не получается?

Есть один цикл, который должен выполняться за только за 35 тактов, так что с таймером не успеет. Как это гарантировать, вот это вопрос. А можно ли в ходе исполнения программы переключаться с ITCM RAM на что-то другое?
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 10:31
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(quandr @ Apr 11 2016, 13:09) *
Есть один цикл, который должен выполняться за только за 35 тактов, так что с таймером не успеет.

А что произойдёт, если будет выполняться быстрее, чем за 35 тактов?
У меня подозрение, что вы не с того конца к задаче подходите.

Цитата(quandr @ Apr 11 2016, 13:09) *
А можно ли в ходе исполнения программы переключаться с ITCM RAM на что-то другое?

Нужная шина выбирается автоматически в зависимости от адреса, по которому идёт доступ к памяти. Делаете переход на адрес в флеш, к примеру, и программа будет выполняться оттуда.
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 10:51
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 14:31) *
А что произойдёт, если будет выполняться быстрее, чем за 35 тактов?
У меня подозрение, что вы не с того конца к задаче подходите.


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

На внешний ЦАП с параллельным интерфейсом передается массив за 500 мкс. В это же время выполняется оцифровка данных и их загрузка с АЦП в буферную память. ЦАП выполняет роль регулировки усиления. Потом данные из видеопамяти загружаются в RAM МК и обрабатываются. Длина массива данных из АЦП 20000 х 16 бит. F4 справляется с этой задачей и успевает обработать одним фильтром, на остальное не вполне хватает времени. Вообщем желательно именно фрагмент с ЦАПом выполнить четко.
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 11:01
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(quandr @ Apr 11 2016, 13:51) *
На внешний ЦАП с параллельным интерфейсом передается массив за 500 мкс. В это же время выполняется оцифровка данных и их загрузка с АЦП в буферную память. ЦАП выполняет роль регулировки усиления. Потом данные из видеопамяти загружаются в RAM МК и обрабатываются. Длина массива данных из АЦП 20000 х 16 бит. F4 справляется с этой задачей и успевает обработать одним фильтром, на остальное не вполне хватает времени. Вообщем желательно именно фрагмент с ЦАПом выполнить четко.

Скажем так, не все детали ясны из этого объяснения. Но я почти уверен, что есть возможность сделать так, что никакие "циклы за 35 тактов ровно" не понадобятся.
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 11:13
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 15:01) *
Скажем так, не все детали ясны из этого объяснения. Но я почти уверен, что есть возможность сделать так, что никакие "циклы за 35 тактов ровно" не понадобятся.

35 циклов подразумевает 175 нс при частоте 200 МГц. Т.е. каждые 175 нс необходимо выдавать на цап новые данные.
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 11:26
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(quandr @ Apr 11 2016, 14:13) *
35 циклов подразумевает 175 нс при частоте 200 МГц. Т.е. каждые 175 нс необходимо выдавать на цап новые данные.

Я, может быть, чего-то не понимаю. Но обычно это делается так: цифровой фильтр молотит числа и складывает в буфер на опережение, а из буфера это выдаётся на ЦАП при помощи, скажем, EMC (external memory interface).
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 11:36
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 15:26) *
Я, может быть, чего-то не понимаю. Но обычно это делается так: цифровой фильтр молотит числа и складывает в буфер на опережение, а из буфера это выдаётся на ЦАП при помощи, скажем, EMC (external memory interface).

Фильтры обрабатывают данные из буферной памяти, в которую за эти 500 мкс набросал АЦП. А ЦАП в эти 500 мкс выдает заранее подготовленные данные на регулировку усиления. АЦП оцифровывает сигнал с частотой 40 МГц, а МК загружает в ЦАП в это же время выдает данные гораздо медленнее, но с четко фиксированным интервалом. Задача состоит в том, чтобы этот интервал не "гулял".
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 11:53
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(quandr @ Apr 11 2016, 14:36) *
МК загружает в ЦАП в это же время выдает данные гораздо медленнее, но с четко фиксированным интервалом. Задача состоит в том, чтобы этот интервал не "гулял".

Вариант 1. Повесить ЦАП на EMC и постараться настроить времянку так, чтобы всё соответствовало.
Вариант 2. Выдавать параллельные данные на ЦАП через DMA и GPIO по таймеру, а сигнал загрузки в ЦАП (WR или как его) формировать тем же таймером.
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 11:56
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 15:53) *
Вариант 1. Повесить ЦАП на EMC и постараться настроить времянку так, чтобы всё соответствовало.
Вариант 2. Выдавать параллельные данные на ЦАП через DMA и GPIO по таймеру, а сигнал загрузки в ЦАП (WR или как его) формировать тем же таймером.

Таймеру для прерывания нужно 24 такта туда и обратно. Или прерывание для DMA необязательно, хватит и переполнения?
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 11 2016, 12:07
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(quandr @ Apr 11 2016, 14:56) *
Таймеру для прерывания нужно 24 такта туда и обратно. Или прерывание для DMA необязательно, хватит и переполнения?

Интересно, зачем нужен был бы DMA, если бы он тормозил так же, как и прерывания? Процессор может вообще спать, пока DMA работает.
У DMA есть некоторая задержка срабатывания. Именно поэтому я и написал, что сигнал WR должен вырабатываться отдельно. Его можно формировать тогда, когда DMA уже гарантированно сработал.
Go to the top of the page
 
+Quote Post
quandr
сообщение Apr 11 2016, 12:14
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282



Цитата(scifi @ Apr 11 2016, 16:07) *
Интересно, зачем нужен был бы DMA, если бы он тормозил так же, как и прерывания? Процессор может вообще спать, пока DMA работает.
У DMA есть некоторая задержка срабатывания. Именно поэтому я и написал, что сигнал WR должен вырабатываться отдельно. Его можно формировать тогда, когда DMA уже гарантированно сработал.

Насчет WR понятно, а таймер на autoreload ставить?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01473 секунд с 7
ELECTRONIX ©2004-2016