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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Присвоение ID ПЛИС'е, Как бы проще сделать?
Moks
сообщение Aug 25 2009, 07:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 510



Добрый день!
Есть ли у кого опыт решения задачки присвоения ID номера микросхеме? Хочется сделать это не меняя какую-либо константу в программе, а просто прошивочным (программаторским) методом, минуя "залезания" в код.
Ведь рано или поздно запустится серия и так хочется делать всё быстро и проще!
Нет никаких идей, а?
Заранее благодарен за возможные пути решения задачки!
Используем Cyclone II и Quartus II.
rolleyes.gif

Сообщение отредактировал Moks - Aug 25 2009, 07:16
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 25 2009, 07:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Moks - ниос есть/нет ?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 25 2009, 07:30
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Впаять рядом DS28CM00. В каждой микрухе - свой код, интерфейс I2C, корпус микроскопический. Или переходить на Spartan-3A - там ID зашит в самой ПЛИС.
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Aug 25 2009, 07:36
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Как вариант, аналогично DmitryR

DS1990 правда интерфейс 1-wire - чуть сложнее, но не особо. Зато может дешевле будет.

Но прошивка константы в ПЛИС - тоже интересно.
Go to the top of the page
 
+Quote Post
Moks
сообщение Aug 25 2009, 07:49
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 510



Цитата(AJIEKCEu @ Aug 25 2009, 11:36) *
Но прошивка константы в ПЛИС - тоже интересно.

Вот и мне интересно, читаю, пытаюсь понять пути решения задачки!

Цитата(DmitryR @ Aug 25 2009, 11:30) *
Впаять рядом DS28CM00. В каждой микрухе - свой код, интерфейс I2C, корпус микроскопический. Или переходить на Spartan-3A - там ID зашит в самой ПЛИС.

Спасибо, но пока что переход на Xilinx не рассматриваем!

Цитата(DmitryR @ Aug 25 2009, 11:30) *
Впаять рядом DS28CM00. В каждой микрухе - свой код, интерфейс I2C, корпус микроскопический. Или переходить на Spartan-3A - там ID зашит в самой ПЛИС.

Да, но тогда надо и DS28CM00 программировать отдельно ... А это ещё одна операция ...
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Aug 25 2009, 07:54
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Цитата(Moks @ Aug 25 2009, 11:49) *
Да, но тогда надо и DS28CM00 программировать отдельно ... А это ещё одна операция ...

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

Если вы хотите иметь "СВОИ" номера, то надо вести базу соответствия:
некий уникальный номер не по порядку <> свой красивый номер
Go to the top of the page
 
+Quote Post
Moks
сообщение Aug 25 2009, 08:08
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 510



Задача-то состоит в том, что все устройства объединены в систему, у них каждый свой ID (читай "адрес") ... И вот уж больно хочется его быстро прошивать ... (Пускай хоть с участием д. Васи с журнальчиком, в который он записывает что и куда программировал) wink.gif )
Предложенные вами микросхемы, как мне кажется, не особо подходят под данную задачку ...

Сообщение отредактировал Moks - Aug 25 2009, 08:08
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Aug 25 2009, 08:13
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Цитата(Moks @ Aug 25 2009, 12:08) *
Задача-то состоит в том, что все устройства объединены в систему, у них каждый свой ID (читай "адрес") ... И вот уж больно хочется его быстро прошивать ... (Пускай хоть с участием д. Васи с журнальчиком, в который он записывает что и куда программировал) wink.gif )
Предложенные вами микросхемы, как мне кажется, не особо подходят под данную задачку ...

Если ваш ID - изначально задан внешними условиями - то да - микросхемы не подходят.

Но если сам ID не важен, а важна его уникальность - то микросхемы вариант. Ну как например MAC-адрес у сетевой карты.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 25 2009, 08:27
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



А откуда грузится ПЛИСка? Вариант - сделать блок ОЗУ, где хранится этот код, ну и расхачить формат SOF-файла в части поиска тех бит, куда попадет этот код (из данных инициализации ОЗУ, а так же CRC этого блока. После чего патчить SOF-ник.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 25 2009, 08:35
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Если есть ниос - когда то этот вопрос довольно детально разжёвывался на ниосфоруме страниц на 5 обсуждение было, можно там пошарится..
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 25 2009, 08:40
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AJIEKCEu @ Aug 25 2009, 12:13) *
Но если сам ID не важен, а важна его уникальность - то микросхемы вариант. Ну как например MAC-адрес у сетевой карты.

