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

Gorby

Свой
  • Постов

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

  • Посещение

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

    4

Сообщения, опубликованные Gorby


  1. У меня DCM останавливался в произвольный момент времени по причине плохой формы опорного клока - там ступенька посредине фронта была. Это разводчик в штангу дал. Ему было сказано Звездой развести клок на два чипа, а он их последовательно daisy chain сделал. Вот отражение и портило фронт тому чипу, что посредине.

     

    Если бы сделали звездой - было бы IMHO еще хуже. Делаю последовательно, смотрю в HyperLynx, 100МГц проблем пока не было. Резисторов туда, ежели чего. Но еще лучше клок завести в FPGA, а с него после DLL уже вывести сколько надо повторенных клоков.

     

    За код супервизора спасибо, пощупаю.

     

    А вот по второму вопросу вы не правы. Хайперлинкс у меня тоже есть. А еще у меня есть осциллограф Tek TDS5104B. И очень хорошо видна форма сигналов.

     

    Я ж не все сказал. У меня один Ксилинкс на основе клока от генератора с помощью DLL генерирует выходной клок для еще ДВУХ Ксилинксов, которые должны работать абсолютно синхронно. Вот поэтому и была Звезда, точнее вилка с короткой ручкой и двумя зубцами. а разводчик сделал последовательно. Да и фиг бы с ним, пол наносекунды разницы там погоды не делало. Но из-за ступеньки на средине фронта того ксилинкса что оказался посредине его DLL после 10-30 секунд работы входил в ступор.

  2. Удалось все таки скомпилить EFSL под IAR

    кому интересно могу выложить проект спасибо

    Сергею Файлы cstartup и *.xls взял стандартные

    Скомпилил проект под GCC.

    Собрал схему с картой SD.

    Есть возможность сравнить компиляторы GCC иIAR

    Пишите может предложите какой-либо тест.

     

     

    Интересно. Выкладывайте. Как раз есть под рукой EB40A c AT91R40008 и слот для карточки.

    А IAR вы какой пользовали? Я запустил последний, 4.40а. После рихтовки стартапа и линкерного файла работает на "ура".

  3. # ** Error: (vcom-19) Failed to access library 'unisim' at "D:\Modeltech_xe_starter\win32xoem/../xilinx/vhdl/unisim".

    # No such file or directory. (errno = ENOENT)

    # ** Error: D:/Modeltech_xe_starter/win32xoem/vcom failed.

     

    Если я правильно понял, то не может найти нужную библиотеку. Может кто подскажет что делать? Где можно взять эту библиотеку...

    http://www.xilinx.com/xlnx/xil_sw_updates_...update=mxe_libs

     

    Ээээ... Будьте готовы, что DCMы не сильно корректно моделируются.

     

    Приметивный вопрос: может вам все-таки не с DCM начинать пробывать писать программы на VHDL, а то у этого языка ОПИСАНИЯ АППАРАТНЫХ СРЕДСТВ компеляция слишком строга?

  4. Услышал отзыв, что, в частности, в Spartan'e 2 в одном случае из 10 прошивка не "вставала" в микросхему.

     

    Хочу услышать реальные случаи или мнение по данному вопросу.

     

    ИМХО - В SRAM-микросхемах ведь есть внутренние супервизоры которые, при неудачной конфигурации ДОЛЖНЫ снова инициировать этот процесс.

    А то получается - плата не включилась и и все?

     

    Читал в апнотах у Ксилинкса, что потребяемый стартовый ток достаточно сильно зависит от окружающей температуры. Причем чем ниже температура, тем этот ток больше. В разы. То есть есть смыл обвешивать кристалл как керамическими конденсаторами, так и простыми алюминиевыми электролитами.

     

    Это еще не весь ужас. Вот DCM по какой-либо причине вышел из синхронизации - и трындец, его надо ресетить. А если вы ресет не предусмотрели, то дизайн остановился. А предусмотреть ресет непросто. Нужен отдельный дополнительный клок. И что-то типа супервизора. У меня DCM останавливался в произвольный момент времени по причине плохой формы опорного клока - там ступенька посредине фронта была. Это разводчик в штангу дал. Ему было сказано Звездой развести клок на два чипа, а он их последовательно daisy chain сделал. Вот отражение и портило фронт тому чипу, что посредине.

  5. Премного благодарен, а еще у меня вопрос не по теме, есть в плисах возможность крутить баланс скорость/ресурсы. У меня опыта мало, но чувствуется что что-то такого типа должно быть. А то ресурсов свободных лом остался, а почему то настолько длинные цепочки развелись что скорость низковата. Причем забавно уменьшая число бит в счетчике состояний частота увеличивается, несмотря на то что старшие биты всю дорогу были нулями, сравнение что ли быстрее проходит?

     

    Все когда-то начинали. Не лезьте сразу в дебри - рискуете остаться там надолго. Сделайте что-то простое, но стабильно работающее. Прогоните его в пост-лейаут симуляции (это тоже большой кусок знаний для вас). Помотрите на дизайн изнутри.

     

    Насчет баланса однозначного ответа нет. Надеюсь, Вы уже знаете, что скорость дизайна определяется как скоростью срабатывания аппаратных средств (LUT, триггер, схема переноса), так и задержками на проводниках, их соединяющих. Причем триггеры всегда работают быстро, а например логика - далеко не всегда, зависит от количества входов (больше входов - больше уровней логики, ибо нет элементов 32_И-НЕ, их строят из 4-х входовых). Также существенный вклад в задержки вносят соединительные линии. Вы как ни-будь посмотрите отчет о статических таймингах, особенно если где-то чего по времянке не влезло. Там очень подробно показывают, что, где и как.

     

    В некоторых синтезаторах есть галочки - оптимизировать по скорости или по размеру логики. Не верьте. Просто попробуйте то и то и выберите более вам подходящее. Не раз сталкивался, что дизайн, синтезированный с оптимизацией по скорости, работает медленнее, чем он же, но по размеру. Что весьма логично - меньше размер - меньшие задержки на соединениях. Хотя бывает по-разному.

     

    Наличие длинных цепочек (и как следствие, низкая скорость) - целиком на вашей совести как разработчика. Если вы закрутили процесс, в котором за один такт делаете н-дцать операций с одним и тем же счетчиком, то чему вы удивляетесь? Пишите простые процессы. Они и работать будут быстро.

    Не используйте архисложных логических операций. А если все-таки надо, делите их на части, пропуская промежуточные результаты через триггеры.

     

    У меня например в Спартане-3 28-битный синхронный загружаемый счетчик работает на частоте более 125 МГц и еще запас есть. А у вас несколько бит и вы жалуетесь на низкое быстродействие.

     

    И еще. Не надо добиваться максимального быстродействия от схемы. Если сильно задрать требуемую частоту, разводчик иногда начинает выдавать чудеса глупости. Установите в констрейнах частоту, на 10-20 процентов превышающую максимальную рабочую частоту вашего изделия.

     

    Удачи.

  6. Для тех, кто не понимает влияние генератора на балансировку (для Gorby). Грузик не нарушает балансировку. Он всегда свешан вниз. А остальная часть (вращающаяся) генератора самосбалансирована. Кстати, чем больше нужен верхний предел скорости, тем массивней нужен грузик.

     

    Я тока не понял, что такое "в автомобильной камере"?

     

    Ладно-ладно :)

     

    Нигде не было сказано, что центром вращения гипотетического груза была ось колеса.

    А то можно договориться до велосипедной динамо-машины, закрепленной на оси и работающей по внутренней поверхности камеры.

     

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

  7. 2 Gorby: :bb-offtopic: Зря обижаетесь, я просто ответил на укол про лень и не хотел Вас серьезно задеть. Считаю, что кореген лучше использовать тогда, когда без него реально не обойтись (PCI, EternetMAC и т.п.) - тут я с Вами полность согласен, что пытаться переплюнуть Ксайлинкс - занятие длительное и бесперспективное. А реализовать ту же память можно и без него - я вообще стараюсь ставить синтезатор в такие условия, чтобы у него меньше было простора для самодеятельности. И потом - в VHDL можно и примитивы использовать, что я в общем и пытался сделать, когда напоролся на описываемую каку. Бывает, что без примитивов никак не обойтись.

     

    В общем - о вкусах не спорят.

    Так что, мир, дружба, сосиска :cheers:

     

    P.S. А для памяти сделал поведенческое описание - два процесса - и все дела. Единственнная проблема - пришлось синтезатору констрейном мозги вправить - а то он норовил эту память в BlockRAM запихать.

     

    Да что-то накатило... Магнитные бури наверное. Приношу извинения за излишне резкий тон. В соседней ветке один молодой человек с DCMом воюет, не зная, как инстанцировать компонент на VHDL. Мне показалось, Вы тоже из тех кто "все знает". Рад, что ошибся. :cheers:

  8. process (clk20)
    begin
        if rising_edge(clk20) and (lock1='1') then
            if count_clk_uart(0)='1' then
                count_clk_uart<=(others=>'0');
                if res2='0' then 
                    vd3<='1';
                else
                    vd3<='0';
                end if;    
                clkFORuart<= not clkFORuart;
            else
                count_clk_uart<='1' & count_clk_uart(count_clk_uart_W downto 1);
            end if;
        end if;
    end process;
    
                    
    process (clkFORuart) 
    begin
        if rising_edge(clkFORuart) then
        if res2='0' then 
            vd1<='1';
        else
            vd1<='0';
        end if;
    ..................

     

    Вывел наружу LOCKED_OUT и RST_IN - вроде DCM работает нормально

    res2, vd1 и vd3 тоже внешние

    vd3 изменяет полярность при изменении res2, но сигнал на vd1 не изменяется, значит строчка

    clkFORuart<= not clkFORuart;

    не выполняется!!!!

    Причём, при перекомпиляции проекта с незначительными изменениями(добавление входных или выходных портов, изменения в процессах, которые не имеют отношения к приведённым процессам) описанный трабл то появляется, то исчезает

     

    Есть такие варнинги

    1) Clock buffer is designated to drive clock loads. BUFGMUX

    symbol "physical_group_clkFORuart/clkFORuart_BUFG" (output signal=clkFORuart)

    has a mix of clock and non-clock loads. The non-clock loads are:

    Pin D of clkFORuart

     

    2) clkFORuart may have excessive skew because

    1 NON-CLK pins failed to route using a CLK template.

     

    Мне кажется подозрительным второй варниг

     

     

    Заслуживает занесения в FAQ. Как НЕ надо делать.

    Значится, первый варнинг Вам подозрительным не показался? В нем как раз и говорится, что обнаружен генератор клоков. Поэтому для него автоматически поставлен BUFG (что значит использование глобального клока). Но софт и далее в непонятках, так как обнаружил, что Вы подаете этот клок не только на тактовые входы, но еще и на логические.

     

    В ФПГА не принято подавать клок на ЛОГИЧЕСКИЕ входы, а только на тактовый вход триггеров. Потому как для клоков используются специальные выделенные ресурсы с минимальными (и практически равными) задержками. Часто в кристалле вообще нет средств подать клок на вход данных (в Спартане 2 точно нельзя, в Спартане 3 - не в курсе). Если все-таки надо, то поступают по-хитрому. Тактируют счетный триггер удвоенной тактовой частотой, а выход используют как клок, но его уже можно подавать на логические входы. Но это будет местный, локальный клок, и его уже нельзя подавать на тактовые входы.

     

    А второй варнинг говорит, что оно вообще не развело клок на вход D какого-то триггера, потому как он не соответствует шаблону CLK - ясень пень, что не соответствует!

     

    Вы явно перемудрили с вашим счетчиком. Что Вы хотели сделать-то?

  9. 2 gorby:

    А потому что лень доку посмотреть.

    Думаете, что Вы один такой умный? Просто стараюсь не пользоваться корегеном, так как возможны в будущем сложности при переходе на другие версии софта, а ВХДЛ-код - он и в Африке ВХДЛ-код. Оттуда обычно берется идея, и реализуется самостоятельно.

     

    Речь-то не о том, что это нельзя сделать, а об отношении господ из Ксайлинкса к разработчикам - указывать в документе, который уместно использовать для оперативной справки неверные сведения, что в конечном итоге приводит к значительным потерям времени.

     

    Дааа. Нечего возразить. А я-то и не знал, что кореген - западло. Только как сгенерил память, так и горя и не знаю. А вот Вы непонятно как делаете и время потеряли. Так кто здесь есть ХУ?

    Уж постарайтесь пользоваться корегеном - сделать лучше Вам вряд ли удастся. А то с Вашим подходом трудности Вам гарантированы. Ведь есть достаточно много вещей, которые на VHDL просто не делаются. Например мне пришлось двунаправленный DDR регистр в IOB руками делать. Потому что господа из Ксайлинкса прямо и честно заявили - на VHDL это не делается. И пример привели, как надо сделать, вручную вставляя библиотечные примитивы. И все работает. И меня ничуть не парит, что на другом кристалле придется этот регистр переписать - это же аппаратно зависимая вещь, у каждого чипа своя.

    А Вы создаете супер-пупер высокоуровневое универсальное описание. Ну и на здоровье. только нечего плакаться потом и обижаться на "господ из Ксайлинкса".

     

    А потом корабли до Марса не долетают... и господа - в Париже :cranky:

  10. Есть задача: разместить в автомобильной камере некое устройство с автономным питанием.

    Питаться оно будет от аккумулятора, остается изобрести - как его подзаряжать.

    Первое, что приходит в голову - генератор с эксцентрично закрепленным грузом - колесо вращается, груз все время тянет вниз, что заставляет вращаться вал генератора. ОДнако такое вращение будет до поры до времени - пока центробежная сила не зафиксирует груз на максимальном удалении от центра.

    Как рассичтать чатсоту вращения, при которой такое генератор не будет работать, и как увеличить ее? Ведь не хотелось бы чтобы аккумулятор подзаряжался только при парковке.

     

    Или же может быть еще предложения будут по автономному генератору в камере?

     

    Надо полагать, вы уже разрешили все вопросы по балансировке? Или хотите улететь с трассы? По Германии и 270 км/час не предел...

     

    Вы видели, какие грузики используют при балансировке? Так вот ваш груз должен весить менее 5 грамм. Едва ли он сможет что-то подзарядить.

     

    Может озвучите нужный ток/напряжение ?

  11. Я бы посоветовал автору топика сгенерировать все нужные ему клоки и вывести их наружу для контроля, но не непосредственно, а в качестве тактовых входов счетных триггеров, выход которых вывести на пины. Тогда не придется гадать, пропал клок или нет. Да и осциллографом фазу можно будет сравнить. А то случаи разные бывают.

    Не пойму, почему надо тактовый сигнал через триггера на внешние пины выводить, если можно в FPGA editor вевести их сразу от DCM наружу без перекомпиляции проекта? Да и еще он задержку от DCM до самого пина покажет.

    Проблема, конечно, описана мутно, но уж больно мне кажется что синтезатор просто выкидывает уже работаюшую часть схемы после того как _zx_ подает клок на другую часть схемы, вроде бы не связанную с первой. В общем, надо ворнинги почитать (они есть?) и RTL посмотреть.

     

     

    Ну, лично я предпочитаю руками в потроха не лазить. Разве что очень припечет. А вообще, почему бы и нет? Речь шла о том, чтобы вывести наружу подозрительные клоки на просмотр. А уж как именно - тут хозяин - барин.

  12. хмм а почему не просто написать на бехавор уровне и скормить XST ?

     

    А потому что лень доку посмотреть.

     

    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:

  13. ээээ народ, что вы парня замутили ? какой не правильный процесс ?? вы что ? все у него нормально написанно, кривовато конечно, но не не правильно.

     

    почему у человека не работает нужно разбираться, но именно в этом процессе косяков с синтезом нет.

     

     

    Поэтому и пишу "Мне кажется, у вас тут логическая ошибка", а не семь лет расстрела за такой процесс :)

    Кривовато, вы правы. А вот как на эту кривизну синтезатор посмотрит - неизвестно. И даже если съест, то непонятно, что синтезирует. А ситуация мутная, сам автор описывает. То работает, то не работает. КОнечно, причина может быть и вовсе не в этом процессе. А например в другом, так же криво написанном.

     

    Я бы посоветовал автору топика сгенерировать все нужные ему клоки и вывести их наружу для контроля, но не непосредственно, а в качестве тактовых входов счетных триггеров, выход которых вывести на пины. Тогда не придется гадать, пропал клок или нет. Да и осциллографом фазу можно будет сравнить. А то случаи разные бывают. Неплохо также вывести наружу сигнал LOCKED от DCM. Иногда очень помогает. Вдруг окажется, что DCM хаотически не LOCKED? Тогда все объясняется.

    Тут и у самого правильного процесса крышу сорвет.

  14.  

    XST например сам это знает. Еще можно указать ему это косвенно, руками вставив BUFG (или иной элемент), такой, что синтезатор наперед знает, что его надо подключить к глобальной линии.

     

    В том и вопрос- Как вставить "BUFG (или иной элемент)"

     

    Мне кажется, у вас тут логическая ошибка. Вы по одному и тому же фронту клока одновременно хотите 1) Инкрементировать счетчик 2) Сравнить его с константой (забывая, что счетчик все еще МЕНЯЕТСЯ) 3) Обнулить счетчик.

     

    Не многого ли вы хотите от бедного счетчика за один фронт?

     

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

     

    Перепишите ваш процесс таким образом, чтобы по фронту клока

    1) анализировалось, равен ли счетчик константе.

     

    2) если ДА, то загрузить нули

     

    3) если НЕТ, то инкремент.

     

    Такое должно работать.

     

    Если я правильно понимаю работу оператора 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);

     

     

     

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

    Удачи. Она вам понадобится.

  15. как указать синтезатору сигналы, которые должны быть выведены на глобальные линии синхронизации?

     

    XST например сам это знает. Еще можно указать ему это косвенно, руками вставив BUFG (или иной элемент), такой, что синтезатор наперед знает, что его надо подключить к глобальной линии.

     

    По умолчанию каждый сигнал, поступающий на тактовый вход триггера, будет рассатриваться как глобальный (пока хватает глобальных линий). Если не хватило - начинаются большие проблемы.

     

    проблему нашел, но пока что-то не пойму как победить

    constant toggle_clk_uart        : integer := 10;
    ......................
    process (clk20)
    begin
        if rising_edge(clk20) then
        count_clk_uart<=count_clk_uart+1;
            if count_clk_uart=(toggle_clk_uart) then
                count_clk_uart<=(others=> '0');
                clkFORuart<= not clkFORuart;
            end if;
        end if;  
    end process;

    условие

    if count_clk_uart=(toggle_clk_uart) then

    выполняется, если НЕ использую CLKFX(CLKFX=> open)

    если CLKFX подвожу к процессу, который никак не связан с сигналами

    clk20, clkFORuart и count_clk_uart, то условие

    if count_clk_uart=(toggle_clk_uart) then не выполняется, хотя на сигнале clk20 есть клок,

    count_clk_uart изменяется

     

    Сказанное относится к железу, в симуляторе всё корректно работает

     

    Мне кажется, у вас тут логическая ошибка. Вы по одному и тому же фронту клока одновременно хотите 1) Инкрементировать счетчик 2) Сравнить его с константой (забывая, что счетчик все еще МЕНЯЕТСЯ) 3) Обнулить счетчик.

     

    Не многого ли вы хотите от бедного счетчика за один фронт?

     

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

     

    Перепишите ваш процесс таким образом, чтобы по фронту клока

    1) анализировалось, равен ли счетчик константе.

     

    2) если ДА, то загрузить нули

     

    3) если НЕТ, то инкремент.

     

    Такое должно работать.

  16. Вообще, Спартан-2 - не лучший выбор для контроллера ДДР.

    В Спартане-2 нельзя регулировать фазовый сдвиг генерируемого ДЛЛ клока.

    Что выливается в практическую невозможность застробировать данные при чтении, которые идут на 200 МГц. Нужный момент строба зависит от длины и нагрузки на шину данных. Кроме того, у этого Спартана нету DDR входных-выходных регистров, что сильно усложняет жизнь разработчику. У Ксилинкса есть Аппнота на ДДР контроллер на базе Спартан-2. Там все работает (разумеется, после правки напильником).

     

    Гораздо лучше подойдет Спартан-3 или 3Е, они же и подешевле будут.

     

    По поводу частоты. Стандарт JEDEC определяет нижнюю частоту ДДР памяти как 84 МГц. Что, однако, не мешает некоторым производителям делать ее еще ниже, например 75. Но нужно четко понимать, что далеко не все ДДР чипы будут работать на 75. Это связано с внутренним PLL чипа памяти. Он просто не рассчитан на низкие (менее 84 МГЦ в общем случае) частоты.

     

    Однако же, и тут существует тайный трюк. Если завести микросхему памяти в отладочный режим (прописыванием определенного бита в конфигурационном слове), то внутренний PLL отключится, позволив памяти работать на низкой частоте. Разумеется, производитель категорически не рекомендует использовать такой способ и не гарантирует временные параметры. Но оно работает.

  17. ...

    Вы по этим книгам с нуля начинали? Или какой-то опыт до того был?

    Вы бы еще курс ТОЭ посоветовали освоить. Хорошая книга - толстая, солидная. Только никак она "чайнику" не поможет. Как сейчас помню метод узловых потенциалов. Но за 15 лет профессиональной деятельности он мне НИ РАЗУ не понадобился. Хотя конечно, понимание необходимо.

    Позвольте с вами не согласиться. Курс ТОЭ или РТЦ базируется на понимании школьного курса физики по электричеству. Другое дело, что применяемый в этих книгах математический аппарат усложняет изучение не владеющего этими дисциплинами. В любом обучении существует система последовательности без которой нельзя освоить необходимый предмет. В противном случае если желающему обучаться достаточно популярных знаний, то и достаточно читать популярную литературу (например журнал 'Радио'), но дело в том, что и изучение этих изданий вызывает больше вопросов чем ответов, как и дальнейшая радиотехническая практика при которой многими начинающими начинает грезиться открытие чудо-эффектов в электронике, что случается не так редко даже у нас на форуме.

     

    Да я в курсе... :biggrin:

     

    Но вот что автор топика пишет

     

    -Книга по цифровой технике где описывается работа регистров и подобных элементов (что подал, что получил).

    -Что-нибудь доходчивое по транзисторам (несложные схемы включения, усиление...).

    -ОУ, АЦП, ЦАП, компараторы (ОУ-схемы включения, ЦАП,АЦП-принципы построения).

    -RC-цепи, что делают-знаю, а вот как?

     

    Он ищет КНИГУ "по транзисторам". И не подозревает, что нужно прочесть десятки разных книг, полистать сотни схем, пожечь десяток транзисторов и спаять пару десятков приемников и других простых конструкций. Тогда придет понимание.

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

  18. поговорите с вашими поставщиками они смогут это сделать для вас т.е .микросхемы

    к вам будут приходить уже зашитыми

     

    Дык...

     

    Это и есть лучшее решение. Но тираж при этом должен быть не 50 и не 1000.

  19. Уважаемые коллеги!

    Требуется помощь клуба.

     

    После долгих лет разработки и прочих мытарств мое изделие наконец-то начинает жить своей жизнью.

    Сейчас заказано на монтаж полсотни штук. Все бы ничего, но там три FPGA Xilinx, каждая со своей загрузочной флешкой (XСF-02S).

    Флешки (три штуки) выведены на отдельный JTAG-разъем и с FPGA по JTAG не пересекаются - у них тоже свой отдельный.

     

    Внимание, вопрос: существует ли простой и быстрый способ "нажатием на одну кнопку" запрограммировать эти флешки? Ведь это пока их 50, а могут быть и пару тысяч. Штатными средствами ISE , боюсь такое количество не осилить. Там вообще хохма. Есть пункт при инсталляции, где можно выбрать "установить только программатор". Инсталлируется практически весь ISE, но шить флешки невозможно. То одного файла ему не хватает, то другого. Помогла перезапись Всей папки Xilinx с другого компа, где ISE установлен полностью.

     

    МОжет есть, что-либо, работающее хоть из-под ДОС, хоть из-под черта лысого, но умеющее прошивать по JTAG в пакетном режиме? Кто как решает эту проблему?

     

    Чуть в оффтоп, но изделие-то одно и то же...

    Тот же вопрос с программированием флеши (Atmel 49BV162), подключенной к ARM7 (Atmel40008).

    На столе программируется через Вигглер какой-то китайской программой, где все указывается руками, мышкой и через ж. Для серийного производства явно не то.

  20. Мужики вы совсем человека смутили. Для начала Вам надо начать с классической вещи для всей радиотехники, с учебника по линейным цепям, со своей стороны могу посоветовать учебник Лосева "Линейные цепи", (сам учился по нему прямо у самого Лосева). Следующее что необходимо освоить это нелинейные цепи, собственно это и есть база для дальнейшего самообразования, можно конечно пытаться нахватать из разных справочников верхов но без прочного фундамента это практически ничего не даёт.

    Лосева "Линейные цепи" не читал, возможно что хороший материал. Но из всех попадавшихся в руки по данной тематике непревзойденным источником считаю: Н.В.Зернов, В.Г.Карпов "Теория радиотехнических цепей", к величайшему сожалению которая так и не попадается в электронном виде в инете.

     

    Вы по этим книгам с нуля начинали? Или какой-то опыт до того был?

    Вы бы еще курс ТОЭ посоветовали освоить. Хорошая книга - толстая, солидная. Только никак она "чайнику" не поможет. Как сейчас помню метод узловых потенциалов. Но за 15 лет профессиональной деятельности он мне НИ РАЗУ не понадобился. Хотя конечно, понимание необходимо.

  21. Привет! Я работая в одной конторе, в отделе занимающимся разработкой электроники.

    Занимаюсь всякой всячиной, интересной и не очень... Неплохо управляюсь с контроллерами...

    но НИЧЕГО НЕ ПОНИМАЮ В АНАЛОГОВОЙ И ЦИФРОВОЙ ТЕХНИКЕ!!!

    ПОМОГИТЕ!!! Пробовал читать "Искусство схемотехники" не помогло, посоветуйте хорошую литературу

    для дибилов! В том смысле чтоб было разжевано все до последнего резистора!

    Заранее благодарю...

     

    Так эту книгу рановато вам, любезнейший!

    Это ж не учебник, скорее уж справочник.

     

    Аналоговой технике обучаются начиная с 11-12 лет, паяя первый детекторный приемник.

    А супер-книга для вас - В.Г. Борисов "Юный радиолюбитель". Там таки-да, разжевано до последнего резистора.

     

    А также смотреть побольше схем, разных. Приглядываться. Пытаться понять. Регулярно читать Мурзилку, тьфу, журнал "Радио". Особенно за прошлые годы (начать можно с 80-го).

     

    А как же вы управляетесь с контроллерами, ничего не понимая в цифровой технике?

    Тогда расскажу вам страшный секрет - никакой такой особой цифровой техники вовсе не существует. На самом деле все в мире электроники - аналоговое. Гы.

  22. А вообще, врачи сами себя не лечат.

     

    Это к тому, что над FPGA c DCMом, которое может сбойнуть, нужна надстройка.

    Вочдог, или другая какая маленькая аппаратная приблуда.

    И неплохо бы иметь внешний механизм фиксации события сбоя DCM.

    А там при необходимиости можно и битовый поток перезалить....

     

    И если у вас нет паранойи, это вовсе не значит, что ОНИ за вами не следят :biggrin:

  23. Раньше использовал DCM и не особо не задумывался, что LOCKED может пропасть и т.п. Но на всякий случай использовал его для выработки сигнала сброса той части схемы, которая тактировалась с выхода DCM.

     

    Но вот настал момент, когда в случае пропадания LOCKED сброс недопустим. Т.е. схема может остановиться, но сброса быть не должно, т.к. это приведет невосполнимой потере данных, загруженных ранее микроконтроллером в регистры ПЛИС (и которых у микроконтроллера больше нет).

     

    Мне в голову пришла идея, что можно реализовать схему сброса DCM, которая будет тактироваться от внешнего тактового сигнала и будет производить сброс DCM в самом начале (после конфигурации) и при пропадании сигнала LOCKED. При этом для того, чтобы избежать неизвестного состояния выходных тактовых сигналов DCM можно с помощью LOCKED управлять буферами BUFGMUX (например BUFGCE). Это теоретически должно позволить остановить на требуемое время ту часть схемы, которая тактируется от DCM.

     

    Но при этом возникает один маленький вопрос - для DCM нужен сигнал обратной связи. Брать его с выхода BUFGCE нельзя, т.к. этот сигнал нужен еще до того, как будет LOCKED, но в то же время нужно его брать с выхода BUFGCE, т.е. именно для этого сигнала нужно устранить clock skew.

     

    В общем я в сомнениях... Может кто сталкивался с подобной проблемой? Какие варианты?

     

    Вообще говоря, потеря LOCKED - это аварийная ситуация. При этом на выходе есть клок с непредсказуемыми параметрами (как правило, наезжает фаза, что меняет скважность от нуля до максимума). При этом говорить о каких-то определенных состояниях ваших драгоценных регистров не приходится - туда МОГ записаться мусор.

     

    Хорошо, вы занулили выходной клок, обнаружив не-LOCKED. Как вы гарантируете, что в момент выключения не нарушился какой-либо setup-hold и это не были именно ТЕ регистры?

     

    Идея хороша, но есть опасность получить редко возникающие, а от того очень труднообнаруживаемые глюки.

     

    Я бы предложил ТЕ регистры сделать без ресета. А саму схему управления ими - как обычно, с ресетом от DCM. Так мы гарантируем сохранение регистров при состоянии Ресет, а наличие ресета для всей схемы от DCM гарантирует отсутствие неопределенного ее поведения в случае потери LOCKED.

  24. При входе сигнала RX (UART’a) постоянно работающий входной МЖФ– для фильтрации коротких пичков на линии. Принцип работы МЖФ - из трех последовательных отсчетов он выбирает 2 совпадающих.

     

    2 совпадающих должны быть рядом?

     

    Нет. Просто должно быть МИНИМУМ два одинаковых из трех.

  25. Никакого электролита в базе не нужно. Только керамика 47нФ - 100нФ. Соответственно и ВЧ сигнала там быть не должно.

    А вместо кондера можно поставить кварц для стабильности? Или лучше и то и другое?

    НИ В КОЕМ СЛУЧАЕ!

     

    У меня унифицированный каркас с подстроечником.Намотать серху обмотки?

     

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

     

    Можно попробовать подключить кварц вместо конденсатора обратной связи (между эмиттером и коллектором). Или последовательно с ним. А лучше не надо. Для кварцевых генераторов применяют несколько другие схемы.

     

    Э, а про ПИК - это серьезно? И какая же частота у генератора? У тех, что я делал, была порядка 70 МГц. И катушка была бескаркасная. И без сердечника. Но 70 МГц никаким ПИКом вы не померяете.

     

    Кроме того, перед ПИКом надо ставить формирователь сигнала - усилитель с ограничителем, триггером Шмитта или чем-нибудь еще.

    Вполне можно на унифицированном каркасе добавить обмотку из двух витков.

    Частоту генерации будет видно.

×
×
  • Создать...