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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как загрузить ПЛИС с микроконтроллера ?
Dimetor Kilov
сообщение Jan 13 2005, 15:47
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 13-01-05
Пользователь №: 1 923



Добрые люди подскажите начинающему где найти исходники под микроконтроллер(лучше какой нибудь Атмега128), для загрузки с него плис и документирование описание сего процесса.
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 13 2005, 15:54
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



А что за ПЛИС? ПЛИСов-то много разных... И даже один и тот же тип может грузиться по-разному.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Jan 13 2005, 16:47
Сообщение #3


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Могу предложить для х51 на древнем ассемблере (поэтому сразу не выкладываю) код для загрузки ALTERA FLEX8K/10K. Если нужно, пишите, но на мой взгляд, обладая навыками программирования и имея даташит на чип, можно достаточно быстро написать самому. Если нет ни первого ни второго, то с готовым исходником, но чужим провозитесь дольше smile.gif


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
Diver
сообщение Jan 14 2005, 09:08
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 21
Регистрация: 14-01-05
Из: Gmbh
Пользователь №: 1 944



[COLOR=blue]Описание загрузки FPGA можно посмотреть в доке, сложного там ничего нет и варианты предлагаемых загрузок могут удовлетворить пользователей всех видов МК. [COLOR=blue][COLOR=blue][FONT=Arial]
Altera.com
Go to the top of the page
 
+Quote Post
Dimetor Kilov
сообщение Jan 14 2005, 15:17
Сообщение #5





Группа: Новичок
Сообщений: 2
Регистрация: 13-01-05
Пользователь №: 1 923



Огромное спасибо всем, вроде начинаю разбираться.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Jan 14 2005, 17:01
Сообщение #6


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



По другому запросу все-таки выложил исходники, посмотрите здесь


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
shodan
сообщение Jan 22 2007, 15:53
Сообщение #7





Группа: Новичок
Сообщений: 5
Регистрация: 17-01-07
Пользователь №: 24 484



А как быть со Spartan II ?
Если ли у кого исходники загрузки ПЛИС Xilinx с помощью микроконтроллеров MCS-51 или в крайнем случае AVR ?
Наличие дополнительной Flash подразумевается...

Очень хотелось бы посмотреть на готовый код, а то ловить глюки сразу MCS-51 и Spartan нехотелось бы ...
Поиск по сайту дал только немного инфы про альтеру, в гугле тоже порылся и ничего на эту тему ненашел. Может я не так ищу smile3046.gif киньте в меня ссылок, если у кого есть.


PS. Побегал я по Москве в эти выходные... флешек ненашел, а прокатывать 200км до Москвы больше нехочу...
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 22 2007, 16:51
Сообщение #8


Знающий
****

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



На сайте ксалинкса: xapp502 и исходники к нему
Go to the top of the page
 
+Quote Post
shodan
сообщение Jan 23 2007, 01:31
Сообщение #9





Группа: Новичок
Сообщений: 5
Регистрация: 17-01-07
Пользователь №: 24 484



Цитата(disel @ Jan 22 2007, 16:51) *
На сайте ксалинкса: xapp502 и исходники к нему


Описанный там способ, мягко скажем ... не лучший w00t.gif но всеравно спасибо.
Ибо конфигурировать FPGA с помощью микропроцессора и ЕЩЕ одного ПЛИС, это ведет за собой большие затраты места на плате и денег. smile3009.gif

Меня интересуют варианты загрузки спартанов с флешки, через микроконтроллеры MCS-51 и AVR, т.к. в случае неработоспособности будет прощще отладить, чем мегамонстр ксилинкса с применением MC68VZ328 и CoolRunner™ CPLD
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 23 2007, 08:33
Сообщение #10


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



