Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Отладочные платы » SK-M-XC3S50AN
странность работы.
alsegor
Добавлено 12.01.2010 20:44
0
Сообщение: 1
alsegor
0

Пункты: 4761
Регистрация: 11.06.2009
Пол: Мужчина
Получил платку.
Сразу давай её мучать.
Подал питание 12В. посмотрел что выдает тестовая прошивка.
Получилось что у меня тест памяти не прошел. :(
Поставил ISE 10 которая на диске идет, ну что бы 100% все работало и открывалось из родной поставки.
Посмотрел UCF файл еще раз проверил что выходит на ноги.
Все равно на 37 X4 выходит 0В, а на 38 X4 3,27В.
Кстати заметил, что 1 и 2 ноги пронумрованы правильно (прозвонил 1 2 и4 ноги), а вот 39 и 40-я перепутаны. То есть 1-я нога и 40-я находятся на одной половине (правой), а 2-я и 39 на другой (левой). ПРАВИЛЬНО - где 1-я там все нечетные ноги и наоборот где 2-я там четные. Сразу же одел кембрики на 2 и 4 ноги всех Х-ов, дабы не замкнуть случайно и не вывести ПЛИС из строя (форум перед покупкой почитал :-) ).
Подключил программатор к LPT порту.
Пробую, что то менять а все равно прошивается стандартная прошивка (каким только образом не заливал :) ). Оказалось что по умолчанию грузится прошивка из файла с расширением MCS, который в свою очередь делается из BIT файла с помощью конвертилки, а там пути прописаны не мои. В общем что бы мозг не ломать сделал загрузку BIT файла. И о чудо вроде шьется все мое творение, ноги дергаются.

А странность в следующем.
Для дергания ногами в начале файла сделал следующие изменения:


module demo(
CLC,
Data,
Addr,
CS,
OE,
WE,
TEST_OK,
TEST_ERR,
LED1,
LED2,
LED3);
input CLC;
inout [7:0] Data;
output [18:0] Addr;
output CS;
output OE;
output WE;
output TEST_OK;
output TEST_ERR;
output LED1;
output LED2;
output LED3;

reg [3:0] Counter;
reg [18:0] Addr;
reg [7:0] Data_out;
reg [7:0] Data_in;
reg CS;
reg OE;
reg WE;
reg TEST_ERR;
reg [24:0] cnt;

always @(posedge CLC) cnt <= cnt +1;
assign LED1=cnt[24]
assign LED2=cnt[23]
assign LED3=cnt[22]

always @(posedge CLC)
begin
Counter = Counter + 1;
end



Сделал простой делитель тактовой частоты.
Если заливать только в FPGA то дергается только одна нога LED1(вроде) остальные в 0.
Если залить во FLASH и дернуть питание то дергаются все 3-и.

Как то жалко для таких простых экспериментов FLASH использовать. Тем более по времени долго получается.

Еще заметил, если заливка во FLASH прошла быстро (показало только до 10% а потом пишет все ОК), то 100% не будет работать как надо. А когда перед заливкой появляется окно в котором установлена галочка верификации, то шьется долго и рисует где-то до 70%. Но зато работает на 100%.

Кто с такой ситуацией сталкивался, или может у меня руки не из того места растут?

С ПЛИС это мой первый опыт, в основном пишу для контроллеров.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 15.01.2010 19:57 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Подключил программатор к LPT порту.

Я сталкивался с ошибками при программирование через ЛПТ - шил CPLD (да и Atmega). Ноут P4, LPT (через PCMCIA). Проскакивали ошибки при записи - лечилось остановкой "жадных" процессов и увеличением приоритета для программы записи (почти до realtime). Ну и верификация для гарантии.
С ФПГА я возился на дилетантском уровне. Схемы рисовал в графике. Работал именно с обычной заливкой в ФПГА. Все ножки были доступны и подконтрольны. Имеет смысл проверить начальные установки для кристалла и еще раз просмотреть логи на предмет отсутствия наличия ошибок связанных с пинами (LED2, LED3).

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
alsegor
Добавлено 16.01.2010 09:11 Сообщение: 3
alsegor
0

