|
|
  |
SRAM controller |
|
|
|
May 1 2011, 12:52
|
Участник

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

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

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

|
как я понимаю, у Вас должен быть блочек, который отвечает за взаимодействие с ПЛИС через PLB. Я просто не совсем знаком с тем, как в PPC работает интерфейс взаимодействия c FPGA. вы просто используете GPIO на шине plb? он весьма не быстр, лучше бы,конечно, что-то другое для этих целей... ну можно просто сделать команду для ПЛИС "читай из SRAM +начальное смещение + необходимый размер считываемого блока". А она уже складывает это в буфер и начинает выдавать в процессор, либо сразу транслирует в gpio вашего PPC. только сможет ли он с GPIO читать с нужной скоростью?
Сообщение отредактировал Иван Панченко - May 1 2011, 19:03
|
|
|
|
|
May 2 2011, 09:02
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

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

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

|
все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC?
|
|
|
|
|
May 2 2011, 13:34
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
Цитата(Иван Панченко @ May 2 2011, 17:17)  все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC? Я уже все по полочкам расписал, интерфейс PLB. Контроллер связан этим интерфейсом с контроллером памяти, который мне нужно написать, а контроллер связан с SRAM через внешние порты - ноги ПЛИС.
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
May 2 2011, 13:53
|
Местный
  
Группа: Свой
Сообщений: 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.
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
May 2 2011, 14:00
|
Местный
  
Группа: Свой
Сообщений: 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, и где она будет располагаться.
|
|
|
|
|
May 2 2011, 14:41
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 24-02-10
Из: Пенза
Пользователь №: 55 642

|
2 Джеймс Цитата Выберите сами какой-нибудь один... Можно и тот и другой вместе задействовать. Цитата Через интерфейс PLB, вестимо. Как? Процессор тебе записал триггер флаг, обмен по шине закончился! По прерыванию предлагаешь?
--------------------
Нелегко оказаться на верном пути, но куда труднее его пройти. (с) Уилл Роджерс
|
|
|
|
|
May 2 2011, 18:40
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Цитата Стандартный контроллер xps_mch_emc_v1_00_a подходит, решил написать с нуля сам для опыта! Задумался как реализовать pipeline и burst mode, и вообще можно ли их реализовать вообще, и непонятно реализованы ли они в xps_mch_emc_v1_00_a Думаю, в pdf об этом должно быть написано, какие режимы поддерживаются для каждого типа внешней памяти.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|