Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MAX10 прожигается но не работает
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Jenya7
Получил новую плату с 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).В чем может быть проблема?
new123
я бы еще глянул CONF_DONE, прогрузился ли чип или нет. То есть промониторил, вышел ли он в user mode
Flip-fl0p
Хм... А у Вас точно все правильно синтезируется?
В VHDL же нельзя написать так (при использовании стандартных библиотек):
Код
led_counter <= led_counter + '1';


Наподобие такой строчки можно записать так если led_counter объявлен как unsigned
Но тогда инкрементирование счетчика должно выглядеть так:
Код
led_counter <= led_counter + "1";

Может в этом есть проблема ?
А так вроде ничего криминального не вижу.
Jenya7
Цитата(new123 @ Sep 18 2018, 11:23) *
я бы еще глянул CONF_DONE, прогрузился ли чип или нет. То есть промониторил, вышел ли он в user mode


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

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

Цитата(Flip-fl0p @ Sep 18 2018, 11:32) *
Хм... А у Вас точно все правильно синтезируется?

Код
use ieee.std_logic_unsigned.all;

а что делать? жизнь такая. непростая.
Flip-fl0p
Цитата(Jenya7 @ Sep 18 2018, 08:49) *
Код
use ieee.std_logic_unsigned.all;

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

Ах вот он какой олень северный rolleyes.gif
Ну с этой библиотекой можно писать, как у Вас написано. А если не секрет, почему стандартный use numeric_std.all; не применяете ? Привычка ?
Jenya7
Цитата(Flip-fl0p @ Sep 18 2018, 11:53) *
Ах вот он какой олень северный rolleyes.gif
Ну с этой библиотекой можно писать, как у Вас написано. А если не секрет, почему стандартный use numeric_std.all; не применяете ? Привычка ?


так с numeric_std.all квартус ругается на led_counter <= led_counter + '1'; .
Flip-fl0p
Цитата(Jenya7 @ Sep 18 2018, 08:56) *
так с numeric_std.all квартус ругается на led_counter <= led_counter + '1'; .

А Вы замените одиночные кавычки на двойные и будет Вам счастье. Ещё вроде если объявлен как unsigned, то можно вообще единичку без кавычек писать как integer. Но это не точно.
Jenya7
Цитата(Flip-fl0p @ Sep 18 2018, 12:16) *
А Вы замените одиночные кавычки на двойные и будет Вам счастье. Ещё вроде если объявлен как unsigned, то можно вообще единичку без кавычек писать как integer. Но это не точно.


ну я пользуюсь примерами старших товарищей. ни разу не видел применение двойных кавычек. лучше я пойду проторенной дорогой. sm.gif
Flip-fl0p
Цитата(Jenya7 @ Sep 18 2018, 09:23) *
ну я пользуюсь примерами старших товарищей. ни разу не видел применение двойных кавычек. лучше я пойду проторенной дорогой. sm.gif

Проторенная дорога - строгое соблюдение стандартов VHDL, в которые библиотека std_logic_unsigned как раз и не входит.
Да и старшие товарищи иногда могут ошибаться wink.gif
Если Вы всегда работаете с одной и той-же версией САПР - то может оно и ничего. Но никто и никогда не даст гарантию того, что после обновления САПР старый код на нестандартизированных библиотеках будет работать как и раньше. Но в то-же время я ещё не слышал про то, что обновление САПР привело к неработоспособности\изменения работы кода, написанного на нестандартных библиотеках... Так-что может не так страшен код, как его малюют laughing.gif
Jenya7
инпут с пулапом помог. обделался отделался легким испугом.
new123
Цитата(Jenya7 @ Sep 18 2018, 09:46) *
инпут с пулапом помог. обделался отделался легким испугом.

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

я кстати в счетчиках не использую <=, только =. Сам не силен, но постоянно такой инкремент не работает.
Jenya7
Цитата(new123 @ Sep 18 2018, 19:32) *
поздравляю, быстро вы решили =))

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


вам спасибо.

ну как мне когда то объяснили если мы хотим синтезируемый код то тогда std_logic и тогда <=
andrew_b
Цитата(Jenya7 @ Sep 18 2018, 18:00) *
ну как мне когда то объяснили если мы хотим синтезируемый код то тогда std_logic и тогда <=
Либо вы не так поняли, либо тот, кто объяснял, сам чего-то не понял.
Flip-fl0p
Цитата(Jenya7 @ Sep 18 2018, 18:00) *
вам спасибо.

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

Не совсем так. Можно прекрасно обойтись например и bit_vector, у которого есть одно важное свойство - он не resolved и ,как следствие, можно внести в код некоторый контроль ошибок.
И для синтеза прекрасно применяется variable, что приведет к меньшим потребляемым ресурсами системы на моделировании - и как следствие большей скорости моделирования. И integer\natural(который я всегда применяю) - прекрасно синтезируются.
А <= это оператор назначения сигнала. И только. Но важно не забывать про свойство этого оператора - дельта задержке.
Применяйте тот тип с которым Вам проще описать схему - и забудьте про ограничение :
Цитата
если мы хотим синтезируемый код то тогда std_logic и тогда <=

Оно было придумано только от непонимания языка(хотя я сам ещё не все фишки VHDL понимаю)
P.S. Вот только с Shared variable надо быть очень осторожным...
andrew_b
Цитата(Flip-fl0p @ Sep 19 2018, 08:46) *
Можно прекрасно обойтись например и bit_vector, у которого есть одно важное свойство - он не resolved и ,как следствие, можно внести в код некоторый контроль ошибок.
У него есть недостаток -- нет, например, Z. Есть тип std_ulogic, который unresolved std_logic.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.