Цитата(doom13 @ Jul 5 2014, 10:58)

в варианте с двумя буферами памяти, которые переключаются поочереди чтение и запись независимы. Записывающая и вычитывающая стороны работают самостоятельно никак не оказывая влияния друг на друга.
Правильно ли я понимаю, что память с двумя буферами, это две одинаковые корки BRAM, с разными адресами, на одной шине (PLB) ?
Кстати, интересно, можно ли двухпортовую BRAM повесить на LMB шину? У меня, вроде бы, получалось, но были проблемы, и не удалось её корректно использовать.
Цитата(doom13 @ Jul 8 2014, 01:29)

С приёмом данных сначала разберитесь, потом будете искать более оптимальные пути.
Приём данных, кажется, удалось победить.
Теперь вопрос по флагам, флаг процессору - по внешнему прерыванию. Ок. Это сделал. Измеренная wireshark -ом скорость получилась 2940 пакетов в сек по 1 кБайту.
Теперь как мне передать от процессора флаг, что память прочитана? Первое, что приходит в голову - это GPIO, но подозреваю, что это не оптимально.
Сейчас использую microblaze на частоте 100 Мгц, интересно, что даст повышение частоты?
Хочу перейти на powerPC, только не соображу как на PowerPC запустить UDP пакеты. Под PowerPC тестовое приложение с эхо сервером организовано через TCP протокол.
Насколько я понял, если сделать большие UDP пакеты, то lwip сама их разрежет, и отошлет кусками.
Но кажется, UDP не поддерживает нумерацию пакетов, значит, рассчитывать, что они склеятся на стороны компа не приходится. Значит самому нужно их резать кусками, нумеровать, и склеивать на компе?
Цитата(Golikov A. @ Jul 8 2014, 00:22)

У вас прописаны констрайны, за сколько данные до фронта клока должны стоять и сколько после? Это весьма полезные констрайны!
Нет, не прописаны, буду рад подсказке, с констрейнами еще не успел разобраться.
Если, можно, ткните где почитать про констрейны.
Правильно ли я понимаю, что констрейны пишутся руками в UCF файле, рядом с распиновкой ног?
Где-то я слышал, что они удобно прописываются в PlanAhead, только с ходу не нашел.
У меня есть пример констрейна для входного сигнала:
Код
NET "CLOCK_110" TNM_NET = CLOCK_110;
TIMESPEC TS_CLOCK_110 = PERIOD "CLOCK_110" 110 MHz HIGH 50% INPUT_JITTER 100 ps;
OFFSET = IN 9.09091 ns VALID 9.09091 ns BEFORE "CLOCK_110" RISING;
Можно ли таким же образом указать ограничения на тактовый сигнал, который рождается после диф. приёмников - USER_CLK?
Из каких соображений выбирается JITTER ?
Код
IBUFGDS_1 : IBUFGDS
port map (I=>SMA_DIFF_CLK_IN_P,
IB=>SMA_DIFF_CLK_IN_N,
O=>USER_CLK);
IBUFDS_6 : IBUFDS
port map (I=>HDR2_64_SM_9_P,
IB=>HDR2_62_SM_9_N,
O=>DDR_6);
IDDR_6 : IDDR
port map (C=>USER_CLK,
CE=>VPP,
D=>DDR_6,
R=>GRND,
S=>GRND,
Q1=>out12,
Q2=>out13);
Спасибо!
Цитата(Ar-han @ Jul 8 2014, 11:07)

Ура, всё заработало! Нашел еще одну дурацкую ошибку, пихал данные в память по совершенно другой частоте, не по той, на которой они защелкивались в диф. приемниках.
Только не понятно, откуда брался шум при отсутствии входного сигнала.