реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Работа с флэш-памятью, Или какие еще способы проверки декодера?
Muscat
сообщение Nov 2 2010, 16:45
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



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

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

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

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


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 3 2010, 08:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Все зависит от способа подключения FLASH к FPGA. С USB лучше не связываться - там парой проводов не обойтись, понадобится целый софтверный стек (или хардверный - для настоящих мазохистов smile.gif )
Насколько я понял по беглому взгляду на ссылку, у FPGA есть интегрированный Cortex? Если да, то проще будет заливать данные из него
Go to the top of the page
 
+Quote Post
Muscat
сообщение Nov 3 2010, 17:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



Нашел программу для заливки данных во флэш. Уже хорошо.
Теперь понять бы как научиться читать флэшку из ПЛИСа


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 4 2010, 08:54
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Muscat @ Nov 3 2010, 20:20) *
Теперь понять бы как научиться читать флэшку из ПЛИСа
Силой мысли 1111493779.gif Ту на форуме далеко не все телепаты и так же не знатоки девбоардов от Actel, что бы наизусть помнить схему подключения флешки в FPGA на вашей борде. Может вы все таки озвучите, как оно подключено?

Go to the top of the page
 
+Quote Post
Muscat
сообщение Nov 7 2010, 05:58
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



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

Разводка ног памяти
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 и пишем. А тут сигналы, назначение которых не вполне ясно.
Я еще конечно покопаюсь, но думаю, что кто то уже решал подобную задачу, хотелось бы почитать какую нибудь статью про практику работы с флэш-памятью и примерами кода.


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 7 2010, 09:14
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Посмотрел.
Цитата
В общих чертах становится понятно, но не ясен механизм.
Механизм подробно описан в DS на флешку (глава 9 и приложение A). В двух словах - читается как обычная SRAM память. Пишется с помощью специальных серий обычных записей и чтений (что и куда писать описано в DS). Перед записью необходимо стереть блок/сектор (так же спец. последовательностью записей/чтений)
Цитата
А тут сигналы, назначение которых не вполне ясно.
Это какие например? По моему там все кристально ясно:
FLASH_RST_N - Сброс управляющих схем флэша (рекомендуется подавать вначале работы)
FLASH_LCE_N - Выборка м/сх (сюда нужно подать 0, что бы данный флэш откликался на следующие сигналыsmile.gif
FLASH_WE_N - Запись (нулем)
FLASH_OE_N - Чтение (нулем)
MEM_ADDR - Шина адреса
MEM_DATA - Шина данных



Да, по замыслу авторов борды FLASH вместе с SRAM подключался ко встроенному Cortex'у
Go to the top of the page
 
+Quote Post
Muscat
сообщение Nov 7 2010, 15:20
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



А что такое Cortex?


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
_ANDREW
сообщение Nov 7 2010, 19:20
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 14-03-06
Пользователь №: 15 223



Muscat, я не тестировал декодер Витерби, и с Actel не работал, но имеется небольшой опыт тестирования других декодеров на Virtex5...
Честно, я не вникал в архитектуру Actel, но в Virtex есть блочная память, думаю она есть и у Actel. так вот, я всегда использовал для теста эту самую память...
Организую её как ROM и либо файлом, либо из vhd файла определяю начальные значения ячеек, а потом просто счётчиком по порядку перебираю ячейки...
но всё это получится если длина кодового слова у Вас вместится в неиспользуемую память...
И, если не секрет, для каких кодов Витерби делаете?? А то у меня тоже этот тип в дальнейшем, похоже, намечается...
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 8 2010, 07:32
Сообщение #9


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Muscat @ Nov 7 2010, 17:20) *
А что такое Cortex?

Ответ здесь (Cortex-M1) и здесь(Cortex-M3)


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 8 2010, 08:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Muscat @ Nov 7 2010, 18:20) *
А что такое Cortex?
Встроенный в FPGA процессор
Go to the top of the page
 
+Quote Post
Muscat
сообщение Nov 8 2010, 10:42
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



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

_ANDREW, я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.
Как это лучше сделать в HDL коде?
1) Внутри архитектуры сигнала объявить сигнал типа массив с предварительным заданием значений
2) Внутри процесса объявить переменную, с предварительным заданием
3) Оставить все, как есть у меня сейчас - массив входных данных объявлен константой в упаковке

Насколько я помню из описаний, синтезатор игнорирует все предварительные задания сигналов вида
Код
signal A: std_logic_vector(2downto0) :="111";


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

Сообщение отредактировал Muscat - Nov 8 2010, 10:42


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 8 2010, 10:50
Сообщение #12


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Muscat @ Nov 8 2010, 12:42) *
Про кортекс да,хорош вопрос был, вчера уже мозги туго соображали. В любом случае спасибо за ссылки =)

_ANDREW, я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.
Как это лучше сделать в HDL коде?
1) Внутри архитектуры сигнала объявить сигнал типа массив с предварительным заданием значений
2) Внутри процесса объявить переменную, с предварительным заданием
3) Оставить все, как есть у меня сейчас - массив входных данных объявлен константой в упаковке

Насколько я помню из описаний, синтезатор игнорирует все предварительные задания сигналов вида
Код
signal A: std_logic_vector(2downto0) :="111";


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

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 8 2010, 13:21
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.
Блочная память живет ВНУТРИ FPGA, использовать в ее качестве внешнюю FLASH или SRAM не получится. Если вам хватит ее объема, то вам повезло smile.gif
Go to the top of the page
 
+Quote Post
Muscat
сообщение Nov 8 2010, 13:37
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382



Описание блочной RAM памяти присутствует в CodingStyle Guide.
http://dl.dropbox.com/u/2827213/Different/...yle%20Guide.pdf
Страница 78
Если что, то видя большой блок триггерной памяти, синтезатор все равно делает его на встроенной RAM.

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

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


--------------------
Because it's there
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 8 2010, 15:10
Сообщение #15


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Muscat @ Nov 8 2010, 15:37) *
О встроенной в ПЛИС флэш памяти не слышал, я хотел заюзать ту мелкосхему флэш, которая уже стоит на отладочной плате.

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

Цитата(Muscat @ Nov 8 2010, 15:37) *
Так как объявить значение RAM?

Я пока использую - SmartGen RAM.
Это на стр. 78 документа "Actel HDL Coding Style Guide" и показано...

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016