Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Re: XILINX 9572 у чайника

Пт апр 01, 2016 15:39:15



Для этого удаляем все соединения и соответствующий "IO marker", меняем instatiating c (6:0) на (2:0) и создаем соединения как указано на рисунке. Здесь самое главное в именовании цепей. Из дешифратора выходит 7-ми разрядня цепь out_seg4(6:0), от которой при помощи "Bus Tap" отбирается 3-х разрядная подцепь out_seg4(2:0), которая уходит на выходной буфер.

Теперь можно снова запускать Implement Design и радоваться появлению зелёного кружка против "Fit" и "Generate programming file". В процессе сборки наверняка выскочит куча предупреждений.

WARNING:Xst:646 - Signal <out_seg4<6:3>> is assigned but never used. - Ожидаемое предупреждение. Выходы есть, но никуда не подключены. Мы же сами только что их отсоединили.
WARNING:Xst:2734 - Property "use_dsp48" is not applicable for this technology. - На это можно не обращать внимания - документированный глюк.

Теперь можно было бы сесть за паяльник и паять схему. Ан нет. Чуть погодим. Если посмотреть отчет, можно найти, что выводы назначены совершенно неприемлимо. Для нас. Для САПРа это может и приемлимо. Поэтому в панели Processes выполним User Constraints -> Assign package pins. Расположение выводов, я пока оставлю на ваше усмотрение.


После назначения выводов, перед тем как провести очередную сборку, добавим несколько штрихов. Щёлкнув правой кнопкой мыши на Implement Design вызовем Properties и изменим секцию Fit в соответствии с прилагаемым рисунком. Во-первых, что делать с неиспользуемыми выводами? Хороший стиль предлагает их запрограммировать как выводы подключаемые к земле - Устанавливаем галочку "Create Programmable GND on Unused IO". Во вторых, что можно сделать для уменьшения потребления? Так как наша схема работает на очень низкой частоте (32 кГц для этой микросхемы на три порядка меньше её способности) можно все макроячейки использовать в режиме низкого потребления ("Macrocell Power Setting" -> Low) и можно уменьшить крутизну фронтов выходных сигналов ("Output Slew Rate" -> Slow). Теперь производим окончательную сборку проекта, сборку монтажной платы, программирование микросхемы... и вот оно - работает.



К сожалению, эта конструкция в данном виде непрактична. Несмотря на все усилия по уменьшению потребления, микросхема xc9572xl потребляет около 50 мА. Посему сделать часы с LCD индикатором и батарейным питанием не удастся. Зато, эту конструкцию можно перенести на CPLD CoolRunner-II xc2c128 и получить действительно экономичные часы! Перенеся без каких либо изменений на отладочную плату CoolRunner-II CPLD Starter Kit c микросхемой xc2c256 потребляемый ток был всего 20 мкА (по показометру этого стартер кита. Самое малое значение, что мне показал тестер - это 46мкА при питании 2.5в), и это без использования дополнительных возможностей CoolRunner-II по снижению потребления, таких как встроенный делитель частоты и DualEdge триггеры.

Тем же, у кого не нашлось ЖКИ для этой конструкции могут подключить их к четырём семисегментным светодиодным индикаторам. Для этого вход polarity модулей bin2seg надо отключить от цепи common и подключить к лог.1 или лог.0 в зависимости от того, какой индикатор и какие ключи вы будете использовать - с общим катодом или анодом. Рекомендую изучить Application Note xapp805.pdf с сайта http://www.xilinx.com. В общем случае, рекомендуется применять индикаторы с общим анодом и током через сегменты не более 8мА - тогда можно обойтись без дополнительных ключей.

