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

Нашел в Интернете следующую ссылку.

http://njnmnp.narod.ru/usbblaster/usbblaster.html

Решил повторить, но заменить EPM3064 микроконтроллером ATmega8.

После подключения устройство определяется как Altera USB-blaster,

но при попытке прошить EPM7064 выдает ошибку.

В связи этим решил спросить у Вас о назначении битов и начальном состоянии выводов.

 

Выход.

D0 - TCK

D1 - TMS

D2 - не используется в режиме JTAG

D3 - не используется в режиме JTAG

D4 - TDI

D5 - ?

D6 - ?

D7 - ?

 

Вход.

D0 - TDO

D1 - не используется в режиме JTAG

D2-D7 - отправляем то же, что и было

 

Начальное состояние выводов Z или

D0 - 0

D1 - 1

D2 - 1

D3 - 1

D4 - 1

D5 - ?

 

 

.include "m8def.inc"

 

.def temp =r16

.def in_reg =r17

.def out_reg =r18

 

.equ RXF =PC2

.equ TXE =PC3

.equ WR =PC4

.equ RD =PC5

 

.equ LED =PB5

 

 

.cseg

 

.org 0

rjmp begin

 

 

.org 0x100

begin:

ldi temp,high(RAMEND)

out SPH,temp

ldi temp,low(RAMEND)

out SPL,temp ; Установка адреса стека.

 

wdr

ldi temp,(1<<WDCE)|(1<<WDE)

out WDTCR,temp

ldi temp,(0<<WDE)

out WDTCR,temp ; Выключение WDT.

 

ldi temp,0b00011110

out PORTB,temp

ldi temp,0b00101111

out PORTC,temp

clr temp

out PORTD,temp

 

ldi temp,0b00111111

out DDRB,temp ; Инициализация порта B

ldi temp,0b00110000

out DDRC,temp ; Инициализация порта C

clr temp

out DDRD,temp ; Инициализация порта D

 

clr in_reg

clr out_reg

 

start:

loop_RXF:

sbic PINC,RXF

rjmp loop_RXF

 

cbi PORTC,RD

nop

nop

nop

nop

in in_reg,PIND

sbi PORTC,RD

 

mov temp,in_reg

in out_reg,PINC

andi out_reg,0b00000011

andi temp, 0b11111100

or out_reg,temp

out PORTD,out_reg

 

loop_TXE:

sbic PINC,TXE

rjmp loop_TXE

 

ser temp

out DDRD,temp

sbi PORTC,WR

nop

nop

nop

nop

cbi PORTC,WR

clr temp

out DDRD,temp

 

mov temp,in_reg

com temp

andi temp,0b11000000

brne led_on

led_off:

mov temp,in_reg

ori temp,(1<<PB5)

andi temp,0b00111111

out PORTB,temp

rjmp start

led_on:

mov temp,in_reg

andi temp,0b00011111

out PORTB,temp

rjmp start

 

.exit

 

С уважением, Сергей.

sxema.pdf

Изменено пользователем BSACPLD

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


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

Скачанный вами вариант usb-blaster не поддерживает jtag. Пользуйтесь поиском! Была ссылка на реализацию с поддержкой jtag, но без AS/PS.

Послежний вариант у меня нормально работает, и шъет циклон.

 

http://www.ixo.de/info/usb_jtag/

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


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

Скачанный вами вариант usb-blaster не поддерживает jtag. Пользуйтесь поиском! Была ссылка на реализацию с поддержкой jtag, но без AS/PS.

Послежний вариант у меня нормально работает, и шъет циклон.

Поиском уже пользовался, но - безуспешно.

А если он не поддерживает JTAG, то как же он шьёт MAX-ы?

Автор писал, что цитата:

"Успешно протестированы семейства MAX3000, MAX7000, ACEX, Cyclone :-)".

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


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

1. Если вы посмотрите на 2 ваиант бластера, то вы увидите, что для jtag там более хитрый обмен и одной защелкой не обойдешся.

2. Никто не говорил, что max3,max7 прошивались квартусом. Скорее всего был адаптирован jam плеер. У меня российский релиз с jtag не заработал.

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


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

1. Если вы посмотрите на 2 ваиант бластера, то вы увидите, что для jtag там более хитрый обмен и одной защелкой не обойдешся.

2. Никто не говорил, что max3,max7 прошивались квартусом. Скорее всего был адаптирован jam плеер.

Понятно. Буду разбираться со вторым вариантом USB-blaster.

Как только будет результат - напишу. Спасибо за ответы.

 

С уважением, Сергей.

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


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

[Понятно. Буду разбираться со вторым вариантом USB-blaster.

Как только будет результат - напишу. Спасибо за ответы.

 

С уважением, Сергей.

А Вы читали тему USB byte blaster, нужна схема в этом форуме? Понятно ли Вам о чем пишет khach и мое примечание? Если да, то у Вас должен получиться аналог Altera USB-Blaster, только более медленный.

 

 

 

...

2. Никто не говорил, что max3,max7 прошивались квартусом. Скорее всего был адаптирован jam плеер.

Мисячный сделал полный аналог Altera USB-Blaster (FTDI+CPLD). Quartus распознает его устройство как Altera USB-Blaster и успешно программирует CPLD: MAX3000, MAX7000; работает с FPGA: ACEX, Cyclone. У Мисячного не было (во время создания страницы Попытка повторить USBBlaster.) модулей со Stratix, Stratix II, Cyclone II... Попробовать, работает ли его устройство со Stratix, предложил ему я. У нас на фирме есть Stratix EP1S25 DSP Development Board. Но в то время этот Kit активно использовался другим разработчиком, поэтому не было времени разобраться, почему blaster Мисячного не работал со Stratix.

 

Я сделал функциональный аналог Altera USB-Blaster на микроконтроллере C8051F320 фирмы SiLabs. Работа устройства была проверена на CPLD MAX7000, FPGA Stratix и Cyclone.

 

В настоящее время протокол обмена Altera USB-Blaster уже известен. Теперь можно делать клоны на чем угодно.

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


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

Тему "USB byte blaster, нужна схема" читал.

Перепробовал разные варианты - пока не работает.

У меня возникли следующие вопросы:

1) опрос вывода TDO необходимо производить до записи в выходную

защелку или после?

2) если бит 6 = '0', то ничего не нужно отправлять или же просто не

обращать внимание на значение вывода TDO?

 

Кстати эта EPM7064S нормально работала с ByteBlasterMV на 74AC244 и

почему-то наотрез отказывалась работать с ByteBlasterMV на 74ABT244.

 

 

Вот код, может быть кто-нибудь сможет найти ошибку в алгоритме.

.include "m8def.inc"

 

.def temp =r16

.def in_reg =r17

.def out_reg=r18

 

.equ RXF =PC2

.equ TXE =PC3

.equ WR =PC4

.equ RD =PC5

 

.equ LED =PB5

 

 

.cseg

 

.org 0

rjmp begin

 

 

.org 0x100

begin:

ldi temp,high(RAMEND)

out SPH,temp

ldi temp,low(RAMEND)

out SPL,temp ; Установка адреса стека.

 

wdr

ldi temp,(1<<WDCE)|(1<<WDE)

out WDTCR,temp

ldi temp,(0<<WDE)

out WDTCR,temp ; Выключение WDT.

 

ldi temp,0b00011110

out PORTB,temp

ldi temp,0b00101111

out PORTC,temp

clr temp

out PORTD,temp

 

ldi temp,0b00100000

out DDRB,temp ; Инициализация порта B

ldi temp,0b00110000

out DDRC,temp ; Инициализация порта C

clr temp

out DDRD,temp ; Инициализация порта D

 

clr in_reg

clr out_reg

 

start:

loop_RXF:

sbic PINC,RXF

rjmp loop_RXF

 

cbi PORTC,RD

nop

nop

nop

nop

in in_reg,PIND

sbi PORTC,RD

 

sbrs in_reg,5

rjmp tri

mov temp,in_reg

andi temp,0b00111111

out PORTB,temp

ldi temp, 0b00111111

out DDRB,temp

metka:

nop

nop

nop

mov out_reg,in_reg

 

sbrs in_reg,6

rjmp no_echo

 

mov temp,in_reg

in out_reg,PINC

andi out_reg,0b00000011

andi temp, 0b11111100

or out_reg,temp

 

no_echo:

loop_TXE:

sbic PINC,TXE

rjmp loop_TXE

 

ser temp

out DDRD,temp

sbi PORTC,WR

out PORTD,out_reg

nop

nop

nop

nop

cbi PORTC,WR

clr temp

out DDRD,temp

 

rjmp start

 

tri:

ldi temp,0b00100000

out DDRB,temp

mov temp,in_reg

andi temp,0b00111111

out PORTB,temp

rjmp metka

 

.exit

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


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

1) опрос вывода TDO необходимо производить до записи в выходную

защелку или после?

До формирования отрицательного фронта TCK

 

2) если бит 6 = '0', то ничего не нужно отправлять или же просто не

обращать внимание на значение вывода TDO?

Если бит 6 = '0', то не нужно опрашивать бит TDO и отправлять байт хост-контроллеру (в ПЭВМ)

 

 

Вот код, может быть кто-нибудь сможет найти ошибку в алгоритме.

До сегодняшнего дня мне не приходилось работать с ATmega8. В ответ могу предложить разобраться с работающим кодом для C8051F320 (см. procedure USB2JTAG.txt).

Для выдачи и приема байтов используется SPI. Вместо SPI для приема и выдачи байтов по JTAG можно использовать MACRO (см. Read bit from TDO.txt)

procedure_USB2JTAG.txt

Read_bit_from_TDO.txt

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


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

Вот код, может быть кто-нибудь сможет найти ошибку в алгоритме.

До сегодняшнего дня мне не приходилось работать с ATmega8. В ответ могу предложить разобраться с работающим кодом для C8051F320 (см. procedure USB2JTAG.txt).

Для выдачи и приема байтов используется SPI. Вместо SPI для приема и выдачи байтов по JTAG можно использовать MACRO (см. Read bit from TDO.txt)

 

Уважаемый Konst_777!

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

Правильно ли я разобрался в Вашем исходнике?

Возник еще один вопрос:

Когда на 5 бите '0' выходы обязательно переводить в 3-е состояние или их можно оставлять как есть?

 

Написал небольшую тестовую программу.

По идее она должна возвращать то же, что и в файле mylog.txt с сайта

http://njnmnp.narod.ru/usbblaster/usbblaster.html, но почему-то в место 0x7C возвращает 0x7D.

Может быть кто-нибудь у кого есть живой USB-blaster опробует ее и пришлет мне скриншот.

Тогда по крайней мере можно будет выяснить в каком направлении дальше искать ошибки.

post-7056-1162758895_thumb.jpg

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


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

Уважаемый Konst_777!

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

Правильно ли я разобрался в Вашем исходнике?

Во-первых, на временной диаграмме отсутствует TMS. Во-вторых, хотелось бы видеть сигналы RXF# и TXE# FT245BM.

Теперь анализ диаграммы:

Если 0xC4 - это первый байт, который ATmega8 читает из FT245BM, то запись байта 0xC4 в FT245BM является ошибочной . Ее быть не должно. Байт 0xC4 означает, что ATmega8 нужно выдать через TDI следующие 4 байта, которые она считает из FIFO FT245BM. Так как бит 6 = "1", то нужно записывать в FT245BM значения битов, считанных с TDO. До завершения обработки данного формуляра TMS должен быть равен "0". ATmega8 правильно формирует все сигналы (отсутствует TMS) для данного формуляра.

Следующий формуляр начинается с байта 0x2C. Опять ATmega8 формирует ошибочную запись байта 0x2C в FT245BM. Байт 0x2C означает, что ATmega8 нужно установить сигналы TCK="0", TMS="0", TDI=0. Если не учитывать ошибочную запись и отсутствие на диаграмме TMS :) , то ATmega8 правильно формирует все сигналы.

Следующий формуляр начинается с байта 0x7E. Поскольку бит 7 равен нулю и для этого формуляра, то это тоже формуляр прямого управления сигналами TCK, TMS, TDI. Однако, в отличие от предыдущего формуляра, у данного бит 6 равен "1". Это означает, что ATmega8 должна записать в FT245BM байт, младший бит которого равен состоянию TDO, а все остальные биты - равны нулю. TMS отсутствует на на диаграмме :biggrin:. Сигналы TCK и TDI установлены правильно. Но вместо записи байта 0x01 записан байт 0x7D.

Ну и так далее.

 

 

 

Возник еще один вопрос:

Когда на 5 бите '0' выходы обязательно переводить в 3-е состояние или их можно оставлять как есть?

Похоже это вопрос из темы USB byte blaster, нужна схема. Не знаю. Может быть Мисячный или khach знают ответ. Я не перевожу TCK, TMS, TDI в 3-е состояние.

 

 

 

Может быть кто-нибудь у кого есть живой USB-blaster опробует ее и пришлет мне скриншот.

Тогда по крайней мере можно будет выяснить в каком направлении дальше искать ошибки.

Архив Blaster.rar содержит два файла.

Файл Logger_Real_Blaster.qar - архив проекта, созданный Quartus II ver.5.0. Проект содержит временную диаграмму работы USB Blaster-а, снятую с помощью SignalTap II Logic Analyzer. USB Blaster - из NIOS II Evaluation Kit - содержит только сигналы JTAG (не поддерживает AS Mode и PS Mode).

Файл Tester.JPG показывает, какие байты были выданы в USB Blaster и, какие байты были получены от него. Поскольку SignalTap II Logic Analyzer запускается по спаду (заднему фронту) сигнала TCK, на временной диаграмме отсутствуют первые два байта (2C2D). Выданные байты не являются реальным формуляром Quartus-а, их назначение - показать реакцию USB Blaster-а на возможные формуляры Quartus-а.

Blaster.rar

Изменено пользователем Konst_777

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


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

Во-первых, на временной диаграмме отсутствует TMS. Во-вторых, хотелось бы видеть сигналы RXF# и TXE# FT245BM.

Эти сигналы отсутствуют потому, что диаграмма снята не с реального устройства, а смоделирована в Proteus'е.

 

За объяснение работы диаграммы Вам большое спасибо.

Буду исправлять ошибки, но наверное уже утром, а то наверняка попалю чего-нибудь ненароком :).

Изменено пользователем BSACPLD

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


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

...До завершения обработки данного формуляра TMS должен быть равен "0"...

Это утверждение неправильно. Сейчас придется цитировать самого себя. :( Нужно было написать так: "До завершения обработки данного формуляра TMS должен сохранять свое состояние". То есть, состоянием TMS управляет не программист, а формуляры Quartus-а.

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


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

Ура! Заработало! :)

Вот рабочий вариант AlteraFT.rar.

Работает с 3,3В и 5В.

Насколько я знаю оригинальный USB-blaster работает с напряжениями от 1,5В до 5В.

В связи с этим возникли вопросы:

1) На чем Altera сделала свой преобразователь уровней?

2) Какие преобразователи уровней порекомендуете использовать?

 

У меня есть следующий вариант.

5В --> 2,5В 74AHC125

2,5В --> 5В MAX903 или AD8041 в качестве компаратора, Vref = 1/2 Vtarget.

 

В общем жду Ваши замечания и предложения по данному вопросу.

AlteraFT.rar

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


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

BSACPLD, спасибо за выложеный проект :a14: , я его повторил - всё работает.

Только медленно, раза в 3 медленнее LPT. Это у меня так или это сам бластер медленный?

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


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

BSACPLD, спасибо за выложеный проект :a14: , я его повторил - всё работает.

Только медленно, раза в 3 медленнее LPT. Это у меня так или это сам бластер медленный?

 

Просто МК медленнее передает данные между FT245BM и программируемой схемой, чем оригинальный

USB-blaster сделанный на CPLD. Можно попробовать использовать более быстрый МК.

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


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

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

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

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

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

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

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

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

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

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