Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SRAM controller
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
D-Luxe
Задача написать SRAM контроллер для Cypress CY7C1471V33, который подключен к Virtex4.

Чтение из SRAM'ины осуществляет процессор PowerPC. Поскольку SRAM поддерживает пакетный ( burst ) и конвейерный ( pipeline ) режимы, то задумался как это реализовать.

Как процессор может программно выбирать эти режимы ? Ведь функции XIo_Out32, XIo_In32 производят чтение, запись по одному адресу.

Может это надо как-то связать с кэш-контроллером, никак не могу понять.
Иван Панченко
Если я из ваших слов верно понял задачу, то она состоит в следующем:
у вас есть SRAM, у вас есть PowerPC внутри Virtex 4. Вы хотите написать блочок в ПЛИС, который будет осуществлять требуемый обмен между SRAM и powerPC(через ПЛИС).
Если так, то вы вольны делать почти, все что угодно=) По-моему, должно выглядеть как-то так:
процессор отдает команду ПЛИС(режим работы/начальный адрес/количество вычитываемых данных),
ПЛИС же по получении этой команды, соблюдая все временные диаграммки, лезет в SRAM, и выдает Вам куда-то(не знаком с интерфейсами ppc-fpga, хотя может и там fsl?=) ) требуемые данные.
а функции,вы в итоге сами себе и напишите, я это так понимаю=)
D-Luxe
Вы правильно поняли задачу. Только интерфейс у процессора PLB.

Ваше решение мне нравится, только не совсем понятно как написать функцию, которая при выставлении запроса на чтение блока, возвращает массив данных, ведь для этого нужно задействовать пакетный режим по шине PLB. Процессор никогда программно не включает этот режим, хотя сама шина поддерживает.
Иван Панченко
как я понимаю, у Вас должен быть блочек, который отвечает за взаимодействие с ПЛИС через PLB. Я просто не совсем знаком с тем, как в PPC работает интерфейс взаимодействия c FPGA. вы просто используете GPIO на шине plb? он весьма не быстр, лучше бы,конечно, что-то другое для этих целей...
ну можно просто сделать команду для ПЛИС "читай из SRAM +начальное смещение + необходимый размер считываемого блока". А она уже складывает это в буфер и начинает выдавать в процессор, либо сразу транслирует в gpio вашего PPC. только сможет ли он с GPIO читать с нужной скоростью?
CaPpuCcino
могу подкинуть один простенький контроллерчик для NoBL SRAM реализующий интерфейс рукопожатия (рукопожатие полностью двустороннее как по адресу, так и по данным), принцип передачи оконный (пока выставлен фреймовый сигнал, передача продолжается по следующим адресам). простенький потому что а) не реализовано маскирование данных при записи (но это легко докрутить) и нет перехода в энергосберегающий режим (кажись, но точно не помню). хоть интерфейс и не тот что нужен, но думаю интерфейс достаточно гибкий, чтобы его докрутить до нужной задачи.
D-Luxe
Цитата(Иван Панченко @ May 1 2011, 23:02) *
как я понимаю, у Вас должен быть блочек, который отвечает за взаимодействие с ПЛИС через PLB. Я просто не совсем знаком с тем, как в PPC работает интерфейс взаимодействия c FPGA. вы просто используете GPIO на шине plb? он весьма не быстр, лучше бы,конечно, что-то другое для этих целей...
ну можно просто сделать команду для ПЛИС "читай из SRAM +начальное смещение + необходимый размер считываемого блока". А она уже складывает это в буфер и начинает выдавать в процессор, либо сразу транслирует в gpio вашего PPC. только сможет ли он с GPIO читать с нужной скоростью?

Запрос на чтение блока понятно как происходит. Процессор записывает в регистр размер блока, в другой регистр начальный адрес, и в конце выставляет регистр флаг. После этого начинает работу контроллер памяти. Только как происходит выдача данных процессору не совсем понятно. Как процессору передать считанный блок?

Что касается записи, тоже не ясно. Опять придется ставить промежуточный буфер, из которого потом контроллер вычитывает и пишет в память. Тоже не очень красиво!
Иван Панченко
все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC?
D-Luxe
Цитата(Иван Панченко @ May 2 2011, 17:17) *
все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC?

