Тест памяти на железе проводили следующими способами:
1. Записывается одна очередь данных (длиной BURST_LENGTH), затем она же считывается из памяти и проверяется. В качестве тестовых данных используется очередь: 0х00 - FxFF - 5x55 - AxAA. Эта процедура длится бесконечно, но адрес инкрементируется. Этот тест гоняли весь день.
2. Весь массив памяти записывается, затем проверяется. В качестве тестовых данных используется 64-разрядный счетчик (в зависимости от размера шины данных).
Если произойдет хоть одна ошибка, то выставится error, который у нас был выведен на светодиод. Проверяли две двухранковые планки 512 МБ и 2 ГБ фирмы Самсунг, частота 200 МГц, светодиод не загорелся.
Плохо то, что это лабораторные испытания, но еще не известно как все будет на деле. Еще выяснилось, что DCI, используемый для согласования ножек стандарта SSTL, сильно греет ПЛИС. Бороться с нагреванием можно только большим кулером или радиатором.
Контроллер MIG DDR2 SDRAM работает следующим образом: сначала происходит инициализация микросхем памяти по очереди для обоих ранков планки. После инициализации происходит процесс калибровки, выравнивающий (как я понял) временные задержки между микросхемами памяти. Причем калибровка идет по одному (второму) ранку, точно также как для одноранковой планки.
Чтобы работать с ранком, нужно только выставить соответствующий chip select. Другой ранк планки не учавствует в калибровке, поэтому гарантии на правильность его работы нет. Может поэтому в MIG ограничили максимальную частоту 150 МГц. Но память рассчитана на работу 200 МГц! Почему бы не попробовать?