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

MAX10 прожигается но не работает

Получил новую плату с MAX10. Для проверки хочу помигать ледом.

process (CLK)
begin

    if (rising_edge(CLK)) then
     
         led_counter <= led_counter + '1';
          
          if (led_counter > X"01C9C37F") then
          
              led_counter <= (others =>'0');
                
                led_sig <= not led_sig;
                
              LED_B1 <= led_sig;
              LED_B2 <= led_sig;
              LED_B3 <= led_sig;
              LED_B4 <= led_sig;
              LED_B5 <= led_sig;
              LED_B6 <= led_sig;
                
          end if;
          
     end if;  
     
end process;

Все прожигается без проблем. Но леды не мигают. На ножках 3.3В. Тот же код работает на демо плате. Клок на ноге 26 присутствует.

Нога NCONFIG = 1 а CONFIG_SEL = 0 (CMF0).В чем может быть проблема?

 

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


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

я бы еще глянул CONF_DONE, прогрузился ли чип или нет. То есть промониторил, вышел ли он в user mode

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


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

Хм... А у Вас точно все правильно синтезируется?

В VHDL же нельзя написать так (при использовании стандартных библиотек):

led_counter <= led_counter + '1';

 

Наподобие такой строчки можно записать так если led_counter объявлен как unsigned

Но тогда инкрементирование счетчика должно выглядеть так:

led_counter <= led_counter + "1";

Может в этом есть проблема ?

А так вроде ничего криминального не вижу.

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


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

я бы еще глянул CONF_DONE, прогрузился ли чип или нет. То есть промониторил, вышел ли он в user mode

 

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

 

есть решение проблемы. определю в контролере инпут с пулапом.

 

Хм... А у Вас точно все правильно синтезируется?

use ieee.std_logic_unsigned.all;

а что делать? жизнь такая. непростая.

 

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

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


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

use ieee.std_logic_unsigned.all;

а что делать? жизнь такая. непростая.

Ах вот он какой олень северный :rolleyes:

Ну с этой библиотекой можно писать, как у Вас написано. А если не секрет, почему стандартный use numeric_std.all; не применяете ? Привычка ?

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


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

Ах вот он какой олень северный :rolleyes:

Ну с этой библиотекой можно писать, как у Вас написано. А если не секрет, почему стандартный use numeric_std.all; не применяете ? Привычка ?

 

так с numeric_std.all квартус ругается на led_counter <= led_counter + '1'; .

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


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

так с numeric_std.all квартус ругается на led_counter <= led_counter + '1'; .

А Вы замените одиночные кавычки на двойные и будет Вам счастье. Ещё вроде если объявлен как unsigned, то можно вообще единичку без кавычек писать как integer. Но это не точно.

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


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

А Вы замените одиночные кавычки на двойные и будет Вам счастье. Ещё вроде если объявлен как unsigned, то можно вообще единичку без кавычек писать как integer. Но это не точно.

 

ну я пользуюсь примерами старших товарищей. ни разу не видел применение двойных кавычек. лучше я пойду проторенной дорогой. :)

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

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


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

ну я пользуюсь примерами старших товарищей. ни разу не видел применение двойных кавычек. лучше я пойду проторенной дорогой. :)

Проторенная дорога - строгое соблюдение стандартов VHDL, в которые библиотека std_logic_unsigned как раз и не входит.

Да и старшие товарищи иногда могут ошибаться ;)

Если Вы всегда работаете с одной и той-же версией САПР - то может оно и ничего. Но никто и никогда не даст гарантию того, что после обновления САПР старый код на нестандартизированных библиотеках будет работать как и раньше. Но в то-же время я ещё не слышал про то, что обновление САПР привело к неработоспособности\изменения работы кода, написанного на нестандартных библиотеках... Так-что может не так страшен код, как его малюют :laughing:

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


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

инпут с пулапом помог. обделался отделался легким испугом.

поздравляю, быстро вы решили =))

 

я кстати в счетчиках не использую <=, только =. Сам не силен, но постоянно такой инкремент не работает.

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


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

поздравляю, быстро вы решили =))

 

я кстати в счетчиках не использую <=, только =. Сам не силен, но постоянно такой инкремент не работает.

 

вам спасибо.

 

ну как мне когда то объяснили если мы хотим синтезируемый код то тогда std_logic и тогда <=

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

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


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

ну как мне когда то объяснили если мы хотим синтезируемый код то тогда std_logic и тогда <=
Либо вы не так поняли, либо тот, кто объяснял, сам чего-то не понял.

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


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

вам спасибо.

 

ну как мне когда то объяснили если мы хотим синтезируемый код то тогда std_logic и тогда <=

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

И для синтеза прекрасно применяется variable, что приведет к меньшим потребляемым ресурсами системы на моделировании - и как следствие большей скорости моделирования. И integer\natural(который я всегда применяю) - прекрасно синтезируются.

А <= это оператор назначения сигнала. И только. Но важно не забывать про свойство этого оператора - дельта задержке.

Применяйте тот тип с которым Вам проще описать схему - и забудьте про ограничение :

если мы хотим синтезируемый код то тогда std_logic и тогда <=

Оно было придумано только от непонимания языка(хотя я сам ещё не все фишки VHDL понимаю)

P.S. Вот только с Shared variable надо быть очень осторожным...

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


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

Можно прекрасно обойтись например и bit_vector, у которого есть одно важное свойство - он не resolved и ,как следствие, можно внести в код некоторый контроль ошибок.
У него есть недостаток -- нет, например, Z. Есть тип std_ulogic, который unresolved std_logic.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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