Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вернемся к Avalon-MM Master
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
torik
Спецы, поясните суть процесса, представленного на рисунке. Почему чтение (см. datavalid) идет с такими большими промежутками?
система - Avalon-MM Master - clock crossing bridge - on-chip memory.
Если исключить clock crossing bridge (он добавлен для тестирования, так будет в реальной системе с DDR), то чтение идет непрервыно (оно и понятно...)
Methane
Цитата(torik @ Feb 5 2009, 08:24) *
Спецы, поясните суть процесса, представленного на рисунке. Почему чтение (см. datavalid) идет с такими большими промежутками?
система - Avalon-MM Master - clock crossing bridge - on-chip memory.
Если исключить clock crossing bridge (он добавлен для тестирования, так будет в реальной системе с DDR), то чтение идет непрервыно (оно и понятно...)

Если чтение из DDR, то нормально.
torik
Не, не нормально. Ведь чтение идет по последовательным адресам. Если вместо clock crossing bridge поставить pipeline bridge, то все выглядит вполне нормально. Проблемы именно с clock crossing bridge
Methane
Цитата(torik @ Feb 5 2009, 08:41) *
Не, не нормально. Ведь чтение идет по последовательным адресам. Если вместо clock crossing bridge поставить pipeline bridge, то все выглядит вполне нормально. Проблемы именно с clock crossing bridge

Для того чтобы читать по последовательным, там кажись нужно говорить что вы burst хотите. /* я мало читал про авалон */
torik
Burst - это другое - там вроде как подаешь начальный адрес, указываешь длину пакета burstcount и он выдает данные. Увы, результат совершенно тот же...
Methane
Цитата(torik @ Feb 5 2009, 09:58) *
Burst - это другое - там вроде как подаешь начальный адрес, указываешь длину пакета burstcount и он выдает данные. Увы, результат совершенно тот же...

Ну да. Вы указываете адрес. Указываете длинну пакета. Говорите "читать", и через некоторое (значительное) вы начинаете получать данные, причем уже с большой скоростью.
torik
Дык в том и дело, что, как и видно из картинки, нихрена подобного не происходит (у меня не burst, а pipeline transfer, но это без разницы) - данные идут не пакетом, а побайтно с бооольшим промежутком...
vetal
На шине есть еще какой-нибудь мастер, подключенный к данному слэйву?
torik
Нет, на данный момент никого больше на шине нет.
Вот, собственно, сам проект. Сейчас там в SOPC стоит pipeline brige (32 бита) и он-чип память (16 бит). Поглядите в симуляторе - все выглядит как и положено.
Добавьте clock crossing bridge - сразу будет что-то ужасное...
murmel1
А у клок кроссинг бриджа есть режим пайплайн ? (Дома у меня квартуса нету)
А если есть, то включен ли он ?

А какая тактовая у самой памяти ?
Нет ничего удивительного, что clock crossing bridge работает с большой задержкой. Он теряет много тактов на ресинхронизацию данных между двумя тактовыми частотами, сначал адрес туда, потом данные оттуда. Но почему он не читает потоком, я сам не понимаю.

Вариант решения - собственная функция ресинхронизации. Могу выслать завтра.
id_gene
У waitrequest на диаграмме активный уровень какой?
Если 0, по почему после того, как он ушел (в районе адреса 0x028) вы не убрали запрос на чтение? Хотите читать дальше? И почему адресом болтали все это время?
Если 1, то вы успели набросать десяток запросов, прежде чем пришел waitrequest, и 11 до datavalid. В мосте буфер большой?
Может у вас слишком большая разница частот в обоих доменах?

Моделируйте ХДЛ.
torik
waitrequest - активный высокий (запрос ожидания). Поэтому адрес меняется пока не выставлен сигнал ожидания. Буфер там достаточный...
Ошибка там в системе SOPC - мостом разделяю тактовые, а для памяти тактовую задал неправильно (не совпадает с мостом). Поправил - вижу болееменее нормальный результат.

Теперь что касается сигнала чтения. Он выставляется независимо от waitrequest, а зависит от требований моего устройства. В устройстве стоит ФИФО, когда оно незаполнено - выставляется сигнал чтения, фактически это запрос чтения. Когда буфер заполняется, сигнал снимается. Чтобы сигнал чтения не мешал работать всем остальным мастерам на шине, уровни заполненности ФИФО, при которых он устанавливается и сбрасывается - разные...
А чё, надо сигнал чтения снимать, когда waitrequest = 1?
murmel1
Цитата(torik @ Feb 6 2009, 10:33) *
А чё, надо сигнал чтения снимать, когда waitrequest = 1?

Ни в коем случае ! Того, кто вам это советует надо засадить читать спецификацию шины авалон ! Даже не читать - картинки смотреть!
torik
Блин, проблема за проблемой smile.gif. Теперь еще данные 32 бит надо в 24 бит преобразовавыть...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.