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

Gorby

Свой
  • Постов

    707
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Весь контент Gorby


  1. Ладно-ладно :) Нигде не было сказано, что центром вращения гипотетического груза была ось колеса. А то можно договориться до велосипедной динамо-машины, закрепленной на оси и работающей по внутренней поверхности камеры. Наверное, наилучшим в данной ситуации следует признать индукционный метод передачи энергии. Правда, много на такие расстояния не передашь. И автор топика до сих пор не озвучил потребление.
  2. Да что-то накатило... Магнитные бури наверное. Приношу извинения за излишне резкий тон. В соседней ветке один молодой человек с DCMом воюет, не зная, как инстанцировать компонент на VHDL. Мне показалось, Вы тоже из тех кто "все знает". Рад, что ошибся. :cheers:
  3. Заслуживает занесения в FAQ. Как НЕ надо делать. Значится, первый варнинг Вам подозрительным не показался? В нем как раз и говорится, что обнаружен генератор клоков. Поэтому для него автоматически поставлен BUFG (что значит использование глобального клока). Но софт и далее в непонятках, так как обнаружил, что Вы подаете этот клок не только на тактовые входы, но еще и на логические. В ФПГА не принято подавать клок на ЛОГИЧЕСКИЕ входы, а только на тактовый вход триггеров. Потому как для клоков используются специальные выделенные ресурсы с минимальными (и практически равными) задержками. Часто в кристалле вообще нет средств подать клок на вход данных (в Спартане 2 точно нельзя, в Спартане 3 - не в курсе). Если все-таки надо, то поступают по-хитрому. Тактируют счетный триггер удвоенной тактовой частотой, а выход используют как клок, но его уже можно подавать на логические входы. Но это будет местный, локальный клок, и его уже нельзя подавать на тактовые входы. А второй варнинг говорит, что оно вообще не развело клок на вход D какого-то триггера, потому как он не соответствует шаблону CLK - ясень пень, что не соответствует! Вы явно перемудрили с вашим счетчиком. Что Вы хотели сделать-то?
  4. Дааа. Нечего возразить. А я-то и не знал, что кореген - западло. Только как сгенерил память, так и горя и не знаю. А вот Вы непонятно как делаете и время потеряли. Так кто здесь есть ХУ? Уж постарайтесь пользоваться корегеном - сделать лучше Вам вряд ли удастся. А то с Вашим подходом трудности Вам гарантированы. Ведь есть достаточно много вещей, которые на VHDL просто не делаются. Например мне пришлось двунаправленный DDR регистр в IOB руками делать. Потому что господа из Ксайлинкса прямо и честно заявили - на VHDL это не делается. И пример привели, как надо сделать, вручную вставляя библиотечные примитивы. И все работает. И меня ничуть не парит, что на другом кристалле придется этот регистр переписать - это же аппаратно зависимая вещь, у каждого чипа своя. А Вы создаете супер-пупер высокоуровневое универсальное описание. Ну и на здоровье. только нечего плакаться потом и обижаться на "господ из Ксайлинкса". А потом корабли до Марса не долетают... и господа - в Париже :cranky:
  5. Надо полагать, вы уже разрешили все вопросы по балансировке? Или хотите улететь с трассы? По Германии и 270 км/час не предел... Вы видели, какие грузики используют при балансировке? Так вот ваш груз должен весить менее 5 грамм. Едва ли он сможет что-то подзарядить. Может озвучите нужный ток/напряжение ?
  6. Не пойму, почему надо тактовый сигнал через триггера на внешние пины выводить, если можно в FPGA editor вевести их сразу от DCM наружу без перекомпиляции проекта? Да и еще он задержку от DCM до самого пина покажет. Проблема, конечно, описана мутно, но уж больно мне кажется что синтезатор просто выкидывает уже работаюшую часть схемы после того как _zx_ подает клок на другую часть схемы, вроде бы не связанную с первой. В общем, надо ворнинги почитать (они есть?) и RTL посмотреть. Ну, лично я предпочитаю руками в потроха не лазить. Разве что очень припечет. А вообще, почему бы и нет? Речь шла о том, чтобы вывести наружу подозрительные клоки на просмотр. А уж как именно - тут хозяин - барин.
  7. А потому что лень доку посмотреть. The distributed memory module is used to create memory structures using the Select-RAM. It can be used to create read-only memory (ROM), single-port random-access memory (RAM), pseudo dual-port RAM and SRL16-based RAM with data widths up to 1024 bits and depths up to 65536 words. Options are available for simple registering of inputs and outputs in addition to variable pipelining capabilities. Optional asynchronous and synchronous resets are available for the output registers. Optionally, the module can be generated as a relationally placed macro (RPM) or as unplaced logic. For timing information, please see the Xilinx Product Specification for the specific architecture being targeted. Xilinx CORE generator. Distributed Memory v7.1. Все само делает, только нужные поля заполнить. И не надо нигде "лазить" :blink:
  8. Поэтому и пишу "Мне кажется, у вас тут логическая ошибка", а не семь лет расстрела за такой процесс :) Кривовато, вы правы. А вот как на эту кривизну синтезатор посмотрит - неизвестно. И даже если съест, то непонятно, что синтезирует. А ситуация мутная, сам автор описывает. То работает, то не работает. КОнечно, причина может быть и вовсе не в этом процессе. А например в другом, так же криво написанном. Я бы посоветовал автору топика сгенерировать все нужные ему клоки и вывести их наружу для контроля, но не непосредственно, а в качестве тактовых входов счетных триггеров, выход которых вывести на пины. Тогда не придется гадать, пропал клок или нет. Да и осциллографом фазу можно будет сравнить. А то случаи разные бывают. Неплохо также вывести наружу сигнал LOCKED от DCM. Иногда очень помогает. Вдруг окажется, что DCM хаотически не LOCKED? Тогда все объясняется. Тут и у самого правильного процесса крышу сорвет.
  9. В том и вопрос- Как вставить "BUFG (или иной элемент)" Если я правильно понимаю работу оператора process, то фрагмент кода должен работать так: 1) планируется инкрементировать счётчик 2) сравнивается значение счётчика с константой и по условию планируется обнулить счётчик 3) по окончанию последовательных команд в оператре process значение счётчика обновляется А в железе работает, если не использовать сигнал CLKFX_OUT для других процессов, или если приведённый процесс тактировать от CLKFX_OUT - вот это не понятно, ведь логика работы процесса не изменяется от того, какие у меня в схеме тактовые сигналы!!! Вот вам для изучения пример процесса из живого изделия. process (clk) begin if (clk 'event and clk = '1') then if (load = '1') then count <= "000111" after 1 ns; elsif (count="000000")then count <= "000000" after 1 ns; else count <= count - 1 after 1 ns; end if; end if; end process; Обратите внимание, здесь не заставляют счетчик делать три операции за раз. РАБОТАЮТ триггеры, а не мифические процессы. Это надо ОЧЕНЬ ясно представлять себе. Процесс - всего лишь способ описания триггера или комбинационной схемы таким образом, чтобы синтезатор долго не думал, а вставил то, что хотел разработчик - если, конечно, тот сам знает, что делает. Как это - "как вставить BUFG" ? Домой! К младенцам, нянькам, тряпкам! (с) Кутузов. В архитектуре после объявления сигналов пишем: component BUFG port ( I : in std_logic; O : out std_logic); end component; а потом после Begin: CLK0_BUFG_INST : BUFG port map (I=>CLK0_BUF, O=>CLKFB_IN); Совет дня: не вступайте в схоластические споры о процессах, если не знаете, как вставить компонент. Удачи. Она вам понадобится.
  10. XST например сам это знает. Еще можно указать ему это косвенно, руками вставив BUFG (или иной элемент), такой, что синтезатор наперед знает, что его надо подключить к глобальной линии. По умолчанию каждый сигнал, поступающий на тактовый вход триггера, будет рассатриваться как глобальный (пока хватает глобальных линий). Если не хватило - начинаются большие проблемы. Мне кажется, у вас тут логическая ошибка. Вы по одному и тому же фронту клока одновременно хотите 1) Инкрементировать счетчик 2) Сравнить его с константой (забывая, что счетчик все еще МЕНЯЕТСЯ) 3) Обнулить счетчик. Не многого ли вы хотите от бедного счетчика за один фронт? Симулятор, он глупый. А в железе такое не катит. В чем вы и убедились. Перепишите ваш процесс таким образом, чтобы по фронту клока 1) анализировалось, равен ли счетчик константе. 2) если ДА, то загрузить нули 3) если НЕТ, то инкремент. Такое должно работать.
  11. Вообще, Спартан-2 - не лучший выбор для контроллера ДДР. В Спартане-2 нельзя регулировать фазовый сдвиг генерируемого ДЛЛ клока. Что выливается в практическую невозможность застробировать данные при чтении, которые идут на 200 МГц. Нужный момент строба зависит от длины и нагрузки на шину данных. Кроме того, у этого Спартана нету DDR входных-выходных регистров, что сильно усложняет жизнь разработчику. У Ксилинкса есть Аппнота на ДДР контроллер на базе Спартан-2. Там все работает (разумеется, после правки напильником). Гораздо лучше подойдет Спартан-3 или 3Е, они же и подешевле будут. По поводу частоты. Стандарт JEDEC определяет нижнюю частоту ДДР памяти как 84 МГц. Что, однако, не мешает некоторым производителям делать ее еще ниже, например 75. Но нужно четко понимать, что далеко не все ДДР чипы будут работать на 75. Это связано с внутренним PLL чипа памяти. Он просто не рассчитан на низкие (менее 84 МГЦ в общем случае) частоты. Однако же, и тут существует тайный трюк. Если завести микросхему памяти в отладочный режим (прописыванием определенного бита в конфигурационном слове), то внутренний PLL отключится, позволив памяти работать на низкой частоте. Разумеется, производитель категорически не рекомендует использовать такой способ и не гарантирует временные параметры. Но оно работает.
  12. Позвольте с вами не согласиться. Курс ТОЭ или РТЦ базируется на понимании школьного курса физики по электричеству. Другое дело, что применяемый в этих книгах математический аппарат усложняет изучение не владеющего этими дисциплинами. В любом обучении существует система последовательности без которой нельзя освоить необходимый предмет. В противном случае если желающему обучаться достаточно популярных знаний, то и достаточно читать популярную литературу (например журнал 'Радио'), но дело в том, что и изучение этих изданий вызывает больше вопросов чем ответов, как и дальнейшая радиотехническая практика при которой многими начинающими начинает грезиться открытие чудо-эффектов в электронике, что случается не так редко даже у нас на форуме. Да я в курсе... Но вот что автор топика пишет -Книга по цифровой технике где описывается работа регистров и подобных элементов (что подал, что получил). -Что-нибудь доходчивое по транзисторам (несложные схемы включения, усиление...). -ОУ, АЦП, ЦАП, компараторы (ОУ-схемы включения, ЦАП,АЦП-принципы построения). -RC-цепи, что делают-знаю, а вот как? Он ищет КНИГУ "по транзисторам". И не подозревает, что нужно прочесть десятки разных книг, полистать сотни схем, пожечь десяток транзисторов и спаять пару десятков приемников и других простых конструкций. Тогда придет понимание. Просто видал я теоретиков, кто назубок знает, как работает транзистор, кто куда чего инжектирует и кто где неосновным носителем становится. И полный абзац разобраться с номиналами резисторов или рабочую точку посчитать даже для одного каскада.
  13. Дык... Это и есть лучшее решение. Но тираж при этом должен быть не 50 и не 1000.
  14. Уважаемые коллеги! Требуется помощь клуба. После долгих лет разработки и прочих мытарств мое изделие наконец-то начинает жить своей жизнью. Сейчас заказано на монтаж полсотни штук. Все бы ничего, но там три FPGA Xilinx, каждая со своей загрузочной флешкой (XСF-02S). Флешки (три штуки) выведены на отдельный JTAG-разъем и с FPGA по JTAG не пересекаются - у них тоже свой отдельный. Внимание, вопрос: существует ли простой и быстрый способ "нажатием на одну кнопку" запрограммировать эти флешки? Ведь это пока их 50, а могут быть и пару тысяч. Штатными средствами ISE , боюсь такое количество не осилить. Там вообще хохма. Есть пункт при инсталляции, где можно выбрать "установить только программатор". Инсталлируется практически весь ISE, но шить флешки невозможно. То одного файла ему не хватает, то другого. Помогла перезапись Всей папки Xilinx с другого компа, где ISE установлен полностью. МОжет есть, что-либо, работающее хоть из-под ДОС, хоть из-под черта лысого, но умеющее прошивать по JTAG в пакетном режиме? Кто как решает эту проблему? Чуть в оффтоп, но изделие-то одно и то же... Тот же вопрос с программированием флеши (Atmel 49BV162), подключенной к ARM7 (Atmel40008). На столе программируется через Вигглер какой-то китайской программой, где все указывается руками, мышкой и через ж. Для серийного производства явно не то.
  15. Лосева "Линейные цепи" не читал, возможно что хороший материал. Но из всех попадавшихся в руки по данной тематике непревзойденным источником считаю: Н.В.Зернов, В.Г.Карпов "Теория радиотехнических цепей", к величайшему сожалению которая так и не попадается в электронном виде в инете. Вы по этим книгам с нуля начинали? Или какой-то опыт до того был? Вы бы еще курс ТОЭ посоветовали освоить. Хорошая книга - толстая, солидная. Только никак она "чайнику" не поможет. Как сейчас помню метод узловых потенциалов. Но за 15 лет профессиональной деятельности он мне НИ РАЗУ не понадобился. Хотя конечно, понимание необходимо.
  16. Так эту книгу рановато вам, любезнейший! Это ж не учебник, скорее уж справочник. Аналоговой технике обучаются начиная с 11-12 лет, паяя первый детекторный приемник. А супер-книга для вас - В.Г. Борисов "Юный радиолюбитель". Там таки-да, разжевано до последнего резистора. А также смотреть побольше схем, разных. Приглядываться. Пытаться понять. Регулярно читать Мурзилку, тьфу, журнал "Радио". Особенно за прошлые годы (начать можно с 80-го). А как же вы управляетесь с контроллерами, ничего не понимая в цифровой технике? Тогда расскажу вам страшный секрет - никакой такой особой цифровой техники вовсе не существует. На самом деле все в мире электроники - аналоговое. Гы.
  17. А вообще, врачи сами себя не лечат. Это к тому, что над FPGA c DCMом, которое может сбойнуть, нужна надстройка. Вочдог, или другая какая маленькая аппаратная приблуда. И неплохо бы иметь внешний механизм фиксации события сбоя DCM. А там при необходимиости можно и битовый поток перезалить.... И если у вас нет паранойи, это вовсе не значит, что ОНИ за вами не следят
  18. Вообще говоря, потеря LOCKED - это аварийная ситуация. При этом на выходе есть клок с непредсказуемыми параметрами (как правило, наезжает фаза, что меняет скважность от нуля до максимума). При этом говорить о каких-то определенных состояниях ваших драгоценных регистров не приходится - туда МОГ записаться мусор. Хорошо, вы занулили выходной клок, обнаружив не-LOCKED. Как вы гарантируете, что в момент выключения не нарушился какой-либо setup-hold и это не были именно ТЕ регистры? Идея хороша, но есть опасность получить редко возникающие, а от того очень труднообнаруживаемые глюки. Я бы предложил ТЕ регистры сделать без ресета. А саму схему управления ими - как обычно, с ресетом от DCM. Так мы гарантируем сохранение регистров при состоянии Ресет, а наличие ресета для всей схемы от DCM гарантирует отсутствие неопределенного ее поведения в случае потери LOCKED.
  19. 2 совпадающих должны быть рядом? Нет. Просто должно быть МИНИМУМ два одинаковых из трех.
  20. А вместо кондера можно поставить кварц для стабильности? Или лучше и то и другое? НИ В КОЕМ СЛУЧАЕ! У меня унифицированный каркас с подстроечником.Намотать серху обмотки? С осциллографом все понял. Если подключить частотомер ( доделываю сейчас на PIC) ко вторичной обмотке частоту генерации увижу? Можно попробовать подключить кварц вместо конденсатора обратной связи (между эмиттером и коллектором). Или последовательно с ним. А лучше не надо. Для кварцевых генераторов применяют несколько другие схемы. Э, а про ПИК - это серьезно? И какая же частота у генератора? У тех, что я делал, была порядка 70 МГц. И катушка была бескаркасная. И без сердечника. Но 70 МГц никаким ПИКом вы не померяете. Кроме того, перед ПИКом надо ставить формирователь сигнала - усилитель с ограничителем, триггером Шмитта или чем-нибудь еще. Вполне можно на унифицированном каркасе добавить обмотку из двух витков. Частоту генерации будет видно.
  21. Да... но этим ходом можно обеспечить частоту от 3 до8 MHz.... А нужна частота 16 MHz..... Открываем даташит на первой странице. Operating voltages: -2.7 - 5.5V for Atmega16L -4.5 - 5.5V for Atmega16 Speed grades - 0-8 MHz for Atmega16L - 0-16 MHz for Atmega16 То есть во первых, нужно иметь Атмегу16 (без L) и запитать ее от 5 вольт. Далее читаем DS на странице 26. Видим, что для 16 мегагерц обязательно надо запрограммировать (установкой в 0) фьюз CKOPT. При этом CKSEL[3..1] установить в 111, или 110, или 101 (внимательно читаем таблицу 4). CKSEL[3..0] устанавливаем в положение External Crystal/Ceramic Resonator. (Таблица 2). Деньги за консультацию шлем Нью-Васюки, до Востребования.
  22. Да... но этим ходом можно обеспечить частоту от 3 до8 MHz.... А нужна частота 16 MHz..... Н-дааааааа.... Тогда лошадью ходи, лошадью :w00t:
  23. "Собрал схему емкостной трехточки. По идее сигнал должен сниматься с коллектора транзистора." Это - не трехточка. В трехточке контур подключается к схеме тремя точками. Отсюда и название. Это усилительный каскад с общей базой (это очень важно понимать), поэтому база по ВЧ должна сидеть на земле. Никакого электролита в базе не нужно. Только керамика 47нФ - 100нФ. Соответственно и ВЧ сигнала там быть не должно. Откуда же на эмиттере возьмется БОЛЬШАЯ синусоида, если самое большое сопротивление в цепи коллектор-эмиттер имеет резонирующий колебательный контур?! Теперь о главном. Откуда брать выходной сигнал? В детстве я много переделал подобных схем и заявляю - схема вполне рабочая при аккуратном исполнении. Так вот, нужна еще одна катушка из двух витков. Размещается внутри катушки контура. Одним концом подключается к напряжению питания, другоим - к антенне (провод длиной 20-30 см). Это разгружает контур. А к коллектору ничего подключать нельзя, тем более такой осциллограф. Там же емкость обратной связи маааааленькая. Подключая осцилл к коллектору, вы образуете делитель, и глубина ПОС падает, срывая генерацию вообще. А как вы модулируете ваш генератор?
  24. И это не проблема. ТОлько это не особый компаратор, а счетный триггер после компаратора. А два 24-битных компаратора на каждый канал - это явно избыточно. Ну-ну. А строб записи в компаратор? А шина адреса компараторов (их, помнится 30*3=90 ) ? Что-то устройство стремительно перестает быть простым и помещаться в CPLD...
  25. А точно полтора мегагерца? Не 150? У меня в Спартане-3 32-битный синхронный счетчик на 100 мгц работает... Решение очень простое. Строим 24-х разрядный синхронный счетчик. Далее делаем 30 цифровых 24-битных компараторов (скажем, на XOR). Ну, и кучу 8-битных регистров для записи значений для компараторов (по 3 на один компаратор). В любой Спартан задача ложится. Еще и куча места останется. Непонятности: Счетчик, он должен быть загружаемым или нет? Или просто считает по кругу? Тогда какой смысл? Или он запускается по какому-то событию? А останавливается когда? Что происходит (вернее, вам нужно) на выходах каналов? Пока получается, что там будет присутствовать единичный импульс длиной в период CLK.
×
×
  • Создать...