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

ISE 9.2.04i + DDR2 + SPARTAN-3AN

Сделал я проект для Spartan-3AN Kit Board с памятью DDR2 на борту. Для управления памятью взял Memory Interface Generator. При компиляции проекта на этапе MAP происходит ошибка с сылкой на выходные диференциальные Clk выходы следующего содержания:

________________________________________________________________________________

Mapping design into LUTs...

Running directed packing...

ERROR:Pack:2224 - The I/O component "mig_ddr2_dqs<0>" has an illegal IOSTANDARD

value. The DIFFM component is configured to use differential signaling and

can not use single-ended IOSTANDARD value SSTL18_II. Please correct the

IOSTANDARD property value or the I/O connectivity.

ERROR:Pack:2224 - The I/O component "mig_ddr2_dqs<1>" has an illegal IOSTANDARD

value. The DIFFM component is configured to use differential signaling and

can not use single-ended IOSTANDARD value SSTL18_II. Please correct the

IOSTANDARD property value or the I/O connectivity.

ERROR:Pack:2224 - The I/O component "mig_ddr2_clk" has an illegal IOSTANDARD

value. The DIFFM component is configured to use differential signaling and

can not use single-ended IOSTANDARD value SSTL18_II. Please correct the

IOSTANDARD property value or the I/O connectivity.

 

Mapping completed.

See MAP report file "schema_map.mrp" for details.

Problem encountered during the packing phase.

 

Design Summary

--------------

Number of errors : 3

Number of warnings : 7

 

Process "Map" failed

___________________________________________________________________________

 

Я понял, что компилятор не хочет делать для этих выводов (подключенных к MIG) применять IOSTANDARD равный SSTL18_II (что я делаю в файле временных и топологических ограничений). Но в описании на мой девайс прямо указанно, что необходимо использовать именно SSTL18_II. К тому же если убрать это ограничение или поставить другую величину - это приводит только к увеличению ошибок компиляции.

Наверняка я не первых применяю MIG и кто-то уже решал все эти проблемы. С нетерпением жду решения.

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


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

Я понял, что компилятор не хочет делать для этих выводов (подключенных к MIG) применять IOSTANDARD равный SSTL18_II (что я делаю в файле временных и топологических ограничений). Но в описании на мой девайс прямо указанно, что необходимо использовать именно SSTL18_II.

Может все-таки DIFF_SSTL18_II ?

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


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

Действительно помогло, а в PDF-ке на мой KIT ошибка.

Огромное спасибо.

 

А вы не подскажете еще и по поводу входной адресной шины на MIG? Как задавать адрес правильно, если он состоит из row+column+bank adress (13+10+2 бит соответственно). И куда подевался еще один бит, ведь адресная шина имеет 26 разрядов?

post-33895-1217401726_thumb.jpg

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


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

А вы не подскажете еще и по поводу входной адресной шины на MIG? Как задавать адрес правильно, если он состоит из row+column+bank adress (13+10+2 бит соответственно). И куда подевался еще один бит, ведь адресная шина имеет 26 разрядов?

 

A9-A0 Column address

A10 Auto precharge

A23-A11 Row address

A25-A24 Bank address

 

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

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


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

YuP,

Спасибо за последовательность, но это не все, что мне пока не понятно в адресации. Вот, возьмем к примеру картинку моего поста выше. У меня шина данных = 32р. Я хочу передать два раза 32х разрядное значение (для упрощения ситуации) по двум различным адресам. Длина загрузки (burst lenght) = 4. Все, как на картинке. Выставляю первый адрес вида (старшие слева): 01 0000000000001 1 0000000001.

Второй адрес вида: 01 0000000000001 1 0000000010.

Как может каждый из адресов относиться к передаваемым данным в 32разряда? Ведь память всего на 512Mbit, а учитывая все комбинации выйдет переполнение памяти. И ведь шина выходных из MIG данных (и входная в DDR2) = 16 бит и каждому передаваемому значению должен соответствовать свой уникальный адрес.

Видно я что-то не так понимаю. Помогите разобраться.

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


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

Несколько раз пересчитывал и не вышло 512Мбит. Берем 23р адреса, подаваемого на вход MIG (10р Column address+13р Row address). Каждому адресу соответствует 32х разрядное слово данных. Плюс 4 банка памяти. A10 - Auto precharge в расчет не берем.

(23р - 8000000 адресов) * (4 банка) * (32р данных) = 1024 Мбит.

 

Попробую поэкспериментировать на отладочной платке.

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


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

Поэкспериментировал. Не получилось. Даже не знаю как проверить "что не так". Может у кого-нибудь есть картинка в схематике с подключенным MIGом или готовый тестовый проект под ISE9.2, чтобы я сравнил со своим?

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


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

Вопрос отпадает, все заработало. Оказалось что я не то в DataMask поставил. Занулил все данные, вот и не видел ничего.

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


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

Облом. Предыдущее сообщение можно не читать, я ошибся, когда проверял работоспособность - не тот файл прошил.

 

В общем, так и сяк крутил этот МИГ, и остановился на том, что он устанавливает на 1-цу выход user_cmd_ack и оно висит до посинения, хотя должно сбрасываться в 0 после burst_done за два такта clk0. Никто не в курсе из-за чего может зависать этот user_cmd_ack? Из-за неправильно установленного адреса может?

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


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

... готовый тестовый проект под ISE9.2, чтобы я сравнил со своим?

А на xilinx.com посмотреть тяжело?

http://www.xilinx.com/products/boards/s3as...nce_designs.htm

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


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

А на xilinx.com посмотреть тяжело?

http://www.xilinx.com/products/boards/s3as...nce_designs.htm

 

Посмотрел - самого проекта для MIG нет. Есть какие-то pdf-ки бесполезные.

Сейчас у меня этот MIG выдает все контрольные сигналы как надо, но при чтении ранее записанных данных выдает или все 1-цы(побитно) или первые два бита 0, а остальное 1. Значение постоянное и не изменяется. Никто не знает, что это? Если в память (ddr2) еще ничего не писалось, то какое значение в нем хранится по умолчанию?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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