Неудачный пример. MAC-адреса имеют стандартизованный формат, и каждому вендору выделяется вполне определенный диапазон.
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 25 2009, 08:47
Сообщение #12


Профессионал
*****

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



Moks, доступ через дизайн к константе не планируете?
Если нет, тогда JTAG Usercode.
Для смены usercode проект каждый раз нужно будет пересобрать.

Хотя этот способ вам не очень-то подходит, так как вам нужно уникальный номер для каждой микросхемы, а не для прошивки.
Замучаетесь компилировать под каждую микросхему. Но если патчить прошивку на предмет смены номера, то именно этот usercode, имхо.

Сообщение отредактировал x736C - Aug 25 2009, 09:01
Go to the top of the page
 
+Quote Post
Moks
сообщение Aug 25 2009, 09:01
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 510



Цитата(SM @ Aug 25 2009, 12:27) *
А откуда грузится ПЛИСка? Вариант - сделать блок ОЗУ, где хранится этот код, ну и расхачить формат SOF-файла в части поиска тех бит, куда попадет этот код (из данных инициализации ОЗУ, а так же CRC этого блока. После чего патчить SOF-ник.

ПЛИС будет точно грузиться с EPCS4 ... Вот и мне надо сделать так, чтобы конфигурационная программа уже имела номер ID. Но чтоб этот номер присваивался не залезанием в VHDL код (мы на нём пишем), а гораздо проще ... Чтоб любой дядя Вася/Петя или тётя Клава/Марфа могли быстренько присвоить номер ...
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 25 2009, 09:22
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Если вам необходимо именно самому с помощью тети Клавы присваивать номер - тогда как сказал SM:
1а. Ставите в проект небольшое ПЗУ
1б. Добавляете во флэшку блок данных.
2. Определяете, где в файле прошивки находится этот код, и пишите на С небольшую утиль по его замене с интерфейсом, понятным тете Клаве.
3. Тетя Клава этой утилью патчит прошивку и прошивает флэшку.
3а. Дизайн читает ID из ПЗУ
3б. Дизайн читает ID из serial flash loader.

Если же партия большая - то можно поставить на плату EEPROM в панельку (в DIP корпусе). Тетя Клава присваивает номер, прошивает его на программаторе в EEPROM (интерфейс у них обычно доступный для понимания) и втыкает EEPROM в панельку. При больших количествах стоимость программатора EEPROM не будет заметна.
Go to the top of the page
 
+Quote Post
Moks
сообщение Aug 25 2009, 09:48
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 510



Примерно понятно, спасибо. Значит, без дополнительных операций не обойтись никак ...
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Aug 25 2009, 11:47
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Цитата(SM @ Aug 25 2009, 12:40) *
Неудачный пример. MAC-адреса имеют стандартизованный формат, и каждому вендору выделяется вполне определенный диапазон.

Ну именно в этой части - да некорректный пример.

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

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


А после битового потока записать ID в EPCS4?
Слегка похимичить с тем, чтобы после загрузки ПЛИСа её из ПЛИСа же читать можно было....
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 25 2009, 12:03
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AJIEKCEu @ Aug 25 2009, 15:47) *
А после битового потока записать ID в EPCS4?
Слегка похимичить с тем, чтобы после загрузки ПЛИСа её из ПЛИСа же читать можно было....


Воткстатида. И задействовать альтерский ASMI для его чтения.
Go to the top of the page
 
+Quote Post
spectr
сообщение Aug 25 2009, 17:01
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Э народ вы че, какие нафиг ПЗУ для идентификатора прошивки/плиса? smile.gif Все делается элементарно - пишется TCL-скрипт, который автоматически запускается при каждой компиляции первым (до начала анализа/синтеза), который генерит например верилоговский файлик с константой (индекс, дата, что угодно хотите), а он уже подцеплен к проекту. В итоге - имеем четкое разделение одной прошивки от другой, регистр (или даже целый банк памяти) с идентификатором не только ПЛИСки, но и еще кучей другой информации... И никаких ниосов, внешних флэшек и тому подобного smile.gif Пример есть у Альтеры - http://www.altera.com/support/examples/tcl...s=tcl%20version
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 25 2009, 17:43
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(spectr @ Aug 25 2009, 21:01) *
Э народ вы че, какие нафиг ПЗУ для идентификатора прошивки/плиса? smile.gif Все делается элементарно - пишется TCL-скрипт, который автоматически запускается при каждой компиляции первым

Эт Вы чего??? Какие нафиг компиляции на производстве? Для каждого экземпляра пустить синтез, да еще и производственникам все исходники дать, и квартус полный поставить? Должно быть подключил, нажал кнопку, десяток секунд, все прошито, следующий...
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Aug 25 2009, 18:27
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



А каково должно быть разнообразие этих ID-номеров? Иными словами - какова разрядность этого читайте "адреса"?
Может быть банально сделать несколько перемычек на плате типа SMT (например 4 штуки или 8), подключить одним контактом к GND, другим - к свободным пинам. Пины подтянуть внутри к Vdd, а дядя или тётя просто будут паяльником "программировать" этот ID...
Компонентов не надо, при зазоре 0.25 две площадки замечательно перемыкаются обычным припоем.
1. Элементарно просто
2. Наглядно читается код визуальным способом (для дяди можно шелкографией надпись сделать ID=128(J7)+64(J6)+.... )


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
sazh
сообщение Aug 25 2009, 18:33
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Евгений Николаев @ Aug 25 2009, 22:27) *
Компонентов не надо, при зазоре 0.25 две площадки замечательно перемыкаются обычным припоем.


А ОТК пропустит?
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 25 2009, 18:45
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(sazh @ Aug 25 2009, 22:33) *
А ОТК пропустит?

ДолжОн. SMD-джампер это древнее как мир стандартное решение. Круглый пад с прорезью.
Go to the top of the page
 
+Quote Post
sazh
сообщение Aug 25 2009, 19:05
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(SM @ Aug 25 2009, 22:45) *
ДолжОн. SMD-джампер это древнее как мир стандартное решение. Круглый пад с прорезью.

Может я чего не догоняю. Но припой как таковой в перечень элементов не внесешь.
А резистор как перемычку - наверно можно.
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 25 2009, 19:15
Сообщение #24


Профессионал
*****

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



А зачем его вносить?
В документацию на технологию можно внести.

Только мне кажется джамперами задавать ID не комильфо.
Не технологично как-то.
Это что ж за серия такая? Под такую серию можно нагенерить одинаковых прошивок с разными номерами, как выше советовали.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 25 2009, 19:18
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(sazh @ Aug 25 2009, 23:05) *
Может я чего не догоняю. Но припой как таковой в перечень элементов не внесешь.

А и не надо. Если плата например маркируется краской, то краску тоже в перечень элементов вносить? А на схеме их можно обозначить как контрольные точки например, или еще как, тут уже в каждом конкретном тяжелом случае по-своему.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 25 2009, 20:11
Сообщение #26


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(sazh @ Aug 25 2009, 22:05) *
Может я чего не догоняю. Но припой как таковой в перечень элементов не внесешь.
В перечень элементов не надо. Надо в спецификацию в раздел "материалы".
Кстати, если проволочные перемычки "на ходу" монтажником делаются, а не на подготовительном участке (или если на подготовительном, но влом на них чертёж делать) - то тоже туда же грубо "проволока медная лужёная такая-то - 15мм"
И на сборочный чертёж в примечания - "перемычки такие-то соеднить припоем таким-то согласно инструкции такой-то".
Но я бы в sof полез бы - в ROM-блок или в саму epcs-ку после прошивки, как тут предлагали.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Aug 26 2009, 04:24
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Цитата
Только мне кажется джамперами задавать ID не комильфо. Не технологично как-то.

Эта Вам не технологично и это, как Вы сказали то... не комильфо smile.gif
А если ситуация такова, что этап присвоения этого ID проходит через дядю или тётю с соответствующей квалификацией, то такой метод ещё и фору даст всем внешним ППЗУ и EPCS-контроллерам. Работа с реальными эксплуатационщиками не раз разработчиков "спускала на землю".


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
AJIEKCEu
сообщение Aug 26 2009, 07:40
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917



