Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Работаем с ПЛИС, области применения, выбор _ MAX10 прожигается но не работает

Автор: Jenya7 Sep 18 2018, 05:05

Получил новую плату с 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 Sep 18 2018, 05:23

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

Автор: Flip-fl0p Sep 18 2018, 05:32

Хм... А у Вас точно все правильно синтезируется?
В VHDL же нельзя написать так (при использовании стандартных библиотек):

Код
led_counter <= led_counter + '1';


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

Может в этом есть проблема ?
А так вроде ничего криминального не вижу.

Автор: Jenya7 Sep 18 2018, 05:49

Цитата(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 Sep 18 2018, 05:53

Цитата(Jenya7 @ Sep 18 2018, 08:49) *
Код
use ieee.std_logic_unsigned.all;

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

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

Автор: Jenya7 Sep 18 2018, 05:56

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


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

Автор: Flip-fl0p Sep 18 2018, 06:16

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

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

Автор: Jenya7 Sep 18 2018, 06:23

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


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

Автор: Flip-fl0p Sep 18 2018, 06:40

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

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

Автор: Jenya7 Sep 18 2018, 06:46

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

Автор: new123 Sep 18 2018, 13:32

Цитата(Jenya7 @ Sep 18 2018, 09:46) *
инпут с пулапом помог. обделался отделался легким испугом.

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

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

Автор: Jenya7 Sep 18 2018, 15:00

Цитата(new123 @ Sep 18 2018, 19:32) *
поздравляю, быстро вы решили =))

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


вам спасибо.

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

Автор: andrew_b Sep 19 2018, 04:55

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

Автор: Flip-fl0p Sep 19 2018, 05:46

Цитата(Jenya7 @ Sep 18 2018, 18:00) *
вам спасибо.

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

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

Оно было придумано только от непонимания языка(хотя я сам ещё не все фишки VHDL понимаю)
P.S. Вот только с Shared variable надо быть очень осторожным...

Автор: andrew_b Sep 19 2018, 06:52

Цитата(Flip-fl0p @ Sep 19 2018, 08:46) *
Можно прекрасно обойтись например и bit_vector, у которого есть одно важное свойство - он не resolved и ,как следствие, можно внести в код некоторый контроль ошибок.
У него есть недостаток -- нет, например, Z. Есть тип std_ulogic, который unresolved std_logic.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)