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

Как загрузить ПЛИС с микроконтроллера ?

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

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


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

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

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


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

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

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


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

Описание загрузки FPGA можно посмотреть в доке, сложного там ничего нет и варианты предлагаемых загрузок могут удовлетворить пользователей всех видов МК.

Altera.com

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


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

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

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


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

А как быть со Spartan II ?

Если ли у кого исходники загрузки ПЛИС Xilinx с помощью микроконтроллеров MCS-51 или в крайнем случае AVR ?

Наличие дополнительной Flash подразумевается...

 

Очень хотелось бы посмотреть на готовый код, а то ловить глюки сразу MCS-51 и Spartan нехотелось бы ...

Поиск по сайту дал только немного инфы про альтеру, в гугле тоже порылся и ничего на эту тему ненашел. Может я не так ищу :smile3046: киньте в меня ссылок, если у кого есть.

 

 

PS. Побегал я по Москве в эти выходные... флешек ненашел, а прокатывать 200км до Москвы больше нехочу...

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


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

На сайте ксалинкса: xapp502 и исходники к нему

 

Описанный там способ, мягко скажем ... не лучший :w00t: но всеравно спасибо.

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

 

Меня интересуют варианты загрузки спартанов с флешки, через микроконтроллеры MCS-51 и AVR, т.к. в случае неработоспособности будет прощще отладить, чем мегамонстр ксилинкса с применением MC68VZ328 и CoolRunner™ CPLD

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


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

CPLD это далеко не обязательный атрибут конфигурирования ПЛИС с помощью микроконтроллера.

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

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


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

Параллельная загрузка Spartan II (XC2S100) из внешней ПЗУхи, AT89C52

Надеюсь разберетесь ;)

 

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:

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


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

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

 

Обрящаю внимание на несколько типовых скользких моментов:

1. При компиляции ПЛИС надо правильно выставить тип выхода DONE.

2. После передачи прошивки необходимо дать еще 8 тактовых импульсов (для старта ПЛИС)

3. Необходими обратить особое внимание на расположение старшего бита в байте конфигурационного файла (.bin) и места/времени этого бита в потоке данных заливаемом в ПЛИС.

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


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

Еще насколько замечаний для Spartan2 да и других Xilinx. После снятия сигнала Progr обязательно сделайте паузу в несколько милисекунд. В качестве исходного лучше использовать загрузочный файл в формате bin. Задвигать данные со старшего бита байта.

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


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

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

 

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

Пока что не удалось получить 1 на DONE по окончании загрузки.

 

В связи с чем вопрос:

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

тогда как выше говорилось, что требуется "Задвигать данные со старшего бита байта" - как все таки правильно?

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

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

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


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

Выше рассматривался 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 - я правильно понимаю?

 

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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