Перейти к содержанию
    

ПЛИС и ошибки в памяти

Здравствуйте. Я совсем начинающий разработчик. Хотел бы с вами посоветоваться по поводу следующего проекта:

 

цель - обеспечить исправление одиночных и обнаружение двойных ошибок (SECDED) в микросхемах ОЗУ. Для этого предполагается использование кода Хемминга. Реализацию на ПЛИС от Xilinx'a нашел.

Выглядеть, как мне кажется, этому лучше всего так: для внешнего задатчика моя система ничем не будет отличаться от обычной ИС памяти, кроме 4-х дополнительных сигналов, указывающих на обнаруженную ошибку. В дальнейшем можно будет ввести дополнительное исправление ошибки внутри системы. Задатчик общается с системой точно также как с обычной микросхемой статического ОЗУ.

Внутри система представляет собой плис и две схемы памяти - в одной из которых будет находиться информация, а в другой - биты коррекции. Примерный код (на VHDL) я нашел в интернете. Вроде бы приобразовать его под свои нужды не очень сложно. Схемы памяти предположительно будут Самсунг K6R4008V1D 512Kx8 3.3В (в одной из них будут использоваться не все 8 разрядов, а только 5 - биты коррекции). ПЛИС - предположительно пр-ва Xilinx технологии CPLD - CoolRunner-II или лучше 9500XL.

 

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

 

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

 

Спасибо за внимание!

Изменено пользователем araglin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

для того чтобы загнать битовый поток в плис можете использовать следующую схему:

http://www.xilinx.com/support/programr/jtag_cable.pdf

 

 

по поводу выбора семейства можно сказать так: поставьте софт и поиграйтесь там с синтезом имеющегося у вас кода под различные семейства - вот и посмотрите во что (по использованным ресурсам) выливается ваш проект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По самому проекту - возможно следует предусмотреть резервирование. Если причиной сбоев памяти будут внешние воздействия, то собъется и память в Xilinx, что погубит всю память(доступ к ней просто будет невозможен). У Altera (Stratix) есть возможность встроенными средствами проверять целостность внутренней памяти, как обстоят дела у Xilinx я не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По самому проекту - возможно следует предусмотреть резервирование. Если причиной сбоев памяти будут внешние воздействия, то собъется и память в Xilinx, что погубит всю память(доступ к ней просто будет невозможен).
Вот потому человек и собирается использовать CPLD ;) CoolRunner II использовать не стоит, поскольку он есть урезанная FPGA со встроенным флешом.

 

У Altera (Stratix) есть возможность встроенными средствами проверять целостность внутренней памяти, как обстоят дела у Xilinx я не знаю.
Хилые тоже умеют контроллировать целостность своей конфигурационной памяти. Сам с этим близко не работал, однако знаю, что это возможно.

 

2 araglin:

Поскольку память выбрана ассинхронная, то будут серьезные проблемы с тем, чтобы прикинуться чипом памяти для внешней системы, пусть и с четырьмя дополнительными выводами. Чтобы прикинуться памятью придется сформировать контрольную сумму по восьми битам за 2ns - это просто очень круто для CPLD. Иначе необходимо вводить корректировку в алгоритм работы блока памяти - выставлять данные заранее, а лишь потом выставлять адрес и сигналы по записи, что уже нарушение таймингов, рекомендованых производителем. Впрочем, выбор синхронной памяти все равно ничем не поможет - все равно будут необходимы такты для перемещения даных между стадиями конвеера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А откуда вообще такая задача?

Есть уверенность что Самсунг K6R4008V1D более сбойная чем микропроцессор или ПЛИС?

Так не используйте Самсунг. Если сбоит всё, так надо бороться с источниками сбоев и т.д.

Т.е. должно быть обоснование того что усложнение схемы повысит её надёжность, а не наоборот, а для этого должны быть какие-то критерии надёжности (вероятность отказа за ед. времени и т.д.) для отдельных частей схемы.

 

Далее. как Вы собираетесь контролировать наличие ошибок?

1. ПЛИС просто выставляет флаг наличия или считает их.

Тогда прога будет знать о наличии ошибки как постфактум (по опросу, или сразу по внешнему прерыванию). И что тогда уже делать? И кстати какие данные предполагается хранить в ОЗУ?

2. Контроль производится при каждом обращении к памяти, т.е. каждое чтение памяти обёрнуто в програмный код проверяющий статус ошибки, но тогда падает производитеьность. Если производительность не существенна, то может и сам алгоритм проверки/восстановления имеет смысл в проц засунуть и использовать сразу более широкую память.

 

Или это чисто эксперименты или какойнить курсовой в институте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно я отвечу вместо автора ? Если что не так, пусть он меня поправит. :maniac:

1.Память менее надежная чем логика (процессор). т.к. ее делают на базе очень мелких транзисторов, характеристики которых хуже, чем у тех которых используются для лог. элементов. Например - у них маленький заряд переключения (для ячейки SRAM). Более того, логика синхронная, поэтому помеха не повлияет на систему только если не попадет под фронт, или не вызовет отказ ячейки. В случае памяти же все хуже - помеха может вызвать ее переключение. И самсунг тут не виноват.

2.Ну представьте, что бороться с источником сбоев сложно, поэтому Вам и ставят задачу спроектировать надежную SRAM.

3. про критерии надежности - да они указываются, но тут, как мне кажется курсач или диплом, поэтому забудем об этом.

4. ПЛИС производит коррекцию одиночной ошибки и детектирование двойной. Если обнаруживается ошибка - то выставляется системный FAIL, срабатывает система резервирования и происходит переключение на резервный блок.

5.Производительность естественно не существенна - задача сделать надежную систему. Память в ней - один из компонентов. Задача-то сводится к разработке системы резервирования, а память - это лишь один из факторов. Вот повышением ее надежности человек и занялся ;) Я думаю, что программная реализация вполне возможна (за счет большей ширины или большего объема памяти), но как курсач по схемотехнике такое решение не гоится :-)))

Изменено пользователем sergey256

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если уж растекаться мыслью по древу, то проще сделать мажоритарную схему на трех корпусах памяти ;) Будет гораздо проще и гораздо надежнее, нежели всякие схемы контроля ошибок :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...