Цитата(Евгений Николаев @ Aug 26 2009, 08:24) *
А если ситуация такова, что этап присвоения этого ID проходит через дядю или тётю с соответствующей квалификацией, то такой метод ещё и фору даст всем внешним ППЗУ и EPCS-контроллерам. Работа с реальными эксплуатационщиками не раз разработчиков "спускала на землю".

Это вы зря. Человеческий фактор надо исключать. А потом, если устройств предполагается 64К?
16 перемычек? А если больше?

И потом, эксплуатационщики и производители - разные понятия.

Самое нормальное - в конец прошивки флешки добавлять.
Вся сложность - в ПЛИСе поддержать вычитывание ID.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 26 2009, 08:25
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AJIEKCEu @ Aug 26 2009, 11:40) *
Самое нормальное - в конец прошивки флешки добавлять.
Вся сложность - в ПЛИСе поддержать вычитывание ID.


IMHO с точностью до наоборот. Вычитывание в ПЛИСе через ASMI полностью документировано и несложно. А вот добавление в конец прошивки чего-то в .pof-файл это хакерская работка еще та.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Aug 26 2009, 08:35
Сообщение #30


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(AJIEKCEu @ Aug 26 2009, 11:40) *
А потом, если устройств предполагается 64К?

Если так, то бить следует того, кто при такой партии решил отдать распределение номеров на откуп тете Клаве.

Цитата(SM @ Aug 26 2009, 12:25) *
А вот добавление в конец прошивки чего-то в .pof-файл это хакерская работка еще та.
И все потому, что там есть CRC.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 26 2009, 08:40
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(DmitryR @ Aug 26 2009, 12:35) *
И все потому, что там есть CRC.

Да не только потому. CRC фигня, а вот что-то добавить дополнительное, не зная формата... Это еще та задача.
Go to the top of the page
 
+Quote Post
SFx
сообщение Aug 26 2009, 09:25
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688



DS2401 - вот решение. цена 1тыщи от 0.52$ но это ROM на 64 бита.
а если надо EEPROM - DS2431 чуть дороже, но тут уже целый килобит памяти.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 26 2009, 09:31
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Кстати еще решение - IMHO самое простое из всех. Не приписывать ID в pof для зашивки в EPCS, а шить pof отдельно, а потом, если есть какой-то интерфейс у устройства, шить через него (и ASMI) в эту же EPCS и ID.
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 26 2009, 09:32
Сообщение #34


Профессионал
*****

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



Цитата(DmitryR @ Aug 26 2009, 12:35) *
Если так, то бить следует того, кто при такой партии решил отдать распределение номеров на откуп тете Клаве.

Если партия небольшая в пару десятков, то можно и прошивок понастроить.
А если она больше, то точно что-то напутают.
Согласен с AJIEKCEu.

«А если ситуация такова, что этап присвоения этого ID проходит через дядю или тётю с соответствующей квалификацией..»
То это нетехнологичное некомильфо, Евгений Николаев.
И пайка только усугубит.
Считаю, что лучше постараться реализовать самому, как попытался автор темы, и не перекладывать на монтажника или еще какую-нибудь «бабусю».

«Работа с реальными эксплуатационщиками не раз разработчиков "спускала на землю"».
Работали, знаем. smile.gif Провода путают местами. А вы говорите, номера паяльником.
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 26 2009, 11:41
Сообщение #35


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Aug 26 2009, 04:31) *
Кстати еще решение - IMHO самое простое из всех. Не приписывать ID в pof для зашивки в EPCS, а шить pof отдельно, а потом, если есть какой-то интерфейс у устройства, шить через него (и ASMI) в эту же EPCS и ID.


+1 и через этот же разъем логику диагностики %) кстати по идее можно использовать jtag разъем, который к плис подключен.


--------------------
Go to the top of the page
 
+Quote Post
spectr
сообщение Sep 21 2010, 15:59
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Я что-то так и не понял - в итоге можно ли отдельно переписать USERCODE-регистр в JTAG'е?
Прочитать-то его можно без проблем, а вот записать?
То есть, идея какая - есть одна прошивка и сто микросхем (максов например). И есть скриптик.

Дядя Вася на заводе подключает девайс (с плисиной на борту), запускает скрипт, который (дергая необходимый сторонний софт) заливает сначала прошивку, а потом записывает какое-то уникальное для каждой микросхемы значение в регистр USERCODE.