CPLD это далеко не обязательный атрибут конфигурирования ПЛИС с помощью микроконтроллера.
Можно взять любой МК, подключить к нему последовательную (можно и параллельную, если ног хватит) флеш-память и грузить ПЛИС программно формируя временную диаграмму конфигурационных сигналов (PROG, CCLK, DATA и т.п.) в режиме Slave Serial. Почитайте внимательно DataSheet на Spartan-2, там этот режим хорошо описан.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
TomaT
сообщение Jan 23 2007, 10:46
Сообщение #11


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

Группа: Свой
Сообщений: 195
Регистрация: 25-01-06
Из: г. Троицк, МО
Пользователь №: 13 575



Параллельная загрузка Spartan II (XC2S100) из внешней ПЗУхи, AT89C52
Надеюсь разберетесь wink.gif

Код
nPROGRAM equ P1.6
nINIT equ P3.2
nCS equ P3.3
nWRITE equ P3.3
CCLK equ P3.6;(nWR)

Bank equ P3.4;(это к ПЗУхе)

   clr nPROGRAM
   Setb nPROGRAM

Config:
   Jnb nINIT , Config
   clr nCS
   mov R0, #&h0
   mov R1, #&h0
   mov R2, #&h0
   mov P2, #&h80

   clr Bank
   mov DPTR, #&h2000
   mov R6, #&h00;тут поменять под конкретную ПЛИСину
   mov R7, #&hE0;и здесь
   Acall Conf_sub

   Setb Bank
   mov DPTR, #&h2000
   mov R6, #&h74;и соответсвенно здесь
   mov R7, #&h9E;и здесь
   Acall Conf_sub

   Setb nCS
   clr nCS
   mov DPTR, #&h8000
   Movx @dptr , A
   Setb nCS
   Sjmp Conf_done

Conf_sub:

   Movc A, @A+Dptr
   Movx @r0, A
   inc DPTR
   Djnz R6, Conf_sub
   Djnz R7, Conf_sub
   ret

Conf_done:
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jan 23 2007, 10:46
Сообщение #12


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Чтобы не ловить глюки Spartan-II настоятельно рекоммендую ознакомиться с XAPP176 (Spartan-II FPGA Family Configuration and Readback); по крайне мере, у наших програмистов все вопросы, как конфигурировать Spartan-IIE, после прочтения данного документа пропали.

Обрящаю внимание на несколько типовых скользких моментов:
1. При компиляции ПЛИС надо правильно выставить тип выхода DONE.
2. После передачи прошивки необходимо дать еще 8 тактовых импульсов (для старта ПЛИС)
3. Необходими обратить особое внимание на расположение старшего бита в байте конфигурационного файла (.bin) и места/времени этого бита в потоке данных заливаемом в ПЛИС.
Go to the top of the page
 
+Quote Post
vladec
сообщение Jan 23 2007, 11:17
Сообщение #13


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

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Еще насколько замечаний для Spartan2 да и других Xilinx. После снятия сигнала Progr обязательно сделайте паузу в несколько милисекунд. В качестве исходного лучше использовать загрузочный файл в формате bin. Задвигать данные со старшего бита байта.
Go to the top of the page
 
+Quote Post
Skorp
сообщение Jan 29 2007, 21:00
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 26-01-06
Пользователь №: 13 631



Выше рассматривался Spartan II. А как обстоят дела со Spartan3? Есть ли характерные отличия?

На данный момент пытаюсь загрузить XC3S400 посредством Atmega128 в режиме SlaveSerial.
Пока что не удалось получить 1 на DONE по окончании загрузки.

В связи с чем вопрос:
1. На сколько я понял в исходниках к xapp502 для заданного режима биты передаются начиная с LSB,
тогда как выше говорилось, что требуется "Задвигать данные со старшего бита байта" - как все таки правильно?
2. Требуются ли дополнительные тактовые импульсы по окончании загрузки и где про это почитать?
3. Судя по рисунку 6 из даташита(ds099.pdf) после INT_B -> 1 данные должны начинать поступать со второго фронта сигнала CCLK - я правильно понимаю?
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 29 2007, 21:19
Сообщение #15


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(Skorp @ Jan 29 2007, 21:00) *
Выше рассматривался Spartan II. А как обстоят дела со Spartan3? Есть ли характерные отличия?


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

