Всё заработало!!!
Причём похоже и раньше работало, просто я не допёр, что проверяю не так как раньше.
Видимо были странности с loopback режимом (в котором я проверял) в физическом уровне.
А раньше я приём (фазу DCM) настраивал совместно с компом, по той инфе что он мне присылает.
Если по порядку, то я действовал так.
Сначала меня достало уговаривать Sinplify не портить иерархию связей.
Так что я на него плюнул и вернулся к XST. Проект с перестановкой байтов, как и раньше, не заработал (сейчас уже думаю, что я просто недопёр, надо было внимательнее посмотреть).
Тогда я решил добавить в ucf файл строки, которые призывают соблюдать времена по шине процессора. Подумал сначала, что это заставит плакать MAP и PAR горькими слезами. Но нет! Наоборот, проекту полегчало! Вот, например, таблица репорта многопроходной компилляции для старого варианта (без перестановки байт):
Код
Level/ Design Timing Number Run NCD
Cost [ncd] Score Score Unrouted Time Status
---------- ------ -------- -------- ----- ------------
H_H_8 * 302 0 0 01:21 Complete
H_H_4 * 306 0 0 01:20 Complete
H_H_2 * 307 0 0 01:23 Complete
H_H_5 * 311 0 0 01:34 Complete
H_H_1 * 340 0 0 01:29 Complete
H_H_3 * 3317 454 0 03:24 Complete
H_H_7 * 3320 530 0 02:37 Complete
H_H_6 * 5321 688 0 03:49 Complete
А вот она же для нового проекта (с перестановками байт) с добавлением констрейнтов по шине процессора:
Код
Level/ Design Timing Number Run NCD
Cost [ncd] Score Score Unrouted Time Status
---------- ------ -------- -------- ----- ------------
H_H_8 * 271 0 0 02:49 Complete
H_H_3 * 274 0 0 04:41 Complete
H_H_1 * 294 0 0 01:31 Complete
H_H_7 * 295 0 0 02:57 Complete
H_H_4 * 298 0 0 01:41 Complete
H_H_6 * 1283 308 0 02:08 Complete
H_H_2 * 1292 306 0 03:19 Complete
H_H_5 * 1308 306 0 02:31 Complete
Я было думал, что меня ждёт всё тот же неработающий результат, но что-то меня толкнуло включить плату по обмену с компом вместо loopback. Смотрю, приём-то есть! Проверил передачу - и она есть! И остальное работает. Настроил фазу приёма, после чего и loopback заработал почему-то. Опечалило только то, что в программе МАК-адрес записывался в регистр ГМАК-а нулевой, а д.б. быть заданным (он у меня в платформ-флеше лежит сразу за проектом матрицы после сигнатуры для поиска). Думаю - опять что-то не работает, но теперь уже стал не на проект кидаться, а стал выяснять в чём дело. Оказалось, что вкралась ошибка в функцию поиска МАК-адреса в платформ-флеше - она была настроена на меньший размер проекта, а он, как выяснилось, чуть увеличился. Я всё исправил (сделал с запасом) и эта чать заработала. Вот и всё! УРА!
Запустил стек протоколов (портированный OpenTCP), смотрю - работает, ARP-шками меняется.
Буду программить дальше.
Всем спасибо!