Везде в сети написано про чтение этого регистра, но я так и не нашел ничего про его запись.
Прочитать его с помощью UrJTAG мне удалось. А вот как этот регистр ЗАПИСАТЬ - непонятно.

П.С.: знаю что его значение можно изменить при компиляции. Но это не мой вариант.

Спасибо!
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 22 2010, 09:05
Сообщение #37


Гуру
******

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



Цитата
Я что-то так и не понял - в итоге можно ли отдельно переписать USERCODE-регистр в JTAG'е?
Нет, он закопан в битстриме. Можно сгенерить 2 битстрима с разными USERCODE, посмотреть где в них отличаются биты, а потом написать скрипт, который по этому месту будет прописывать в файл прошивки необходимый ID
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 22 2010, 09:37
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 22 2010, 13:05) *
Нет, он закопан в битстриме. Можно сгенерить 2 битстрима с разными USERCODE, посмотреть где в них отличаются биты, а потом написать скрипт, который по этому месту будет прописывать в файл прошивки необходимый ID


Я пробовал анализировать разные битстримы на предмет поиска положения USERCODE. Но то ли мозгов не хватило, то ли времени, но разобраться где USERCODE живет я не смог. А в документации все тихо по этому поводу.
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 22 2010, 12:52
Сообщение #39


Гуру
******

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



Цитата(disel @ Sep 22 2010, 13:37) *
Я пробовал анализировать разные битстримы на предмет поиска положения USERCODE. Но то ли мозгов не хватило, то ли времени, но разобраться где USERCODE живет я не смог. А в документации все тихо по этому поводу.
Увы, с Alter'ой не работал. У Xilinx'а местоположение регистра IDCODE задокументированно

Go to the top of the page
 
+Quote Post
disel
сообщение Sep 22 2010, 13:14
Сообщение #40


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 22 2010, 16:52) *
Увы, с Alter'ой не работал. У Xilinx'а местоположение регистра IDCODE задокументированно


Так я про ксалинкс и писал. Только не про IDCODE, а про USERCODE. Джитагом его прочитать можно, а как найти в битстриме неясно.
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 22 2010, 19:58
Сообщение #41


Гуру
******

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



Цитата(disel @ Sep 22 2010, 17:14) *
Так я про ксалинкс и писал. Только не про IDCODE, а про USERCODE. Джитагом его прочитать можно, а как найти в битстриме неясно.
Покапаюсь в битстриме rolleyes.gif

Кстати, а почему бы просто не сгенерить новый битстрим с нужным ID? Это делается запуском bitgen с командной строки, т.е. сие действо можно автоматизировать скриптом. ISE конечно должен на машине стоять (хотя бы огрызок его), но запускать GUI совсем необязательно



Покопал битстрим. Похоже USERID записан внутри конфигурационного фрейма (в виде 2х половин по 16 бит и сдвинутый на 1 бит влево). Проблема в том, что позиция в файле видимо будет зависеть от прошивки и совершенно точно при изменении USERID меняется CRC фрейма, который тоже записан в битстриме sad.gif
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 23 2010, 02:23
Сообщение #42


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 22 2010, 23:58) *
Покапаюсь в битстриме rolleyes.gif

Кстати, а почему бы просто не сгенерить новый битстрим с нужным ID? Это делается запуском bitgen с командной строки, т.е. сие действо можно автоматизировать скриптом. ISE конечно должен на машине стоять (хотя бы огрызок его), но запускать GUI совсем необязательно

Меня интересовало не как генерить, а как его в битстриме найти. Как генерить я знаю. Ситуация такая: есть две платы (точнее две генерации одной платы), плис на них стоит одна и та же. Но окружение (синтезаторы, ддс, периферия разная) другое, ноги другие используются. Прошивки посылаются заказчику эл.почтой и заливаются в пзу через RS422. И вот сейчас у них оказались в руках обе платы одновременно. Заказчик раздолбай редкостный и чую, что начнут путать прошивки и писать нам что мы всякую лажу делаем.
Вот и хотелось бы зашить в битстрим какой-то признак, идентифицирующий прошивку. А микроблейз, который живет в плис и принимает прошивку по RS422, мог бы это несоответствие обнаружить. USERID для этого очень хорошо подходит.

