реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SRAM controller
D-Luxe
сообщение May 1 2011, 11:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



Задача написать SRAM контроллер для Cypress CY7C1471V33, который подключен к Virtex4.

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

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

Может это надо как-то связать с кэш-контроллером, никак не могу понять.


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
Иван Панченко
сообщение May 1 2011, 12:52
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 29-11-08
Из: санкт-петербург
Пользователь №: 42 061



Если я из ваших слов верно понял задачу, то она состоит в следующем:
у вас есть SRAM, у вас есть PowerPC внутри Virtex 4. Вы хотите написать блочок в ПЛИС, который будет осуществлять требуемый обмен между SRAM и powerPC(через ПЛИС).
Если так, то вы вольны делать почти, все что угодно=) По-моему, должно выглядеть как-то так:
процессор отдает команду ПЛИС(режим работы/начальный адрес/количество вычитываемых данных),
ПЛИС же по получении этой команды, соблюдая все временные диаграммки, лезет в SRAM, и выдает Вам куда-то(не знаком с интерфейсами ppc-fpga, хотя может и там fsl?=) ) требуемые данные.
а функции,вы в итоге сами себе и напишите, я это так понимаю=)
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение May 1 2011, 13:16
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



Вы правильно поняли задачу. Только интерфейс у процессора PLB.

Ваше решение мне нравится, только не совсем понятно как написать функцию, которая при выставлении запроса на чтение блока, возвращает массив данных, ведь для этого нужно задействовать пакетный режим по шине PLB. Процессор никогда программно не включает этот режим, хотя сама шина поддерживает.


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
Иван Панченко
сообщение May 1 2011, 19:02
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 29-11-08
Из: санкт-петербург
Пользователь №: 42 061



как я понимаю, у Вас должен быть блочек, который отвечает за взаимодействие с ПЛИС через PLB. Я просто не совсем знаком с тем, как в PPC работает интерфейс взаимодействия c FPGA. вы просто используете GPIO на шине plb? он весьма не быстр, лучше бы,конечно, что-то другое для этих целей...
ну можно просто сделать команду для ПЛИС "читай из SRAM +начальное смещение + необходимый размер считываемого блока". А она уже складывает это в буфер и начинает выдавать в процессор, либо сразу транслирует в gpio вашего PPC. только сможет ли он с GPIO читать с нужной скоростью?

Сообщение отредактировал Иван Панченко - May 1 2011, 19:03
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение May 2 2011, 02:03
Сообщение #5


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



могу подкинуть один простенький контроллерчик для NoBL SRAM реализующий интерфейс рукопожатия (рукопожатие полностью двустороннее как по адресу, так и по данным), принцип передачи оконный (пока выставлен фреймовый сигнал, передача продолжается по следующим адресам). простенький потому что а) не реализовано маскирование данных при записи (но это легко докрутить) и нет перехода в энергосберегающий режим (кажись, но точно не помню). хоть интерфейс и не тот что нужен, но думаю интерфейс достаточно гибкий, чтобы его докрутить до нужной задачи.


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение May 2 2011, 09:02
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



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

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

Что касается записи, тоже не ясно. Опять придется ставить промежуточный буфер, из которого потом контроллер вычитывает и пишет в память. Тоже не очень красиво!


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
Иван Панченко
сообщение May 2 2011, 13:17
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 29-11-08
Из: санкт-петербург
Пользователь №: 42 061



все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC?
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение May 2 2011, 13:34
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



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

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


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение May 2 2011, 13:46
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Мне кажется, что автор темы излишне усложняет свою задачу.

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

И делать свой контроллер надо только в том случае, если стандартный контроллер по каким-то причинам не подходит.
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение May 2 2011, 13:53
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



Цитата(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.


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
Джеймс
сообщение May 2 2011, 14:00
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(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, и где она будет располагаться.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение May 2 2011, 14:27
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Цитата(CaPpuCcino @ May 2 2011, 05:03) *
могу подкинуть один простенький контроллерчик для NoBL SRAM...

Будьте так добры - выложите laughing.gif
Go to the top of the page
 
+Quote Post
D-Luxe
сообщение May 2 2011, 14:41
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642



2 Джеймс

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

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

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

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

По прерыванию предлагаешь?


--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти.
(с) Уилл Роджерс
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение May 2 2011, 18:40
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



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

Думаю, в pdf об этом должно быть написано, какие режимы поддерживаются для каждого типа внешней памяти.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение May 3 2011, 08:55
Сообщение #15


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(Kuzmi4 @ May 2 2011, 17:27) *
Будьте так добры - выложите laughing.gif

проект старый. всё никак не доходят руки его до продукта довести.
Прикрепленные файлы
Прикрепленный файл  ZBT_SRAM_controller.rar ( 154.4 килобайт ) Кол-во скачиваний: 58
 


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 05:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01539 секунд с 7
ELECTRONIX ©2004-2016