Я уже все по полочкам расписал, интерфейс PLB. Контроллер связан этим интерфейсом с контроллером памяти, который мне нужно написать, а контроллер связан с SRAM через внешние порты - ноги ПЛИС.
Koluchiy
Мне кажется, что автор темы излишне усложняет свою задачу.

На мой взгляд, задача должна решаться применением стандартного контроллера фирмы Xilinx (MPMC? или для SRAM применяется EMC? не помню).
В результате, эта самая память отображается в адресное пространство PPC, и обращение к ней производится без всяких функций, с банальным обращением по адресам.
Сюда же можно применить стандартные средства кэширования памяти и пр..

И делать свой контроллер надо только в том случае, если стандартный контроллер по каким-то причинам не подходит.
D-Luxe
Цитата(Koluchiy @ May 2 2011, 17:46) *
Мне кажется, что автор темы излишне усложняет свою задачу.

На мой взгляд, задача должна решаться применением стандартного контроллера фирмы Xilinx (MPMC? или для SRAM применяется EMC? не помню).
В результате, эта самая память отображается в адресное пространство PPC, и обращение к ней производится без всяких функций, с банальным обращением по адресам.
Сюда же можно применить стандартные средства кэширования памяти и пр..

И делать свой контроллер надо только в том случае, если стандартный контроллер по каким-то причинам не подходит.

Стандартный контроллер xps_mch_emc_v1_00_a подходит, решил написать с нуля сам для опыта! Задумался как реализовать pipeline и burst mode, и вообще можно ли их реализовать вообще, и непонятно реализованы ли они в xps_mch_emc_v1_00_a.
Джеймс
Цитата(D-Luxe @ May 1 2011, 15:40) *
Поскольку SRAM поддерживает пакетный ( burst ) и конвейерный ( pipeline ) режимы, то задумался как это реализовать.
Как процессор может программно выбирать эти режимы ?

Выберите сами какой-нибудь один...

Цитата(D-Luxe @ May 2 2011, 17:34) *
Я уже все по полочкам расписал, интерфейс PLB.

Пока объяснял, сам все понял, точно?

Цитата(D-Luxe @ May 2 2011, 13:02) *
Только как происходит выдача данных процессору не совсем понятно. Как процессору передать считанный блок?

Через интерфейс PLB, вестимо.

Цитата(D-Luxe @ May 1 2011, 17:16) *
как написать функцию, которая при выставлении запроса на чтение блока, возвращает массив данных, ведь для этого нужно задействовать пакетный режим по шине PLB.

Забудьте пока про НАПИСАТЬ, попробуйте сначала НАРИСОВАТЬ. Сначала структурную схему, потом временные диаграммы.
То, что вся память должна отображаться в адресное пространство, Вам уже сказали. Сейчас возьмите Вашу существующую Memory Map (она у вас ведь есть, не так ли?), посмотрите какого объема Ваша SSRAM, и где она будет располагаться.
Kuzmi4
Цитата(CaPpuCcino @ May 2 2011, 05:03) *
могу подкинуть один простенький контроллерчик для NoBL SRAM...

Будьте так добры - выложите laughing.gif
D-Luxe
2 Джеймс

Цитата
Выберите сами какой-нибудь один...

Можно и тот и другой вместе задействовать.

Цитата
Через интерфейс PLB, вестимо.

Как? Процессор тебе записал триггер флаг, обмен по шине закончился!

По прерыванию предлагаешь?
Koluchiy
Цитата
Стандартный контроллер xps_mch_emc_v1_00_a подходит, решил написать с нуля сам для опыта! Задумался как реализовать pipeline и burst mode, и вообще можно ли их реализовать вообще, и непонятно реализованы ли они в xps_mch_emc_v1_00_a

Думаю, в pdf об этом должно быть написано, какие режимы поддерживаются для каждого типа внешней памяти.
CaPpuCcino
Цитата(Kuzmi4 @ May 2 2011, 17:27) *
Будьте так добры - выложите laughing.gif

проект старый. всё никак не доходят руки его до продукта довести.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.