Ttitan 0 13 апреля, 2010 Опубликовано 13 апреля, 2010 · Жалоба Привет Всем! Постараюсь объяснить проблему. Имею 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 всё прекрастно. Откровенно говоря большого опыта работы с Квартусом нет, поэтому прошу разъяснять чуть подробнее. За раннее благодарен за помощь и поддержку Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 апреля, 2010 Опубликовано 13 апреля, 2010 · Жалоба Откровенно говоря большого опыта работы с Квартусом нет, поэтому прошу разъяснять чуть подробнее. телепаты в отпуске, код + описание метода проверки в студию. ИМХО 95% что это ваш косяк и сделали вы его в ваших интерфейсах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ttitan 0 14 апреля, 2010 Опубликовано 14 апреля, 2010 · Жалоба Нет проблем, вот проект XO779QZC1M8495O http://nukeuploads.com/download/1271227091...overka.zip.html Я думаю ты прав на 100%, вопрос только где ошибка. Вот стратегия проверки: 1. Записываю адреса в порт 10 значение 0, сначало младший потом старший; 2. Записываю данные последовательно 0x18 и 0 3. Записываю адреса в порт 11 значение 2, сначало младший потом старший; 4. Записываю данные массивом в следующей последовательности: 0, 0x7f, 0x11, 0x88, 0xaa, 0x55, 0x44, 0x44, 0x55, 0x55 Врядли связано с чтением(проверял с помощью таблицы инициализации) Вычитываю следующее: 0x18, 0, 0x11, 0x88, 0x11, 0x88, 0xaa, 0x55, 0x44, 0x44, 0x55, 0x55 Ошибкой является 2 и 3 байт должно быть 0, 0x7f. Моё предположение счетчик адреса, но хоть убей не пойму где Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 14 апреля, 2010 Опубликовано 14 апреля, 2010 · Жалоба Проект не смотрел, но могу предположить - метастабильные явления в цепях записи, счетчика. Нужно сделать "синхронизаторы" на все управляющие сигналы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 14 апреля, 2010 Опубликовано 14 апреля, 2010 · Жалоба но хоть убей не пойму где Выход с открытым коллектором(?) i/o cs16 говорит задатчику на шине, что УВВ к которому он обращается имеет 16 разрядную организацию. Если сигнал запрещен, то только 8 разрядный цикл доступа к УВВ может быть выполнен на шине. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ttitan 0 14 апреля, 2010 Опубликовано 14 апреля, 2010 · Жалоба sazh, ты прав, в данном случае шина isa является не совсем полноценной, то есть контроллер шины является моей разработкой в которой данный сигнал не используется. IOCS16 формировали когда использовали покупной компьютер(Lippert). Повторюсь, чтение проверил с помощью таблицы инициализации. ViKo, смотрел 4-х канальным осциллографом 5Гигавыборок с полосой 1ГГц( счетчик адреса[0], дешифрированный строб записи в порт ), сказать что у меня были какие-то сомнения. На ПЛИС заведён клок 40МГц, пробывал тактировать от этого клока, формировать сигнал wren. wrclock, результат аналогичен. Моё предположение что-то с цепями адреса, такое впечатление адрес не защёлкивается по wrclock или он защёлкивается по сигналу wren Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба У меня был (и есть) проект, где был процессор PIC и ПЛИС, которые работали каждый от своего тактового генератора. В процессоре была программо созданная шина - 8 данных (PortB), адресов штук 5, чтение, запись (PortA). А в ПЛИС был набор регистров, к которым можно было доступиться из процессора этой по шине. Так как регистры были в том числе и многобайтовые (и даже к памяти был доступ через регистры), имелись счетчики, которые после каждой записи или чтения инкрементировались и указывали на следующий байт. Такое устройство сразу стало работать ненормально! То запишется что-то, куда не надо, то не запишется то, что надо... Тыкание пробником осциллографа меняло картину работы, но все равно было плохо. Я тогда предполагал, что какие-нибудь отражения возникают в сигналах, и т.п. Теперь же думаю, что это и были те самые метастабильные состояния, когда управляющие сигналы приходят в ПЛИС несинхронно с тактовой частотой. Поэтому сигнал записи мог не дойти до регистров внутри, мог дойти, когда уже не надо... Я переделал проект. Добавил сигнал ALE (Address Latch Enable), которым защелкивал адрес с шины. Необходимость в счетчиках отпала. А на запись и чтение в ПЛИС создал схемы, я называл их "фильтры". Эти сигналы на входе ПЛИС должны были находиться в постоянном состоянии несколько тактов ПЛИС подряд, и тогда по концу сигнала записи или чтения формировался внутренний сигнал записи или чтения в регистры. Такая схема работает уже в более сотни экземплярах. Сбоев я не наблюдал. О така херня, малятки! P.S. А осциллографом метастабильные состояния не увидишь, если специально не выведешь наружу что-то изнутри. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба Нет проблем, вот проект у вас еще и всё в графике, предупреждать надо. Я думаю ты прав на 100%, вопрос только где ошибка. хмм, я конечно понимаю что интернет стирает границы, но с незнакомыми людьми лучше общаться на вы. Насчет ошибки у вас весь проект ошибка. Если бы вы были моим подаваном, то за формирование тактового сигнала блоков памяти mk_wr_ram на логике и триггерах inst17/inst129/inst21/inst38 и сигнала cWR[11] на inst11 с использованием мегафункции lpm_decode, да еще и без выходного регистра, на которую подаются сигналы nCRD/CA[4..0], которые идут напрямую с портов плис (и вашего проца), я бы вам руки оторвал, по самую голову (без обид) :) Мои рекомендации бросить заниматься асинхронщиной, уйти на полностью синхронную схему. Как это сделать многократно обсуждалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба На ПЛИС заведён клок 40МГц, пробывал тактировать от этого клока, формировать сигнал wren. wrclock, результат аналогичен. Моё предположение что-то с цепями адреса, такое впечатление адрес не защёлкивается по wrclock или он защёлкивается по сигналу wren Такой стиль описания (многоклоковый) без уделения должного внимания констрейнам - не проходит в Квартусе. Посмотрите временной анализ. Посадите все на одноклоковую синхронизацию, контроллер, иса, манчестер (от 40мГЦ до 80) не важно. Организуйте двупортовую память с различной разрядностью (мегафункцию используете, к чему свое мультиплексирование) и все заработает. (Вряд ли кто графику будет смотреть) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ttitan 0 16 апреля, 2010 Опубликовано 16 апреля, 2010 · Жалоба Прошу извинения des00. Как говорится опыт не пропьёшь, а мне пришлось самому учиться, был человек на работе, грамотный у кого можно было мозги прокачивать, к сажелению уволился, теперь приходится самому грызть гранит науки. Буду пробывать. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться