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

Gorby

Свой
  • Постов

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

  • Посещение

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

    4

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


  1. У меня приблизительно такая же задача. Контроллер DDR модуля. Есть модель миксросхемы памяти. Базируясь на ней я сделал модель модуля (DIMM). Моделирую в Моделсиме в timing режиме. Да, долго. Но зато все видно. Перед моделированием из прототипа платы беру примерные длины проводников, приблизительный импеданс (Протел позволяет). И смотрю на форму сигналов и на задержки по проводам в Hyperlynx. Так вот вычисленные там задержки я вбиваю руками в соответствующие сигналы в Тестбенче. Что приятно - результаты симуляции очень хорошо совпадают с поведением реального железа. Единственная проблема - с двунаправленными шинами. Пришлось разделять их на две встречно-параллельные (туда-сюда) и коммутировать руками (стимулами). Очень сомневаюсь, что это можно сделать с функциональной симуляцией.
  2. Вы сначала определитесь с аккумулятором. 20 ампер - это не шутки. По поводу зарядки можете не беспокоиться - зарядная микросхема уже содержит в себе все необходимое, в том числе и ограничитель зарядного тока. Так что даже при ударном токе потребления от АКК , ток от зарядного источника никак не превысит Вами же заданный (как правило 0.5С)
  3. Друзья, хорош стебаться. Электроника, она языконезависимая. Гы. Тем более что вопрос об украинских ресурсах уважаемый коллега задал по-русски. Ширше надо мыслить. И глубже.
  4. В любой работе танцуют от печки, даже если вы - программист. Итак, что имеем? Если автор был точен в описании, то его целевой спидометр представляет собой электромотор. Про сигнал: устройство штатного спидометра такое - элеткромотор, а на нем стрелка. Как реализовано "зависание" (возрастание или понижение понятно, а как он стоит в одном положении, например 100 км/ч?) - не знаю. Сейчас узнаете. Там действительно есть моторчик постоянного тока. И скорость его вращения действительно пропорциональна скорости автомобиля (там есть обратная связь на датчике Холла). Поэтому можно принять, что СРЕДНЕЕ значение напряжения на двигателе прямо пропорционально скорости. Нюанс: стрелка расположена не на валу моторчика (иначе бы она вращалась как бешеная). На валу закреплен маховичок с встроенным магнитом. А стрелка закреплена на отдельном легком цилиндре, который как бы облегает маховик, не имея с ним механического контакта. В общем, как асинхронный двигатель работает эта конструкция. Теперь вам нужен осциллограф и помощь знакомого железячника. Цель: выяснить, какого ВИДА сигнал присутствует на электродвигателе. Вариантов всего два - ШИМ с постоянной амплитудой или Аналоговое напряжение. Только ответив на этот вопрос, вы сможете двигаться дальше. Удачи!
  5. Я против обязательных взносов. Но с удовольствием проинвестирую по своей инициативе. Причем мне удобнее единоразово 50-100 евро. Но! Я могу только сделать Вестерн Юнион или Маниграмм, для чего мне нужны все подробности. Будет ли это удобно адресату?
  6. Поищите по конференции, такая тема уже доволно подробно обсуждалась несколько месяцев назад. У Ксилинкса есть аппнота на тему симуляции такой шины. В общем случае, надо делать две встречно-параллельные шины и рулить их переключением внешним (по отношению к моделируемому модулю) сигналом. Удачи.
  7. Как бы и правильно. Это уже дальше, в Моделсиме, указав соответствующим образом (add wave -r /* ) загружаем для моделирования ВСЕ сигналы дизайна. Вы будете неприятно удивлены количеством сигналов и низкой скоростью моделирования. - Речь идет о пост-лейаут симуляции, ее иногда называют временнОй. Зато все как на ладони - до последнего логического элемента. Можно и не пост-лейаут. Главное - загрузить ВСЕ wave, а не только выводы топ-модуля. Обратите внимание на *.do файлы Моделсима. Их можно править руками и руками же запускать (Tools->Run Script или как там его). Правда, ничего не скажу про WebPACK, я пользую ISE 7.1 полный с МоделсимSE 6.0a. Хотя должно работать.
  8. Бывают такие проги. Только это не проги, а набор разных (весьма сложных) средств моделирования, еще и общающихся друг с другом. Вот еще один пример. Атмел. Среда проектирования для FPSLIC (FPGA + AVR в одном флаконе). Симулятором служит Вендор-версия Моделсима, а также некая приблуда тоже от Ментор Графикс. Ее вообще не видно, но она выполняет важную функцию, связывая Моделсим и АВРСтудию, в которой запускается программа для АВР. Работать - просто сказка! Все как на ладони - и программа, и процессор, и ФПГА. Только часто слетает, сбоит, ненадежно вобщем. Ну и софт от Атмела - это отдельная песня. Крив и глюкав неимоверно. Но это к теме не относится :) Для других ФПГА /процессоров таких средств не встречал. Ну, видел для АРМов ЖТАГ отладчик. Так там в документации английским по-белому написано: не гарантируется правильная работа с прерываниями. И точно - первое прерывание - и система висит. И нафиг оно такое спрашивается, нужно... Разве что светодиодом помигать. Так это и так получается. А отлаживать хочется сложную программу. И... приехали. Вывод: программы и железяки отлаживаются, главным образом у разработчика в голове. Все остальное - только пища для размышлений.
  9. Если исключить ошибки записи во флеш, то остается проверить поведение питания (их часто несколько и существуют требования по скорости нарастания и очередности появления). Также посмотреть схематику - наличие подтяжек и правильность их номиналов - я о сигналах загрузки из флешки. Лучше всего схему и номиналы брать из к-либо кита - там заведомо все рабочее. А вот даташиты и прочие аппноты могут и соврать, а вам - мучиться. Вообще говоря, ФПГА в конце загрузки проверяет контрольную сумму и не запустится, если прошивка побилась при загрузке. Она сообщает об этом одной из ножек (Done?).
  10. Честно говоря не понял - причем тут Си и что имеется в виду под ПРОТОТИПАМИ? А вот при чем. 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
  11. Именно так. Имел проблему при вычитывании. Как только закоротил тот злополучный диод, сразу стало все отлично. Работаю с ноутбука. Еще нюанс. Как-то заметил, что опять появились сбои при прошивке флэши, так после часа работы только увидел, что ноутбук работает от аккумулятора - забыл включить кнопку на сетевом фильтре. Как только подал нормальное питание на ноут, все опять заработало.
  12. Спасибо огромное! Именно то, что искал.
  13. Лучший учебник - установить себе АктивХДЛ. Как отдельные блоки (счетчик, дешифратор и тд) создавать, понятно? Так вот, устройство из этих блоков описать очень просто. Шаг 1. Создаем новую Entity. Это и будет верх иерархии. Описываем входы и выходы. Так ваше изделие будет общаться с внешним миром. Шаг 2 Тут описываем сигналы - это будут проводки, которыми все ваши прежде созданные блоки будут соединены между собой. Шаг 3 С программированием на Си знакомы? Здесь нужно описать ПРОТОТИПЫ ваших блоков. Шаг 4 А вот здесь ВСТАВЛЯЕТЕ ваши блоки причем прямо на них описываете какой вывод блока на какой сигнал (из Шага 2) подключить. Вот и все! Имеете верхний уровень, содержащий ваши блоки внутри и они уже между собой соединены. Это и есть конец работы. Я готов безвозмездно поотвечать на ваши вопросы. VHDL only (not Verilog)
  14. Спасибо, что влезли :) Ведь очевидно, что без мультиплексора на шине адреса там никак не обошлось? А мой оппонент так и не увидел. А вообще вот история в тему. Больница. Обход. Пациент с болью в животе. Профессор и группа студентов-третьекурсников. Старый профессор уже минут двадцать сидит возле пациента, то пощупает ему живот, то еще что-то сделает. Наконец поднимается и говорит: аппендицит. На заднем плане один студент другому : - Ну и баран этот профессор! - А шо такое? - Так я за десять секунд тот же диагноз поставил : симптом Щеткина-Блюмберга - положительный, значит и коню понятно, что аппендицит. Молодому человеку невдомек было, сколько ДЕСЯТКОВ других возможных диагнозов перебрал и отбросил за те двадцать минут профессор. to mag: ребята, честное слово, я помочь хочу таким как вы. Но блин, вы столько еще не знаете и главное, не хотите знать, что просто волосы дыбом. "Вот видишь там мультиплексор? -Неееа... -И я не вижу. Но он там есть!" Удачи.
  15. MSP430 не умеет работать с внешний памятью. Ни программ, ни данных - вся память у него внутри шины адресов и данных наружу не выходят. Но ничего не мешает, имхо, загружить куски кода во внутреннее ОЗУ и пускать оттуда. Весь вопрос только в том, сколько ОЗУ в применяемом МК, влезет ли в нее нужное количество кода. Еще вариант - программировать свою флешь "на лету". Т.е. не в ОЗУ грузить программу, а прямо во флешь. Флешь у MSP430 побита на блоки по 512 байт, каждый блок может быть индивидуально стерт. Таким образом, можно спокойно перекачать данные (программу) из внешнего хранилища во внутреннюю флешь. И не трогать уже запрограммированые блоки. Спасибо, пища для размышлений уже появилась. А насчет "Но ничего не мешает, имхо, загружить куски кода во внутреннее ОЗУ и пускать оттуда. " это точно? Ибо далеко не каждый проц умеет выполнять команды из ОЗУ данных.
  16. Даже затрудняюсь в двух словах задачу описать. Начну сначала. Для некоторой управляющей микропроцессорной системы требуется следующая функциональность: наличие Serial Port (лучше два). И самое главное, возможность апдейтить софт удаленно (система имеет в составе GSM модуль WISMO). Я вижу это дело так: имеется бут-лоадер, который умеет грузить из внешней последовательной флешки бинарный образ в некое ОЗУ (внешнее или внутреннее), находящееся также (или после переключаемое) в области памяти программ. Ну и после успешной загрузки передает туда управление. Быстродействия особого не требуется. Для апдейта мы просто записываем новый образ в последовательную флешку (рядом с исходным, Оригинальным образом). А бут-лоадер умееть распознать его наличие и грузит его в ОЗУ, из которого оно и выполняется. Запутанно... Например, достаточно подходящим выглядит обычный AT89S53 от Атмел. То есть умеет исполнять код из внешней памяти. И писать туда может как в данные. А вот в АВР-ах такой возможности не нашел. Или не заметил? Я смотрел AT90S8515. Он умеет работать с внешней памятью данных, но не программ. Кто что может посоветовать?
  17. Ну-ну... 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 что там на самом деле стоит на шинах адреса. Если что-то сделано неявно, это не значит что оно не сделано. "Все не так, как кажется..." :-)
  18. Попробую оправдаться :glare: Во первых, помощи попросили Вы, а не я. Во вторых, вместо невнятных строчек кода, выдранных неизвестно откуда (никого не хочу обидеть!) , я Вам даю намного более ценное: стратегию. Слишком часто вижу, как люди уходят с головой в мелочи и не видят глобальных вещей. Вы же видите, как дискуссия плавно перешла совсем в другую плоскость. Не пытайтесь написать микропроцессор в одном процессе. (по кр. мере сейчас) Один процесс - одна простая сущность. Тогда и не придется разруливать один сигнал от двух процессов. Потому как есть третий процесс - а уж он может быть мультиплексором или чем угодно. А насчет категоричности... Вам мама каким тоном говорила не совать пальцы в розетку? Вежливо рекомендовала или... :-) Помните у Жванецкого? - "Я остановлю мотор, но пусть он мне сначала докажет..." Это реакция моториста на команду с мостика "Стоп машина". А катер неумолимо несется к берегу... Если бы Вы знали ответ на свой вопрос, Вы бы его не задавали. Если же Вы задали его, то это дает мне право на некоторую категоричность: "Делай вот так!". Потому что несколько лет назад я сам прошел все стадии того, как делать НЕ надо. Удачи.
  19. По существу так никто и не ответит? Шаг номер Один: для начала напишите процесс, в котором будут защелкиваться ваши входные данные. Далее. Для описанной вами задачи (сериализатор) применяют обычно один из двух методов. Метод Номер Один: Сдвиговый регистр. Ищите, читайте, вникайте. Проще пареной репы. Метод Номер Два: Мультиплексор. Специальный счетчик (еще один процесс) перебирает адреса для мультиплексора (тоже процесс) таким образом, что к выходу поочередно подключается каждый бит защелкнутых вами в Шаге Один данных. Вся сопутствующая логика (старт, стоп, управление счетчиком и тд) делается после, с учетом необходимых лично вам условий. Удачи. To All: вот, растет Инженер...
  20. Ну почему сразу неверно? Можно собрать все модули в один и уж тогда легко менять требуемый сигнал. Но читабельность проекта снизится. Самый правильный вариант как уже предложили - это создать еще один модуль и подцепить к нему остальные. А мультиплексоры уже отменили? А вообще автору топика следует основательно подучить VHDL либо заплатить тому, кто сделает этот девайс за пару дней. Я бы посоветовал начать с рисования схемы на бумаге используя базовые примитивы Счетчик, Дешифратор, Логический_элемент_Х и тд. Каждый из них без труда создается на VHDL (настоятельно советую пользоваться Active HDL). Верхний уровень пишите на VHDL сами или (предпочтительнее) создавайте в виде схематики в том же ActiveHDL. Избежите множества ошибок. Плюс отличная тренировка - разглядывать, как ActiveHDL создает базовые элементы.
  21. Гы. Так вот зачем товарищь обсуждение завел.... Он задарма получил консультации, на которые ему выше предлагали потратить 1K$. Подметки на ходу рвет. :cranky:
  22. Люди добрые, чего вы паритесь?! Ставим ActiveHDL и имеем щастье. Там есть превосходный графический редактор стейт-машин (ага, с зелеными кружочками и стрелочками). А потом он генерирует VHDL - исходник для нарисованной машины. Причем способ кодирования можно задать от ван-хот до Грэя. Внимательно изучаем полученный код - он 100% рабочий. А вот уже через пол-года начнем и свои машины руками писать. Самое смешное, что они тоже начнут работать... А при отладке-то!!!! Оно показывает на диаграмме с зелеными кружочками-состояниями текущее активное состояние!!! Всем рекомендую. А то устроили, понимаешь, балаган... А потом ракеты до Марса не...
  23. Абсолютно согласен , что измерения в данном случае - самая проблемная часть. Реально ширина фронта сигнала не зависит от частоты импульсов и может составлят единицы наносекунд. Вот только увидеть ее Вам будет очень непросто. Но я о другом: мне подозрителен способ формирования выходного сигнала. Я бы пропустил его через Д-триггер. А так, похоже, это выход цифрового компаратора (неплохо бы RTL посмотреть и на кристалле). Так что как раз может оно и быть - при повышении частоты разъезжается фронт на короткие глитчи, а у автора осциллограф честно интегрирует и показывает 30 нс фронт (!!!)
  24. Если у вас самоцель - разработка собственного САТА - хоста, то вперед и с песней. Он очень сложен как логически так и аппаратно. Быстрее чем за год - два с кучей потраченных денег на анализаторы протокола и пробные платы не выйдет. Если же ваша задача - использовать накопитель большой емкости (HDD) - тогда другое дело. Я бы посоветовал ОБЫЧНЫЙ АТА интерфейс. Со стороны хоста (что вам и надо) до безобразия прост. Если хочется ультра-АТА, то посложнее но тоже можно сделать. В Инете есть примеры. Если уж очень хочется иметь именно САТА HDD, то можно взять один из чипов-трансляторов SATA->ATA (Silicon Image Sil3611, Sil3811 например). Вы избежите большого геморроя с САТА.
  25. Немножко не в тему, но тоже актуально. Точно с такой же проблемой столкнулся при попытках быстрых пересылок данных на порт ввода-вывода на Xilinx Virtex 2 pro c PowerPC процессором. Никакими ухищрениями (использование разных корок ввода-вывода и тд) мне не удалось поднять частоту генерации меандра выше 2 МГц. Одно только радует, что шина-то 32 битная, то есть 4 байта за раз можно послать. Пришлось отказаться от идеи напрямую процессором слать данные. - нужно было 100 мегабайт в сек. Стыдно, 32-битный проц на частоте 100 МГц способен через ввод-вывод прокачать только 8 мег в сек, а их же еще где-то брать надо, обрабатывать как-то. Вот и плюнул на эти внутренние процессоры, поставил внешний ARM и не парюсь. А данными Спартан-3 занимается, решение куда дешевле Виртекса -Про.
×
×
  • Создать...