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

Работа с флэш-памятью

Те, кто видел мои прошлые темы, наверное уже догадался, что я снова про декодер Витерби :-)

 

Я дописал HDL код, погонял его, все работает Ок. Перехожу к синтезу и отладке в железке.

И возникает вот какой вопрос.

 

Последовательность из демодулятора для проверки декодера я моделирую в матлабе, записать их можно в каком угодно виде.

Сейчас я объявил их в виде константы в упаковке

type Ara is array (NATURAL RANGE <>) of std_logic_vector (Input_Bits-1 downto 0);
constant InP: Ara:=("011111","000111","000001","101000",..............................,"000000");

 

Далее описал генератор, который читает эти данные и выдает на кодер. Все работает Ок.

Теперь вопрос, каким образом тестировать реальную ПЛИС

 

Имеется отладочная плата

http://www.actel.com/products/hardware/dev...sic3l.aspx#docs

На ней есть встроенная флэш-память, есть 2 USB порта, один для программирования, вторым собсно можно пользоваться.

 

У меня нет никакого опыта в работе с флэш-память, в книгах тоже пока ничего не нашел.

Подскажите какой нибудь материал по тому, как работать с памятью? Я это вижу так, что предварительно во флэш записываются кодированные символы, затем небольшой блок внутри самого ПЛИСа обращается к этой памяти и подает данные на вход кодера. Как это сделать? Ткните пальцем что ли.

 

Вариант второй, с использованием порта. Распайку ног нашел, но вот каким образом с компьютера подавать символы на этот порт? Как там всякие прерывания и прочие радости? Можно ли делать это из среды Матлаб или САПРа ПЛИС?

Спасибо

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


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

Все зависит от способа подключения FLASH к FPGA. С USB лучше не связываться - там парой проводов не обойтись, понадобится целый софтверный стек (или хардверный - для настоящих мазохистов :) )

Насколько я понял по беглому взгляду на ссылку, у FPGA есть интегрированный Cortex? Если да, то проще будет заливать данные из него

 

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


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

Нашел программу для заливки данных во флэш. Уже хорошо.

Теперь понять бы как научиться читать флэшку из ПЛИСа

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


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

Теперь понять бы как научиться читать флэшку из ПЛИСа
Силой мысли :1111493779: Ту на форуме далеко не все телепаты и так же не знатоки девбоардов от Actel, что бы наизусть помнить схему подключения флешки в FPGA на вашей борде. Может вы все таки озвучите, как оно подключено?

 

 

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


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

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

 

Разводка ног памяти

http://dl.dropbox.com/u/2827213/Different/...heets/Flash.png

Схематик-лист

http://dl.dropbox.com/u/2827213/Different/..._KIT_SCS_SS.pdf

(Распайка флэш - лист 3, секция B-5)

 

Мануал на весь кит

http://dl.dropbox.com/u/2827213/Different/...uide%20v1.4.pdf

 

Ман на флэшку

http://dl.dropbox.com/u/2827213/Different/...Flash%20J3D.pdf

 

В общих чертах становится понятно, но не ясен механизм. С оперативной памятью более менее ясно - подводится счетчик, выставляется WE и пишем. А тут сигналы, назначение которых не вполне ясно.

Я еще конечно покопаюсь, но думаю, что кто то уже решал подобную задачу, хотелось бы почитать какую нибудь статью про практику работы с флэш-памятью и примерами кода.

 

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


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

Посмотрел.

В общих чертах становится понятно, но не ясен механизм.
Механизм подробно описан в DS на флешку (глава 9 и приложение A). В двух словах - читается как обычная SRAM память. Пишется с помощью специальных серий обычных записей и чтений (что и куда писать описано в DS). Перед записью необходимо стереть блок/сектор (так же спец. последовательностью записей/чтений)

А тут сигналы, назначение которых не вполне ясно.
Это какие например? По моему там все кристально ясно:

FLASH_RST_N - Сброс управляющих схем флэша (рекомендуется подавать вначале работы)

FLASH_LCE_N - Выборка м/сх (сюда нужно подать 0, что бы данный флэш откликался на следующие сигналы:)

