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

 
 
> Вопрос по использованию on chip ram в cyclone4
jkabra
сообщение Mar 18 2018, 10:47
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 18-03-18
Пользователь №: 102 451



Добрый день.

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

приемник -> модуль чтения/записи -> ip ядро -> передатчик

Приемник и передатчик рабтают по последовательному интерфейсу, выдаю данные на плис и принимаю через терминал на пк.

Модуль чтения/записи раздает адреса, тактирование и флаги wr_en/rd_en, для памяти, программа представляет из себя echo, то есть работает по принципу "принимаю n раз по байту, записываю в память, потом считываю n раз, выдаю"

На этом этапе было все хорошо. Затем я копипастой размножил эту конструкцию, сделал 4 приемника, 4 модуля rd/wr 4 передатчика, 4 графических примитива dual port ram - получилось 4 одинаковых канала вместо одного, 4 параллельных операции чтения/записи в память. В проекте пропорционально увеличилось количество занимаемых ячеек, использованной памяти. Никаких ошибок не было, на rtl тоже все было хорошо. Однако, из 4 таких каналов постоянно работал только один. Я вывел флаги чтения записи во всех модулях чтения/записи на свободные пины, чтобы посмотреть осциллографом, получилась следующая картина: флаги корректно выдаются только на одном (работающем) канале из 4х. На остальных они отсутствуют, хотя каналы идентичные, без обратных связей, выдачу флагов ничего не должно блокировать.

Отсюда возникает несколько вопросов:

1. Можно ли на cyclone4 реализовать несколько параллельных процессов чтения/записи в память?
Если да, то в чем моя ошибка? Если нет, то почему квартус не вернул ошибку при компиляции проекта?

2. Если на cyclone4 нельзя реализовать несколько параллельных процессов чтения/записи в память, почему из 4 модулей чтения/записи, флаги раздавал только один (хотя они не зависят от памяти, от других каналов, полностью идентичные, корректно отображаются на rtl)?

Заранее благодарю за ответы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр77
сообщение Mar 18 2018, 17:59
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(jkabra @ Mar 18 2018, 13:47) *
Можно ли на cyclone4 реализовать несколько параллельных процессов чтения/записи в память?

В общем - можно, но могут быть и ограничения, которые зависят от глубины реализуемого единичного блока памяти.
По моим наблюдениям, первая оценка числа параллельно реализуемых блоков с применением памяти равна числу умножителей 18*18 в ПЛИС.
Более детально уже может только квартус выдать - сможет он запихнуть все или нет.

Возможно Ваша беда в том, что реализовав один канал, остальные три остались не востребованными (не выведены сигналы и т.п.)
Go to the top of the page
 
+Quote Post
jkabra
сообщение Mar 18 2018, 19:06
Сообщение #3





Группа: Участник
Сообщений: 6
Регистрация: 18-03-18
Пользователь №: 102 451



Цитата(Александр77 @ Mar 18 2018, 20:59) *
В общем - можно, но могут быть и ограничения, которые зависят от глубины реализуемого единичного блока памяти.

Насчет ограничений из-за глубины - там в даташитах я видел только какие различные допустимые конфигурации блоков для портов чтения и записи.

Цитата(Александр77 @ Mar 18 2018, 20:59) *
По моим наблюдениям, первая оценка числа параллельно реализуемых блоков с применением памяти равна числу умножителей 18*18 в ПЛИС.
Более детально уже может только квартус выдать - сможет он запихнуть все или нет.

>> первая оценка, числу умножителей - можно где-то поподробнее про это почитать? Квартус ни на что не ругался
параллельно реализуемых блоков - у вас операции чтения/записи были тоже параллельными?

Цитата(Александр77 @ Mar 18 2018, 20:59) *
Возможно Ваша беда в том, что реализовав один канал, остальные три остались не востребованными (не выведены сигналы и т.п.)

Пины на входе и выхоле каналов были выведены, а так же - несколько промежуточных

Цитата(iosifk @ Mar 18 2018, 21:10) *
прежде чем кивать на Квартус... А RTL симуляция всех одновременно работающих каналов отработана?

На rtl вьюере 4 идентичных канала, если разворачивать примитивы - то они одинаковые по каналам

Цитата(RobFPGA @ Mar 18 2018, 21:20) *
Ответ на вопрос 1 -
Можно - примитив памяти m9k позволяет организовать несколько, а точнее ДВА ОДНОВРЕМЕННЫХ канала (dual-port) четния/записи из блока памяти m9k.
Если же под несколько Вы имели ввиду число больше 2 каналов одновременного доступа в ОДИН блок памяти то физически это сделать нельзя - этом случае Вам придется логически организовывать арбитраж для доступа нескольких каналов в одну память.


Я создаю в ip визарде модуль памяти. Собираю на нем условное echo (...работает по принципу "принимаю n раз по байту, записываю в память, потом считываю n раз, выдаю")

затем я копирую получившуюся схему (1 канал), и нажимаю вставить 3 раза. получается 4 идентичных канала. назначаю пины, заливаю в отладочную плату. при этом работает все равно один канал из 4. Если один удалить, начинает работать какой-нибудь другой, при этом остальные все равно молчат.

