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

 
 
> Проблема со Spartan3, Программируется XC3S200
sergeeff
сообщение Dec 14 2006, 12:08
Сообщение #1


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

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



Получили новую плату, на которой стоит XC3S200. Программируется от процессора в режиме Slave Parallel.
В Xilinx ISE сделали простейший проект - на одну ногу, объявленную как вход - подаем импульсы. Через инвертор транслируем этот сигнал в FPGA на выходной pin. Получаем bin file, грузим его в FPGA (по окончании загрузки получаем сигнал DONE). Смотрим на выходном pin'e - глухо висит "1".

Может есть какие мысли у знатоков Xilinx'a?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RKOB
сообщение Jan 19 2007, 10:27
Сообщение #2


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

Группа: Свой
Сообщений: 172
Регистрация: 17-03-05
Пользователь №: 3 422



Я б поделился, но я использую slave serial mode для загрузки конфигурации... Вряд ли это тебе поможет?!
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 19 2007, 11:35
Сообщение #3


Знающий
****

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



Цитата(RKOB @ Jan 19 2007, 10:27) *
Я б поделился, но я использую slave serial mode для загрузки конфигурации... Вряд ли это тебе поможет?!


Я пробовал и serial slave mode, он у меня тоже не работает smile3046.gif , DOUT не возвращает посланные биты в DIN, согласно диаграмме в документации. Поэтому это тоже может быть полезным. Вообще появилось подозрение что ПЛИС, хоть и опускает у меня BUSY и готов принимать данные, но они до него либо не доходят, либо не определяется момент окончания подачи данных. Возможно CCLK внутри не работает. На контакте CCLK есть, проверял осциллографом, тока большого не возникает, нога цела.... но что там внутри - дальше - не понятно.
Go to the top of the page
 
+Quote Post
RKOB
сообщение Jan 19 2007, 13:11
Сообщение #4


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

Группа: Свой
Сообщений: 172
Регистрация: 17-03-05
Пользователь №: 3 422



[/quote]
Я пробовал и serial slave mode, он у меня тоже не работает
[/quote]

Я те письмецо отправил с примером, посмотри... cheers.gif
Go to the top of the page
 
+Quote Post
disel
сообщение Jan 19 2007, 15:07
Сообщение #5


Знающий
****

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



Вот как я реализовал Parallel Slave:

Код
        printf("init\n");
    outportb(0x311,0xFF);
    outportb(0x311,0xF7);                           // PROG_B -> 0
    while ((inportb(0x311)&0x04)==1) asm nop;             // INIT_B   -> 0 ?
    outportb(0x311,0xFF);                          // PROG_B -> 1
    while ((inportb(0x311)&0x04)==0) asm nop;            // INIT_B   -> 1 ?

    outportb(0x311,0xFD);                         // RDWR_B -> 0
    outportb(0x311,0xF9);                         //    CS_B   -> 0



    while ((inportb(0x311)&0x01)==1) {             // BUSY -> 0 ?
        outportb(0x311,0xF8);                    // CLK ->0
        outportb(0x311,0xF9);                    // CLK ->1
        printf("BUSY!\x8\x8\x8\x8\x8");
        asm nop;
    }

    printf("writing\n");
    for(i=0;i<100;i++){
        outportb(0x310,0xAA);                       //DATA
        outportb(0x311,0xF8);                       // CLK ->0
        outportb(0x311,0xF9);                       // CLK ->1

        if ((inportb(0x311)&0x4)==0) printf("CRC error!");
    }

    outportb(0x311,0xFD);                        //   CS_B -> 1
    outportb(0x311,0xFF);                         // RDWR_B -> 1
    printf("start-up\n");
    for(i=0;i<100;i++) {                        // DONE -> 1 ?
        outportb(0x311,0xFE);                       // CLK ->0
        outportb(0x311,0xFF);                    // CLK ->1
        if (inportb(0x311)&0x2) printf("DONE!\n");
        else printf("NOT DONE!!!\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8");
    };
    printf("\nEND\n");


А вот Serial Slave