Пункты: 4761
Регистрация: 11.06.2009
Пол: Мужчина
Комп у меня на работе нормальный Core2Duo вроде 3 гигагерца ОЗУ 2Гб. Из приложений только почта и браузер запущены. Дело в том, что без всяких изменений проекта при заливке сразу в FPGA и заливке во флеш, поведение разное.
Верификация делается, пока не разобрался почему, только если шить во флеш. Из за этого шьется долше и по прогрессу доходит за 50%. Если прямо в FPGA лить то быстро до 10-11% добегает и все. Попобую еще другим программатором через USB прошить но там надо переходник сделать будет. Еще думаю попробовать на 11 версию перейти. Я LPT тоже не сильно доверяю, но за пару дней которые я бился ниодного несовпадения при верификации не было. Может это как то связано с тем что я bit файл лью, а в проекте изначально mcs заливается? Неужели у меня одного такая ситуация? Судя по этой ветке форума, FPGA платы мало кто берет, хотя цена тут заманчивая.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.01.2010 13:46 Сообщение: 4
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Как ни странно, количество гигагерц и гигабайт тут роли не играют. А влияют настройки самого порта (например ошибки/помехи в железе) и реализация драйвера порта (LPT). Гигагерцы полезны, если требуется формировать правильную времянку для записи прошивки..
Я работал и с USBBlaster - работа стала приятнее и проще, ошибок вроде не было. Имеет смысл попробовать.
Ну а с ситуацией видимо или к Павлу, как к создателю кита или задавать вопросы на более специализированных форумах, типа electronix caxapa telesys

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 16.01.2010 16:07 Сообщение: 5
Pavel Ivanchenko
Admin
4.39

Пункты: 91429
Регистрация: 24.03.2009
Пол: Мужчина
Итак, по существу первоначального вопроса ...
Как выяснилось, поставляемый тест работает не правильно, а я в следствии ошибки маркировки контактов разъема, считал его выполнение успешным.
Вот рабочий вариант:
Код
`timescale 1ns / 1ps
`define H 1'b1
`define L 1'b0
module demo(
CLC,
Data,
Addr,
CS,
OE,
WE,
TEST_OK
);
input CLC;
inout [7:0] Data;
output [18:0] Addr;
output CS;
output OE;
output WE;
output TEST_OK;

reg [3:0] Counter;
reg [0:0] Devider;
reg [18:0] Addr;
reg [7:0] Data_out;
reg [7:0] Data_in;
reg CS;
reg OE;
reg WE;
reg TEST_OK;


always @(posedge CLC)
begin
Devider = Devider + 1;
end

always @(posedge CLC)
begin
if(Devider == 1)
Counter = Counter + 1;
else
Counter = Counter;
end

always @(posedge CLC)
begin
case (Counter)
3'd1:
begin
Addr = 19'h55555;
Data_out = 8'haa;
Data_in = Data;
OE = `H;
WE = `L;
CS = `L;
end
3'd2:
begin
Addr = 19'haaaaa;
Data_out = 8'h55;
Data_in = Data;
OE = `H;
WE = `L;
CS = `L;
end
3'd3:
begin
Addr = 19'h55555;
Data_out = Data_out;
Data_in = Data;
OE = `L;
WE = `H;
CS = `L;
end
3'd4:
begin
Addr = 19'haaaaa;
Data_out = Data_out;
Data_in = Data;
OE = `L;
WE = `H;
CS = `L;
end
default :
begin
Addr = Addr;
Data_out = Data_out;
Data_in = Data;
OE = `L;
WE = `H;
CS = `L;
end
endcase
end

