реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> MAX10 прожигается но не работает
Jenya7
сообщение Sep 18 2018, 05:05
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Получил новую плату с 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).В чем может быть проблема?
Go to the top of the page
 
+Quote Post
new123
сообщение Sep 18 2018, 05:23
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 30-11-17
Пользователь №: 100 438



я бы еще глянул CONF_DONE, прогрузился ли чип или нет. То есть промониторил, вышел ли он в user mode
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 18 2018, 05:32
Сообщение #3


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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


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

Может в этом есть проблема ?
А так вроде ничего криминального не вижу.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 18 2018, 05:49
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(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;

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


Сообщение отредактировал Jenya7 - Sep 18 2018, 05:48
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 18 2018, 05:53
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

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

Ах вот он какой олень северный rolleyes.gif
Ну с этой библиотекой можно писать, как у Вас написано. А если не секрет, почему стандартный use numeric_std.all; не применяете ? Привычка ?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 18 2018, 05:56
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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


так с numeric_std.all квартус ругается на led_counter <= led_counter + '1'; .
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 18 2018, 06:16
Сообщение #7


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

А Вы замените одиночные кавычки на двойные и будет Вам счастье. Ещё вроде если объявлен как unsigned, то можно вообще единичку без кавычек писать как integer. Но это не точно.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 18 2018, 06:23
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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


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

Сообщение отредактировал Jenya7 - Sep 18 2018, 06:24
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 18 2018, 06:40
Сообщение #9


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

Проторенная дорога - строгое соблюдение стандартов VHDL, в которые библиотека std_logic_unsigned как раз и не входит.
Да и старшие товарищи иногда могут ошибаться wink.gif
Если Вы всегда работаете с одной и той-же версией САПР - то может оно и ничего. Но никто и никогда не даст гарантию того, что после обновления САПР старый код на нестандартизированных библиотеках будет работать как и раньше. Но в то-же время я ещё не слышал про то, что обновление САПР привело к неработоспособности\изменения работы кода, написанного на нестандартных библиотеках... Так-что может не так страшен код, как его малюют laughing.gif
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 18 2018, 06:46
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



инпут с пулапом помог. обделался отделался легким испугом.
Go to the top of the page
 
+Quote Post
new123
сообщение Sep 18 2018, 13:32
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 30-11-17
Пользователь №: 100 438



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

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

я кстати в счетчиках не использую <=, только =. Сам не силен, но постоянно такой инкремент не работает.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 18 2018, 15:00
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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

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


вам спасибо.

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

Сообщение отредактировал Jenya7 - Sep 18 2018, 15:01
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 19 2018, 04:55
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Jenya7 @ Sep 18 2018, 18:00) *
ну как мне когда то объяснили если мы хотим синтезируемый код то тогда std_logic и тогда <=
Либо вы не так поняли, либо тот, кто объяснял, сам чего-то не понял.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 19 2018, 05:46
Сообщение #14


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

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

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

Оно было придумано только от непонимания языка(хотя я сам ещё не все фишки VHDL понимаю)
P.S. Вот только с Shared variable надо быть очень осторожным...
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 19 2018, 06:52
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



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

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 15:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016