Jump to content

    
Sign in to follow this  
Muscat

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

Recommended Posts

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

 

Я дописал 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 порта, один для программирования, вторым собсно можно пользоваться.

 

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

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

 

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

Спасибо

Share this post


Link to post
Share on other sites

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

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

 

Share this post


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

 

 

Share this post


Link to post
Share on other sites

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

 

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

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 и пишем. А тут сигналы, назначение которых не вполне ясно.

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

 

Share this post


Link to post
Share on other sites

Посмотрел.

В общих чертах становится понятно, но не ясен механизм.
Механизм подробно описан в 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'у

 

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

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

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

 

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

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

 

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

Edited by Muscat

Share this post


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

 

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

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

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

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

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

 

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

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

 

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

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

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

Share this post


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

 

Share this post


Link to post
Share on other sites

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

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

Страница 78

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

 

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

 

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

Share this post


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

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this