FLASH_WE_N - Запись (нулем)

FLASH_OE_N - Чтение (нулем)

MEM_ADDR - Шина адреса

MEM_DATA - Шина данных

 

 

 

Да, по замыслу авторов борды FLASH вместе с SRAM подключался ко встроенному Cortex'у

 

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


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

Muscat, я не тестировал декодер Витерби, и с Actel не работал, но имеется небольшой опыт тестирования других декодеров на Virtex5...

Честно, я не вникал в архитектуру Actel, но в Virtex есть блочная память, думаю она есть и у Actel. так вот, я всегда использовал для теста эту самую память...

Организую её как ROM и либо файлом, либо из vhd файла определяю начальные значения ячеек, а потом просто счётчиком по порядку перебираю ячейки...

но всё это получится если длина кодового слова у Вас вместится в неиспользуемую память...

И, если не секрет, для каких кодов Витерби делаете?? А то у меня тоже этот тип в дальнейшем, похоже, намечается...

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


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

Про кортекс да,хорош вопрос был, вчера уже мозги туго соображали. В любом случае спасибо за ссылки =)

 

_ANDREW, я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.

Как это лучше сделать в HDL коде?

1) Внутри архитектуры сигнала объявить сигнал типа массив с предварительным заданием значений

2) Внутри процесса объявить переменную, с предварительным заданием

3) Оставить все, как есть у меня сейчас - массив входных данных объявлен константой в упаковке

 

Насколько я помню из описаний, синтезатор игнорирует все предварительные задания сигналов вида

signal A: std_logic_vector(2downto0) :="111";

 

Кодер стандартный 7(133,171), реализация алгоритма на трейбеке (меня тут помнится уверяли, что трейкбек обязателен, так вот если что трейбек это просто один из вариантов реализации), мягкие решения по 3 бита, глубина 64.

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

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


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

Про кортекс да,хорош вопрос был, вчера уже мозги туго соображали. В любом случае спасибо за ссылки =)

 

_ANDREW, я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.

Как это лучше сделать в HDL коде?

1) Внутри архитектуры сигнала объявить сигнал типа массив с предварительным заданием значений

2) Внутри процесса объявить переменную, с предварительным заданием

3) Оставить все, как есть у меня сейчас - массив входных данных объявлен константой в упаковке

 

Насколько я помню из описаний, синтезатор игнорирует все предварительные задания сигналов вида

signal A: std_logic_vector(2downto0) :="111";

 

Кодер стандартный 7(133,171), реализация алгоритма на трейбеке (меня тут помнится уверяли, что трейкбек обязателен, так вот если что трейбек это просто один из вариантов реализации), мягкие решения по 3 бита, глубина 64.

Как Вы будете в HDL коде описывать блочную память для ПЛИС Actel? Меня также интересует описание для Flash и SRAM памяти, которые имеются в ПЛИС. Примеры описаний...

PS Мои попытки успехом не увенчались...

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


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

я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.
Блочная память живет ВНУТРИ FPGA, использовать в ее качестве внешнюю FLASH или SRAM не получится. Если вам хватит ее объема, то вам повезло :)

 

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


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

Описание блочной RAM памяти присутствует в CodingStyle Guide.

http://dl.dropbox.com/u/2827213/Different/...yle%20Guide.pdf

Страница 78

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

 

О встроенной в ПЛИС флэш памяти не слышал, я хотел заюзать ту мелкосхему флэш, которая уже стоит на отладочной плате.

 

Так как объявить значение RAM?

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


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

О встроенной в ПЛИС флэш памяти не слышал, я хотел заюзать ту мелкосхему флэш, которая уже стоит на отладочной плате.

Например здесь - смотрим таблицу.

 

Так как объявить значение RAM?

Я пока использую - SmartGen RAM.

Это на стр. 78 документа "Actel HDL Coding Style Guide" и показано...

 

PS Я писал письмо по этому поводу в Actel. Ответил, что вышлет описание на HDL.

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


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

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

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

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

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

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

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

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

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

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