Цитата(XVR @ Sep 22 2010, 23:58) *
Покопал битстрим. Похоже USERID записан внутри конфигурационного фрейма (в виде 2х половин по 16 бит и сдвинутый на 1 бит влево). Проблема в том, что позиция в файле видимо будет зависеть от прошивки и совершенно точно при изменении USERID меняется CRC фрейма, который тоже записан в битстриме sad.gif

Интересно. Я честно говоря тупо запустил поиск по целому USERID и не нашел. Поделитесь пожалуйста своими находками.
Go to the top of the page
 
+Quote Post
Gothard
сообщение Sep 23 2010, 04:51
Сообщение #43


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406



Цитата(SM @ Aug 26 2009, 12:40) *
Да не только потому. CRC фигня, а вот что-то добавить дополнительное, не зная формата... Это еще та задача.

Если CRC фигня, то можно закрепить ROM-lutы на конкретных местах (и оставить их там навсегда), сделать пару прошивок с разными значениями этих ROMов, чтобы найти, где они сидят в потоке и дальше дело техники, если вы знаете как посчитать CRC.
Типа реверсинжиниринг smile.gif

P.S. Но если предстоят обновления загрузок я бы так делать точно не стал smile.gif Лучше поставить что-то снаружи для хранения ID.

Сообщение отредактировал Gothard - Sep 23 2010, 04:55
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 23 2010, 05:07
Сообщение #44


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Все прочитать не успел...
Я могу предложить для этой цели микросхему от Рамтрон - "процессор-компаньон"... Там есть все, чего не хватает ПЛИСке... Перечислять не буду...
И последний писк - рамтроновский чип с радиодоступом - RFID. Вот он как раз и планируется для идентификации плат...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 23 2010, 06:39
Сообщение #45


Гуру
******

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



Цитата(disel @ Sep 23 2010, 06:23) *
Интересно. Я честно говоря тупо запустил поиск по целому USERID и не нашел. Поделитесь пожалуйста своими находками.
Сгенерил 2 прошивки с ID 000000 и FFFFFFFF и сравнил (побайтно)

Код
C:\home\roman\cnc\fpga_v3_servo>fc /b top.bin.fffff top.bin
Сравнение файлов top.bin.fffff и TOP.BIN
00032E39: 00 01
00032E3A: 00 FF
00032E3B: 00 FE
00032FBD: 00 01
00032FBE: 00 FF
00032FBF: 00 FE
000452BA: 13 B1
000452BB: 8C 5F

Как видим ID лежит 2 частями по адресам 32E39 (3 байта) и 32FBD (3 байта) Возможно еще были переставленны биты. CRC лежит с 452BA (2 байта)
Увы, для другой прошивки адреса могут уехать

Цитата
Вот и хотелось бы зашить в битстрим какой-то признак, идентифицирующий прошивку. А микроблейз, который живет в плис и принимает прошивку по RS422, мог бы это несоответствие обнаружить.
Сделайте у прошивки свой заголовок (с ID), при заливке проверяйте его и выбрасывайте (во FLASH его писать не надо)
Да даже можно и записать, FPGA его проигнорирует (главное, что бы в нем не нашлось синхронизирующее слово rolleyes.gif )
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 24 2010, 02:29
Сообщение #46


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 23 2010, 10:39) *
Как видим ID лежит 2 частями по адресам 32E39 (3 байта) и 32FBD (3 байта) Возможно еще были переставленны биты. CRC лежит с 452BA (2 байта)
Увы, для другой прошивки адреса могут уехать

Спасибо. Интересно, положение в битстриме для одного типа микросхем постоянно или нет? Сегодня поэкспериментирую.

Цитата(XVR @ Sep 23 2010, 10:39) *
Сделайте у прошивки свой заголовок (с ID), при заливке проверяйте его и выбрасывайте (во FLASH его писать не надо)
Да даже можно и записать, FPGA его проигнорирует (главное, что бы в нем не нашлось синхронизирующее слово rolleyes.gif )

Такая мысль была сразу, но это надо не забыть запустить скрипт, которые припишет заголовок. А это человеческий фактор, могу ведь и забыть при очередной генерации прошивки. А с USERID все автоматически.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 24 2010, 02:40
Сообщение #47


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(disel @ Sep 23 2010, 20:29) *
Такая мысль была сразу, но это надо не забыть запустить скрипт, которые припишет заголовок. А это человеческий фактор, могу ведь и забыть при очередной генерации прошивки. А с USERID все автоматически.

а
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?
или
set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?


--------------------
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 24 2010, 04:54
Сообщение #48


Гуру
******

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



Цитата(disel @ Sep 24 2010, 06:29) *
Спасибо. Интересно, положение в битстриме для одного типа микросхем постоянно или нет? Сегодня поэкспериментирую.
Декодировал битстрим. ID лежит внутри фрейма (ISE сгенерил один большой фрейм). Уверен, что положение внутри одного отдельного фрейма (а не внутри той пачки, которая записана в битстриме) будет постоянна (и адрес фрейма будет фиксирован). Но вот положение внутри самого образа битстрима точно будет плавать
Цитата
Такая мысль была сразу, но это надо не забыть запустить скрипт, которые припишет заголовок. А это человеческий фактор, могу ведь и забыть при очередной генерации прошивки. А с USERID все автоматически.
Скрипт тоже можно запускать автоматически

Go to the top of the page
 
+Quote Post
disel
сообщение Sep 24 2010, 05:08
Сообщение #49


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(des00 @ Sep 24 2010, 06:40) *
а
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?
или
set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:assign_id.tcl" не катит?


Так то квартус, я про ксалникс. Как автоматически запустить скрипт для ISE я не смог разобраться.

Цитата(XVR @ Sep 24 2010, 08:54) *
Декодировал битстрим. ID лежит внутри фрейма (ISE сгенерил один большой фрейм). Уверен, что положение внутри одного отдельного фрейма (а не внутри той пачки, которая записана в битстриме) будет постоянна (и адрес фрейма будет фиксирован). Но вот положение внутри самого образа битстрима точно будет плавать

Жалко что положение не постоянно.

Цитата(XVR @ Sep 24 2010, 08:54) *
Скрипт тоже можно запускать автоматически

А как?
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 24 2010, 09:10
Сообщение #50


Гуру
******

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



Цитата
Скрипт тоже можно запускать автоматически
А как?
Как вариант весь синтез можно запускать с командной строки (из скрипта). ISE GUI вообще не открывать. Утилита xflow.
Как врезать запуск скрипта внутрь ISE не исследовал, (но TCL там есть, так что может быть и можно)

Go to the top of the page
 
+Quote Post
disel
сообщение Sep 24 2010, 13:00
Сообщение #51


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(XVR @ Sep 24 2010, 13:10) *
Как вариант весь синтез можно запускать с командной строки (из скрипта). ISE GUI вообще не открывать. Утилита xflow.
Как врезать запуск скрипта внутрь ISE не исследовал, (но TCL там есть, так что может быть и можно)


Ну да, если из командной строки скриптом, то понятно. Но как то привык к гуям, не могу себя полностью отучить пока. А стандартных способов запустить скрипт внутри ISE не удалось найти. На форуме эта тема уже поднималась, но решения так и не было найдено.
Go to the top of the page
 
+Quote Post
spectr
сообщение Sep 24 2010, 13:43
Сообщение #52


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Народ, смотрите что нашел - описание POF-формата (народ с альтерафорумс расковырял).
Также есть оч интересный сайт, на котором есть софтина PLDTool. Но они ее не дают скачать )))))

Вот еще несколько расковырянных форматов

Сообщение отредактировал spectr - Sep 24 2010, 13:48
Прикрепленные файлы
Прикрепленный файл  fmt_pof.pdf ( 37.2 килобайт ) Кол-во скачиваний: 137
 
Go to the top of the page
 
+Quote Post
vitan
сообщение Sep 24 2010, 18:41
Сообщение #53


не указал(а) ничего о себе.
******

Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887



По повдоу основного вопроса топика можно сказать, что в действительности возникает задача назначения ID не ПЛИС-е, а устройству. В общем случае в устройстве может и не быть ПЛИС. Поэтому в свое время мы разработали некую стандартную карту памяти для всех наших изделий, и заполняем ее нужными числами. А потом засовываем в какую-нибудь память из имеющихся на борту. Иногда это EPROM с интерфейсом IIC, иногда защищенный сектор во Flash, ну и т.п. Расоположение и доступ со стороны программы описывается в документации.
А прошивку ПЛИС, имхо, нужно стремиться сохранять постоянной, а не компилировать ее при каждом изменении циферки в серийном номере. Кто его знает, как там карты лягут...
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 25 2010, 05:03
Сообщение #54