Что касается лично меня, меня никогда не привлекала перспектива паять 4 индикатора АЛС324, а уж тем более делать разводку из 28 сигналов, которые надо протащить к такому частоколу контактов. Мне нравилось использовать светодиодные индикаторы с динамической индикацией - всего 12 контактов, и, готово! Что-ж, вторая конструкция будет на светодиодных индикаторах с динамической индикацией. Как я уже упоминал выше, для облегчения схемы будем использовать индикаторы с общим анодом. Динамическая индикация осуществляется следующим образом: в каждый момент времени активное напряжение подается на общий вывод одного разряда и в это же время на выводы сегментов подаются сигналы соответсвующие отображаемому в данном знакоместе символу. Через некоторый интервал времени активизуется другой разряд и на сегменты подается комбинация, соответствующая уже этому разряду. И так по-очереди перебираются все разряды (кстати, необязательно перебирать именно разряды, можно перебирать и сегменты). При этом нужно только обеспечить, чтобы все разряды были активны одинаковое время в течение периода и период был достаточно мал. Какую частоту мы выберем для своей конструкции? Так как у нас на вход подается частота 32 кГц и постепенно десятью делителями на 2 делится до 32 Гц, у нас уже наличествует целый спектр частот: 16384, 8192, 4096, 2048, 1024, 512, 256, 128 и 64 Гц. Частоту развертки следует выбирать достаточно высокую, но и слишком не жадничать. Можно выбрать 64 Гц - уже будет достаточно, но человек боковым зрением всё же мерцания такой частоты еще замечает, поэтому возмем за основу 128 Гц. Так как у нас 4 разряда, то для тактирования переключений разрядов следовало бы взять частоту в 4 раза выше частоты развертки. Так обычно поступают, но не в нашем случае - счетчики уже есть, поэтому из модуля divider1024 нам достаточно отобрать частоты 128 и 256 Гц. Они и дадут сигналы, комбинацию которых мы и будем использовать, какой разряд в данный момент засветить. Для отбора этих частот немного видоизменим модуль divider1024:

Код:
entity divider1024 is
    Port ( clk_input : in  STD_LOGIC;
          f_dyn : out STD_LOGIC_VECTOR (1 downto 0);
               out32 : out STD_LOGIC);
end divider1024;

architecture Behavioral of divider1024 is
signal counter: std_logic_vector (9 downto 0);

begin
   process (clk_input)
   begin
      if (clk_input'event and clk_input='1') then
         counter <= counter+1;
      End if;
   end process;

out32 <= counter(9);
f_dyn <= counter(7 downto 6);

End Behavioral;


Как видите, добавилось всего 2 строчки. Так мы сделали отводы от 6 и 7 счетчика делителя. Кто хочет поэкспериментировать, может попробовать снизить или повысить частоту развертки, отобрав сигналы от других счетчиков. Например для 64 Гц эта строчка будет выглядеть так: f_dyn <= counter(8 downto 7); Незабудьте, если проводилось изменение в разделе enity, то после внесения исправления необходимо пересоздать схемотехнический элемент и, соответственно, обновить схему!

Сам же "модуль" динамической индикации в данном случае состоит из дешифратора, который активизирует разряды, и мультиплексора, который коммутирует выходы счетчиков на дешифратор двоичного кода в семисегментный:

Код:
entity dynamic is
   Port ( f_dyn : in STD_LOGIC_VECTOR (1 downto 0);
     data0 : in STD_LOGIC_VECTOR (3 downto 0);
     data1 : in STD_LOGIC_VECTOR (3 downto 0);
     data2 : in STD_LOGIC_VECTOR (3 downto 0);
     data3 : in STD_LOGIC_VECTOR (3 downto 0);
     grid_sel : out STD_LOGIC_VECTOR (3 downto 0);
     data_out : out STD_LOGIC_VECTOR (3 downto 0)
   );
end dynamic;

architecture Behavioral of dynamic is
    with f_dyn select
         grid_sel <= "0001" when "00",
                     "0010" when "01",
                     "0100" when "10",
                     "1000" when "11",
            (others => '-') when others;

    with f_dyn select
         data_out <= data0 when "00",
                     data1 when "01",
                     data2 when "10",
                     data3 when "11",
           (others => '-') when others;
end Behavioral;


Сохраним этот модуль и после создания компонента добавим его в схему следующим образом:



Лирическое отступление. Возможно, кто-то изучив предыдущий листинг, задастся вопросом, зачем введен вариант others, если все варианты для двух разрядов перечислены в предыдущих четырёх строчках? Ответ заключается в том, что каждый бит имеющий тип STD_LOGIC в VHDL может принимать не только состояния '1' и '0', но и 'U', 'X', 'W', 'L' и 'H'. Так как эти варианты мы не принимаем во внимание, потому они и попадают под описание "для всех других комбинаций присваиваемое значение нам безразлично".



Схема включения микросхемы CPLD и индикатора приведена на рисунке. Здесь в схеме принято, что на выход ПЛИС будет подключен индикатор Kingbright CA56-21SRWA - красного цвета свечения, с общим анодом, и без десятичных точек, но с разделительными точками. Катоды подключаются к ПЛИС через резисторы 360 ом. При питании 3.3 вольта ток через сегмент 4 мА. Если вы используете питание 5 вольт и другой индикатор - пересчитайте эти сопротивления. Аноды подключаются через ключи на p-n-p транзисторах. Таким образом для активизации сегмента нужно подать низкий уровень и для активизации разряда - тоже надо подавать низкий уровень. Поэтому все выходы, и разрядов, и сегментов инвертируются: для разрядов поставлен отдельный инвертор, а для сегментов используется встроенный в модуль bin2seg путем подачи на вход polarity лог.1. Сигнал, подаваемый на разделители идёт прямо на индикатор, потому что аноды светодиодов разделительных точек подключены к анодам 3 и 4 разряда. Если вы используете индикатор, где этот вывод мультиплексирован с какими-то другими нежелательными элементами отображения, вам, придется этот сигнал завести в модуль dynamic и там его обработать. Например, при использовании индикатора с десятичными точками, мы хотим чтобы мигала точка 2-го (слева) разряда:

Код:
div_out <= div_in when a_sel = "10" else '0';
Вложения
led_sch.png
(29.94 KiB) Скачиваний: 1424
led_schematic.png
(45.72 KiB) Скачиваний: 1382
lcd_sch.png
(32.44 KiB) Скачиваний: 1199
process_prop.png
(31.85 KiB) Скачиваний: 1401
mod_seg4.png
(25.56 KiB) Скачиваний: 1254
Последний раз редактировалось aen Чт апр 07, 2016 22:39:54, всего редактировалось 1 раз.
Причина: Исправил. Нарушение Правил форума п. 2.6

Re: XILINX 9572 у чайника

Пт апр 01, 2016 16:57:04

asvhmao писал(а):Не, не, не!!! Ни чего удалять не надо!!!!
Полностью присоединяюсь, удалять ничего не надо!

Re: XILINX 9572 у чайника

Пт апр 01, 2016 18:46:47

uldemir замечательные лекции :beer: вы на пару шагов опережаете мысли, которые я ещё не успел озвучить :))
Единственное что хотел уточнить, чисто из спортивного интереса, эти поучительные статьи вы сами делали? То есть сами добавляли элементы и писали код, я правильно понял?
Просто у меня появился один вопрос по элементу divider1024, это не связано с часами, могу ли я изначально поставить кварц не на 32,768 кГц, а тот который у меня сейчас стоит на 10 МГц и приблизительно (а может и точно) поделить до нужной мне частоты, а так же если вдруг возникнет необходимость к нему добавить ещё один, либо несколько выводов, с делителя, на сколько это будет сложно сделать? Извиняюсь заранее если спросил какую то глупость или ежели бегу вперёд паровоза :oops: Остальную информацию наверное буду переваривать все выходные :)))
По инвертерам которые висят на кнопках. Я правильно понимаю, что если кнопки повесить на плюс, то можно сэкономить ещё немного ячеек в камне, убрав их? :))
Ну и наверное этот вопрос будет звучать как сверх наглость, функция будильника не поместится в данном проекте? :))

Re: XILINX 9572 у чайника

Пт апр 01, 2016 19:23:53

Вы по дате файлов в архиве можете посмотреть, когда это было написано ;-). Но эту статью тогда так и не опубликовали. Либо заумная, либо за тупая, либо неактуальная. Или не хотели с ней возиться - это было еще до котореда. Просто когда вы сказали о проблеме с PAСE, подумалось, что вы в несовсем верном порядке всё делаете. И тут вспомнил, что у меня где-то на диске лежит этот текст с картинками... Там есть еще продолжение - как сделать плавное переключение цифр, но в 9572 оно уже не вмещается.

По поводу делителя - на VHDL такие делители делаются любые и элементарно. В счетчике секунд можно подсмотреть как делается делитель на 60 и по аналогии сделать на 10 миллионов. или любую другую комбинацию. Мой совет - учить языки описания или VHDL, или Verilog. Мне первый немного понравился. И хоть я не спец по нему, даже того что я знаю достаточно, чтобы "нарисовать" достаточно сложные схемы с регистрами, ПЗУ, счетчиками и любого типа дешифраторами. И если после рисования внутренностей ПЛИС в схематике (у мня был модуль отображение), где я вырисовывал 24 триггера защелки в 4 столбика по 6 триггеров каждый, собирал в шины, заводил на мультиплексоры... И еще этот ISEшный редактор любил грохаться от любого неосторожного движения, что приходилось всё перерисовывать по-новой... Я начал делать так, что бил схему по модулям, каждый писал на VHDL и в схематике их соединял, то теперь я всю схему от начала и до конца пишу на VHDL.


По поводу инверторов... вы ничего не сэкономите. САПР сам разберется где какие сигналы и сам всё сделает так, как надо. Для САПРа, разумеется. Поэтому нет смысла заниматься оптимизацией логических выражений - САПР сам это сделает и соптимизирует так, чтобы это влезало в структуру ПЛИС, а не так, как мы думаем, что это будет оптимально. Хотя... иногда надо иногда "магическимим заклинаниями" его наставить на путь истиный.

По поводу будильника... вот еще нашел свою цитату:
Для тех, кто не знает нюансов, скажу просто: одна макроячейка - один триггер. Т.е., чтобы поделить частоту 32768Гц до 1Гц необходим 15-тиразрядный двоичный счетчик, следовательно, это отъест 15 макроячеек. Еще один нюанс состоит в том, что наружу сигнал может выходить также только с макроячейки. Таким образом сделать счетчик до 10 потребует 4 макроячейки, а преобразовать двоичный код в семисегментный и вывести наружу - еще 7. Конечно, макроячейки еще поедаются на промежуточные сигналы, если выражение подаваемое на макроячейку слишком сложное.
Так что можете прикинуть, что, чтобы просто хранить время срабатывания будильника надо 13 макроячеек. Вот сделаете часики, посмотрите сколько у вас свободных макроячеек останется. Найдется ли место хотя бы для этих 13 макроячеек? Но часики с будильником у меня есть на xc2c128 - на 128 ячеечной микросхеме их удалось впихнуть.

Re: XILINX 9572 у чайника

Сб апр 02, 2016 01:12:21

У меня при скачивании, дата почему-то изменяется на текущую, по планшету вроде как лето прошлого года показывал :dont_know:
Будем надеяться, что когда вы отдали статью на публикацию, они её просто прое потеряли или не заметили, в противном случае они сильно недооценили полезность информации в ней, особенно для таких чайников как я :facepalm: На сколько она актуальна, можно посмотреть по количеству скачиваний тех же картинок, с ваших предыдущих сообщений. ( больше 60-и за сутки)
Вы будете смеяться, это четвёртый проект, на РадиоКоте (мелкие вопросы не считаем), который мне достаётся с полки, где давно уже собрался большёй слой пыли :))) Три из них начинал практически с нуля, довёл до готовых результатов, народ лайки ставит, в ладоши хлопает. Но толи не повторяет, а может не считает за достоинство сказать простое спасибо :dont_know: в начале было обидно, потом забил на это дело. В этой теме есть хоть поговорить с кем, в области поставленного вопроса темы :))) Изображение
По поводу макро ячеек, медленно но начинает потихоньку доходить, что к чему :))
Про будильник, на одних 9572 список ведь не заканчивается, я их взял в основном для тренировки. Если всё дальше пойдёт хорошо, то думаю со временем можно будет и увеличивать свои потребности :tea: Ну и как крайний вариант, если не ошибаюсь, можно ведь и два камня связать между собой, применить какие либо внешние элементы (делители, декодеры индикаторов)? :shock:
По поводу книжек с языками, с чего лучше начать курить эти буквари? Они наверное все на вражеском языке? :))
Ну и вашей статьёй, позаниматься сегодня, мне не хватило времени. Завтра более подробно позанимаюсь, тогда уверен вылезет ещё куча вопросов :)))
Ну и чем занимался вчера. Немного разобрался с ногами, выставил их все в ряд, помигал лампочками (счётчик до 10). Помогла статья ещё одного доброго человека:

