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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
zherdiy
сообщение Dec 11 2008, 09:59
Сообщение #16


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Мне нужен просто быстрый интерфейс передачи данных в компьютер. Так как делали раньше, по СОМ-порту, некоторые вещи мы уже не успеваем передавать. Пока я планирую передавать по ethernet, если разберусь с ним. На прием команд от компа скорее всего оставлю СОМ, так что прием через ethernet не понадобится. Ну и протокол верхнего уровня мне нужен хотябы UDP, так как наши програмисты, которые пишут программу для компа, которая будет принимать данные от меня, столкнулись с большим неудобством "общения" по МАСам, а TCP/IP они уже работали.
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 11 2008, 10:27
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



В таком случае lwip c xilkernel в топку. Очень тяжелая эта махина по весу.
Используете напрямую регистры ethernetlite или в крайнем случае lwip_raw (без ОС).
Команды ваши можно принимать и по ethernet (реализовав каким-нибудь образом подтверждение и контрль посылок), а то слишком сложно у вас получается - сеть на отправку данных, uart на получение команд.
Какую скорость нужно получить ?
И что это за данные?
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 11 2008, 12:34
Сообщение #18


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Так напрямую, через ethernetlite, я не смогу протокол высшего уровня (UDP) организовать.
А на lwip_RAW я вначале смотрел, но он мне более сложным показался - куча обработчиков, таймер (с которым я не работал)... в общем запутался и не понравилось. Но возможно придется вернуться к этому варианту.

А по поводу потока данных (щас по памяти навскидку) - 14 каналов АЦП, непрерывно. Нужно принять, усреднить несколько десятков значений по каждому каналу в одно и передать на комп. Скорость... навскидку не получается, считать нужно, но помню, что в СОМ-порт не влазим. А с тем, что управление по СОМу, а передача данных по ethernet сложно - тут я с вами не соглашусь. СОМ порт у меня хорошо отработан, он простой в использовании. Я бы на нем всю жизнь работал, если бы не нужда в более быстром интерфейсе. Но думаю, что и с ethernet разберусь, тем более что мне только передача нужна.

А вы случайно нигде не видели ядрышек для UDP, простых в использовании?
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 11 2008, 13:35
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(zherdiy @ Dec 11 2008, 10:34) *
Так напрямую, через ethernetlite, я не смогу протокол высшего уровня (UDP) организовать.

Уверены ?
Рекомендую почитать документацию всеже на ethernetlite и заодним на UDP и IP

Цитата
А с тем, что управление по СОМу, а передача данных по ethernet сложно - тут я с вами не соглашусь. СОМ порт у меня хорошо отработан, он простой в использовании.

Зачем кидать два провода, когда обойтись можно одним ? и не в сложности тут дело.


Цитата
14 каналов АЦП, непрерывно.

А какая частота дискретизации АЦП и разрядность ?? Легко же подсчитать скорость потока данных.


Кстати , а как собрались считывать данные с АЦП при помощи microblaze ?


Цитата
А вы случайно нигде не видели ядрышек для UDP, простых в использовании?

Видел, почему поиском не пользуетесь ?

http://www.fpga4fun.com/10BASE-T.html
http://opencores.org/projects.cgi/web/ethmac/overview
http://electronix.ru/forum/index.php?showtopic=49929

Удачи.
Go to the top of the page
 
+Quote Post
vik0
сообщение Dec 11 2008, 13:40
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



Цитата(zherdiy @ Dec 11 2008, 14:34) *
...но помню, что в СОМ-порт не влазим.

Сильно не влазите?
Цитата
СОМ порт у меня хорошо отработан, он простой в использовании. Я бы на нем всю жизнь работал, если бы не нужда в более быстром интерфейсе.

Может быть тогда посмотреть в сторону USB на чипе FTDI? Тогда вообще ничего менять не прийдется. Ни на PC, ни в ПЛИС
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 15 2008, 13:59
Сообщение #21


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



vik0, USB использовать не получится, так как я использую кит spartan3an - у него USB только для прошивки.

Костян: "Кстати , а как собрались считывать данные с АЦП при помощи microblaze ?"
У меня на ките уже распаяна АЦП LTC1407A-1 с усилителем LTC6912-1. Правда я не стал мудрить с Микроблейзовским SPI и набросал в схематике ISE схемку для получения данных.
А по поводу скорости, там дело такое, что если мы будем некоторые данные усреднять, то СОМ порта хватит, а если нет - то впритык. Это если стандартными значениями до 128КБит/с пользоваться. В любом случае мне лучше сразу подстраховаться ethernetом.