Цитата
На данный момент пытаюсь загрузить XC3S400 посредством Atmega128 в режиме SlaveSerial.
Пока что не удалось получить 1 на DONE по окончании загрузки.


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

Кроме того, по-умолчанию необходима подтяжка сигнала DONE.

Цитата
В связи с чем вопрос:
1. На сколько я понял в исходниках к xapp502 для заданного режима биты передаются начиная с LSB,
тогда как выше говорилось, что требуется "Задвигать данные со старшего бита байта" - как все таки правильно?


Я задвигаю биты начиная с младшего (LSB).

Цитата
2. Требуются ли дополнительные тактовые импульсы по окончании загрузки и где про это почитать?


Требуются. Так называемые импульсы StartUp clock. В данном случае - CCLK. А почитать про это можно в DataSheet в разделе конфигурирования ПЛИС. На эту тему есть иллюстрация - Figure 25: Default Start-Up Sequence.

Цитата
3. Судя по рисунку 6 из даташита(ds099.pdf) после INT_B -> 1 данные должны начинать поступать со второго фронта сигнала CCLK - я правильно понимаю?


Не нашел такого рисунка.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jan 30 2007, 01:17
Сообщение #16


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Skorp @ Jan 29 2007, 21:00) *
1. На сколько я понял в исходниках к xapp502 для заданного режима биты передаются начиная с LSB,
тогда как выше говорилось, что требуется "Задвигать данные со старшего бита байта" - как все таки правильно?

Для Spartan-II в режиме SerialSlave биты действительно надо задвигать начиная со старшего бита байта. Со Spartan-3 еще не успел поиметь дел, поэтому ничего точно сказать не могу.

Цитата(Skorp @ Jan 29 2007, 21:00) *
3. Судя по рисунку 6 из даташита(ds099.pdf) после INT_B -> 1 данные должны начинать поступать со второго фронта сигнала CCLK - я правильно понимаю?

Возможно имелся ввиду "Figure 4: Waveforms for Master and Slave Serial Configuration" (под официальным номером DS099-3_05_041103 - лучше указывать этот номер, в нем все сказанно: что, откуда и какой версии).

У Xilinx был принят мелкий стандартик: начинать прошивку (файл *.bin) с кода 0xFFFFFFFF - это команда простоя для ПЛИС. Очень выжно, чтобы до окончания стирания ОЗУ в ПЛИС (пока еще INIT = 0), на DIN появилась устойчивая единица, тогда даже при наличии лишних CCLK в ПЛИС будут записывать комманда простоя, непосредственно загрузка ПЛИС начинается с того момента, как в последовательном потоке будет обнаружена подходящая комманда (отличная от 0xFFFFFFFF). В Spartan-II не требовалось никаких лишних CCLK, т.е. с первого же положительного фронта фиксировался бит данных. В пасивном состоянии CCLK необходимо было держать в '1'. Я думаю, что и в Spartan-3 Xilinx не отошел от прошлых нароботок, ибо это никак не отражено в документации.

И еще, почему-то для Spartan-3 Xilinx советует держать ноги CS_B и WRITE_B в '1' - может в этом дело в вашем случае?

От подтяжки Done можно и отказаться, но надо тогда поставить флажок Drive_Done_HIGH, так и стабильней, и резистор не нужен.
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 30 2007, 09:02
Сообщение #17


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(Boris_TS @ Jan 30 2007, 01:17) *
Цитата(Skorp @ Jan 29 2007, 21:00) *

1. На сколько я понял в исходниках к xapp502 для заданного режима биты передаются начиная с LSB,
тогда как выше говорилось, что требуется "Задвигать данные со старшего бита байта" - как все таки правильно?

Для Spartan-II в режиме SerialSlave биты действительно надо задвигать начиная со старшего бита байта. Со Spartan-3 еще не успел поиметь дел, поэтому ничего точно сказать не могу.


Чтобы не быть голословным, приведу ссылку на _http://direct.xilinx.com/bvdocs/appnotes/xapp176.pdf
Цитаты из него же:
(1)
Цитата
In serial configuration mode, the FPGA is configured by loading one bit per CCLK cycle. In
Master Serial mode, the FPGA drives the CCLK pin. In Slave Serial mode the FPGAs CCLK pin
is driven by an external source. In both serial configuation modes, the MSB of each data byte
is always written to the DIN pin first.

(2)
Цитата
The standard bitstream, currently generated by BitGen, follows the format shown in Table 8, Table 9, and Table 10. This format assumes D0 is considered the MSB. It has been broken into three tables to follow the three command sets described in the previous subsection.


Объединяя (1) и (2) можно очень легко придти к выводу, что задвигать нужно начиная с LSB в x86 архитектуре. Да и многих других.

И, на сколько мне известно, порядок загрузки в Spartan-3 не поменялся. smile.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jan 30 2007, 10:14
Сообщение #18


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(makc @ Jan 30 2007, 09:02) *
Цитата
The standard bitstream, currently generated by BitGen, follows the format shown in Table 8, Table 9, and Table 10. This format assumes D0 is considered the MSB. It has been broken into three tables to follow the three command sets described in the previous subsection.



Если не ошибаюсь, то 'currently' было в декабре 1999. Могло и поменяться, не даром Xilinx поставила это слово.

Цитата(makc @ Jan 30 2007, 09:02) *
Объединяя (1) и (2) можно очень легко придти к выводу, что задвигать нужно начиная с LSB в x86 архитектуре. Да и многих других.

Нехорошо перечить админу, посему высылаю файл прошивки для Spartan-2E и программу, написанную для загрузки оной через CPLD стоящую на ISA (*.bin - сгенерирован на ISE 7.1, *.cpp слеплен на BC 3.1). Естествено все это работало, и даже неплохо.
По синхронизационным кодам в *.bin файле можно точно сказать, где лег MSB, а *.cpp запихивает MSB(в смысле x86) в ПЛИС первым. Если чего не так, поправьте меня.

Сообщение отредактировал Boris_TS - Jan 30 2007, 10:18
Прикрепленные файлы
Прикрепленный файл  TEST.RAR ( 12.89 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 30 2007, 11:44
Сообщение #19


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(Boris_TS @ Jan 30 2007, 10:14) *
Цитата(makc @ Jan 30 2007, 09:02) *

Цитата
The standard bitstream, currently generated by BitGen, follows the format shown in Table 8, Table 9, and Table 10. This format assumes D0 is considered the MSB. It has been broken into three tables to follow the three command sets described in the previous subsection.



Если не ошибаюсь, то 'currently' было в декабре 1999. Могло и поменяться, не даром Xilinx поставила это слово.


Это так, но менять такие механизмы, как конфигурирование - крайне вредно для любой фирмы. Многим пользователям это доставит массу проблем. Поэтому до сих пор ничего не поменялось. smile.gif

Цитата
Цитата(makc @ Jan 30 2007, 09:02) *

Объединяя (1) и (2) можно очень легко придти к выводу, что задвигать нужно начиная с LSB в x86 архитектуре. Да и многих других.

Нехорошо перечить админу, посему высылаю файл прошивки для Spartan-2E и программу, написанную для загрузки оной через CPLD стоящую на ISA (*.bin - сгенерирован на ISE 7.1, *.cpp слеплен на BC 3.1). Естествено все это работало, и даже неплохо.


Внимательное чтение _http://direct.xilinx.com/bvdocs/appnotes/xapp502.pdf может пролить свет на эту проблему. В особенности раздел "Data Formatting and Byte-Swapping". Приведу ряд цитат:

Цитата
Since the configuration bitstream will be loaded into some memory connected to the processor,
most likely it will have to be formatted in a way that the processor (or whatever device programs
the memory) can use. There are a number of different formats that the Xilinx tools can produce.

Generally, either the .bin or .hex files are the most useful data source for programming
non-volatile memory. Some additional formatting may be required, and the Perl script included
with this application note (bitformat.pl) can provide some assistance. This Perl script uses the
.bit or .rbt file as a source and produces a user-customizable ASCII file that can be helpful in
programming the on-board memory. Xilinx implementation software must be installed on the
machine running this Perl script because the PROMGen program is called from within the script
(For details, see the bitformat.readme file that is included).

In terms of data ordering, Slave Serial configuration is very simple. Start with the first bit in the
bitstream and load one bit at a time until the end of the file is reached.

Data ordering for SelectMAP configuration is slightly more complex. Configuration data is
loaded one byte on each CCLK, and the MSB of each byte is presented on the D0 pin, not the
D7 pin. Because of this non-conventional ordering, presenting the data “as is” from the .bin file
is generally incorrect. The reason is that most processors interpret D7 (not D0) as the most
significant bit in each byte. Connecting D7 on the processor to the D7 on the FPGA SelectMAP
data bus effectively loads the data “backwards.” Thus, the configuration will not be successful.
For this reason, the source data stream may need to be “byte-swapped.” This means that bits
in each byte in the data stream are reversed. Figure 3 shows two bytes (0xABCD) being
reversed.

Notice that the MSB of each byte of the data needs to go to D0 regardless of the orientation of
the data. However, in the byte-swapped version of the data, the bit that needs to go to D0 is the
rightmost bit and, in the non-byte-swapped data, the D0 bit is the leftmost bit. The Perl script
included in this application note can be customized to produce byte-swapped files or not, as
needed (see the bitformat.readme file for details). In the Xilinx software, the .mcs, .exo, and
.tek files are always byte-swapped, and the .bit, .rbt, and .bin files are never byte-swapped.
Hex files may be produced byte-swapped or not according to command-line options
.


Поскольку у меня в проекте использовались .mcs и .hex файлы прошивок, то биты были переставлены и загрузка шла с младших битов каждого байта. В Вашем же примере используется .bit файл с нереверсированным порядком битов. Поэтому загрузка у Вас - со старших. Так что мы оба правы, каждый по-своему. smile.gif

Цитата
По синхронизационным кодам в *.bin файле можно точно сказать, где лег MSB, а *.cpp запихивает MSB(в смысле x86) в ПЛИС первым. Если чего не так, поправьте меня.


Да. Все правильно. Просто были не до конца определены исходные данные (формат файла).


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
KostyanPro
сообщение Jan 30 2007, 17:13
Сообщение #20


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

Группа: Свой
Сообщений: 160
Регистрация: 30-01-07
Из: Minsk
Пользователь №: 24 870



Цитата(Dimetor Kilov @ Jan 13 2005, 14:47) *
Добрые люди подскажите начинающему где найти исходники под микроконтроллер(лучше какой нибудь Атмега128), для загрузки с него плис и документирование описание сего процесса.


Как вариант можно использовать jam плеер от алтеры.
http://www.altera.com/support/devices/tools/jam/tls-jam.html
Достоинство -- свободно распространяемый исходник , переносимый на WIN , Linux и на эмбедед системы.
В нашем проетке это было незаменимое решение , так как файл прошивки нужно было передавать по Ethernet в другой город.
Go to the top of the page
 
+Quote Post
Skorp
сообщение Jan 31 2007, 14:55
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 26-01-06
Пользователь №: 13 631



Всем спасибо!
Все заработало biggrin.gif .

Цитата
2. Требуются ли дополнительные тактовые импульсы по окончании загрузки и где про это почитать?


Требуются. Так называемые импульсы StartUp clock. В данном случае - CCLK. А почитать про это можно в DataSheet в разделе конфигурирования ПЛИС. На эту тему есть иллюстрация - Figure 25: Default Start-Up Sequence.


По моим наблюдениям не требуется никаких дополнительных клоков на CCLK после загрузки последнего байта. По крайней мере вполне работает и без них.
Go to the top of the page
 
+Quote Post

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

 


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


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