Гуру
******

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



Цитата
А прошивку ПЛИС, имхо, нужно стремиться сохранять постоянной, а не компилировать ее при каждом изменении циферки в серийном номере.
Угу, но изменение USERCODE не требует перекомпиляции прошивки - только запуск bitgen (генерация битстрима из уже разведенного дизайна)
Go to the top of the page
 
+Quote Post
Reanimator++
сообщение Sep 26 2010, 09:49
Сообщение #55


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763



Мне честно говоря не нравится идея вставки номера в битстрим конфигурации.

Собственно тут вариантов немного -
1) Серийник девайса взаимодействует с внешним миром посредством коммуникаций.
2) Серийник не используется в работе девайса и нужен для порядку.

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

В первом случае загрузка серийника должна осуществляться по тому же самому интерфейсу служебной командой и не воздействовать на битстрим. Если вам прошивку надо будет обновить (особенно удаленно) вы что будете опять все битстримы генерить?..
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 27 2010, 08:38
Сообщение #56


Гуру
******

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



Цитата(Reanimator++ @ Sep 26 2010, 13:49) *
Если вам прошивку надо будет обновить (особенно удаленно) вы что будете опять все битстримы генерить?..
Собственно у ТС именно такая задача и стоит. Ему надо, что бы девайс при заливке в него прошивки мог проверить, что эта прошивка именно для него.

Go to the top of the page
 
+Quote Post
Reanimator++
сообщение Sep 27 2010, 13:12
Сообщение #57


Местный
***

Группа: Свой
Сообщений: 399
Регистрация: 1-01-06
Из: Волгоград
Пользователь №: 12 763



Я бы тогда разделил прошивку заводскую (через JTAG) и удаленное обновление (через коммуникации).
Файл прошивки для удаленного обновления собирал бы из битстрима + информационный блок, содержащий данные о устройствах назначения.

Тогда ее можно просто выложить на сайт и пользователи обновятся, а не генерить по битстриму на каждый девайс.
Go to the top of the page
 
+Quote Post
zombi
сообщение Sep 28 2010, 21:32
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(spectr @ Sep 24 2010, 16:43) *
Народ, смотрите что нашел - описание POF-формата (народ с альтерафорумс расковырял).
Также есть оч интересный сайт, на котором есть софтина PLDTool. Но они ее не дают скачать )))))

Вот еще несколько расковырянных форматов

Оч. кстати! Спасибо spectr!
Действительно все сходится, но не нашел в описании tag=11 хотя в моем *.POf он есть и он самый длинный, кажется это и есть битстрим.
И еще нашел интересность : ...CRC...If this CRC value is zero, the CRC check should be ignored.
Я так понимаю что если обнулить СRC (лень считать) то с файлом можно делать что угодно, главное tags не нарушать. yeah.gif

P.S. Ой сори, это я затормозил, 11H т.е. tag=17. Все на месте! laughing.gif

Кстати а может ли сама плисина прочитать свой USERCODE?
Go to the top of the page
 
+Quote Post
spectr
сообщение Sep 30 2010, 17:19
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Цитата(zombi @ Sep 29 2010, 01:32) *
Кстати а может ли сама плисина прочитать свой USERCODE?


Насколько мне известно - нет, не может. USERCODE вроде как лежит в JTAG'е, а он из проекта недоступен...
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 1 2010, 12:12
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(spectr @ Sep 30 2010, 20:19) *
Насколько мне известно - нет, не может. USERCODE вроде как лежит в JTAG'е, а он из проекта недоступен...

Понятно.
В таком случае нафига он (USERCODE) нужен вообще?
Для чего альтера его сделала и для чего он может пригодиться?
Go to the top of the page
 
+Quote Post
Aprox
сообщение Oct 5 2010, 18:13
Сообщение #61


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Позвольте напомню, как этот вопрос решался на древних платах с шиной ISA- DIP переключателями любой разрядности. Лучше для практики дела все равно ничего не придумаете.
Go to the top of the page
 
+Quote Post

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

 


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


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