Развивая тему дальше, хочу спросить: что это за ошибки при компиляции выскакивают?
./microblaze_0/lib//libxil.a(print.o): In function `print':
/edkgnu/jm/mb/build/nt/bld_gcc/gcc/libgloss/microblaze/print.c:25: undefined reference to `outbyte'
./microblaze_0/lib//libxil.a(xil_printf.o): In function `padding':
/edkgnu/jm/mb/build/nt/bld_gcc/gcc/libgloss/microblaze/xil_printf.c:50: undefined reference to `outbyte'
...
./microblaze_0/lib//libxil.a(read.o): In function `read':
/edkgnu/jm/mb/build/nt/bld_gcc/gcc/libgloss/microblaze/read.c:35: undefined reference to `inbyte'

- я ж вообще ни print.c, ни xil_printf.c не пользуюсь. Откуда ноги растут?
Программа прилагается
Прикрепленные файлы
Прикрепленный файл  code.rar ( 2.15 килобайт ) Кол-во скачиваний: 53
 
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 16 2008, 08:02
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(zherdiy @ Dec 15 2008, 11:59) *
Костян: "Кстати , а как собрались считывать данные с АЦП при помощи microblaze ?"
У меня на ките уже распаяна АЦП LTC1407A-1 с усилителем LTC6912-1. Правда я не стал мудрить с Микроблейзовским SPI и набросал в схематике ISE схемку для получения данных.

Не поняли вопрос. Ну набросали схемку , а как заводить дальше отсчеты на ethernet ?

Цитата
- я ж вообще ни print.c, ни xil_printf.c не пользуюсь. Откуда ноги растут?
Программа прилагается

Ну какой Вы несамостоятельный.

Смотрим *.mss файл от Xapp433 :

Код
BEGIN OS
PARAMETER OS_NAME = xilkernel
PARAMETER OS_VER = 3.00.a
PARAMETER PROC_INSTANCE = microblaze_0
PARAMETER systmr_freq = 100000000
PARAMETER max_pthreads = 100
PARAMETER pthread_stack_size = 16384
PARAMETER max_readyq = 100
PARAMETER config_time = true
PARAMETER max_tmrs = 100
PARAMETER config_sema = true
PARAMETER max_sem = 25
PARAMETER max_sem_waitq = 100
PARAMETER debug_mon = false
PARAMETER stdin = RS232_Uart
PARAMETER stdout = RS232_Uart
PARAMETER sysintc_spec = opb_intc_0
PARAMETER config_debug_support = true
PARAMETER systmr_dev = opb_timer_1
PARAMETER static_pthread_table = ((serverThread,1))
END


Обращаем особое внимание на параметр stdin и stdout . Они у Вас прописаны ?
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 16 2008, 09:06
Сообщение #23


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Насчет АЦП. См.картинку подключения АЦП+Усил на ките Spartan3AN. Выход уже оцифрованных данных идет по SDO в последовательном виде (вначале один канал, за ним второй). Преобразуем эти данные в паралельный вид и пихаем на вход GPIO в Микроблейз. Главное вовремя стробонуть паралельный регистр.

По поводу моих ошибок.
Вставил в MSS
PARAMETER stdin = RS232_DTE
PARAMETER stdout = RS232_DTE
и ошибки пропали. А я раньше думал зачем определяют стандартные входы/выходы, если все работает и без них. А что туда пихает Lwip?
Эскизы прикрепленных изображений
 Р В Р’ Р’ Р’ Р’ Р’ Р’ Р’˜Р В·Р С•бражение уменьшено
Прикрепленное изображение
(88.7 килобайт)
 
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 16 2008, 09:15
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(zherdiy @ Dec 16 2008, 07:06) *
Насчет АЦП. См.картинку подключения АЦП+Усил на ките Spartan3AN. Выход уже оцифрованных данных идет по SDO в последовательном виде (вначале один канал, за ним второй). Преобразуем эти данные в паралельный вид и пихаем на вход GPIO в Микроблейз. Главное вовремя стробонуть паралельный регистр.

Мне знакома схемотехника подобных плат. Я хотел узнать как вы собирались заводить данные в контроллер. Ответ GPIO.
Уверены что порты ввода/вывода справятся с вашим потоком данных ? Это весьма тормознутая штука. А эта АЦП то 3 MSPS. Подумайте над этим вопросом.
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 17 2008, 12:00
Сообщение #25


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



А мне не нужно так быстро считывать в микроблейз. У меня эти данные на большой скорости обновляются только на парралельном регистре, подключенном к GPIO, и только когда нужно я беру их в процессор.

Наконец-то все ошибки в программном коде по ethernet устранил и получил "сюрприз" при компиляции проекта

ERROR:Pack:18 - The design is too large for the given device and package.
Please check the Design Summary section to see which resource requirement for
your design exceeds the resources available in the device.

Не хватило моего спартана.
Буду пробовать разбираться с RAW без LwIP.

Сообщение отредактировал zherdiy - Dec 17 2008, 12:06
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 22 2008, 13:39
Сообщение #26


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Написал, по примеру XAPP1026 програмульку для RAW. Компиляцию пока не запускал, так как не понял зачем вообще используется таймер. Физически линия его прерывания заводится на контроллер прерываний. Обработчик прерывания таймера имеет следующий вид:
void xadapter_timer_handler(void *p)
{ unsigned *timer_base = (unsigned *)XPAR_XPS_TIMER_0_BASEADDR;
unsigned tcsr = 0;

static int odd = 1;
tcp_fasttmr(); //???
odd = !odd; //???
if (odd)
tcp_slowtmr(); //???
platform_timer_interrupt_count++;

/* Загрузка таймера и очистка бита прерывания */
XTmrCtr_mSetControlStatusReg(XPAR_XPS_TIMER_0_BASEADDR, 0, ХTC_CSR_INT_OCCURED_MASK | XTC_CSR_LOAD_MASK);
XTmrCtr_mSetControlStatusReg(XPAR_XPS_TIMER_0_BASEADDR, 0, XTC_CSR_ENABLE_TMR_MASK | XTC_CSR_ENABLE_INT_MASK | XTC_CSR_AUTO_RELOAD_MASK | XTC_CSR_DOWN_COUNT_MASK);

/* пуск таймера */
/* XTmrCtr_mSetControlStatusReg(XPAR_XPS_TIMER_0_BASEADDR, 0, XTC_CSR_ENABLE_TMR_MASK | XTC_CSR_ENABLE_INT_MASK); */
XIntc_mAckIntr(XPAR_XPS_INTC_0_BASEADDR, XPAR_XPS_TIMER_0_INTERRUPT_MASK);
}
------------------------------------------------------------
Мне не понятно, что такое odd, что делает процедура tcp_fasttmr(). Потом мы просто чистим внутренний регистр от бита прерывания. Но после этого стоит закоментареная процедура XTmrCtr_mSetControlStatusReg - зачем вообще это было в пример включать?
В общем непонятно что делает обработчик прерывания таймера. Могу ли я отправлять пакеты по UDP без всяких таймеров?
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 24 2008, 09:59
Сообщение #27


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

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Подскажите кто может: не поместился код в блочную память и пришлось секции .text и .bss размещать на внешней DDR2. При этом без ошибок генерируется LinkerScript, проект с ним компилится, но не работает. В чём может быть проблема?

Подскажите кто может: не поместился код в блочную память и пришлось секции .text и .bss размещать на внешней DDR2. При этом без ошибок генерируется LinkerScript, проект с ним компилится, но не работает. В чём может быть проблема?
Go to the top of the page
 
+Quote Post
maugli
сообщение Dec 25 2008, 12:56
Сообщение #28


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

Группа: Свой
Сообщений: 199
Регистрация: 29-07-08
Из: Серпухов
Пользователь №: 39 283



При включении конфигурируется только ПЛИС вместе с блочной памятью , а DDR2 имеет неопределенное значение. Секция .text является программным кодом , поэтому указание линкеру по её размещению в DDR2 без использования специального загрузчика , переносящего код программы к примеру из FLASH в DDR2 неправильно. Необходимо разместить все секции относящиеся к программному коду в блочной памяти.
Go to the top of the page
 
+Quote Post
Дмитрий Мазунин
сообщение Dec 25 2008, 14:18
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Неправильно только для законченного прибора. Если заливаем прогу через JTAG, то спокойно размещаем код в DDR.
Go to the top of the page
 
+Quote Post
Zinger
сообщение Dec 26 2008, 10:48
Сообщение #30





Группа: Участник
Сообщений: 13
Регистрация: 26-12-08
Пользователь №: 42 765



Подскажите пожалуйста. Недавно начал работать с Microblaze. Требуется реализовать WebServer. Скачал пример с сайта Xilinx. Но возникла проблема. Как я понял подобные проекты большия для размещения во внутренней памяти и их размещают во внешней DDR2. Проблема заключается в том что у меня ничего не работает даже простенькие проекты с использованием внешней памяти. Подскажите как реализуется проект с использованием внешней памяти. Или если есть литература скиньте ссылку пожалуста. Буду очень признателен.
Go to the top of the page
 
+Quote Post

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

 


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


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