|
Передача данных из SPI в SPI, Подскажите как лучше |
|
|
|
Mar 31 2015, 06:12
|
Участник

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

|
Всем доброго времени суток! Подскажите, как лучше организовать систему. Система в целом выглядит так: Есть софт процессор NiosII - он выполняет основные задачи: отвечает на запросы пользователя, принимает какие-то данные, обрабатывает их, выдает ответы и прочее. Также есть два SPI: SPI1 - он принимает данные из вне как только вся система запустилась и SPI2 в который мне нужно эти данные (определенное количество) выплюнуть (этот SPI от Ethernet платки). Получается, что мне нужно постоянно гнать данные из SPI1 в SPI2. Причем, иногда мне нужно в этот поток данных добавлять еще байт своих данных. Как это можно организовать с минимальным участием проца? Чтобы он успевал делать свою основную работу и меньше отвлекался на эту передачу? Может есть какая-то переферия для таких задач? Подскажите куда посмотреть? Частота работа Niosa 100MГц, а данные на SPI1 приходят с частотой 24Мгц. Пока у меня рисуется стандартный вариант: по прерыванию на прием по SPI1 я через DMA записываю поступившие данные в память, как только пришло необходимое кол-во байт, выставляю флаг. И в основном цикле программы по этому флагу отправляю эти данные в SPI2.
|
|
|
|
|
 |
Ответов
|
Mar 31 2015, 07:11
|
Участник

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

|
Цитата 2) простенький блочек, который соберет в кучу данные с разных FIFO в соответствии с протоколом; я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?
|
|
|
|
|
Mar 31 2015, 07:19
|

Местный
  
Группа: Свой
Сообщений: 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 раз встал.
|
|
|
|
|
Mar 31 2015, 07:26
|
Участник

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

|
Цитата(Dmitriyspb @ Mar 31 2015, 13:19)  Можно и процессором, но мне кажется fpga здесь разумней выбрать. Все что я описал я предполагал реализовать на fpga
Если не ясно как его реализовать, тогда спрашивайте...поясню Так я и так реализую на fpga, использую софтпроцессор NiosII для управления всей подключенной переферией - SPI, FIFO, DMA и т.д. Делаю на Cyclone III. Или я не так понимаю? Цитата Если не ясно как его реализовать, тогда спрашивайте...поясню Поясните, пожалуйста
|
|
|
|
|
Mar 31 2015, 07:46
|

Местный
  
Группа: Свой
Сообщений: 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 раз встал.
|
|
|
|
|
Mar 31 2015, 09:02
|

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

|
Цитата(prussta @ Mar 31 2015, 11:54)  Я просто не пишу на аппаратных языках, поэтому и забыла про этот вариант и рассматривала стандартные компоненты, которые уже есть. Схемотехническом редакторе? рисуете схемки?
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
|
Mar 31 2015, 09:40
|
Участник

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

|
Цитата(Dmitriyspb @ Mar 31 2015, 15:02)  Схемотехническом редакторе? рисуете схемки? Да, иногда приходится и этим заниматься))
|
|
|
|
Сообщений в этой теме
prussta Передача данных из SPI в SPI Mar 31 2015, 06:12 Dmitriyspb Цитата(prussta @ Mar 31 2015, 09:12) Всем... Mar 31 2015, 06:37 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|