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

 
 
> Передача данных из SPI в SPI, Подскажите как лучше
prussta
сообщение Mar 31 2015, 06:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003



Всем доброго времени суток! Подскажите, как лучше организовать систему. Система в целом выглядит так: Есть софт процессор NiosII - он выполняет основные задачи: отвечает на запросы пользователя, принимает какие-то данные, обрабатывает их, выдает ответы и прочее. Также есть два SPI: SPI1 - он принимает данные из вне как только вся система запустилась и SPI2 в который мне нужно эти данные (определенное количество) выплюнуть (этот SPI от Ethernet платки). Получается, что мне нужно постоянно гнать данные из SPI1 в SPI2. Причем, иногда мне нужно в этот поток данных добавлять еще байт своих данных. Как это можно организовать с минимальным участием проца? Чтобы он успевал делать свою основную работу и меньше отвлекался на эту передачу? Может есть какая-то переферия для таких задач? Подскажите куда посмотреть? Частота работа Niosa 100MГц, а данные на SPI1 приходят с частотой 24Мгц.
Пока у меня рисуется стандартный вариант: по прерыванию на прием по SPI1 я через DMA записываю поступившие данные в память, как только пришло необходимое кол-во байт, выставляю флаг. И в основном цикле программы по этому флагу отправляю эти данные в SPI2.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prussta
сообщение Mar 31 2015, 07:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003



Цитата
2) простенький блочек, который соберет в кучу данные с разных FIFO в соответствии с протоколом;

я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Mar 31 2015, 07:19
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(prussta @ Mar 31 2015, 10:11) *
я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?


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

Цитата(prussta @ Mar 31 2015, 10:11) *
я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?


Если не ясно как его реализовать, тогда спрашивайте...поясню


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
prussta
сообщение Mar 31 2015, 07:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003



Цитата(Dmitriyspb @ Mar 31 2015, 13:19) *
Можно и процессором, но мне кажется fpga здесь разумней выбрать.
Все что я описал я предполагал реализовать на fpga



Если не ясно как его реализовать, тогда спрашивайте...поясню


Так я и так реализую на fpga, использую софтпроцессор NiosII для управления всей подключенной переферией - SPI, FIFO, DMA и т.д. Делаю на Cyclone III. Или я не так понимаю?
Цитата
Если не ясно как его реализовать, тогда спрашивайте...поясню

Поясните, пожалуйста
Go to the top of the page
 
+Quote Post
Dmitriyspb
сообщение Mar 31 2015, 07:46
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата(prussta @ Mar 31 2015, 10:26) *
Так я и так реализую на fpga, использую софтпроцессор NiosII для управления всей подключенной переферией - SPI, FIFO, DMA и т.д. Делаю на Cyclone III. Или я не так понимаю?

Тогда я все верно понял.


Цитата(prussta @ Mar 31 2015, 10:26) *
Поясните, пожалуйста


У вас есть допустим 2 FIFO. 1-ая (FIFO1) заполняется процессором в режиме DMA, а вторая с порта SPI1 (FIFO2).

(На этом этапе необходимо разобраться с принципом FIFO и организацией DMA.)

Как известно FIFO позволяет согласовывать различные клоковые домена. В вашем случае можно предположить 3 клоковых домена, а именно 1-ый ПРОЦЕССОРНЫЙ, 2-ой SPI1, 3-ий SPI2.

Т.е. в FIFO1 с удобной скоростью для процессора, в FIFO2 пишется с скоростью прихода данных от SPI1, а SPI2 загружаются данные с удобной для SPI2 скоростью.

________________________________________________________________________________
__________________________________________________________
Мы разобрались как записать в память. Теперь разберемся как из нее вычитать.
Вычитываем из памятей FIFO1, FIFO2 c скоростью SPI2. Но так как мы передаем данные от двух источников (FIFO1, FIFO2) необходимо вычитанные данные миксовать необходимым образом (это из протокола SPI2 видно).
Если микс реализовать на verilog, тогда это будет цикл case.
___________________________________________
уточняйте свой вопрос. Что именно не ясно?





--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- prussta   Передача данных из SPI в SPI   Mar 31 2015, 06:12
- - Dmitriyspb   Цитата(prussta @ Mar 31 2015, 09:12) Всем...   Mar 31 2015, 06:37
|- - prussta   Ах, вот оно что! Спасибо, Дмитрий, за разъясне...   Mar 31 2015, 08:54
|- - Dmitriyspb   Цитата(prussta @ Mar 31 2015, 11:54) Я пр...   Mar 31 2015, 09:02
|- - prussta   Цитата(Dmitriyspb @ Mar 31 2015, 15:02) С...   Mar 31 2015, 09:40
- - prussta   ЦитатаУ вас есть допустим 2 FIFO. 1-ая (FIFO1) зап...   Apr 3 2015, 11:10
|- - GAYVER   Цитата(prussta @ Apr 3 2015, 14:10) Dmitr...   Apr 3 2015, 11:45
- - prussta   Да, подобное и нужно)) контроллер этот как реализо...   Apr 5 2015, 08:40
- - GAYVER   с фифошкой никогда плотно не работал, но на скорую...   Apr 6 2015, 07:49
- - Dmitriyspb   Цитата(prussta @ Apr 5 2015, 11:40) Да, п...   Apr 6 2015, 08:24
- - prussta   Цитата(Dmitriyspb @ Apr 6 2015, 14:24) Дл...   Apr 6 2015, 11:28
- - Dmitriyspb   Цитата(prussta @ Apr 6 2015, 14:28) Я так...   Apr 6 2015, 11:57
- - GAYVER   а ведь действительно, если работать по прерыванию ...   Apr 7 2015, 07:17


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

 


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


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