Программатор для PSoC

Вот хотел спросить совета. Собрался я было сделать программатор для сабжа. На контроллере все ясно и понятно, а это уже не интересно:-) Интересно то, что в среде программирования в качестве средства для заливки программ используется эмулятор ICE-4000 внутри которого стоит плисина XC2S200-PQ208 от Xilinx, но в режиме программирования она выполняет только функции коммутатора, все необходимые сигналы программирования идут с LPT порта:

LPT D0 - Clock to PSoC LPT D1 Data to PSoC LPT D2 Data Pin Dir (high to PSoC) LPT D3 PWR_on high = +5V ON LPT D4 Reset to PSoC LPT D5 (enable high speed Clock to PSoC) LPT D6 reserved LPT D7 Green LED (high=LIT) LPT Pin 17 - Data read from PSoC

Таким образом программатор реализуется на паре микросхем логики и им можно пользоваться прямо в среде программирования. Но не все так просто - каждый раз происходит процедура инициализации хренова спартана и без него ничего работать не будет. Теперь вопрос: Можно ли простыми методами сымитировать плис, т.е. дрюкать в нужном порядке линиями nPROGRAM,INIT,DONE чтобы прога думала что процесс загрузки идет нормально. Или это невозможно ? Надеюсь хоть кто-нибудь в этой эхе имел дело со Spartan2 и может посоветовать что-то дельное. В идеале хочется просто узнать алгоритм по которому изменяются эти сигналы.

Reply to
Sergey Korobkin
Loading thread data ...

Wed Sep 03 2003 22:17, Sergey Korobkin wrote to All:

SK> Можно ли простыми методами сымитировать плис, т.е. дрюкать в нужном SK> порядке линиями nPROGRAM,INIT,DONE чтобы прога думала что процесс SK> загрузки идет нормально. SK> Или это невозможно ? SK> Hадеюсь хоть кто-нибудь в этой эхе имел дело со Spartan2 и может SK> посоветовать что-то дельное. SK> В идеале хочется просто узнать алгоритм по которому изменяются эти SK> сигналы.

Естественно, pdf можно посмотреть на

formatting link
А на
formatting link
можно узнать адрес, по которому дадут бесплатный диск с софтом и документацией.

Алгоритм изменения следующий:

1) Program в "0" на время не менее 300 нс. ПЛИС отвечает нулем на INIT и нулем на DONE 2) После возврата Program в "1" через некоторое время, соответствующее окончанию очистки конфигурационной памяти, INIT вернется в "1". 3) (Можно заливать ПЛИС, тактируя входные данные сигналом CCLK, но процесс загрузки неинтересен, как я понял?) 4) После приема последнего бита DONE установится в "1".

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

Reply to
Ilia Tarasov

Такой режим я никогда не применял. BUSY имхо смотреть нечего - LPT его не разгонит. Интересно - куда-как они подцепили nCS и nWRITE? Р160 и Р161 для XC2S200-PQ208...

В общем, по всему похоже, что да.

Пока! << Компьютер был выключен из сети... и вдруг на экране... << появилась эмблема... w i n d o w s ... (c) Bender [8E] Dmitry Kuznetsov, Moscow,

formatting link
Беговая Черепаха] [Team LEXX]

*
Reply to
Dmitry Kuznetsov

Sat Sep 06 2003 21:24, Dmitry Kuznetsov wrote to Sergey Korobkin:

DK> Такой режим я никогда не применял.

Очень хороший режим, большие кристаллы заливаются контроллером гораздо быстрее.

DK> BUSY имхо смотреть нечего - LPT его не разгонит.

Да, это если 50+ МГц... :)

DK> Интересно - куда-как они подцепили nCS и nWRITE? DK> Р160 и Р161 для XC2S200-PQ208...

Ну вообще в pdf на вторые Спартаны указано, что после окончания конфигурации надо вернуть их в "1". А еще "1" на nWRITE дает возможность произвести обратное считывание конфигурации.

DK> В общем, по всему похоже, что да.

CCLK дергается ровно в 8 раз меньше...

Reply to
Ilia Tarasov

"Ilia Tarasov" snipped-for-privacy@kc.ru сообщил/сообщила в новостях следующее: news:bj8br4$b0i$ snipped-for-privacy@www.fido-online.com...

можно

нулем

Сегодня попробовал закоротить Program и INIT, а на DONE подал 5В. Процесс загрузки пошел, но счастливый конец загрузки не наступил :-(. Глянул анализатором - при работе со спартаном одновременно с 1 на DONE появляется 0 на INIT. Тоесть конец загрузки индицируется не только DONE, но и INIT, но при ошибке контрольной суммы DONE не поднимется, а INIT опуститься в любом случае.Правильно ? А то про поведение INIT при совпадении контрольных сумм ничего не написано в доке.

Reply to
Sergey Korobkin

SK> Сегодня попробовал закоротить Program и INIT, а на DONE подал 5В. SK> Процесс загрузки пошел, но счастливый конец загрузки не наступил :-(. SK> Глянул анализатором - при работе со спартаном одновременно с 1 на DONE SK> появляется 0 на INIT. Тоесть конец загрузки индицируется не только DONE, SK> но и INIT, но при ошибке контрольной суммы DONE не поднимется, SK> а INIT опуститься в любом случае.Правильно ? А то про поведение INIT при SK> совпадении контрольных сумм ничего не написано в доке.

После конфигурации INIT можно использовать как простой I/O. Его поведение при успешной загрузке скорее всего определяется загружаемой прошивкой. Даже не знаю, что тут посоветовать...

Судя по тому, что процесс идет, значение DONE до окончания процесса не учитывается. Можно надеяться что и значением INIT софт тоже поинтересуется тоже не сразу... Взять тригерочек. По сигналу PROGRAM - сбросить, по 1-му клоку на CCLK - записать 1. С выхода триггера закоротить INIT на 0 через диод (или транзисторным ключиком). PROGRAM также развязать диодом... ЗЫ: Кстати, если софту будет не очень интересен уровень на INIT в начальный момент манипуляций с PROGRAM, то по аналогии с DONE, тоже выставить 0 сразу в статике. Впрочем, не очень верится в такое простое решение...

Пока! << Компьютер был выключен из сети... и вдруг на экране... << появилась эмблема... w i n d o w s ... (c) Bender [8E] Dmitry Kuznetsov, Moscow,

formatting link
Беговая Черепаха] [Team LEXX]

*
Reply to
Dmitry Kuznetsov

Mon Sep 08 2003 18:39, Sergey Korobkin wrote to Ilia Tarasov:

SK> Сегодня попробовал закоротить Program и INIT, а на DONE подал 5В. SK> Процесс загрузки пошел, но счастливый конец загрузки не наступил :-(. SK> Глянул анализатором - при работе со спартаном одновременно с 1 на DONE SK> появляется 0 на INIT. Тоесть конец загрузки индицируется не только DONE, SK> но и INIT, но при ошибке контрольной суммы DONE не поднимется, SK> а INIT опуститься в любом случае.Правильно ? А то про поведение INIT при SK> совпадении контрольных сумм ничего не написано в доке.

Нет, все в порядке. После загрузки INIT станет обычным IO, и уровень на нем будет определяться загруженной конфигурацией. Если это выход, то по умолчанию все триггеры инициализируются нулями.

P.S. Во избежание флейма - даташит на тему поведения INIT я специально еще раз посмотрел. ;)

Reply to
Ilia Tarasov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.