assign Data = (WE==`L) ? Data_out : 8'hzz;

always @(posedge CLC)
if(Counter == 3'd3)
if (Data == 8'haa)
TEST_OK = `H;
else
TEST_OK = `L;
else
if(Counter == 3'd4)
if (Data == 8'h55)
TEST_OK = `H;
else
TEST_OK = `L;
else
TEST_OK = TEST_OK;

endmodule

Что касается загрузки битстрима прямо в FPGA, я этим и пользуюсь (у меня сейчас почемуто при попытке создания MCS "вылетает"), присваиваете в JTAG цепи устройству BIT файл и выбираете "Program FPGA only", другое дело что сам Impact местами странно себя ведет и не обновляет битник, хотя и спрашивает "обносить или нет", приходится его перезапускать, хотя может это следствие моей версии Висты ...

MCS это BIT подготовленный для сохранения в конфигурационную флешку, кроме самого битстрима еще содержит некоторую дополнительную информацию (скорость конфигурации, состояние некоторых бит ...).

На будущее, выделяйте отдельные вопросы в отдельные темы, чтоб не валить все в одну кучу.
Спуститься к концу Подняться к началу
Персональная информация
alsegor
Добавлено 16.01.2010 21:21 Редактировалось 16.01.2010 21:28 Сообщение: 6
alsegor
0

Пункты: 4761
Регистрация: 11.06.2009
Пол: Мужчина
Спасибо, всем откликнувшимся!!!

На electronix-е сижу уже не первую неделю.
Там тоже по этой проблеме "копаю", но пака ничего не накопал (осилил 30% форума по теме FPGA).

В общем, буду пробовать следующее:
1. Меняю программатор на USB;
2. Пробую открыть проект в 11 ISE;
3. Пробую новую прошивку от Павла.

Результат будет скорее всего через недельку, сейчас буду делать "шабашку" на обычном МК от Atmel.

Вопрос к Павлу.
Судя по коду, теперь Вы оставили только сигнал успешного завершения проверки памяти?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 17.01.2010 19:27 Сообщение: 7
Pavel Ivanchenko
Admin
4.39

Пункты: 91429
Регистрация: 24.03.2009
Пол: Мужчина
Не только, я еще немного изменил логику ...
Спуститься к концу Подняться к началу
Персональная информация
alsegor
Добавлено 17.01.2010 20:32 Сообщение: 8
alsegor
0

Пункты: 4761
Регистрация: 11.06.2009
Пол: Мужчина
В общем:
1. Спаял переходник для Xerxes-а для подключения к платке (на плате 6-ти контактный, а на Xerxes -14-ти);
2. Установил 11 ISE;
3. Для удобства отладки на 8 выходов X4 припаял резюки и светодиоды, что бы не тыкаться мультиком каждый раз.

Итог:
Заработало, пока лень искать в чем именно было дело.
Работает на 100%, глюков с выходами как ранее было не наблюдается.

Ну вот теперь можно по человечески работать не юзая флеш.
Всем, спасибо.

PS: Кстати еще не написал, в IMPACT-е сделал заливку не mcs, а bit файла. Так как для mcs нет выбора заливки в FPGA.
Правда на работе юзаю только LPT программатор. Из отпуска выйду буду ковырять с ним. Как разберусь отпишусь здесь, вдруг понадобится кому.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 22.01.2010 14:05 Сообщение: 9
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Я постоянно пользуюсь LPT JTAG - и с 10, и с 11 impact работает нормально. Другое дело, что я под Linux и драйвер там не родной.
Спуститься к концу Подняться к началу
Персональная информация
sherr
Добавлено 27.02.2010 23:31 Сообщение: 10
sherr
0

Пункты: 6512
Регистрация: 02.11.2009
[quote]Итак, по существу первоначального вопроса ...
Как выяснилось, поставляемый тест работает не правильно, а я в следствии ошибки маркировки контактов разъема, считал его выполнение успешным.
Вот рабочий вариант:
Код
`timescale 1ns / 1ps
`define H 1'b1
`define L 1'b0
module demo(
CLC,
Data,
Addr,
CS,
OE,
WE,
TEST_OK
);
input CLC;
inout [7:0] Data;
output [18:0] Addr;
output CS;
output OE;
output WE;
output TEST_OK;

reg [3:0] Counter;
reg [0:0] Devider;
reg [18:0] Addr;
reg [7:0] Data_out;
reg [7:0] Data_in;
reg CS;
reg OE;
reg WE;
reg TEST_OK;


always @(posedge CLC)
begin
Devider = Devider + 1;
end

always @(posedge CLC)
begin
if(Devider == 1)
Counter = Counter + 1;
else
Counter = Counter;
end

always @(posedge CLC)
begin
case (Counter)
3'd1:
begin
Addr = 19'h55555;
Data_out = 8'haa;
Data_in = Data;
OE = `H;
WE = `L;
CS = `L;
end
3'd2:
begin
Addr = 19'haaaaa;
Data_out = 8'h55;
Data_in = Data;
OE = `H;
WE = `L;
CS = `L;
end
3'd3:
begin
Addr = 19'h55555;
Data_out = Data_out;
Data_in = Data;
OE = `L;
WE = `H;
CS = `L;
end
3'd4:
begin
Addr = 19'haaaaa;
Data_out = Data_out;
Data_in = Data;
OE = `L;
WE = `H;
CS = `L;
end
default :
begin
Addr = Addr;
Data_out = Data_out;
Data_in = Data;
OE = `L;
WE = `H;
CS = `L;
end
endcase
end

assign Data = (WE==`L) ? Data_out : 8'hzz;

always @(posedge CLC)
if(Counter == 3'd3)
if (Data == 8'haa)
TEST_OK = `H;
else
TEST_OK = `L;
else
if(Counter == 3'd4)
if (Data == 8'h55)
TEST_OK = `H;
else
TEST_OK = `L;
else
TEST_OK = TEST_OK;

endmodule

[/quote]


А можно проект целиком - при попытке подменить
верилог - файл - вылазит 59 ошибка , Cleanup files -
не помогает.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-M-XC3S50AN