D-Luxe 0 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Задача написать SRAM контроллер для Cypress CY7C1471V33, который подключен к Virtex4. Чтение из SRAM'ины осуществляет процессор PowerPC. Поскольку SRAM поддерживает пакетный ( burst ) и конвейерный ( pipeline ) режимы, то задумался как это реализовать. Как процессор может программно выбирать эти режимы ? Ведь функции XIo_Out32, XIo_In32 производят чтение, запись по одному адресу. Может это надо как-то связать с кэш-контроллером, никак не могу понять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivanpa 0 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Если я из ваших слов верно понял задачу, то она состоит в следующем: у вас есть SRAM, у вас есть PowerPC внутри Virtex 4. Вы хотите написать блочок в ПЛИС, который будет осуществлять требуемый обмен между SRAM и powerPC(через ПЛИС). Если так, то вы вольны делать почти, все что угодно=) По-моему, должно выглядеть как-то так: процессор отдает команду ПЛИС(режим работы/начальный адрес/количество вычитываемых данных), ПЛИС же по получении этой команды, соблюдая все временные диаграммки, лезет в SRAM, и выдает Вам куда-то(не знаком с интерфейсами ppc-fpga, хотя может и там fsl?=) ) требуемые данные. а функции,вы в итоге сами себе и напишите, я это так понимаю=) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 1 мая, 2011 Опубликовано 1 мая, 2011 · Жалоба Вы правильно поняли задачу. Только интерфейс у процессора PLB. Ваше решение мне нравится, только не совсем понятно как написать функцию, которая при выставлении запроса на чтение блока, возвращает массив данных, ведь для этого нужно задействовать пакетный режим по шине PLB. Процессор никогда программно не включает этот режим, хотя сама шина поддерживает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivanpa 0 1 мая, 2011 Опубликовано 1 мая, 2011 (изменено) · Жалоба как я понимаю, у Вас должен быть блочек, который отвечает за взаимодействие с ПЛИС через PLB. Я просто не совсем знаком с тем, как в PPC работает интерфейс взаимодействия c FPGA. вы просто используете GPIO на шине plb? он весьма не быстр, лучше бы,конечно, что-то другое для этих целей... ну можно просто сделать команду для ПЛИС "читай из SRAM +начальное смещение + необходимый размер считываемого блока". А она уже складывает это в буфер и начинает выдавать в процессор, либо сразу транслирует в gpio вашего PPC. только сможет ли он с GPIO читать с нужной скоростью? Изменено 1 мая, 2011 пользователем Иван Панченко Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба могу подкинуть один простенький контроллерчик для NoBL SRAM реализующий интерфейс рукопожатия (рукопожатие полностью двустороннее как по адресу, так и по данным), принцип передачи оконный (пока выставлен фреймовый сигнал, передача продолжается по следующим адресам). простенький потому что а) не реализовано маскирование данных при записи (но это легко докрутить) и нет перехода в энергосберегающий режим (кажись, но точно не помню). хоть интерфейс и не тот что нужен, но думаю интерфейс достаточно гибкий, чтобы его докрутить до нужной задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба как я понимаю, у Вас должен быть блочек, который отвечает за взаимодействие с ПЛИС через PLB. Я просто не совсем знаком с тем, как в PPC работает интерфейс взаимодействия c FPGA. вы просто используете GPIO на шине plb? он весьма не быстр, лучше бы,конечно, что-то другое для этих целей... ну можно просто сделать команду для ПЛИС "читай из SRAM +начальное смещение + необходимый размер считываемого блока". А она уже складывает это в буфер и начинает выдавать в процессор, либо сразу транслирует в gpio вашего PPC. только сможет ли он с GPIO читать с нужной скоростью? Запрос на чтение блока понятно как происходит. Процессор записывает в регистр размер блока, в другой регистр начальный адрес, и в конце выставляет регистр флаг. После этого начинает работу контроллер памяти. Только как происходит выдача данных процессору не совсем понятно. Как процессору передать считанный блок? Что касается записи, тоже не ясно. Опять придется ставить промежуточный буфер, из которого потом контроллер вычитывает и пишет в память. Тоже не очень красиво! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivanpa 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба все зависит от того, какой интерфейс взаимодействия FPGA-PPC. это GPIO процессора или что-то более сложное? если GPIO - понятно, что Вам огород городить придется... и еще, какая максимальная скорость, с которой Вам нужно читать из SRAM, и какая максимальная скорость вашего интерфейса FPGA-PPC? Я уже все по полочкам расписал, интерфейс PLB. Контроллер связан этим интерфейсом с контроллером памяти, который мне нужно написать, а контроллер связан с SRAM через внешние порты - ноги ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба Мне кажется, что автор темы излишне усложняет свою задачу. На мой взгляд, задача должна решаться применением стандартного контроллера фирмы Xilinx (MPMC? или для SRAM применяется EMC? не помню). В результате, эта самая память отображается в адресное пространство PPC, и обращение к ней производится без всяких функций, с банальным обращением по адресам. Сюда же можно применить стандартные средства кэширования памяти и пр.. И делать свой контроллер надо только в том случае, если стандартный контроллер по каким-то причинам не подходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба Мне кажется, что автор темы излишне усложняет свою задачу. На мой взгляд, задача должна решаться применением стандартного контроллера фирмы Xilinx (MPMC? или для SRAM применяется EMC? не помню). В результате, эта самая память отображается в адресное пространство PPC, и обращение к ней производится без всяких функций, с банальным обращением по адресам. Сюда же можно применить стандартные средства кэширования памяти и пр.. И делать свой контроллер надо только в том случае, если стандартный контроллер по каким-то причинам не подходит. Стандартный контроллер xps_mch_emc_v1_00_a подходит, решил написать с нуля сам для опыта! Задумался как реализовать pipeline и burst mode, и вообще можно ли их реализовать вообще, и непонятно реализованы ли они в xps_mch_emc_v1_00_a. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 4 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба Поскольку SRAM поддерживает пакетный ( burst ) и конвейерный ( pipeline ) режимы, то задумался как это реализовать. Как процессор может программно выбирать эти режимы ? Выберите сами какой-нибудь один... Я уже все по полочкам расписал, интерфейс PLB. Пока объяснял, сам все понял, точно? Только как происходит выдача данных процессору не совсем понятно. Как процессору передать считанный блок? Через интерфейс PLB, вестимо. как написать функцию, которая при выставлении запроса на чтение блока, возвращает массив данных, ведь для этого нужно задействовать пакетный режим по шине PLB. Забудьте пока про НАПИСАТЬ, попробуйте сначала НАРИСОВАТЬ. Сначала структурную схему, потом временные диаграммы. То, что вся память должна отображаться в адресное пространство, Вам уже сказали. Сейчас возьмите Вашу существующую Memory Map (она у вас ведь есть, не так ли?), посмотрите какого объема Ваша SSRAM, и где она будет располагаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба могу подкинуть один простенький контроллерчик для NoBL SRAM... Будьте так добры - выложите :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
D-Luxe 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба 2 Джеймс Выберите сами какой-нибудь один... Можно и тот и другой вместе задействовать. Через интерфейс PLB, вестимо. Как? Процессор тебе записал триггер флаг, обмен по шине закончился! По прерыванию предлагаешь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 2 мая, 2011 Опубликовано 2 мая, 2011 · Жалоба Стандартный контроллер xps_mch_emc_v1_00_a подходит, решил написать с нуля сам для опыта! Задумался как реализовать pipeline и burst mode, и вообще можно ли их реализовать вообще, и непонятно реализованы ли они в xps_mch_emc_v1_00_a Думаю, в pdf об этом должно быть написано, какие режимы поддерживаются для каждого типа внешней памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 3 мая, 2011 Опубликовано 3 мая, 2011 · Жалоба Будьте так добры - выложите :laughing: проект старый. всё никак не доходят руки его до продукта довести. ZBT_SRAM_controller.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться