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

Модернизация xapp134/xapp200 (SDRAM) для конкретных задач

Начну с того, что принесли мне плату с запаянным на ней ПЛИС-кой XC3S200 (Spartan 3, Xilinx) и SDRAM память K4S641632K (Samsung), а в нагрузку дали побаловаться TFT дисплей фирмы NEC - NL6448BC26-09 (8.4").

Вообщем поставил себе следующую задачу: данные, поступающие из вне, записывать в СДРАМ память и выводить их на ЖКИ монитор. Причем поступать данные могут одновременно с выводом записанных данных на ТФТ матрицу.

Вообщем первой моей победой был запуск ТФТ матрицы. Здесь подробно останавливаться не буду. Проблемы начались, когда начал запускать СДРАМ. После недельки проб и ошибок и лазания по форуму удалось-таки записать и считать (и сравнить с записанными) данные, но без режима регенерации, т.е. просто однократно запись->чтение->ок->зажигаем светодиод. Побаловался с различными режимами бурста и латентностью. Но это оказалось детским лепетом. После 2-3-х недельного написания программы, исправления ошибок, синтеза вылезла проблема - проект не влазит в кристал :( . Изучил форумы, дабы удостовериться - в этот кристал запихивали СДРАМ контроллер, ЛайфЕзернет, 2 RS232 и еще чего-то. В итоге "сел в лужу" и "выпал в осадок"...

... ТЕПЕРЬ ПРОШУ ПОМОЩИ У ПРОФИ.

На форуме встречал советы переделки xapp200. (xapp134 не советуют, хотя никто не объяснил толком, чем он плох, кроме упоминания фраз "горбатая корка" и "другой принцип построения контроллера").

Сам на VHDL пишу не так давно (самоучка, так что сильно не пинайте!), по образованию электроник, поэтому постоянно сталкиваюсь с проблемами...

 

Свой контроллер писал по следующему принципу:

Он имеет 4 состояния:

 

1. Инициализация: пауза 200мкс - выполнение стандартных команд с загрузкой МОДЕ-регистра.

 

2. Режим чтения: в этом режиме читаются данные из СДРАМ памяти по 160 16-битных слов из каждого банка (в сумме 640 = одна строка ТФТ дисплея) и заносится в блочную память на кристале. В последующем уже контроллер ТФТ дисплея читает данные из данной блочной памяти и выводит данные на экран дисплея (своеобразный ФИФО). Так повторяется 640 раз (для разрешения 640х480).

 

3. Режим записи: аналогично режиму чтения в этом режиме в СДРАМ записываются данные (16х640) из блочной памяти на кристале, предварительно загруженные в неё из вне.

 

4. Режим регенерации: в этом режиме выполняется полный цикл регенерации памяти (4095 циклов для 64Мб).

 

5. Режим IDLE: в этом режиме происходит проверка заполненности блочной памяти на кристалле (для записи и для чтения). Если из блочной памяти считана информация (строка) и выведена на дисплей - то выполняется загрузка следующей строки в блочную память. Если заполнена блочная память для записи (640 слов) то выполняется режим записи. Если на экран выведен полный кадр - то контроллер переходит в режим регенерации.

 

Вот вообщем то и все основные задачи, которые нужны мне для работы.

Некоторые пояснения: в каждом состоянии режим выполняется полностью, т.е. в режиме чтения считывается строка полностью (160+160+160+160=640). Аналогично в режиме записи записывается строка полностью (160+160+160+160=640).

 

Это мое видение решение задачи пока не удалось, в связи с этим встретив советы по переделке корок xapp134/200, прошу помощи по доработке указанных корок......

 

Хотя в них после изучения для меня есть еще много непонятного.

 

Спасибо.

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


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

На opencores.org есть проект для SDRAM на VHDL, я по аналогии с ним делал. все работает.

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


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

 

По поводу создания контролера для работы с памятью SDRAM можете воспользоваться MIG(Memory Interface Generator) в CoreGenerator (начиная с 9-ой версии ISE, для остальных надо отдельно скачивать), который генерирует VHDL/Verilog код. Кстати там есть уже готовые реализации для некоторых микросхем памяти.

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


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

По поводу создания контролера для работы памяти SDRAM можете воспользоваться MIG(Memory Interface Generator) в CoreGenerator (начиная с 9-ой версии ISE, для остальных надо отдельно скачивать), который генерирует VHDL/Verilog код. Кстати там есть уже готовые реализации для некоторых микросхем памяти.

Так он, кажется, SDR SDRAM не поддерживает.

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


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

Так он, кажется, SDR SDRAM не поддерживает.

 

DDR и SDRAM поддерживает

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


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

Если времени жалко - мерём Миг от Xilinx и радуемся....

Если нет - охота именно самому - то вот неплохая дока - http://www.dsioffe.narod.ru/mysdram/MyMicronSDRAM.htm

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


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

Если нет - охота именно самому - то вот неплохая дока - http://www.dsioffe.narod.ru/mysdram/MyMicronSDRAM.htm

Эту доку знаю, изучил уже досконально...

 

 

По поводу создания контролера для работы с памятью SDRAM можете воспользоваться MIG(Memory Interface Generator) в CoreGenerator (начиная с 9-ой версии ISE, для остальных надо отдельно скачивать), который генерирует VHDL/Verilog код. Кстати там есть уже готовые реализации для некоторых микросхем памяти.

MIG(Memory Interface Generator) у меня в версии ISE 9.1 нету :(. Облазил весь CoreGenerator. На сайте Xilinx почитал про MIG - вроде не написано, что он поддерживает SDR SDRAM:

MIG 2.3 is available via ISE® IP Update 10.1.3

Memory Interface Generator (MIG) is a free software tool used to generate memory controllers and interfaces for Xilinx® FPGAs. MIG generates unencrypted Verilog or VHDL design files, UCF constraints, simulation files and implementation script files to simplify the design process. Memory Interfaces supported are: DDR2 SDRAM, DDR SDRAM, QDRII SRAM, and DDRII SRAM, and RLDRAM II.

 

 

На opencores.org есть проект для SDRAM на VHDL, я по аналогии с ним делал. все работает.

Полазил на opencores.org и нашел несколько проектов. Какой из перечисленных использовался?

AMBA Slave SDRAM controller

This is an AMBA slave Controller. Implemented in VHDL.

 

sdram_ctrl

This is an instance of sdram controllers which is optimised for speed.

 

SDR SDRAM Controller

This is the implementation of an SDR (Single Data Rate, not DDR) SDRAM controller that abstracts the SDRAM as a generic block device. The user can stream blocks of data of arbitrary length to/from arbitrary address locations in the SDRAM. The controller is parameterized such that it can be for any speed or sized SDRAM. Dual port FIFOs on the read and write side allow for data on different clock domains to be read and written to the SDRAM at continuous rates. A sample application would be for an imager where an imager running at a high speed streams a frame into the SDRAM and then a PC streams the data out at a lower rate over a slower link. This controller has been used tested and used in many different Xilinx FPGAs with SDRAMs of different size, speed, and manufacturers.

 

High Speed SDRAM Controller With Adaptive Bank Management and Command Pipeline

HSSDRC is the configurable universal SDRAM controller with adaptive bank control and adaptive command pipeline. The main features of HSSDRC IP core are: 1. Adaptive SDRAM bank control : command sequence is depending upon previous accesses to the RAM. 2. Adaptive command pipeline control: bank control commands for following memory access commands are pipelined into previous command processing chain whenever possible. 3. Overlapping command and data processing 4. Variable transaction burst from 1 to 16 5. Full SDRAM bandwidth usage for linear sequential access without bus turnaround, bank or row change HSSDRC IP core and IP core testbench has been written on SystemVerilog and tested in Modelsim. HSSDRC IP core is licensed under MIT License

 

sdram control core

read and write sdram chip,can config for any sdram chip.

 

stone

SDRAM memory controller host model

 

Asynchronous WISHBONE-compatible SDRAM controller

Yet Another Dynamic Memory Controller... after various pleagues with DRAM controllers, I decided to write my own. This one is hardware-proven on the OMRP.

 

 

P.S. Спасибо всем откликнувшимся и оказывающим помощь.

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


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

Кажется второй, там два исходника на VHDL, в заголовке автор - Michal Krepa

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


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

Александр_Алексеев, если Вам не трудно, вышлите мне на мыло проект sdram, который вы брали с opencores. У меня там нет акаунта. Вот мое мыло: [email protected]

 

По поводу создания контролера для работы с памятью SDRAM можете воспользоваться MIG(Memory Interface Generator) в CoreGenerator (начиная с 9-ой версии ISE, для остальных надо отдельно скачивать), который генерирует VHDL/Verilog код. Кстати там есть уже готовые реализации для некоторых микросхем памяти.

Объясните толком где в 9-й айсе MIG. Ну в упор не вижу в своей версии 9.1 МИГа в CoreGenerator. Все облазил. Ткните носом. Или может укажите ссылочку где сие чудо можно скачать...

 

Спасибо.

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


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

Объясните толком где в 9-й айсе MIG. Ну в упор не вижу в своей версии 9.1 МИГа в CoreGenerator. Все облазил. Ткните носом. Или может укажите ссылочку где сие чудо можно скачать...

А какой SP и IP Update у Вас установлены ?

 

Точно не помню, но что-то было нехорошее с MIG 1.7 в ISE 9.1... Вроде как он отдельно качался. Но могу точно сказать в ISE 9.1 IP Update 3 он точно есть: 9.1i IP Update #3 - Release Notes and Known Issues for CORE Generator ISE 9.1 IP Update 3 (9.1i_IP3)

 

Ну а качается это счастье отсюда: ISE 9.1i Windows - IP Update

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


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

1) У меня ISE 10.1 там MIG в корэгене СДРАМ не поддерживает. Что делать? ставить 9-ю?

2) Уже разрабатывал контроллер. В качестве основы взял альтеровскую корку (понятно, нехорошо это :-) ). Есть у них sdr_sdram reference design. Ссылку не помню((

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


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

Это написано Userguide (ссылка на него ниже) для ISE 10.1.03

The Memory Interface Generator (MIG) generates DDRII SRAM, DDR SDRAM, DDR2 SDRAM, QDRII SRAM, and RLDRAM II interfaces for Virtex®-4 FPGAs and generates DDR SDRAM, DDR2 SDRAM, QDRII SRAM, and and DDRII SRAM interfaces for Virtex-5 FPGAs. It also generates DDR and DDR2 SDRAM interfaces for Spartan®-3, Spartan-3A, Spartan-3E, and Spartan-3A DSP FPGAs. The tool takes inputs such as the memory interface type, FPGA family, FPGA devices, frequencies, data width, memory mode register values, and so forth, from the user through a graphical user interface (GUI). The tool generates RTL, SDC, UCF, and document files as output. RTL or EDIF (EDIF is created after running a script file, where the script file is a tool output) files can be integrated with other design files.

 

ссылка

 

Для ускоррения разработки может стоит и поставить ISE 9.1.03 или 9.2.03 или даже более поздние версии (насколько я помню там MIG поставляется отдельно) но это Вам решать самому :)

 

Ниже приведен скриншот где искать сам MIG в ISE 10.1.03

post-24839-1241794878_thumb.jpg

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


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

А что в исе10 уже другая версия МИГ? Если да, то неужели Xilinx не мог включить в эту версию поддержку SDRAM?

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


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

Можно ли продолжать разработку в 10-й версии, но отдельно установить MIG для 9-й и результаты использовать в 10-й? И вообще его отдельно можно поставить?

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


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

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

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

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

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

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

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

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

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

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