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

 
 
> Wiznet + ARM + ПЛИС. Как связать?
Sarez
сообщение Apr 27 2007, 10:52
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 75
Регистрация: 17-08-06
Из: Минск
Пользователь №: 19 630



Доброго всем дня! Подскажите пожалуйста в следующем вопросе. Имеется стек протоколов на базе чипа Wiznet 3150, он связан с процессором LPC2214 в режиме Direct посредством использования интерфейса внешней шины с использованием 8 разрядной шины данных. Так же в системе имеется ПЛИС ( CoolRunerXPLA3 на 512 макроячеек) -она реализует протокол обмена с остальными устройствами в системе и имеет подключения к шине данных ПРОЦЕССОР - СТЕК. Общая идея такова - данные из компьютера гонятся в стек, реализующий функции сетевого интерфейса, по двум каналам - один управляющий - для процессора, предназначен для приема команд, отдаваемых хостом непосредственно LPC2214 и управляющих процессом приема\передачи данных по второму каналу, второй канал - данные, которые должны загонятся в ПЛИС, и которые ПЛИС гонит дальше по протоколу, который она реализует . Требуется данные загонять в ПЛИС с как можно большей скоростью. Поэтому вопрос следующий - каким образом можно связать стек и ПЛИС, чтобы добится максимального быстродействия? У меня следующие варианты :

1) Возможно ли организовать обмен так , чтобы плис ловила посылки данных , передаваемые от стека к процессору? Поцессор начинал бы прием данных с выставления флага на одном из выводов , плис по этому флагу ловила бы посылки от стека. В функции процессора входило бы управление стеком и обработка флагов от плис (. Вопрос в том, как засинхронизировать работу плис и контроллера со стеком, чтобы плис ловила требуемые посылки....Либо задержки считать, либо по числу тактов... Как в таком случае можно посчитать количество тактов, необходимое для определенного куска кода....( работаю в IAR 4.40, есть ли там , как KEIL счетчик тактов? )

2) Буферизовать данные со стека в памяти процессора , а затем передавать их из процессора в плис.
Во первых , получается большая временная задержка : считывание из стека - запись в ОЗУ процессора - считывание из ОЗУ процессора - ПЛИС. Плюс постоянное переключение между стеком и плис.
Во вторых, не хотелось бы тратить ОЗУ процессора на реализацию больших буферов.
В третьих - придется тратить ресурсы ПЛИС на реализацию интерфейся памяти, чтобы обмениваться данными с процессором.

3) Вариант №1 , но буферизировать данные не в памяти процессора, а во внешней ОЗУ...
Здесь есть ряд вопросов - возможно ли перекопировать данные из памяти стека в память внешнего ОЗУ напрямую ? Например используя memcpy :

void *memcpy(void *s1, const void *s2, size_t n)
{
char *su1 = (char *)s1; // адрес памяти стека
const char *su2 = (const char *)s2; // адрес памяти внешнего ОЗУ

for (; 0 < n; ++su1, ++su2, --n)
{

*su1 = *su2;

}
return (s1);
}

Заранее спасибо за ответы!!!
Go to the top of the page
 
+Quote Post



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

 


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


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