Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cyclone III память
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
plis
Добрый день!

1) Плис EPC3C40F324C8.
2) Память RAM: 2-PORT
3) QII 10.1 Build 153 SJ Full Version

У меня возникла проблема:

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

запись в память производится по двум портам, в одном случае внешним процессорм по асинхронной шине, в другом автоматом.

Ни кто с подобным не встречался ??
Александр77
Цитата(plis @ Jun 19 2015, 16:59) *
2) Память RAM: 2-PORT...
- Записываем данные в память
- Обрабатываем массив данных, считаем на него ECC
- Потом автомат записывает данные и ECC сам во внешнюю флешку
- В это время записи в память не происходит, но происходить искажение единичного бита в ячейке памяти случано

запись в память производится по двум портам, в одном случае внешним процессорм по асинхронной шине, в другом автоматом.

А как разрулена ситуация одновременного обращения процессора и автомата к памяти?
Может у Вас при переключениях устройств формируются "лишние/ложные" сигналы записи?
plis
Цитата(Александр77 @ Jun 19 2015, 20:28) *
А как разрулена ситуация одновременного обращения процессора и автомата к памяти?
Может у Вас при переключениях устройств формируются "лишние/ложные" сигналы записи?


Это двух портовая память и она позволяет одновременно обращаться, и если бы бвсё таки был конфликт одновременного обращения, к одной и той же ячейке, то искажался бы весь байт, а не один бит
des00
Цитата(plis @ Jun 19 2015, 20:59) *
- В это время записи в память не происходит, но происходить искажение единичного бита в ячейке памяти случано

Нужны детали. Как вы определили что искажается именно в памяти и само по себе?
Это можно сделать только взяв сигнал тап, писать им все что вы пишете в память, потом все что вы читаете из нее. И реально смотреть где появляется ошибка. Потом проверьте следующие моменты: отключаете ли вы сигнал тактовой частоты памяти в асинхронном стыке с процессором и ревизию вашего чипа на errata (были прецеденты с сыклонами младших ревизий).
plis
Цитата(des00 @ Jun 20 2015, 11:25) *
Нужны детали. Как вы определили что искажается именно в памяти и само по себе?
Это можно сделать только взяв сигнал тап, писать им все что вы пишете в память, потом все что вы читаете из нее. И реально смотреть где появляется ошибка. Потом проверьте следующие моменты: отключаете ли вы сигнал тактовой частоты памяти в асинхронном стыке с процессором и ревизию вашего чипа на errata (были прецеденты с сыклонами младших ревизий).


Потому что данные лежат в памяти, пере одическия читая данные из памяти, только читаем, видим искажегние, записи в этот момент не происходит.
Частоты в асинхронном стыке нет, просто сам сигнал физически отсутствует.
А вот про ревизию можно поподробней
Serhiy_UA
//------- RAM 2 ------
reg [11:0] ramA;
reg [7:0] ramDa, ramDb;
wire [7:0] ramQa, ramQb;
reg [1:0] ramW, ramR;
ram_2p ram_2p_inst (
.address_a (ramA),
.address_b (ramA-1),
.clock ( clk),
.data_a (ramDa),
.data_b (ramDb),
.rden_a (1'b1),
.rden_b (1'b1),
.wren_a (ramW[1]),
.wren_b (ramW[0]),
.q_a (ramQa),
.q_b (ramQb));
reg [7:0] cramQa;
always @ (posedge clk)cramQa<=ramQa;


У меня почти такой же Cyclone-3. Использую 2-х портовую память из MegaWizard -> Memory Compiler -> RAM 2-PORT, и включаю в главный модуль проекта как описано выше.
Все работает.
krux
есть такая вероятность.
https://www.altera.com/en_US/pdfs/literatur...s/es_cyciii.pdf
Цитата
The Cyclone III M9K embedded memory blocks may exhibit bit error in which the
read bit is a 1 when the expected bit is a 0. The problem is caused by bitline coupling
in the read output. The issue is rare and requires the presence of multiple conditions
for the M9K block to be susceptible to the bit error. T
des00
Цитата(plis @ Jun 22 2015, 17:35) *
Частоты в асинхронном стыке нет, просто сам сигнал физически отсутствует.

Вот тут поподробнее ? Что значит отсутствует ? Не можете словами, тогда приведите код. Тактовую с M9K, при работе, снимать не желательно. Были прецеденты.
plis
Цитата(krux @ Jun 23 2015, 10:12) *
есть такая вероятность.
https://www.altera.com/en_US/pdfs/literatur...s/es_cyciii.pdf


Спасибо, вот это похоже наш случай.
А как можно подобное вылечить или хотябы отследить, ни кто не пробовал к блокам М9К контроль бита четности проводить.
des00
Цитата(plis @ Jun 24 2015, 21:10) *
А как можно подобное вылечить или хотябы отследить, ни кто не пробовал к блокам М9К контроль бита четности проводить.

Для начала ИМХО стоило бы определить как в 2015 году вы купили чипы ревизии 2010 года (см. документ).
plis
Цитата(des00 @ Jun 24 2015, 17:42) *
Для начала ИМХО стоило бы определить как в 2015 году вы купили чипы ревизии 2010 года (см. документ).


А кто вам сказал что их в 2015 году купили, и мне кажется вопрос был не в том как работают совковые предприятия, а как решить уже сложившуюся ситуацию.
des00
Цитата(plis @ Jun 25 2015, 14:43) *
А кто вам сказал что их в 2015 году купили, и мне кажется вопрос был не в том как работают совковые предприятия, а как решить уже сложившуюся ситуацию.

В еррате же было решение. Альтера предлагала использовать большее количество блоков памяти меньшей разрядности, для этого нужно взять ква, который закрывает проблему конкретной ревизии конкретного чипа (а вот как искать этот конкретный ква, нужно вернуться в 2010 год).
Ну и как самодельный вариант прикрутить того же хэмминга например, правда на это потребуется ресурс. В простейшем случае кода (7,4) расход памяти увеличится в 2 раза, зато кодер и декодер примитивнейшие. Работы на полчаса.
dvladim
Цитата(plis @ Jun 25 2015, 09:43) *
А кто вам сказал что их в 2015 году купили, и мне кажется вопрос был не в том как работают совковые предприятия, а как решить уже сложившуюся ситуацию.

Кстати сказать, одним из вариантов решения может быть покупка схем новой ревизии с обоснованием того, что старая содержит ошибки, которые и подтверждаются официальным документом (errata).
Я, конечно, не утверждаю, что это лучшее решение, но это тоже решение.
plis
Цитата(des00 @ Jun 25 2015, 17:39) *
В еррате же было решение. Альтера предлагала использовать большее количество блоков памяти меньшей разрядности, для этого нужно взять ква, который закрывает проблему конкретной ревизии конкретного чипа (а вот как искать этот конкретный ква, нужно вернуться в 2010 год).
Ну и как самодельный вариант прикрутить того же хэмминга например, правда на это потребуется ресурс. В простейшем случае кода (7,4) расход памяти увеличится в 2 раза, зато кодер и декодер примитивнейшие. Работы на полчаса.


Вот я и ищу какойнибудь пример Хэминга, только у меня 16 разрядная шина данных.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.