|
Глючит ПЛИС |
|
|
|
Nov 26 2012, 20:39
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513

|
Есть две теоретически одинаковые свои платы с xilinx xc3s100e. Использую одинаковую прошивку, размером меньше половины ПЛИС. На одной из плат вроде бы работает стабильно. На второй соответственно глючит. Суть глюков: Простые вещи, вроде вывести постоянно '1' на лапку, или транслировать тактовый сигнал наружу работают отлично. Чуть более сложные, например поделить тактовую частоту пополам и вывести наружу - то работают то нет (банально дергаю питанием, в контрольной точке сигнал иногда появляется, иногда нет). Все что еще сложнее, типа модуля chipscope или конечного автомата - не реагирует на внешние раздражители. Прошивка из флешки в ПЛИС точно грузится нормально, как уже говорил тестовая единица на лапке появляется стабильно. Все напряжения в норме, не просажены, подключены ко всем необходимым пинам.
В какую сторону думать? Может ли нехватка тока вызывать подобные глюки? Или так может проявиться брак микросхемы? Или может просто стоит пересобрать исходники в новый проект?
|
|
|
|
|
 |
Ответов
(1 - 6)
|
Nov 26 2012, 21:30
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(Jack_of_Shadows @ Nov 27 2012, 00:39)  Есть две теоретически одинаковые свои платы с xilinx xc3s100e. Использую одинаковую прошивку, размером меньше половины ПЛИС. На одной из плат вроде бы работает стабильно. На второй соответственно глючит. Суть глюков: Простые вещи, вроде вывести постоянно '1' на лапку, или транслировать тактовый сигнал наружу работают отлично. Чуть более сложные, например поделить тактовую частоту пополам и вывести наружу - то работают то нет (банально дергаю питанием, в контрольной точке сигнал иногда появляется, иногда нет). Все что еще сложнее, типа модуля chipscope или конечного автомата - не реагирует на внешние раздражители. Прошивка из флешки в ПЛИС точно грузится нормально, как уже говорил тестовая единица на лапке появляется стабильно. Все напряжения в норме, не просажены, подключены ко всем необходимым пинам.
В какую сторону думать? Может ли нехватка тока вызывать подобные глюки? Или так может проявиться брак микросхемы? Или может просто стоит пересобрать исходники в новый проект? "код" покажите - как Вы счетчик делаете
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 26 2012, 22:15
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513

|
Код process(sys_clk_c, sys_rst_c) begin if(sys_rst_c = '1') then temp <= '0'; temp_cnt <= to_unsigned(0, 22); elsif rising_edge(sys_clk_c) then temp_cnt <= temp_cnt + 1; if(temp_cnt = to_unsigned(0, 22)) then temp <= '1'; elsif(temp_cnt = to_unsigned(2097152, 22)) then temp <= '0'; end if; end if; end process;
process(sys_clk_c) begin if rising_edge(sys_clk_c) then temp <= not temp; end if; end process; Первый процесс типа посложнее, не работает совсем (или может редко, я не заставал). Второй типа попроще, работает иногда. Да как бы дело и не в счётчике, он только для отладки добавлен, там параллельно и другие блоки есть, вроде принятия данных с FTDI микросхемы, и все работает на первой плате, и не работает на второй. Кстати забыл сказать, питание платы от USB, поэтому нехватка тока когда проект разросся кажется более вероятным. Если так, прошу прощения что поспешил создавать тему. Смогу проверить это только завтра вечером.
Сообщение отредактировал Jack_of_Shadows - Nov 26 2012, 22:26
|
|
|
|
|
Nov 26 2012, 22:30
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(Jack_of_Shadows @ Nov 27 2012, 02:15)  Код process(sys_clk_c, sys_rst_c) begin if(sys_rst_c = '1') then temp <= '0'; temp_cnt <= to_unsigned(0, 22); elsif rising_edge(sys_clk_c) then temp_cnt <= temp_cnt + 1; if(temp_cnt = to_unsigned(0, 22)) then temp <= '1'; elsif(temp_cnt = to_unsigned(2097152, 22)) then temp <= '0'; end if; end if; end process; process(sys_clk_c) begin if rising_edge(sys_clk_c) then temp <= not temp; end if; end process; Первый процесс типа посложнее, не работает совсем (или может редко, я не заставал). Второй типа попроще, работает иногда. Да как бы дело и не в счётчике, он только для отладки добавлен, там параллельно и другие блоки есть, вроде принятия данных с FTDI микросхемы, и все работает на первой плате, и не работает на второй. Кстати забыл сказать, питание платы от USB, поэтому нехватка тока когда проект разросся кажется более вероятным. Если так, прошу прощения что поспешил создавать тему. Смогу проверить это только завтра вечером. Подключите внешний источник. Сравнивать 2 платы - покомпонентно. +++ У Вас эти 2 процесса надеюсь не одновременно в описании? Сигнал temp дублируется.
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 26 2012, 22:37
|

Участник

Группа: Участник
Сообщений: 46
Регистрация: 29-10-10
Пользователь №: 60 513

|
Цитата У Вас эти 2 процесса надеюсь не одновременно в описании? Сигнал temp дублируется. не, расскоментировал один когда копировал, в ином случае он бы все равно ошибку выдал
Сообщение отредактировал Jack_of_Shadows - Nov 26 2012, 22:37
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|