http://www.fpga-cpld.ru/sapr3.html

Изображение Изображение

Ещё, может глупый вопрос задам. Полистал пару страниц ссылки темы про часики и увидев таблицу подумал, если в семи сегментном преобразователе не зажигать лампочки, а гасить их, этим не получится ячейки сэкономить?Изображение

Код:
  0 1 2 3 4 5 6 7 8 9  Кол-во
A *   * *   * * * * *  8 <-
B * * * * *     * * *  8 <-
C * *   * * * * * * *  9 <-
D *   * *   * *   * *  7 <-
E *   *       *   *    4 <-
F *       * * *   * *  6 <-
G     * * * * *   * *  7 <-
  6 2 5 5 4 5 6 3 7 6 = 49   горят
  1 5 2 2 3 2 1 4 0 1 = 21   не горят

Re: XILINX 9572 у чайника

Сб апр 02, 2016 05:55:42

asvhmao писал(а):Полистал пару страниц ссылки темы про часики и увидев таблицу подумал, если в семи сегментном преобразователе не зажигать лампочки, а гасить их, этим не получится ячейки сэкономить?

Скорее всего экономии от этого не будет - оптимизатор создает некую схему и в ней инвертирование выхода/выходов обычно не приводит к кардинальному изменению занятых ресурсов.
А вообще у Вас есть возможность дать точный ответ - делаете два проекта (прямой и инверсный), компилируете их и смотрите что в итоговом отчете. Этот путь самый верный.

Re: XILINX 9572 у чайника

Сб апр 02, 2016 20:25:22

Meteor правильно ответил. Дело в том, что великий и могучий САПР сам посмотрит, какая логика положительная или отрицательная требует меньше P-term-ов - ту и применит. (p-term - product term). Поэтому надо писать как удобнее, а ISE сделает как надо.

По поводу будильника, я отказался делать часы на серии xc95 - оно жрёт. Есть неплохая альтернатива - серия CoolRunner II: xc2c64, xc2c128, xc2c256 и xc2c512. Но только первая имеет вменяемый корпус. Все остальные в лучшем случае TQFP с шагом ножек 0,5мм (да-да, я видел вашу плату, но сам я такую делать не буду) или в худшем - BGA.

Re: XILINX 9572 у чайника

Сб апр 02, 2016 20:52:54

До чегож вредная эта программа, ни как с ней получается что ли не договориться :)))
Но как сказал Meteor, надо попробовать, сравнить и убедиться что да вы были правы :beer:
Процесс немного затягивается, пока, на скорую руку, делаю лампочки 7 сегментные. После предыдущей платы, где было 25 ног на 13 мм, сейчас такой простор и палигон в несколько футбольных полей получается :))
Пока курим, на данный момент ни чем не могу похвалиться. :solder:

Re: XILINX 9572 у чайника

Сб апр 02, 2016 21:14:44

Договориться с ней можно, но надо знать как. Вот захотел в часах сделать стартовый триггер, чтобы по включению часы стояли, а стоит нажать кнопку - шли не останавливаясь. Описал сигнал с начальным значением '0', а при нажатии кнопки туда присваивается '1'. САПР мне и заявляет, раз этому сигналу присваивается только '1', значит оно всегда '1' и триггер на этом экономим. Ну и никакого старта не получается. Пришлось отыскать магическое слово "attribute KEEP of start_stop : signal is "TRUE";", чтобы научить не упрощать этот сигнал. Аналогично с "семисегментным счетчиком" :
"САПР увидев таблицу переходов из состояния в состояние радостно заявлял, что узрел конечный автомат и применял соотвествующий шаблон, состоящий из счетчика необходимой разрядности (4) и регистров состояния (10) ну и выходных сигналов (7). Короче, даже бинарный счетчик с дешифратором получались компактнее."
Тоже чуть попозже нашел магическое слово "attribute FSM_EXTRACT of minutes: signal is "NO";". В результате, получилось также компактно, как и тогда, когда я логику переходов описывал логическими выражениями.