Цитата(RobFPGA @ Mar 18 2018, 21:20) *
Ответ на вопрос 2 -
Скорее всего Ваш дизайн содержит логические ошибки.
Выявить их и тем более исправить через телепатический канал пока не представляется возможным (манны не хватает). laughing.gif

Правильно ли я понимаю, когда я создаю примитив памяти например на 1 m9k, и в дизайне он присутствует 4 раза - на деле это 4 разных блока m9k, с каждым из которых можно параллельно с другими работать? если это не так - то да, это логическая ошибка. Ну или я не умею в ctrl c ctrl v. или есть еще какие-то ограничения, о которых я не знаю
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 18 2018, 19:18
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(jkabra @ Mar 18 2018, 22:06) *
затем я копирую получившуюся схему (1 канал), и нажимаю вставить 3 раза. получается 4 идентичных канала. назначаю пины, заливаю в отладочную плату. при этом работает все равно один канал из 4. Если один удалить, начинает работать какой-нибудь другой, при этом остальные все равно молчат.

Правильно ли я понимаю, когда я создаю примитив памяти например на 1 m9k, и в дизайне он присутствует 4 раза - на деле это 4 разных блока m9k, с каждым из которых можно параллельно с другими работать? если это не так - то да, это логическая ошибка. Ну или я не умею в ctrl c ctrl v. или есть еще какие-то ограничения, о которых я не знаю

Вы взяли 4 куска схемы. Вопрос в том, что они где-то должны объединиться, чтобы один "главный" имел к ним доступ. Скорее всего это и не сделано. А подключен по умолчанию только один канал, потому остальные и не работают...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
jkabra
сообщение Mar 18 2018, 19:31
Сообщение #5





Группа: Участник
Сообщений: 6
Регистрация: 18-03-18
Пользователь №: 102 451



Цитата(iosifk @ Mar 18 2018, 22:18) *
Вы взяли 4 куска схемы. Вопрос в том, что они где-то должны объединиться, чтобы один "главный" имел к ним доступ. Скорее всего это и не сделано. А подключен по умолчанию только один канал, потому остальные и не работают...


Можно написать "главного", который будет работать с памятью, объявить 1 примитив, и писать/читать данные циклически или как-то еще. И это работает. Но как я понял из чтения даташитов, и как сказал Rob:
Цитата(RobFPGA @ Mar 18 2018, 21:20) *
примитив памяти m9k позволяет организовать несколько, а точнее ДВА ОДНОВРЕМЕННЫХ канала (dual-port) четния/записи из блока памяти m9k.


Выходит, что каждый блок памяти может иметь своего "главного", всего в дизайне я задействую 4 блока m9k (4 примитива по одному m9k каждый) и имею 4 "главных". И вот это уже не работает

Сообщение отредактировал jkabra - Mar 18 2018, 19:39
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 18 2018, 19:47
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(jkabra @ Mar 18 2018, 22:31) *
Можно написать "главного", который будет работать с памятью, объявить 1 примитив, и писать/читать данные циклически или как-то еще. И это работает.
....
Выходит, что каждый блок памяти может иметь своего "главного", всего в дизайне я задействую 4 блока m9k (4 примитива по одному m9k каждый) и имею 4 "главных". И вот это уже не работает

Вы что, за каждую букву в кассу деньги платите?
Из Вас клещами надо информацию тянуть, но ответа так и не получил...

Итак. Либо многопроцессорность. Это 4 совершенно одинаковых канала и в каждом свой "главный"...
Либо один "главный", но к нему подключено 4 канала через ФИФО. И в этом случае каналы где-то должны объединиться, чтобы их можно было подключить к одному "главному". Что обычно и делают. Потому как впихивать в ПЛИС 4 или 8 микроконтроллеров - это довольно накладно. Да и куда потом от них информацию девать?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jkabra   Вопрос по использованию on chip ram в cyclone4   Mar 18 2018, 10:47
- - iosifk   Цитата(jkabra @ Mar 18 2018, 13:47) Стоит...   Mar 18 2018, 10:59
|- - jkabra   Цитата(iosifk @ Mar 18 2018, 13:59) Напиш...   Mar 18 2018, 12:06
|- - iosifk   Цитата(jkabra @ Mar 18 2018, 15:06) Если ...   Mar 18 2018, 12:23
||- - jkabra   Цитата(iosifk @ Mar 18 2018, 15:23) Как э...   Mar 18 2018, 17:31
||- - iosifk   Цитата(jkabra @ Mar 18 2018, 20:31) Есть ...   Mar 18 2018, 18:10
|- - iosifk   Цитата(jkabra @ Mar 18 2018, 15:06) Вообщ...   Mar 19 2018, 18:38
|- - RobFPGA   Приветствую! Цитата(jkabra @ Mar 18 2018,...   Mar 18 2018, 19:55
||- - jkabra   Цитата(RobFPGA @ Mar 18 2018, 22:55) Посм...   Mar 20 2018, 07:29
||- - iosifk   Цитата(jkabra @ Mar 20 2018, 10:29) Скоро...   Mar 20 2018, 07:57
|- - Александр77   Цитата(jkabra @ Mar 18 2018, 22:06) ..пер...   Mar 19 2018, 16:51
- - RobFPGA   Приветствую! Цитата(jkabra @ Mar 18 2018...   Mar 18 2018, 18:20


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 15:39
Рейтинг@Mail.ru


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