Код
printf("init\n");
    outportb(0x311,0xFF);
    outportb(0x311,0xF7);                         // PROG_B -> 0
    while ((inportb(0x311)&0x04)==1) asm nop;    // INIT_B -> 0 ?

    outportb(0x311,0xFF);                        // PROG_B -> 1
    while ((inportb(0x311)&0x04)==0) asm nop;    // INIT_B -> 1 ?

    printf("writing\n");

    for(i=0;i<100;i++){

        outportb(0x310,0x01);                           //DIN << 1

        outportb(0x311,0xF8);                           // CLK ->0
        outportb(0x311,0xF9);                           // CLK ->1
        printf("\\%.2X\n",(inportb(0x311)&0x1)); // DOUT

        outportb(0x310,0x00);                           //DIN << 0

        outportb(0x311,0xF8);                           // CLK ->0
        outportb(0x311,0xF9);                           // CLK ->1
        printf("/%.2X\n",(inportb(0x311)&0x1));  // DOUT


        if ((inportb(0x311)&0x4)==0) printf("\nCRC error!\n");  // INIT_B -> 0 ?
    }


    printf("start-up\n");
    for(i=0;i<100;i++) {                                    // DONE -> ?
        delay(1);
        outportb(0x311,0xFE);                           // CLK ->0
        outportb(0x311,0xFF);                           // CLK ->1
        if (inportb(0x311)&0x2) printf("\n\nDONE!\n");
        else printf("NOT DONE!!!\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8\x8");
    };
    printf("\nEND\n");


Оба метода, по моему предположению соответствуют описанному в документации, но они оба не работают !!!! maniac.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sergeeff   Проблема со Spartan3   Dec 14 2006, 12:08
- - andrew_b   Вы бы хоть версию ПО указали. Почитайте errata на ...   Dec 14 2006, 13:58
- - makc   Цитата(sergeeff @ Dec 14 2006, 12:08) Пол...   Dec 14 2006, 14:39
- - sergeeff   Попробовал увеличить количество CCLK - ноль эффект...   Dec 14 2006, 15:15
|- - Apast   Была у меня подобная проблема, правда на SLAVE SER...   Dec 14 2006, 16:11
- - sergeeff   ИНтересно. Поглядим в понедельник. Да, убедились, ...   Dec 15 2006, 00:22
|- - makc   Цитата(sergeeff @ Dec 15 2006, 00:22) ИНт...   Dec 15 2006, 08:49
- - makc   Появилось еще одна подробность, которая может отно...   Dec 15 2006, 19:35
- - sergeeff   Интересны дела твои Господи. Я, конечно же, ввел у...   Dec 15 2006, 20:43
|- - makc   Цитата(sergeeff @ Dec 15 2006, 20:43) Инт...   Dec 15 2006, 21:10
- - sergeeff   Все заработало, после того как сделал две вещи: 1....   Dec 18 2006, 12:07
|- - disel   Использую SLAVE PARALLEL режим загрузки прошивки. ...   Jan 18 2007, 15:26
- - RKOB   Недавно сам столкнулся с подобной проблемой: по ок...   Jan 18 2007, 17:42
|- - disel   У меня несколько другая ситуация. Я не могу получи...   Jan 18 2007, 17:58
- - RKOB   А что за битстрим ты грузишь ? У меня один раз был...   Jan 18 2007, 18:17
|- - disel   Цитата(RKOB @ Jan 18 2007, 18:17) А что з...   Jan 18 2007, 19:46
- - BSV   Он не в заголовке, а в самом битстриме. Если неохо...   Jan 19 2007, 00:03
|- - disel   Цитата(BSV @ Jan 19 2007, 00:03) Он не в ...   Jan 19 2007, 10:12
- - BSV   Вот заготовка программы для загрузки в режиме Slav...   Jan 19 2007, 11:54
- - BSV   Проверьте: 1) PROG в '0' нужно держать не ...   Jan 19 2007, 17:37
- - disel   Цитата(BSV @ Jan 19 2007, 17:37) Проверьт...   Jan 19 2007, 18:45
- - BSV   Цитата(disel @ Jan 19 2007, 18:45) написа...   Jan 20 2007, 01:13
- - disel   Цитата(BSV @ Jan 20 2007, 01:13) Давайте ...   Jan 20 2007, 09:43
- - BSV   Цитата(disel @ Jan 20 2007, 09:43) DOUT я...   Jan 22 2007, 23:46


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

 


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


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