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

Gorby

Свой
  • Постов

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

  • Посещение

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

    4

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


  1. Подключить внешний кварц с фазосдвигающими конденсаторами 12-22pf и включить CKOPT и CKSEL 0-3 в 1.Читайте DS.

     

    Да... но этим ходом можно обеспечить частоту от 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).

     

     

    Деньги за консультацию шлем

    Нью-Васюки, до Востребования.

  2. Подключить внешний кварц с фазосдвигающими конденсаторами 12-22pf и включить CKOPT и CKSEL 0-3 в 1.Читайте DS.

     

    Да... но этим ходом можно обеспечить частоту от 3 до8 MHz.... А нужна частота 16 MHz.....

     

    Н-дааааааа....

     

    Тогда лошадью ходи, лошадью :w00t:

  3. "Собрал схему емкостной трехточки.

    По идее сигнал должен сниматься с коллектора транзистора."

     

     

    Это - не трехточка. В трехточке контур подключается к схеме тремя точками. Отсюда и название.

     

    Это усилительный каскад с общей базой (это очень важно понимать), поэтому база по ВЧ должна сидеть на земле. Никакого электролита в базе не нужно. Только керамика 47нФ - 100нФ. Соответственно и ВЧ сигнала там быть не должно.

     

    Откуда же на эмиттере возьмется БОЛЬШАЯ синусоида, если самое большое сопротивление в цепи коллектор-эмиттер имеет резонирующий колебательный контур?!

     

    Теперь о главном. Откуда брать выходной сигнал?

     

    В детстве я много переделал подобных схем и заявляю - схема вполне рабочая при аккуратном исполнении. Так вот, нужна еще одна катушка из двух витков. Размещается внутри катушки контура. Одним концом подключается к напряжению питания, другоим - к антенне (провод длиной 20-30 см). Это разгружает контур.

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

     

    А как вы модулируете ваш генератор?

  4. 1.5 MHz достаточно. Нужна точность 0.1 градуса при 20 тысячь оборотов в минуту.

    Счетчик пусть бежит по кругу. Но нужно будет добавить регистр захвата счетчика по перепаду на одном из входов ПЛИС, а считывать значение этого 24 битного регистра через внешнюю 8 битную шину. Компараторы должны быть устроены так, чтобы после первого совпадения выставлялась единица, а после второго обратно ноль. Второй вариант - каждый канал сравнения содержит два компаратора. При совпадении с первым компаратором на выходе устанавливается единица, а при совпадении со вторым обратно ноль.

     

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

     

    Вход только один для регистра захвата счетчика если нещитать 8 битную шину.

     

    Ну-ну. А строб записи в компаратор? А шина адреса компараторов (их, помнится 30*3=90 ) ?

    Что-то устройство стремительно перестает быть простым и помещаться в CPLD...

  5. С ПЛИС я раньше не работал. Поэтому прошу вас, уважаемые участники форума, подскажите возможно ли на ПЛИС решить следующую задачу. Нужно сделать один таймер 24 бита, 30 каналов сравнения все по 24 бита. Выход каждого канала сравнения идет на свою ножку ПЛИС. Значения для каналов сравнения задаем через внешнюю 8 бит шину. Частота на входе таймера 1.5 МГц. И какой девайс потянет такую задачу.

     

    А точно полтора мегагерца? Не 150? У меня в Спартане-3 32-битный синхронный счетчик на 100 мгц работает...

     

    Решение очень простое. Строим 24-х разрядный синхронный счетчик. Далее делаем 30 цифровых 24-битных компараторов (скажем, на XOR). Ну, и кучу 8-битных регистров для записи значений для компараторов (по 3 на один компаратор). В любой Спартан задача ложится. Еще и куча места останется.

     

    Непонятности:

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

     

    Что происходит (вернее, вам нужно) на выходах каналов? Пока получается, что там будет присутствовать единичный импульс длиной в период CLK.

  6. У меня приблизительно такая же задача. Контроллер DDR модуля.

    Есть модель миксросхемы памяти. Базируясь на ней я сделал модель модуля (DIMM).

    Моделирую в Моделсиме в timing режиме. Да, долго. Но зато все видно.

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

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

     

    Очень сомневаюсь, что это можно сделать с функциональной симуляцией.

  7. Большое спасибо. Остается лишь вопрос с большим током нагрузки, т.е. при 20А. Как мне кажется при такой нагрузке чип-зарядник поделит нагрузку с аккумулятором. Но она все равно будет высокой. Как мне показалось из просмотренных мной чипов они не рассчитаны на это, для них это как короткое замыкание. Есть еще вариант, когда, например, батарея испортилась или отсоединилась от нагрузки. Тогда вся нагрузка пойдет на чип.

     

    Я не слишком заблуждаюсь? :)

     

    Может тут можно придумать схему блокирования чипа при перегрузке?

     

    PS. Поискав по даташитам нашел еще вот такой интересный чип MAX1908. Заряд до напряжения 17.6 В, током до 5А.

     

    Вы сначала определитесь с аккумулятором. 20 ампер - это не шутки.

    По поводу зарядки можете не беспокоиться - зарядная микросхема уже содержит в себе все необходимое, в том числе и ограничитель зарядного тока. Так что даже при ударном токе потребления от АКК , ток от зарядного источника никак не превысит Вами же заданный (как правило 0.5С)

  8. В любой работе танцуют от печки, даже если вы - программист.

    Итак, что имеем?

    Если автор был точен в описании, то его целевой спидометр представляет собой электромотор.

     

    Про сигнал: устройство штатного спидометра такое - элеткромотор, а на нем стрелка. Как реализовано "зависание" (возрастание или понижение понятно, а как он стоит в одном положении, например 100 км/ч?) - не знаю.

     

    Сейчас узнаете. Там действительно есть моторчик постоянного тока. И скорость его вращения действительно пропорциональна скорости автомобиля (там есть обратная связь на датчике Холла). Поэтому можно принять, что СРЕДНЕЕ значение напряжения на двигателе прямо пропорционально скорости.

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

     

    Теперь вам нужен осциллограф и помощь знакомого железячника.

    Цель: выяснить, какого ВИДА сигнал присутствует на электродвигателе.

    Вариантов всего два - ШИМ с постоянной амплитудой или Аналоговое напряжение.

    Только ответив на этот вопрос, вы сможете двигаться дальше.

     

    Удачи!

  9. Я против обязательных взносов.

    Но с удовольствием проинвестирую по своей инициативе.

    Причем мне удобнее единоразово 50-100 евро.

    Но! Я могу только сделать Вестерн Юнион или Маниграмм,

    для чего мне нужны все подробности. Будет ли это удобно адресату?

  10. В управлении TRI буфером, например. Когда есть разрешение выхода, сигнал на шине равен 0, вот этот 0 и идет на выход.

     

    Поищите по конференции, такая тема уже доволно подробно обсуждалась несколько месяцев назад.

     

    У Ксилинкса есть аппнота на тему симуляции такой шины.

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

     

    Удачи.

  11. проблема такая :

    когда я создаю в ISE 7.1 WebPACK тестбенч, то туда попадают только сигналы из Entity, но мне же нужно посмотреть как себя будут вести внетрение сигналы, описаные в архитектуре, что потом этот тестбенч можно было просимулировать в моделсиме!!!

     

     

    Как бы и правильно.

    Это уже дальше, в Моделсиме, указав соответствующим образом (add wave -r /* )

    загружаем для моделирования ВСЕ сигналы дизайна. Вы будете неприятно удивлены количеством сигналов и низкой скоростью моделирования. - Речь идет о пост-лейаут симуляции, ее иногда называют временнОй. Зато все как на ладони - до последнего логического элемента.

    Можно и не пост-лейаут. Главное - загрузить ВСЕ wave, а не только выводы топ-модуля.

    Обратите внимание на *.do файлы Моделсима. Их можно править руками и руками же запускать (Tools->Run Script или как там его).

     

    Правда, ничего не скажу про WebPACK, я пользую ISE 7.1 полный с МоделсимSE 6.0a.

    Хотя должно работать.

  12. Бывают такие проги. Только это не проги, а набор разных (весьма сложных) средств моделирования, еще и общающихся друг с другом.

    Вот еще один пример.

    Атмел. Среда проектирования для FPSLIC (FPGA + AVR в одном флаконе).

    Симулятором служит Вендор-версия Моделсима, а также некая приблуда тоже от Ментор Графикс. Ее вообще не видно, но она выполняет важную функцию, связывая Моделсим и АВРСтудию, в которой запускается программа для АВР.

    Работать - просто сказка! Все как на ладони - и программа, и процессор, и ФПГА.

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

     

    Для других ФПГА /процессоров таких средств не встречал.

    Ну, видел для АРМов ЖТАГ отладчик. Так там в документации английским по-белому написано: не гарантируется правильная работа с прерываниями. И точно - первое прерывание - и система висит. И нафиг оно такое спрашивается, нужно... Разве что светодиодом помигать. Так это и так получается. А отлаживать хочется сложную программу. И... приехали.

     

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

    Все остальное - только пища для размышлений.

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

     

     

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

     

    Вообще говоря, ФПГА в конце загрузки проверяет контрольную сумму и не запустится, если прошивка побилась при загрузке. Она сообщает об этом одной из ножек (Done?).

  14.  

    Шаг 3

    С программированием на Си знакомы?

    Здесь нужно описать ПРОТОТИПЫ ваших блоков.

     

    Честно говоря не понял - причем тут Си и что имеется в виду под ПРОТОТИПАМИ?

     

    А вот при чем.

     

    component IBUFG

    port ( I : in std_logic;

    O : out std_logic);

    end component;

     

    component BUFG

    port ( I : in std_logic;

    O : out std_logic);

    end component;

     

    Если человек знаком с концепцией прототипа (функции) в Си, то разберется и здесь.

    fpga_dcm.txt

  15. На телесисах было обсуждение. В последней версии 3 кабеля микросхема бластера питается через диод от 3.3В.

     

     

    Именно так. Имел проблему при вычитывании. Как только закоротил тот злополучный диод, сразу стало все отлично. Работаю с ноутбука.

     

    Еще нюанс. Как-то заметил, что опять появились сбои при прошивке флэши, так после часа работы только увидел, что ноутбук работает от аккумулятора - забыл включить кнопку на сетевом фильтре. Как только подал нормальное питание на ноут, все опять заработало.

  16. Я делал эту штуку, все просто :

    = после копирования watchdog reset. Все, испытано немерянное

    количество раз, работает супер, вплоть до докачки при обрыве

    связи в следующем сеансе. А вот и исходники.

     

     

    Спасибо огромное! Именно то, что искал.

  17. Буду очень благодарен за любую помощь :help:

    Проблема такая: в университете курсовой по теории кодирования (сдавать через 20 дней). Кодек Рида-Соломона, ну, не в этом суть, алгоритм готов. По опыту предыдущих лет все реализовыввают на микросхемах.

    Решил попробовать на ПЛИС, за 20 дней думаю только с AHDL смогу немного освоится.

    (уровень: полный новичок)

    Где можно взять учебник какой-нибудь? по интернету нахожу везде только переведнных help, вроде неплохо, но с нуля трудновато.

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

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

     

    Лучший учебник - установить себе АктивХДЛ.

     

    Как отдельные блоки (счетчик, дешифратор и тд) создавать, понятно?

    Так вот, устройство из этих блоков описать очень просто.

     

    Шаг 1.

    Создаем новую Entity. Это и будет верх иерархии.

    Описываем входы и выходы. Так ваше изделие будет общаться с внешним миром.

     

    Шаг 2

    Тут описываем сигналы - это будут проводки, которыми все ваши прежде созданные блоки будут соединены между собой.

     

    Шаг 3

    С программированием на Си знакомы?

    Здесь нужно описать ПРОТОТИПЫ ваших блоков.

     

    Шаг 4

    А вот здесь ВСТАВЛЯЕТЕ ваши блоки причем прямо на них описываете какой вывод блока на какой сигнал (из Шага 2) подключить.

     

    Вот и все! Имеете верхний уровень, содержащий ваши блоки внутри и они уже между собой соединены. Это и есть конец работы.

     

     

    Я готов безвозмездно поотвечать на ваши вопросы. VHDL only (not Verilog)

  18. Извините что влазию :)

    может он имел ввиду мультиплексор на линиях адреса?!? :blink:

     

    Спасибо, что влезли :)

    Ведь очевидно, что без мультиплексора на шине адреса там никак не обошлось?

    А мой оппонент так и не увидел.

     

    А вообще вот история в тему.

     

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

    - Ну и баран этот профессор!

    - А шо такое?

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

     

    Молодому человеку невдомек было, сколько ДЕСЯТКОВ других возможных диагнозов перебрал и отбросил за те двадцать минут профессор.

     

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

     

    "Вот видишь там мультиплексор?

    -Неееа...

    -И я не вижу. Но он там есть!"

     

    Удачи.

  19. Даже затрудняюсь в двух словах задачу описать. Начну сначала.

     

    Запутанно...

    MSP430 не умеет работать с внешний памятью. Ни программ, ни данных - вся память у него внутри шины адресов и данных наружу не выходят. Но ничего не мешает, имхо, загружить куски кода во внутреннее ОЗУ и пускать оттуда. Весь вопрос только в том, сколько ОЗУ в применяемом МК, влезет ли в нее нужное количество кода.

     

    Еще вариант - программировать свою флешь "на лету". Т.е. не в ОЗУ грузить программу, а прямо во флешь. Флешь у MSP430 побита на блоки по 512 байт, каждый блок может быть индивидуально стерт. Таким образом, можно спокойно перекачать данные (программу) из внешнего хранилища во внутреннюю флешь. И не трогать уже запрограммированые блоки.

     

    Спасибо, пища для размышлений уже появилась.

    А насчет

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

  20. Даже затрудняюсь в двух словах задачу описать. Начну сначала.

     

    Для некоторой управляющей микропроцессорной системы требуется следующая функциональность: наличие Serial Port (лучше два). И самое главное, возможность апдейтить софт удаленно (система имеет в составе GSM модуль WISMO).

    Я вижу это дело так: имеется бут-лоадер, который умеет грузить из внешней последовательной флешки бинарный образ в некое ОЗУ (внешнее или внутреннее), находящееся также (или после переключаемое) в области памяти программ. Ну и после успешной загрузки передает туда управление. Быстродействия особого не требуется.

    Для апдейта мы просто записываем новый образ в последовательную флешку (рядом с исходным, Оригинальным образом). А бут-лоадер умееть распознать его наличие и грузит его в ОЗУ, из которого оно и выполняется.

    Запутанно...

     

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

     

    А вот в АВР-ах такой возможности не нашел. Или не заметил? Я смотрел AT90S8515. Он умеет работать с внешней памятью данных, но не программ.

     

    Кто что может посоветовать?

  21. http://www.altera.com/support/examples/vhd...ck-syncram.html Altera не заморачивалась с написанием мультиплексоров :)

     

    Ну-ну...

     

    PROCESS (clock)

    BEGIN

    IF (clock'event AND clock = '1') THEN

    IF (we = '1') THEN

    ram_block(to_integer(unsigned(write_address))) <= data;

    END IF;

     

    q <= ram_block(to_integer(unsigned(read_address)));

    END IF;

    END PROCESS;

     

    Это не скрытый ли мультиплексор там внутри засел?!

     

    А вообще это только обертка для синтезатора. Вы посмотрите в RTL что там на самом деле стоит на шинах адреса. Если что-то сделано неявно, это не значит что оно не сделано.

     

    "Все не так, как кажется..." :-)

  22. Alexandr, спасибо за идею, прийду домой обязательно попробую :)

     

    Gorby, помоему вы слишком котегоричны в высказываниях :))

     

    Попробую оправдаться :glare:

     

    Во первых, помощи попросили Вы, а не я. :help:

    Во вторых, вместо невнятных строчек кода, выдранных неизвестно откуда (никого не хочу обидеть!) , я Вам даю намного более ценное: стратегию.

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

    Вы же видите, как дискуссия плавно перешла совсем в другую плоскость.

    Не пытайтесь написать микропроцессор в одном процессе. (по кр. мере сейчас)

    Один процесс - одна простая сущность.

    Тогда и не придется разруливать один сигнал от двух процессов.

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

     

    А насчет категоричности...

    Вам мама каким тоном говорила не совать пальцы в розетку?

    Вежливо рекомендовала или... :-)

     

    Помните у Жванецкого?

    - "Я остановлю мотор, но пусть он мне сначала докажет..."

     

    Это реакция моториста на команду с мостика "Стоп машина". А катер неумолимо несется к берегу...

     

    Если бы Вы знали ответ на свой вопрос, Вы бы его не задавали. Если же Вы задали его, то это дает мне право на некоторую категоричность: "Делай вот так!". Потому что несколько лет назад я сам прошел все стадии того, как делать НЕ надо.

     

    Удачи.

  23. Начал изучать ВХДЛ. После программирования контроллеров, ПЛИС - другой мир. Мозги переворачиваются :blink: Так что если вопрос сильно детский, ногами не пинать!

     

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

     

    Имеем:

    entity my is

    generic (WIDTH : integer := 8);

     

    port ( CLK : in std_logic;

    Latch: in std_logic;

    en : in std_logic;

    Data : in std_logic_vector (WIDTH - 1 downto 0);

     

    sdata: out std_logic;

    sclk : out std_logic);

    end entity;

     

    Если я загрузил 1 байт в этот девайс, он должен дать WIDTH клоков sclk и остановиться.

     

    Насколько я понимаю, sclk будет в 2 раза медленней чем входной клок, т.к. по правилам разработки моя архитектура должна работать по фронту входных часов, при этом то менять на sdata данные и сбрасывать sclk в 0, то давать sclk = 1 при неизменных данных, что будет являться синхрой для выборки данных потребителем. Как это делать? Конечный автомат? Сколько процессов будет и что каждый из них должен делать?

     

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

     

    По существу так никто и не ответит?

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

     

    Далее. Для описанной вами задачи (сериализатор) применяют обычно один из двух методов.

     

    Метод Номер Один: Сдвиговый регистр. Ищите, читайте, вникайте. Проще пареной репы.

     

     

    Метод Номер Два: Мультиплексор. Специальный счетчик (еще один процесс) перебирает адреса для мультиплексора (тоже процесс) таким образом, что к выходу поочередно подключается каждый бит защелкнутых вами в Шаге Один данных.

     

     

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

     

     

    Удачи.

     

    To All: вот, растет Инженер...

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

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

    Самый правильный вариант как уже предложили - это создать еще один модуль и подцепить к нему остальные.

     

     

    А мультиплексоры уже отменили?

     

    А вообще автору топика следует основательно подучить VHDL либо заплатить тому, кто сделает этот девайс за пару дней.

     

    Я бы посоветовал начать с рисования схемы на бумаге используя базовые примитивы Счетчик, Дешифратор, Логический_элемент_Х и тд. Каждый из них без труда создается на VHDL (настоятельно советую пользоваться Active HDL). Верхний уровень пишите на VHDL сами или (предпочтительнее) создавайте в виде схематики в том же ActiveHDL. Избежите множества ошибок. Плюс отличная тренировка - разглядывать, как ActiveHDL создает базовые элементы.

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