Мелкие вопросы по МК и ПЛИС.
- Сообщения: 40
- Зарегистрирован: Вт янв 18, 2011 08:15:32
Приветсвую. Ещё вопрос по ПЛИСам, а именно VHDL. До этого верхний уровень проекта разрабатывал в виде Схематика, а модули как VHDL-module. Теперь хочу попробовать полностью весь проект описать как VHDL-код. Но не знаю от чего оттолкнуться. Может есть где обучающая статья на счёт этого? Или на каком форуме это обсуждалось? А может у кого есть простейший проект подходящий под мой вопрос? Интересует именно организация структуры проекта. Конкретно: как соединять пины разных модулей(VHDL-module)? Как в проекте создавать несколько экземпляров одного модуля? Спасибо.
- Реклама
Мы сейчас тусуемся в теме 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
Одним куском - т.е. все функциональные блоки описаны в одном файле? Я считаю что это не очень верный подход. Я бы хотел более-менее объектно-ориентированным методом работать.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Ruslan-maniak, воспользуйтесь поиском по этому разделу с моим ником - выкладывал уже нечто подобное.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Дык структура примерно такова: создаётся корневой модуль в отдельном файле (root, например) и в нём подключаем другие модули, которые могут быть описаны в других файлах, ну и описываем логику между ними. Входы и выходы описываем те, которые должны быть выведены на полюса микросхемы. После этого командуем "ФАС!!!" синтезатору, указывая пальцем на корневой (root) модуль. Он там подхватит все подключаемые модули и что нибудь да засинтезирует, а компоновщик всё разместит на микросхеме.
- Реклама
avr флаги для чего они? я что то не могу понять как и для чего оно, понял что это сдвоенные регистры их еще называют указателями я правильно понимаю? в чем их фишка?
Флагом называют выход триггера, состояние которого можно проверить в некоем условии.
Флаг прерывания - частный случай такого триггера, выход которого используют для АППАРАТНОГО требования перехода программы по ВЕКТОРУ (начальному адресу обработчика) прерывания.
Флаг всегда одноразряден. Это БИТ.
Многоразрядный регистр условий называется СЕМАФОРОМ.
Сдвоенные регистры используют как УКАЗАТЕЛЬ на память. Т.е. в этой паре записан 16-разрядный АДРЕС по которому в памяти находятся данные. Такие указатели используют для КОСВЕННОЙ адресации данных. Косвенная адресация позволяет ВЫЧИСЛЯТЬ адрес. В таком случае в команде указан не сам адрес покоторому находится операнд, а РЕГИСТР (пара регистров) в котором находится АДРЕС операнда. При прямой адресации, когда адрес указан в самой команде, а также непосредственной, когда сами данные располагаются внутри команды для машин гарвардской архитектуры вычислять его невозможно.
Флаг прерывания - частный случай такого триггера, выход которого используют для АППАРАТНОГО требования перехода программы по ВЕКТОРУ (начальному адресу обработчика) прерывания.
Флаг всегда одноразряден. Это БИТ.
Многоразрядный регистр условий называется СЕМАФОРОМ.
Сдвоенные регистры используют как УКАЗАТЕЛЬ на память. Т.е. в этой паре записан 16-разрядный АДРЕС по которому в памяти находятся данные. Такие указатели используют для КОСВЕННОЙ адресации данных. Косвенная адресация позволяет ВЫЧИСЛЯТЬ адрес. В таком случае в команде указан не сам адрес покоторому находится операнд, а РЕГИСТР (пара регистров) в котором находится АДРЕС операнда. При прямой адресации, когда адрес указан в самой команде, а также непосредственной, когда сами данные располагаются внутри команды для машин гарвардской архитектуры вычислять его невозможно.
Короче - если загорелась лампа "Бак пустой", т.е. выставился флаг, то бросай все и езжай на АЗС.
Это флаг прерывания. На АЗС можешь запрвиться, а можешь и не заправиться. Есть также флаги по результату действий. Кинул окурок на заднее сидение и проверяй, надо доставать огнетушитель или нет. 
Docendo discimus
а как их применить на деле в АВР как я понял их три? и почему они xyz?
Это не флаги, а 16-битные регистры. Применяются там, где нельзя обойтись обычным, 8-битным. Например для задания адресов ОЗУ или Flash.
ну я ваще тупень) значит флаом может быть прерывание из вне нажатие кнопки или напряжение поднялось до заданного уровня и как говорят поднят флаг?
Флаг это флаг, прерывание это прерывание. Две совершенно разные вещи. Флаг это указатель на то, что произошло нечто. Прерывание это процесс окончания(вр'еменного) выполнения программы и переход в другое место. После обработки другого места возвращаемся туда, откуда ушли. Или не возвращаемся.
Docendo discimus
Возьми любой регистр, придумай любой бит в нём. По какому-то событию ты его будешь ставить, по другому - сбрасывать. И самое главное - анализировать. Этот бит станет называться флагом в терминах программирования.
Вот и всё. Грубо говоря флаг - это однобитовая переменная.
Вот и всё. Грубо говоря флаг - это однобитовая переменная.
mastech
16-битные регистры X, Y и Z (состоящие из двух 8-битных) используются для чтения/записи по указанному в них адресу (st, ld, std, ldd). Типа косвенная адресация.
Еще регистр Z используется для перехода по указанному в них адресу (ijmp), вызову подпрограмм по указанному в них адресу (icall), чтения констант из памяти программ (lpm), записи в память программ (stm).
Еще с ними можно делать некоторые действия, например, прибавить или вычесть небольшую константу (adiw, sbiw).
Регистр флагов есть, и необходимо про него знать, но это совсем другое.
16-битные регистры X, Y и Z (состоящие из двух 8-битных) используются для чтения/записи по указанному в них адресу (st, ld, std, ldd). Типа косвенная адресация.
Еще регистр Z используется для перехода по указанному в них адресу (ijmp), вызову подпрограмм по указанному в них адресу (icall), чтения констант из памяти программ (lpm), записи в память программ (stm).
Еще с ними можно делать некоторые действия, например, прибавить или вычесть небольшую константу (adiw, sbiw).
Регистр флагов есть, и необходимо про него знать, но это совсем другое.
Это называется ОТНОСИТЕЛЬНАЯ (базовая) адресация.SmarTrunk писал(а):mastech
Еще с ними можно делать некоторые действия, например, прибавить или вычесть небольшую константу (adiw, sbiw).
Необходима для табличных обработок.
Работа с константами к адресации никак не относится, хоть и очень часто используется.
Работа с короткими константами в применении к базовым регистрам косвенной адресации для того и создана, чтобы компилятор Си генерировал компактный и изящный код при относительной адресации внутри таблиц. Это и есть Си-ориентированная архитектура машины.
Набор команд не высасывают из пальца. Его ЗАТАЧИВАЮТ под определенное использование.
Набор команд не высасывают из пальца. Его ЗАТАЧИВАЮТ под определенное использование.
А, ну если так...Это и есть Си-ориентированная архитектура машины.
Мысли вслух по прочтении последних постов: Мда... Это вам не в автобусе ездить. 
Docendo discimus
Всем привет ! Помогите, пожалуйста, разобраться с настройкой генератора и PLL. МК Stellaris LM3S9B96. Нашел функцию по настройке частоты. Сама функция в приложении.
Нашел пример, где юзают этот мк на частоте в 50 МГц. Мне надо 80 Мгц при кварце 16 МГц.
Код:
Как тут вообще настройка идет? Почему юзают делитель, при том, что надо умножать? И откуда тут 50 МГц?
Нашел пример, где юзают этот мк на частоте в 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);- Вложения
-
- OSC.C
- Функция
- (9.48 КБ) 130 скачиваний
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн



