araglin 0 28 декабря, 2006 Опубликовано 28 декабря, 2006 (изменено) · Жалоба Здравствуйте. Я совсем начинающий разработчик. Хотел бы с вами посоветоваться по поводу следующего проекта: цель - обеспечить исправление одиночных и обнаружение двойных ошибок (SECDED) в микросхемах ОЗУ. Для этого предполагается использование кода Хемминга. Реализацию на ПЛИС от Xilinx'a нашел. Выглядеть, как мне кажется, этому лучше всего так: для внешнего задатчика моя система ничем не будет отличаться от обычной ИС памяти, кроме 4-х дополнительных сигналов, указывающих на обнаруженную ошибку. В дальнейшем можно будет ввести дополнительное исправление ошибки внутри системы. Задатчик общается с системой точно также как с обычной микросхемой статического ОЗУ. Внутри система представляет собой плис и две схемы памяти - в одной из которых будет находиться информация, а в другой - биты коррекции. Примерный код (на VHDL) я нашел в интернете. Вроде бы приобразовать его под свои нужды не очень сложно. Схемы памяти предположительно будут Самсунг K6R4008V1D 512Kx8 3.3В (в одной из них будут использоваться не все 8 разрядов, а только 5 - биты коррекции). ПЛИС - предположительно пр-ва Xilinx технологии CPLD - CoolRunner-II или лучше 9500XL. Вроде бы всё это может заработать. Проблема только в том, что практического опыта у меня мало. Если знаете о каких-либо "подводных" камнях в такой конфигурации, большая просьба - расскажите. Также интересуют любые замечания и советы. Теперь что касается ПО для проекта. Для отладки кода выбрал modelsim, для синтеза - leonardo spectrum. Ни того, ни другого у меня нет :) Под словом 'выбрал' подразумеваю - выбрал для поиска. Также очень интересуют возможные альтернативы. С прошивкой полученного кода в ПЛИС обещали помочь. Спасибо за внимание! Изменено 28 декабря, 2006 пользователем araglin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 29 декабря, 2006 Опубликовано 29 декабря, 2006 · Жалоба насчет ПО: с сайта xilinx скачиваете бесплатный WebPack - там и синтезатор и симулятор(как свой, так и урезанный модельсим) и прочее для получения в конечном итоге битового потока конфигурации плис есть. (поскольку в любом случае, даже имея синтезатор и симулятор, без натиного софта производителя для раскладки в кристалл и разводки - ну совсем никуда) для того чтобы загнать битовый поток в плис можете использовать следующую схему: http://www.xilinx.com/support/programr/jtag_cable.pdf по поводу выбора семейства можно сказать так: поставьте софт и поиграйтесь там с синтезом имеющегося у вас кода под различные семейства - вот и посмотрите во что (по использованным ресурсам) выливается ваш проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergey256 0 3 января, 2007 Опубликовано 3 января, 2007 · Жалоба По самому проекту - возможно следует предусмотреть резервирование. Если причиной сбоев памяти будут внешние воздействия, то собъется и память в Xilinx, что погубит всю память(доступ к ней просто будет невозможен). У Altera (Stratix) есть возможность встроенными средствами проверять целостность внутренней памяти, как обстоят дела у Xilinx я не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 3 января, 2007 Опубликовано 3 января, 2007 · Жалоба По самому проекту - возможно следует предусмотреть резервирование. Если причиной сбоев памяти будут внешние воздействия, то собъется и память в Xilinx, что погубит всю память(доступ к ней просто будет невозможен).Вот потому человек и собирается использовать CPLD ;) CoolRunner II использовать не стоит, поскольку он есть урезанная FPGA со встроенным флешом. У Altera (Stratix) есть возможность встроенными средствами проверять целостность внутренней памяти, как обстоят дела у Xilinx я не знаю.Хилые тоже умеют контроллировать целостность своей конфигурационной памяти. Сам с этим близко не работал, однако знаю, что это возможно. 2 araglin: Поскольку память выбрана ассинхронная, то будут серьезные проблемы с тем, чтобы прикинуться чипом памяти для внешней системы, пусть и с четырьмя дополнительными выводами. Чтобы прикинуться памятью придется сформировать контрольную сумму по восьми битам за 2ns - это просто очень круто для CPLD. Иначе необходимо вводить корректировку в алгоритм работы блока памяти - выставлять данные заранее, а лишь потом выставлять адрес и сигналы по записи, что уже нарушение таймингов, рекомендованых производителем. Впрочем, выбор синхронной памяти все равно ничем не поможет - все равно будут необходимы такты для перемещения даных между стадиями конвеера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex03 0 4 января, 2007 Опубликовано 4 января, 2007 · Жалоба А откуда вообще такая задача? Есть уверенность что Самсунг K6R4008V1D более сбойная чем микропроцессор или ПЛИС? Так не используйте Самсунг. Если сбоит всё, так надо бороться с источниками сбоев и т.д. Т.е. должно быть обоснование того что усложнение схемы повысит её надёжность, а не наоборот, а для этого должны быть какие-то критерии надёжности (вероятность отказа за ед. времени и т.д.) для отдельных частей схемы. Далее. как Вы собираетесь контролировать наличие ошибок? 1. ПЛИС просто выставляет флаг наличия или считает их. Тогда прога будет знать о наличии ошибки как постфактум (по опросу, или сразу по внешнему прерыванию). И что тогда уже делать? И кстати какие данные предполагается хранить в ОЗУ? 2. Контроль производится при каждом обращении к памяти, т.е. каждое чтение памяти обёрнуто в програмный код проверяющий статус ошибки, но тогда падает производитеьность. Если производительность не существенна, то может и сам алгоритм проверки/восстановления имеет смысл в проц засунуть и использовать сразу более широкую память. Или это чисто эксперименты или какойнить курсовой в институте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergey256 0 4 января, 2007 Опубликовано 4 января, 2007 (изменено) · Жалоба Можно я отвечу вместо автора ? Если что не так, пусть он меня поправит. :maniac: 1.Память менее надежная чем логика (процессор). т.к. ее делают на базе очень мелких транзисторов, характеристики которых хуже, чем у тех которых используются для лог. элементов. Например - у них маленький заряд переключения (для ячейки SRAM). Более того, логика синхронная, поэтому помеха не повлияет на систему только если не попадет под фронт, или не вызовет отказ ячейки. В случае памяти же все хуже - помеха может вызвать ее переключение. И самсунг тут не виноват. 2.Ну представьте, что бороться с источником сбоев сложно, поэтому Вам и ставят задачу спроектировать надежную SRAM. 3. про критерии надежности - да они указываются, но тут, как мне кажется курсач или диплом, поэтому забудем об этом. 4. ПЛИС производит коррекцию одиночной ошибки и детектирование двойной. Если обнаруживается ошибка - то выставляется системный FAIL, срабатывает система резервирования и происходит переключение на резервный блок. 5.Производительность естественно не существенна - задача сделать надежную систему. Память в ней - один из компонентов. Задача-то сводится к разработке системы резервирования, а память - это лишь один из факторов. Вот повышением ее надежности человек и занялся ;) Я думаю, что программная реализация вполне возможна (за счет большей ширины или большего объема памяти), но как курсач по схемотехнике такое решение не гоится :-))) Изменено 4 января, 2007 пользователем sergey256 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
v_mirgorodsky 0 5 января, 2007 Опубликовано 5 января, 2007 · Жалоба Если уж растекаться мыслью по древу, то проще сделать мажоритарную схему на трех корпусах памяти ;) Будет гораздо проще и гораздо надежнее, нежели всякие схемы контроля ошибок :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться