Привет Всем!
Постараюсь объяснить проблему.
Имею CycloneII EP2C5Q208, к нему подключена 51 кристалка(с8051f132) через параллельный 8-ми разрядный интерфейс и приближенную шину ISA, проект рисую в QuartusII9.0sp2.
Пытаюсь сообразить канал передачи от с51 -> isa через 1Кбайт RAM M4K. Поскольку с51 - 8 разрядный а isa - 16 разрядная соответственно использую запись 8-мь разрядов, чтение 16-ть разрядов.
Интерфейс с51-ПЛИС:
8 разрядов данные;
8 разрядов адрес;
стробы чтения записи;
Интерфейс ПЛИС - isa:
16 разрядов данные;
4 разрядов адрес;
стробы чтения записи;
Доступ к памяти в ПЛИС организовал следующим образом: в один порт записываю адрес в счетчик, который инкреминтирую по каждой записи байта, во второй порт записываю данные, доступ со стороны isa организавал как и для с51, порт для адреса и порт для данных.
После проверки получил следующую картину:
1. Установил адрес и записываю масив данных всё отлично. Получилось очень быстро и я был счаслив и доволен :-))
2. Но после того когда я начал приближаться к решению своей задачи, а она представляла собой запись разных масивов данных по разным адресам выяснилось не всё так хорошо. После записи двух байт с нулевого адреса, устанавливаю адрес = 2 записываю данные ноль, 0x7f и т.д. получаю вместо нуля еденицу, и как бы я не прыгал не выходит каменный цветок. Правда наблюдается ещё интересные факты: если записывать не во 2-й адрес а в 1 или 3, 4 всё прекрастно.
Откровенно говоря большого опыта работы с Квартусом нет, поэтому прошу разъяснять чуть подробнее. За раннее благодарен за помощь и поддержку