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

цель - обеспечить исправление одиночных и обнаружение двойных ошибок (SECDED) в микросхемах ОЗУ. Для этого предполагается использование кода Хемминга. Реализацию на ПЛИС от Xilinx'a нашел.
Выглядеть, как мне кажется, этому лучше всего так: для внешнего задатчика моя система ничем не будет отличаться от обычной ИС памяти, кроме 4-х дополнительных сигналов, указывающих на обнаруженную ошибку. В дальнейшем можно будет ввести дополнительное исправление ошибки внутри системы. Задатчик общается с системой точно также как с обычной микросхемой статического ОЗУ.
Внутри система представляет собой плис и две схемы памяти - в одной из которых будет находиться информация, а в другой - биты коррекции. Примерный код (на VHDL) я нашел в интернете. Вроде бы приобразовать его под свои нужды не очень сложно. Схемы памяти предположительно будут Самсунг K6R4008V1D 512Kx8 3.3В (в одной из них будут использоваться не все 8 разрядов, а только 5 - биты коррекции). ПЛИС - предположительно пр-ва Xilinx технологии CPLD - CoolRunner-II или лучше 9500XL.

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

Теперь что касается ПО для проекта. Для отладки кода выбрал modelsim, для синтеза - leonardo spectrum. Ни того, ни другого у меня нет smile.gif Под словом 'выбрал' подразумеваю - выбрал для поиска. Также очень интересуют возможные альтернативы. С прошивкой полученного кода в ПЛИС обещали помочь.

Спасибо за внимание!
Doka
насчет ПО: с сайта xilinx скачиваете бесплатный WebPack - там и синтезатор и симулятор(как свой, так и урезанный модельсим) и прочее для получения в конечном итоге битового потока конфигурации плис есть. (поскольку в любом случае, даже имея синтезатор и симулятор, без натиного софта производителя для раскладки в кристалл и разводки - ну совсем никуда)

для того чтобы загнать битовый поток в плис можете использовать следующую схему:
http://www.xilinx.com/support/programr/jtag_cable.pdf


по поводу выбора семейства можно сказать так: поставьте софт и поиграйтесь там с синтезом имеющегося у вас кода под различные семейства - вот и посмотрите во что (по использованным ресурсам) выливается ваш проект.
sergey256
По самому проекту - возможно следует предусмотреть резервирование. Если причиной сбоев памяти будут внешние воздействия, то собъется и память в Xilinx, что погубит всю память(доступ к ней просто будет невозможен). У Altera (Stratix) есть возможность встроенными средствами проверять целостность внутренней памяти, как обстоят дела у Xilinx я не знаю.
v_mirgorodsky
Цитата(sergey256 @ Jan 3 2007, 18:27) *
По самому проекту - возможно следует предусмотреть резервирование. Если причиной сбоев памяти будут внешние воздействия, то собъется и память в Xilinx, что погубит всю память(доступ к ней просто будет невозможен).
Вот потому человек и собирается использовать CPLD wink.gif CoolRunner II использовать не стоит, поскольку он есть урезанная FPGA со встроенным флешом.

Цитата(sergey256 @ Jan 3 2007, 18:27) *
У Altera (Stratix) есть возможность встроенными средствами проверять целостность внутренней памяти, как обстоят дела у Xilinx я не знаю.
Хилые тоже умеют контроллировать целостность своей конфигурационной памяти. Сам с этим близко не работал, однако знаю, что это возможно.

2 araglin:
Поскольку память выбрана ассинхронная, то будут серьезные проблемы с тем, чтобы прикинуться чипом памяти для внешней системы, пусть и с четырьмя дополнительными выводами. Чтобы прикинуться памятью придется сформировать контрольную сумму по восьми битам за 2ns - это просто очень круто для CPLD. Иначе необходимо вводить корректировку в алгоритм работы блока памяти - выставлять данные заранее, а лишь потом выставлять адрес и сигналы по записи, что уже нарушение таймингов, рекомендованых производителем. Впрочем, выбор синхронной памяти все равно ничем не поможет - все равно будут необходимы такты для перемещения даных между стадиями конвеера.
Alex03
А откуда вообще такая задача?
Есть уверенность что Самсунг K6R4008V1D более сбойная чем микропроцессор или ПЛИС?
Так не используйте Самсунг. Если сбоит всё, так надо бороться с источниками сбоев и т.д.
Т.е. должно быть обоснование того что усложнение схемы повысит её надёжность, а не наоборот, а для этого должны быть какие-то критерии надёжности (вероятность отказа за ед. времени и т.д.) для отдельных частей схемы.

Далее. как Вы собираетесь контролировать наличие ошибок?
1. ПЛИС просто выставляет флаг наличия или считает их.
Тогда прога будет знать о наличии ошибки как постфактум (по опросу, или сразу по внешнему прерыванию). И что тогда уже делать? И кстати какие данные предполагается хранить в ОЗУ?
2. Контроль производится при каждом обращении к памяти, т.е. каждое чтение памяти обёрнуто в програмный код проверяющий статус ошибки, но тогда падает производитеьность. Если производительность не существенна, то может и сам алгоритм проверки/восстановления имеет смысл в проц засунуть и использовать сразу более широкую память.

Или это чисто эксперименты или какойнить курсовой в институте?
sergey256
Можно я отвечу вместо автора ? Если что не так, пусть он меня поправит. maniac.gif
1.Память менее надежная чем логика (процессор). т.к. ее делают на базе очень мелких транзисторов, характеристики которых хуже, чем у тех которых используются для лог. элементов. Например - у них маленький заряд переключения (для ячейки SRAM). Более того, логика синхронная, поэтому помеха не повлияет на систему только если не попадет под фронт, или не вызовет отказ ячейки. В случае памяти же все хуже - помеха может вызвать ее переключение. И самсунг тут не виноват.
2.Ну представьте, что бороться с источником сбоев сложно, поэтому Вам и ставят задачу спроектировать надежную SRAM.
3. про критерии надежности - да они указываются, но тут, как мне кажется курсач или диплом, поэтому забудем об этом.
4. ПЛИС производит коррекцию одиночной ошибки и детектирование двойной. Если обнаруживается ошибка - то выставляется системный FAIL, срабатывает система резервирования и происходит переключение на резервный блок.
5.Производительность естественно не существенна - задача сделать надежную систему. Память в ней - один из компонентов. Задача-то сводится к разработке системы резервирования, а память - это лишь один из факторов. Вот повышением ее надежности человек и занялся wink.gif Я думаю, что программная реализация вполне возможна (за счет большей ширины или большего объема памяти), но как курсач по схемотехнике такое решение не гоится :-)))
v_mirgorodsky
Если уж растекаться мыслью по древу, то проще сделать мажоритарную схему на трех корпусах памяти wink.gif Будет гораздо проще и гораздо надежнее, нежели всякие схемы контроля ошибок smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.