Re: XILINX 9572 у чайника

Вт апр 05, 2016 16:08:37

Статьи прочитали? Тогда, текст я, конечно, удалить уже не могу, но картинки будут снесены. в знак протеста.

Re: XILINX 9572 у чайника

Вт апр 05, 2016 16:46:06

А можно эту статью выложить например на Яндекс диск? Кто хочет тот и прочитает. Тема нужная.

Re: XILINX 9572 у чайника

Вт апр 05, 2016 22:39:46

Да, лекции на бумажку записал. Пока их не повторял. Работа как обычно отвлекает от учёбы. :(
Времени потратил больше чем на саму сороконожку :facepalm:
Сделал лампочки, начал их проверять, понял что забыл ключи на каждый разряд повесить. Вынес их на отдельную плату и кнопки добавил туда же. За одно и для декодера 7 сегментного индикатора, на CD4511 http://lib.chipdip.ru/249/DOC000249619.pdf , платку сделал. Осталось только провода укоротить, работать уже с этим набором можно. :))

Изображение Изображение

Re: XILINX 9572 у чайника

Чт апр 07, 2016 22:06:33

Попытался повторить проект, который uldemir собирал, не получается создать модуль dinamic, в архиве его нет. Пытаюсь создать новый, он отказывается проходить проверку синтаксиса :(

Пишет такое сообщение - Started : "Check Syntax for manual".

Process "Check Syntax" failed


Ещё не разобрался, как разбить шину на отдельные провода. Пытался повторить туже процедуру, которая на самом верхнем рисунке этой странице, кнопочка Add Bus Tap активна, но ни каких операций не выполняет.

Похоже, что-то опять делаю не так :dont_know:

Re: XILINX 9572 у чайника

Пт апр 08, 2016 06:02:01

Странно. с dynamic. Тот текст, что привел - это только суть - там нет заголовков - потому он не собирается. попробуйте этот:
dynamic.zip

Похоже, что впереди надо добавить library IEEE;
Адд бус тап - там была какая-то невнятность, но с головы не помню - давно в схематике ничего не делал. Вечером попробую потыкаться и вспомнить как.

p.s. Я же говорил, помучаетесь с этим редактором и добровольно побежите изучать VHDL или Verilog

Re: XILINX 9572 у чайника

Пт апр 08, 2016 10:01:40

uldemir писал(а):Похоже, что впереди надо добавить library IEEE;

:dont_know: Разные варианты пробовал и просто, в имеющийся текст остальных элементов, код подставлял, добавив название, и новый элемент создавал. Результат был один и тот же.

uldemir писал(а):попробуйте этот:

Этот 14-я версия скушала, элемент получился другой немного, текст пока не сравнивал. :beer: Единственное 14-я версия в win8 компилироваться отказывается и программатор всё равно не видит. При компиляции пишет - ERROR: The Top module has not been specified. This can happen if no sources have been added to the project,

Изображение
uldemir писал(а):Адд бус тап - там была какая-то невнятность

Ага, полистал немного книжки, там как-то по фен-шую надо этот крючёк ставить, брать бубен шамана........ :facepalm: :))) Тоже вечером попробую.

uldemir писал(а):p.s. Я же говорил, помучаетесь с этим редактором и добровольно побежите изучать VHDL или Verilog

Русские без боя не сдаются © :))) :beer: Я хоть и всего несколько дне в руках держу эти камни, но моё мнение, это как и древние споры о яйце и курице, одно другое дополняет и всё взаимосвязано. :)

Re: XILINX 9572 у чайника

Пт апр 08, 2016 11:36:54

У вас проект должен выглядеть вот так, примерно:
Изображение
Главная фишка в том, что тот файл что .sch он назван top module. Если это не так, то выбрать правильный файл, кликнуть правой кнопкой и назначить его верхним модулем.

Так, тот divider из другого проекта - не посмотрел там на 6-ти разрядный индикатор. А в том коде, что я привёл ошибка - пропущена одна строчка. За строчкой "architecture Behavioral of dynamic is" должна быть строчка "begin"

Изображение

для тапа: Выбираем команду появится такая картинка. Выбираем направление отвода и тыкаем в шину от которой делать отвод. Тогда заполнится следующее поле "Selected bus name". тогда в Net Name выбираем какой именно кусок выводим (стрелочками там выбирается только один сигнал, но можно ручками написать какая подшина нам нужна). Ну и под конец кликаем с правой стороны от шины на схеме и тап появляется. Дальше от него можно рисовать wire

Re: XILINX 9572 у чайника

Вс апр 10, 2016 23:50:07

Фуууууууууууух. Запустил часы :)) В бою одна ПЛИСка погибла смертью храбрых, опять долго плисал вокруг новой, чуть не спалил осциллограф. Но обо всём по порядку :tea:

В предыдущих сообщениях я всё бился с программами элементов, насохранял их целую кучу, долго сортировал работающие от тех которые выдавали ошибки. К итоге я их все работающие уложил в одном проекте, скомпилировал, прошил. Кинулся искать кварц на 32768 Гц, но его у меня, под рукой, ни одного не оказалось. Что делать? Проверить то хочется. Первое что попалось под руку, сигнал 1 кГц с осциллографа, там как раз напряжение сигнала около 3-х вольт. Подключаю к шестой ноге ( да я ведь научился ноги ставить на микросхеме :))) ), тишина :shock: Дублирую выводами дополнительными входной сигнал, out32 и f_dyn, сохраняю, компилирую, один щуп осциллографа цепляю на задающую генерацию для синхронизации, стираю старую прошивку, записываю новую, смотрю на осциллограф, а на нём задающий сигнал неровно дёргается :facepalm:
Вспомнил слова Meteorа:
Meteor писал(а):
asvhmao писал(а):К стати, как его правильно подключать сигнал с генератора? На прямую или через сопротивление?

Можно и так и эдак - лучше через резистор.

Во время прошивки микросхема ведь меняет уровни высокий низкий......
В итоге микросхема стирается, записывается, но ноги не дышат :( На шестой ноге "1", на остальных "0". Камень ушёл в мусорку :facepalm:

Изображение

Замена этой сороконожки у меня заняла от силы минут 30 и часа полтора были процедуры купания, устранение кз, непропаев.

Ну вроде как всё проверил, подключаю программатор, надо ведь проверить. Делаю новый проект, и снова ситуация двух недельной давности..... Правильно ошибки 583 и 585 :)))
И что я только не делал. И танцевал перед этим устройством и песни пел...., ни чего не помогало. Спустя около часа, после очередной перезагрузки компьютера, как ни в чём небывало, микросхема увиделась, всё начала фунциклировать. В чём фишка так и не разобрался.

Дальше решил собрать на скорую руку генератор с HC14, настроил на частоту ~30-32 кГц.

Изображение Изображение

Подключаю, часы бегут с бешенной скоростью и в инверсии отображается цифры, ну и один сегмент не отображается (там дорожка просто на плате перебитая). С цифрами всё понятно, ногу поменяем, инверсию добавили. А что делать с тактами?

Изображение Изображение

Начал разбираться, что это могло быть? Стал играться с элементом divider1024. Пришёл к выводу что это 10 МГц пролетает. Ни чего не помогает, подключил этот сигнал сквозняком на другую ногу, ноль реакции, отпаял сопротивление между генератором и ногой микросхемы, ей пофигу, генерит :))) Отключаю вывод 32 кГц, генерация прекращается :facepalm:
В итоге разорвал дорожку на GCK1, припаял по краям два штырька, чтоб использовать как дополнительные выводы и чтоб можно было перемычку для применения с 10 МГц использовать.
Подключаю на на GCK1 32 кГц, всё работает, убираю с этого вывода щуп осциллографа, снова летит 10 МГц Изображение

Изображение Изображение

Ну ладно, вроде как разобрались во всём. Часики такают. Кнопки нажимаются. Сброс, я так понял, скидывают секунды?

Всё безобразие уместилось в 60 ячеек.

Поигрался с bin2seg, даже на регистрах собирал, как не крути занимает 7 ячеек и всё тут.

Изображение Изображение

Как я уже писал выше, на дешифраторе сегментов, можно наэкономить 7 ячеек. Делители могу заменить на HC393, это уже минимум 10 ячеек и 12 оставшихся. Итого 29 ячеек. Вопрос к uldemirу, а сейчас будильник не поместится Изображение

Re: XILINX 9572 у чайника

Пн апр 11, 2016 05:50:14

Вспомнил слова Meteorа...

Во время прошивки микросхема ведь меняет уровни высокий низкий......
В итоге микросхема стирается, записывается, но ноги не дышат :( На шестой ноге "1", на остальных "0". Камень ушёл в мусорку

Вот теперь я не могу понять виноват я за выход из строя Вашей микросхемы, или не виноват... :dont_know:
Резистор какого номинала установили?

Re: XILINX 9572 у чайника

Пн апр 11, 2016 06:08:09

Если подаёте 10 МГц, то все эти "SLOW" надо вернуть обратно на "FAST" в установках проекта.

У первой микросхемы я как-то умудрился спалить один вход. Но перерезал дорожку и подал сигнал на соседний пин, перекомпилировал и всё работало дальше. Всю микросхему целиком спалил только один раз, когда коротнул дорожки и на питание попало 40в.

asvhmao писал(а):а сейчас будильник не поместится
Трудно сказать. сам будильник, уже писал, потребует 13 ячеек хранить время. пара ячеек, чтобы сравнивать с текущим и "пищать" (если не делать "генератор" а, опять же использовать отводы от делителя на 1024). А вот как устанавливать будильник? как отображать устанавливаемое время? Это тоже потребует ресурсов. В моих часиках всё управляется тремя кнопками и "устанавливаемый" параметр мигает. И, как писал, требует xc2c128. Индикация, правда, статическая.
clock_vhdl.zip
Часы с будильником, 3 кнопками и 4-х разрядным индикатором (статическое отображение)
(3.55 KiB) Скачиваний: 259

Я тут на прошлой неделе пытался сделать видео, создания проекта от начала до конца. Что-то, то не получалось, то не сохранялось. Вчера нашел - один файл всё-таки сохранился, но там мышиный курсор не виден. Дак вот, пока я игрался с записью, один и тотже проект требовал от 56 ячеек, до того, что не влезал в 72 в зависимости от того, как были назначены выводы. Т.е. достаточно один сигнал уложить в "не тот" макроблок, как сигналы напрямую не роутятся и начинается "поедание" макроячеек.

Re: XILINX 9572 у чайника

Пн апр 11, 2016 07:01:54

Meteor писал(а):Вот теперь я не могу понять виноват я за выход из строя Вашей микросхемы, или не виноват...
Резистор какого номинала установили?

Вы помогли мне определить причину, из-за чего произошла неисправность, вся ответственность за сгоревший камень лежит только на моих плечах. Да и это первый опыт мой был по пересадки сороконожки :)) :beer:
Резисторы сейчас поставил по 300 Ом и генерацию подаю только на выводы GCK1_GCK3 :)))
uldemir писал(а):Если подаёте 10 МГц, то все эти "SLOW" надо вернуть обратно на "FAST" в установках проекта.

Вот так и не разобрался с данными настройками :dont_know: стоит всё по умолчанию.
uldemir писал(а):У первой микросхемы я как-то умудрился спалить один вход. Но перерезал дорожку и подал сигнал на соседний пин, перекомпилировал и всё работало дальше

Предлагаете дожечь ногу по настоящему и возможно что камень заработает? :))) :beer:

Про писщалку, тут вариантов много, вплоть до неиспользованных ног на микросхеме с кварцем. Или вывести ногу, для управления запуска зайца с барабаном. :)))

uldemir, а как этот элемент подключать в самой ПЛИСке?

Изображение
Ответить