|
Передача данных из 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.
|
|
|
|
|
 |
Ответов
|
Apr 5 2015, 08:40
|
Участник

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

|
Да, подобное и нужно)) контроллер этот как реализовать? написать на аппаратном языке?
|
|
|
|
|
Apr 6 2015, 08:24
|

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

|
Цитата(prussta @ Apr 5 2015, 11:40)  Да, подобное и нужно)) контроллер этот как реализовать? написать на аппаратном языке? Для Вас это задача сложная потому, что вы не совсем разобрались с такими ресурсами как: 1. Система на кристалле (что такое и для чего она была рождена на свет) 2. FPGA - принцип реализации КЦУ и ПЦУ на базе ПЛИС. Не суть важно как вы будете реализовывать контроллер записи/чтения. Можно в схемотехническом редакторе нарисовать или же описать работу устройства используя языки программирования HDL. ________________________________________________________________________________ _____ И САМОЕ ГЛАВНОЕ!!!!!!!!! Срочно нарисуйте структуру, того устройства который разрабатывайте. Укажите задачи которые решает процессор, а какие решает fpga. Иначе Ваш монстр погибнет в зачатом состоянии. Разберитесь с принципом работы Вашего будущего устройства на функциональном уровне. И желательно бы знать особенности программирования на ПЛИС. Потому как (К БОЛЬШОМУ СОЖАЛЕНИЮ ВСЕГО СООБЩЕСТВА ПРОГРАММИСТОВ) программировать FPGA и программировать процессор вещи достаточно сильно разные. ________________________________________________________________________________ __ Вернемся к вашим вопросам. Spi приёмники и передатчики, fifo также удобно реализовать на плис. А задача организации процесса записи в память или передатчик - это достаточно простая задача требующая конкретных вопросов. _______________________________________________________________________________ Поэтому рекомендую реализовать FIFO, SPI_TX, SPI_RX по отдельности на базе FPGA. А блок (контроллер) обеспечивающий запись и чтение для сопряжения процессора, FIFO, SPI_TX, SPI_RX реализовывать имея конкретные сигналы и вопросы.
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
|
Apr 6 2015, 11:28
|
Участник

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

|
Цитата(Dmitriyspb @ Apr 6 2015, 14:24)  Для Вас это задача сложная потому, что вы не совсем разобрались с такими ресурсами как: ...... Dmitriyspb, да Вы правы, что-то разрабатывать на ПЛИС приходится впервые, поэтому много темных мест)) и спаисбо за советы! Цитата(Dmitriyspb @ Apr 6 2015, 14:24)  программировать FPGA и программировать процессор вещи достаточно сильно разные. да, знаю, я только обзорно знакома с аппаратными языками, поэтому и возникают "новичковые" вопросы) программировать fpga сама не буду(если что). А здесь же хотелось получить альтернативные идеи по общей организации системы, потому что мои идеи не удались. Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм...
|
|
|
|
|
Apr 6 2015, 11:57
|

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

|
Цитата(prussta @ Apr 6 2015, 14:28)  Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм... Уважаемая Леди! При организации цифровой системы для обработки чего либо. У вас имеется рабочий цикл. Во время которого процессор (в вашем случае NIOS) прочитать данные -> обработать данные -> записать обработанные данные. И этот процесс я осмелюсь предположить синхронный. Вам необходимо расписать задачи процессора на один рабочий цикл (на один дискрет). Допустим если у вас за цикл 100 секунд (ОЧЕНЬ ОБРАЗНО ГОВОРЯ) процессор успевает выполнить 100 команд , то Вам необходимо распорядиться этим вычислительным ресурсом таким образом, чтобы успеть прочитать SPI, записать SPI, обработать данные и вернуться в основной цикл чтобы выполнить ряд основных задач. Цитата(prussta @ Apr 6 2015, 14:28)  Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм... Вы наверняка работаете по прерываниям. И вообще стоит ввести такое понятие как приоритет прерываний. И возможно все встанет на свои места даже если все задачи загрузить на NIOS. РАЗБЕРИТЕСЬ с собственными задачами на системном уровне. Не лезьте в глубь пока не разобрались на системном уровне. Цитата(Dmitriyspb @ Apr 6 2015, 14:55)  Уважаемая Леди! При организации цифровой системы для обработки чего либо. У вас имеется рабочий цикл. Во время которого процессор (в вашем случае NIOS) прочитать данные -> обработать данные -> записать обработанные данные. И этот процесс я осмелюсь предположить синхронный. Вам необходимо расписать задачи процессора на один рабочий цикл (на один дискрет).
Допустим если у вас за цикл 100 секунд (ОЧЕНЬ ОБРАЗНО ГОВОРЯ) процессор успевает выполнить 100 команд , то Вам необходимо распорядиться этим вычислительным ресурсом таким образом, чтобы успеть прочитать SPI, записать SPI, обработать данные и вернуться в основной цикл чтобы выполнить ряд основных задач.
Вы наверняка работаете по прерываниям. И вообще стоит ввести такое понятие как приоритет прерываний. И возможно все встанет на свои места даже если все задачи загрузить на NIOS.
РАЗБЕРИТЕСЬ с собственными задачами на системном уровне. Не лезьте в глубь пока не разобрались на системном уровне. ИМХО
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
Сообщений в этой теме
prussta Передача данных из SPI в SPI Mar 31 2015, 06:12 Dmitriyspb Цитата(prussta @ Mar 31 2015, 09:12) Всем... Mar 31 2015, 06:37 prussta Цитата2) простенький блочек, который соберет в куч... Mar 31 2015, 07:11 Dmitriyspb Цитата(prussta @ Mar 31 2015, 10:11) я пр... Mar 31 2015, 07:19  prussta Цитата(Dmitriyspb @ Mar 31 2015, 13:19) М... Mar 31 2015, 07:26   Dmitriyspb Цитата(prussta @ Mar 31 2015, 10:26) Так ... Mar 31 2015, 07:46    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 GAYVER с фифошкой никогда плотно не работал, но на скорую... Apr 6 2015, 07:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|