Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

Сообщение Ruslan-maniak »

Приветсвую. Ещё вопрос по ПЛИСам, а именно VHDL. До этого верхний уровень проекта разрабатывал в виде Схематика, а модули как VHDL-module. Теперь хочу попробовать полностью весь проект описать как VHDL-код. Но не знаю от чего оттолкнуться. Может есть где обучающая статья на счёт этого? Или на каком форуме это обсуждалось? А может у кого есть простейший проект подходящий под мой вопрос? Интересует именно организация структуры проекта. Конкретно: как соединять пины разных модулей(VHDL-module)? Как в проекте создавать несколько экземпляров одного модуля? Спасибо.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Мы сейчас тусуемся в теме http://radiokot.ru/forum/viewtopic.php?f=20&t=64552. А до этого были еще - поиск найдёт. Я раньше тоже так делал. А вот на днях, свою одну из схем просто взял и написал одним куском. Это не сложно. Достаточно просто поименовать соединительные цепи. А вот тот кусок, что повторяется два раза, я сделал отдельным модулем и присоединил как компонент.

компонент описывается:

Код: Выделить всё

    COMPONENT Migalka
    PORT(
         Knopka : IN  std_logic;
         CLK : IN  std_logic;
         Led : INOUT  std_logic
        );
    END COMPONENT;
А его подключение:

Код: Выделить всё

   uut: Migalka PORT MAP (
          Knopka =>net1,
          CLK => net2,
          Led => net3
        );
И так столько раз, сколько компонентов. Это одно из самых простых решений. Наверняка есть и более изящные, но это уже к гуру.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

Сообщение Ruslan-maniak »

Одним куском - т.е. все функциональные блоки описаны в одном файле? Я считаю что это не очень верный подход. Я бы хотел более-менее объектно-ориентированным методом работать.
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Ruslan-maniak, воспользуйтесь поиском по этому разделу с моим ником - выкладывал уже нечто подобное.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула

Сообщение IfoR »

Дык структура примерно такова: создаётся корневой модуль в отдельном файле (root, например) и в нём подключаем другие модули, которые могут быть описаны в других файлах, ну и описываем логику между ними. Входы и выходы описываем те, которые должны быть выведены на полюса микросхемы. После этого командуем "ФАС!!!" синтезатору, указывая пальцем на корневой (root) модуль. Он там подхватит все подключаемые модули и что нибудь да засинтезирует, а компоновщик всё разместит на микросхеме.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

avr флаги для чего они? я что то не могу понять как и для чего оно, понял что это сдвоенные регистры их еще называют указателями я правильно понимаю? в чем их фишка?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25418
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Флагом называют выход триггера, состояние которого можно проверить в некоем условии.
Флаг прерывания - частный случай такого триггера, выход которого используют для АППАРАТНОГО требования перехода программы по ВЕКТОРУ (начальному адресу обработчика) прерывания.
Флаг всегда одноразряден. Это БИТ.
Многоразрядный регистр условий называется СЕМАФОРОМ.

Сдвоенные регистры используют как УКАЗАТЕЛЬ на память. Т.е. в этой паре записан 16-разрядный АДРЕС по которому в памяти находятся данные. Такие указатели используют для КОСВЕННОЙ адресации данных. Косвенная адресация позволяет ВЫЧИСЛЯТЬ адрес. В таком случае в команде указан не сам адрес покоторому находится операнд, а РЕГИСТР (пара регистров) в котором находится АДРЕС операнда. При прямой адресации, когда адрес указан в самой команде, а также непосредственной, когда сами данные располагаются внутри команды для машин гарвардской архитектуры вычислять его невозможно.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Короче - если загорелась лампа "Бак пустой", т.е. выставился флаг, то бросай все и езжай на АЗС. :) Это флаг прерывания. На АЗС можешь запрвиться, а можешь и не заправиться. Есть также флаги по результату действий. Кинул окурок на заднее сидение и проверяй, надо доставать огнетушитель или нет. :))
Docendo discimus
Контактная информация:
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

а как их применить на деле в АВР как я понял их три? и почему они xyz?
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Это не флаги, а 16-битные регистры. Применяются там, где нельзя обойтись обычным, 8-битным. Например для задания адресов ОЗУ или Flash.
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

Сообщение mastech »

ну я ваще тупень) значит флаом может быть прерывание из вне нажатие кнопки или напряжение поднялось до заданного уровня и как говорят поднят флаг?
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Флаг это флаг, прерывание это прерывание. Две совершенно разные вещи. Флаг это указатель на то, что произошло нечто. Прерывание это процесс окончания(вр'еменного) выполнения программы и переход в другое место. После обработки другого места возвращаемся туда, откуда ушли. Или не возвращаемся.
Docendo discimus
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Возьми любой регистр, придумай любой бит в нём. По какому-то событию ты его будешь ставить, по другому - сбрасывать. И самое главное - анализировать. Этот бит станет называться флагом в терминах программирования.
Вот и всё. Грубо говоря флаг - это однобитовая переменная.
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

mastech
16-битные регистры X, Y и Z (состоящие из двух 8-битных) используются для чтения/записи по указанному в них адресу (st, ld, std, ldd). Типа косвенная адресация.

Еще регистр Z используется для перехода по указанному в них адресу (ijmp), вызову подпрограмм по указанному в них адресу (icall), чтения констант из памяти программ (lpm), записи в память программ (stm).

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

Регистр флагов есть, и необходимо про него знать, но это совсем другое.
Друг Кота
Аватара пользователя
Сообщения: 25418
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

SmarTrunk писал(а):mastech
Еще с ними можно делать некоторые действия, например, прибавить или вычесть небольшую константу (adiw, sbiw).
Это называется ОТНОСИТЕЛЬНАЯ (базовая) адресация.
Необходима для табличных обработок.
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Работа с константами к адресации никак не относится, хоть и очень часто используется.
Друг Кота
Аватара пользователя
Сообщения: 25418
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Работа с короткими константами в применении к базовым регистрам косвенной адресации для того и создана, чтобы компилятор Си генерировал компактный и изящный код при относительной адресации внутри таблиц. Это и есть Си-ориентированная архитектура машины.
Набор команд не высасывают из пальца. Его ЗАТАЧИВАЮТ под определенное использование.
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Это и есть Си-ориентированная архитектура машины.
А, ну если так...
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Мысли вслух по прочтении последних постов: Мда... Это вам не в автобусе ездить. :)
Docendo discimus
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск

Сообщение Chip115 »

Всем привет ! Помогите, пожалуйста, разобраться с настройкой генератора и PLL. МК Stellaris LM3S9B96. Нашел функцию по настройке частоты. Сама функция в приложении.


Нашел пример, где юзают этот мк на частоте в 50 МГц. Мне надо 80 Мгц при кварце 16 МГц.
Код:

Код: Выделить всё

  // Set the clocking to run from the PLL at 50MHz
    //
    SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
Как тут вообще настройка идет? Почему юзают делитель, при том, что надо умножать? И откуда тут 50 МГц?
Вложения
OSC.C
Функция
(9.48 КБ) 130 скачиваний
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»