Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 17.08.2010, 11:43  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.2. ITFMOD – MDF-файл, определяющий параметры цифровой логики. Пример модели К176ЛА7.
Когда мы рассматривали в предыдущем параграфе свойства цифровых примитивов, вы, наверное, обратили внимание, что временные параметры примитивов по умолчанию равны нулям, т.е. сигналы обрабатываются без каких либо задержек на прохождение. Но в реальности все обстоит гораздо сложнее. Есть достаточно медленная КМОП логика, есть более быстрая ТТЛ, есть и сверхскоростная ЭСЛ серия. Мало того, существуют и различные модификации, например ТТЛ Шотки и пр. Как упростить задание типовых свойств, характерных для конкретной серии? Ведь не прописывать же каждому элементу все эти задержки, да еще на тарабарской «фене» Протеуса. Разработчики программы придумали хитрый ход. Они сгруппировали характерные свойства для каждой конкретной серии логики и поместили их в файл ITFMOD.MDF (нетрудно предположить, что название образовано от английского Interface Models – интерфейс моделей). А сам этот файл поместили в папку MODELS Протеуса. Давайте откроем его в текстовом редакторе и посмотрим на содержимое. Я не буду приводить его полностью, а только рассмотрю принцип его построения. Шапка, как и в большинстве MDF и она нам неинтересна. Далее следует единственный раздел *MODELDEFS,18 содержащий восемнадцать строк, в каждой из которых, начинающейся с названия типа, после двоеточия перечислены характерные параметры данной серии. И тут не только обычная логика, а замешались еще и микроконтроллеры.
Рассмотрим для примера первую строчку CMOS, описывающую КМОП логику:
CMOS : RHI=100,RLO=100,TRISE=1u,TFALL=1u,V+=VDD,V-=VSS
Знакомые нам по предыдущему параграфу параметры, причем характерные для цифро-аналогового преобразования. Два последних параметра V+ и V- указывают, к каким глобальным источникам питания привязаны аналоговые свойства входов.
И так мы можем просмотреть свойства в каждой строчке, характерные для каждой конкретной серии. Более того, поскольку файл ITFMOD является обычным текстовым, мы можем даже вносить в него исправления и добавления. Только не торопитесь на радостях сразу же «топтать его ногами», чуть позже мы этим займемся все вместе и добавим в него нашу старую, добрую тихоходную серию К176.
А пока рассмотрим – как же используются свойства серии из этого файла на практике. Если вы откроете свойства любого цифрового компонента определенной серии и поставите галочку Edit all properties as text, то обнаружите в окне параметров строчку, описывающую интерфейс модели вида: {ITFMOD=xxx} (Рис. 24). Вот она то и привязывает модель к определенному семейству (строчке в файле ITFMOD.MDF) цифровой логики. Прописывается это свойство при создании модели на третьей вкладке Make Device (через кнопку New находим его в списке стандартных).
Более того, если вы создадите цифровую модель и не привяжете ее ни к одной из существующего там типа, ISIS будет «громко ругаться» при запуске симуляции. Проверим это на практике. Создадим учебную модель элемента 2И-НЕ 176-й серии в стиле времен СССР. Для начала нарисуем графическое изображение и сохраним его в USRDVC под «фамилией» 176LA7. Вообще, можно было бы использовать ее аналог – 4011, но мы поучимся творить свое. Я позволил себе при создании парочку вольностей. На первой вкладке создания компонента ввел Prefix DD, как принято, было в СССР и сейчас в России и на последней вкладке в описании использовал русский язык (Рис. 25).
Далее пришпиливаем к ней дочерний лист, как делали ранее и на нем устанавливаем один единственный элемент NAND2 из Modelling Primitives =› Digital (Bufer&Gates), ну и терминалы A, B, Y для связи с родительским листом. Сразу отвечу на законный вопрос – а почему не D0, D1 и Q – как я описывал ранее? Да потому, что так принято обозначать в MIXED моделях АЦП и ЦАП. Вот и нужно совпадение, чтобы можно было использовать их аналоговые свойства. На рисунке 26 прототип модели и созданная графическая модель, а на рисунке 27 – содержание дочернего листа.
Я протестировал модель на достаточно высокой частоте – 20МГц, чтобы показать, что пока фронты импульсов практически минимальны, и обусловлены быстродействием самого симулятора и моего компьютера (Рис. 28 ). Тестирование на таких частотах возможно уже только с использованием графиков. Обратите внимание, что для тестирования я применил аналоговые графики, а не цифровые. На цифровых графиках мы вообще этой затяжки фронтов не увидим. Затяжка видна уже на выходе генератора, а на выходе логического элемента она просто проинвертирована. Ступеньки также обусловлены уже быстродействием самой программы. Проявляются уже шаги итерации симулятора, – это ответ тем, кто симулирует суперскоростные ШИМ и удивляется, что там видны ступеньки. Ведь пока мы используем голый цифровой примитив, т.е. все TDxxDQ по умолчанию нулевые. Этот пример во вложении ITF_MOD папка LA7_with_child.
Ну а где же обещанные грязные ругательства симулятора? Терпение, ведь мы еще не создали модель до конца. Все же давайте рассмотрим наш прототип 4011 и его особенности подробней. Во-первых, в свойствах компонента присутствует параметр Model Timing Voltage (Рис. 29 ). Если мы через Make Device дойдем до третьей вкладки, то увидим, что этому параметру соответствует свойство VOLTAGE, и оно может принимать три значения – 5, 10 и 15 Вольт (Рис. 30).
Полюбопытствуем, для чего это сделано? Придется добраться до файла MDF этого компонента и поискать ответ там. Смотрим в свойствах, поставив галку Edit all Properties as text, или на той же третьей вкладке Make Device в свойстве MODFILE и выясняем, что файл MDF носит название 40NAND2. Далее обнаруживаем его в MODELS в библиотеке DIGITAL.LML и, скопировав ее куда-нибудь, извлекаем с помощью GETMDF.EXE. Библиотека очень большая – 962 цифровых компонента. Для ленивых пользователей я поместил файл 40NAND2.MDF во вложение. Ниже его содержание с «урезанной» шапкой, чтобы не занимать место:
Код:
*PROPERTIES,1    
TGQ=?

*MAPPINGS,6,VALUE+VOLTAGE
4011+5V : SCHMITT=[NULL],  TDHLDQ=55n, TDLHDQ=55n
4011+10V : SCHMITT=[NULL],  TDHLDQ=25n, TDLHDQ=25n
4011+15V : SCHMITT=[NULL],  TDHLDQ=20n, TDLHDQ=20n
4093+5V : SCHMITT="D0,D1", TDHLDQ=90n, TDLHDQ=85n 
4093+10V : SCHMITT="D0,D1", TDHLDQ=40n, TDLHDQ=40n
4093+15V : SCHMITT="D0,D1", TDHLDQ=30n, TDLHDQ=30n

*MODELDEFS,0    

*PARTLIST,1    
U1,NAND_2,NAND_2,PRIMITIVE=DIGITAL,SCHMITT=‹SCHMITT›,TDHLDQ=‹TDHLDQ›,TDLHDQ=‹TDLHDQ›,TGQ=‹TGQ›

*NETLIST,3    
Y,2
Y,OT
U1,OP,Q

A,2
A,IT
U1,IP,D0

B,2
B,IT
U1,IP,D1

*GATES,0
В первую очередь нас интересуют верхние разделы. В *PROPERTIES,1 параметру TGQ присвоен знак вопроса, т.е. значение или явно указанное пользователем или то, что по умолчанию. А вот дальше интересный раздел *MAPPINGS, с которым мы еще не сталкивались. Разберем – что там есть. Ну, то, что 6 строк – это сразу понятно, а что означает VALUE+VOLTAGE? Вот тут еще один пример универсальности моделирования в Протеусе – в одном MDF заложены сразу две модели. VALUE – это то, что прописано в окне Component Value (опять смотрим на Рис. 29), ну а VOLTAGE мы только что рассмотрели. Так вот в MAPPINGS (дословно -отборах, отображениях, а по сути своей таблице соответствий) и осуществляется подстановка параметров в зависимости от сочетания (не зря стоит знак плюс) типа компонента и заданного вольтажа. Все шесть возможных сочетаний и прописаны ниже.
Я не зря привел пример именно этого компонента. Обратите внимание, что здесь используется описанное в предыдущем параграфе SCHMITT. Для обычного 2И-НЕ 4011 оно отключено [NULL] для 2И-НЕ с триггерами Шмитта 4093 задействовано по входам «D0,D1». А на триггерах Шмитта RC-генераторы в Протеусе работают на ура! Делайте выводы…
Теперь остановимся на задержках фронтов. Числовые значения прописаны именно в MAPPINGS и зависят от того, что мы (подчеркиваю – мы, а не сам симулятор) выберем в окне Model Timing Voltage. По умолчанию используются максимальные задержки, соответствующие приведенным в справочных данных для напряжения питания 5 Вольт. Надеюсь, теперь вам стало понятно – как использовать этот параметр на практике. Ну а мы далее рассмотрим – как применить это к нашей модели.
В разделе *PARTLIST сиротливо притулился один элемент NAND_2 – все, как и у нас на дочернем листе 176LA7. Вот только в этой строке прописаны еще и параметры не с конкретными значениями, а находящимися в угловых скобках, т.е. переменными. И подставляются они туда симулятором как раз из MAPPINGS. Вот он – момент истины! Но «не все так просто в доме…» Лабцентра. Помните чудесное превращение скрипта *DEFINE на дочернем листа в *PROPERTIES файла MDF при компиляции идеального ОУ. Тут нас ожидает такой же сюрприз. Скрипт на дочернем листе для таблицы соответствий должен начинаться с оператора MAP ON. Поскольку это оператор, как и DEFINE, перед ним должна стоять звездочка. Заходим на дочерний лист нашей модели 176LA7 и в свойствах NAND_2 прописываем аналогично тому, что мы видели в MDF для 4011 задержки и свойство SCHMITT. Проще всего это сделать все же руками в окне Advanced Properties, поставив (да можно и не ставить) флажок Edit all Properties as text (Рис. 31).
Совет: Обратите внимание на фигурные скобки в верхней строчке на Рис. 31 – свойство Hidden (скрытое), т.е. не показывается под элементом на месте серого ‹TEXT› в проекте. SCHMITT и задержки не имеют фигурных скобок по краям, значит будут видимыми. Когда свойств и компонентов на листе много, это начинает мешать. Заключите их в фигурные скобки, и они скроются с глаз долой. Надо, чтоб опять стали видимыми – скобки убираем.
Еще на дочернем листе необходимо поместить скрипт следующего содержания:
Код:
*DEFINE
TGQ=?
*MAP ON VOLTAGE
10V : SCHMITT=[NULL],  TDHLDQ=250n, TDLHDQ=250n
5V : SCHMITT=[NULL],  TDHLDQ=400n, TDLHDQ=400n
Предвижу возникающие вопросы и поясняю. Ну, что во что превратится при компиляции – ясно. Свойство Шмитта я сохранил на будущее, плюс к тому его необходимо будет включать, если мы захотим сделать генератор на нашей модели. Я не стал включать в таблицу стандартное для 176-й серии питание 9V, хотя справочные задержки взяты именно для него. Данная серия прекрасно работает и при 12V, поэтому я и поставил 10 – просто округлил. Ну и для питания 5V задержки фронтов явно увеличатся, это неоспоримый факт. Когда-то мне попадалось, что около 400 наносек, но сейчас не помню, где это было – поставил по памяти. Ну и поскольку у нас одна серия и один компонент, то необходимость в VALUE отпала, и оно в MAP ON не фигурирует.
Будем последовательными, вернемся на главный лист и снова запустим Make Device, чтобы добавить на третьей вкладке свойство VOLTAGE (Рис. 32). Конечно же, его нет в стандартных, т.е. добавляем через New =› Blank Item.
Прогоняем тестирование компонента. Теперь уже о 20 МГц нечего и мечтать, даже на 1 МГц видны задержки уже и на цифровом графике. Ну, так оно и должно быть, ведь 176-я серия разрабатывалась как тихоход для часов. Пример со скриптом на дочернем листе в папке LA7_with_MAP вложения.
И осталось нам заскочить на дочерний лист и скомпилировать MDF, а затем подключить его на третьей вкладке Make Device. Этот вариант в папке LA7_with_MDF вложения.
Ну а когда же Протеус начнет ругаться? Да он бы уже нас давно обложил трехэтажным английским, но мы его обманули в самом начале. Выводы питания то мы не приделывали и корпус не назначали. Ну, выводы питания мне приклеивать лень, а корпус придется назначить, например DIL14, хотя по большому счету шаг выводов у 176-й серии метрический 2,5 мм и немного отличается от 2,54 мм, принятого в импортных DIP (DIL). Ну, где там наш Make Device – пошли на вторую вкладку Packagings. Там щелкаем кнопку New и в раскрывшейся библиотеке корпусов в окне Keywords набираем DIL, чтобы не рыться по всем библиотекам. Корпус быстро нашелся по совпадению с ключевым словом (Рис. 33).
Далее назначаем его нашей микросхеме в таком порядке (Рис. 34). Сначала в окне No of Gate ставим 4 – ведь в корпусе 4 элемента 2И-НЕ. После этого переходим к назначению выводов - кликаем в этом окне мышкой - и тут же у нас появляются колонки B, С, D и становится доступным установка флажка Gates (elements) can be swapped on the PCB layout. Этот флажок позволяет ARES менять местами выводы и целиком элементы A,B,C,D для улучшения трассировки печатной платы, поэтому его лучше включить. Проходим последовательно назначение выводов для этих элементов. Назначаемый в данный момент в таблице подсвечивается желтым, свободные (неназначенные) выводы на корпусе в окне справа – лиловым.
Первоначально у нас не будет строк VDD и VSS, ведь у графической модели эти выводы отсутствовали. Поэтому, когда у нас останутся неназначенными последние два вывода 7 и 14, давим кнопку Add Pin и прописываем их имена именно так, как на картинке VDD и VSS. Протеус автоматически решит, что это Power и поможет нам в этом. Достаточно только назначить номера выводов. Завершаем назначение корпуса кнопкой Assign Package(s). Вот и все, проходим до конца процедуру Make Device. Теперь у нас на третьей вкладке будут уже три свойства: VOLTAGE, MODFILE и PACKAGE. Вот теперь и запустим еще раз симулятор. Сначала, вроде, как и ничего, но при остановке получим горчичники типа: Pin ‘VSS’ is not modeled и Pin ‘VDD’ is not modeled. Специально в таком виде лежит во вложении, в папке LA7_with_PCB.
Дождались!!! Сейчас мы их.… Пробегаем Make Device до третьей вкладки и добавляем через New из списка ITFMOD со значением по умолчанию CMOS (Рис. 35). Проходим до конца и сохраняем. Этот вариант в папке LA7_FINAL. Тестируем – никаких горчичников, потому что какой вывод питания куда подключен – ISIS извлек из файла ITFMOD.MDF для строчки CMOS.
Ну вот, материал получился очень объемным, но, надеюсь, и очень полезным. В завершение только добавлю, что все примеры из этого параграфа лучше рассматривать в той последовательности, как они встречаются в тексте. Иначе, сохранив более продвинутую модель через Make Device заранее, вы не сможете увидеть некоторые эффекты, например, те же горчичники.
Рисунки 24, 25, 26.
Рисунки 27, 28, 29.
Рисунки 30, 31, 32.
Рисунки 33, 34, 35.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_24.gif
Просмотров: 641
Размер:	13.5 Кб
ID:	11185   Нажмите на изображение для увеличения
Название: Pic_25.gif
Просмотров: 481
Размер:	12.3 Кб
ID:	11186   Нажмите на изображение для увеличения
Название: Pic_26.gif
Просмотров: 420
Размер:	3.7 Кб
ID:	11187  

Нажмите на изображение для увеличения
Название: Pic_27.gif
Просмотров: 412
Размер:	3.3 Кб
ID:	11188   Нажмите на изображение для увеличения
Название: Pic_28.gif
Просмотров: 493
Размер:	14.0 Кб
ID:	11189   Нажмите на изображение для увеличения
Название: Pic_29.gif
Просмотров: 430
Размер:	10.6 Кб
ID:	11190  

Нажмите на изображение для увеличения
Название: Pic_30.gif
Просмотров: 454
Размер:	20.8 Кб
ID:	11191   Нажмите на изображение для увеличения
Название: Pic_31.gif
Просмотров: 433
Размер:	11.4 Кб
ID:	11192   Нажмите на изображение для увеличения
Название: Pic_32.gif
Просмотров: 427
Размер:	16.6 Кб
ID:	11193  

Нажмите на изображение для увеличения
Название: Pic_33.gif
Просмотров: 442
Размер:	27.2 Кб
ID:	11194   Нажмите на изображение для увеличения
Название: Pic_34.gif
Просмотров: 444
Размер:	21.5 Кб
ID:	11195   Нажмите на изображение для увеличения
Название: Pic_35.gif
Просмотров: 450
Размер:	15.0 Кб
ID:	11196  

Вложения:
Тип файла: rar ITF_MOD.rar (1.85 Мб, 1202 просмотров)
Реклама:

Последний раз редактировалось Halex07; 23.08.2010 в 13:22.
Halex07 вне форума  
Эти 10 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), kittec (22.09.2010), ReLe1 (14.08.2011), retas (08.12.2013), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 20.08.2010, 18:37  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.3. Генераторы на RC и LC цепях в Протеусе и несколько способов их запуска. Извечные русские вопросы: «Что делать? » и «Кто виноват? ».
Очень многих начинающих пользователей программы эти два вынесенных в заголовок вопроса начинают терзать уже на первом этапе знакомства с ISIS при попытке моделировать генераторы с задающей RC цепочкой. Я уже столько раз отвечал по этому поводу на форуме, что сбился со счета. Пора положить этому достойный конец и разобрать вопрос досконально. Тем более, что частично этот материал нам понадобится при моделировании счетчика К176ИЕ12 буквально в следующем параграфе. Почему то на второй из извечных вопросов большинство пользователей отвечает однозначно: «Глюк программы, виноваты разработчики». Особенно прельщает частая добавка: «Да вот я в Мультисиме проверял – там сразу все работает, а в Протеусе никак». Ну, так каждому свое. Нравится – моделируйте там, ну а мы грешные уж как нибудь справимся и здесь. Ну а теперь к делу…
Основная ошибка при попытке моделирования генераторов – это «тупое» (другого слова, извините, подобрать не могу) перерисовывание схемы генератора и попытка в лоб запустить его. Автор схемы или учебник по электронике гласит, что работает – значит так и должно быть. Ну, что ж «нарисуем» классический мультивибратор на транзисторах и попробуем его запустить (Рис. 36).
Как видим, и в графическом режиме, и в интерактивном никакой генерации не наблюдается, оба транзистора полностью открыты – напряжения на коллекторах 0,18 Вольт (пример во вложении MULT_TRANS/ Default_mult.DSN). Все, – Протеус в помойку, разработчики – «кАзлы». Или все-же мы слегка закозлили? Вспомним теорию – режим генерации в таких мультивибраторах возникает из-за несимметричности плеч, обусловленных разбросом параметров реальных компонентов схемы. При этом один из конденсаторов зарядится быстрее и возникнет генерация. Ну и где она у нас разброс параметров у виртуальных моделей? Значит, напрасно мы виним разработчиков. Основным времязадающим элементом здесь является конденсатор. Давайте зарядим один из них. Для предварительной зарядки (вспомним свойства примитива конденсатора) используется свойство PRECHARGE. Зададим для C1 мультивибратора PRECHARGE=2 (т.е. зарядим хотя бы до 2V, а можно и больше). Оп-ля, заработало!!! (Рис. 37 ). В той же папке вложения - Precharge_mult.DSN.
Да, «ларчик просто открывался». Но это не единственный способ заставить наш мультик работать, как положено. Вернемся к исходному варианту и уберем у конденсатора первоначальный заряд. Вспомним, что существует еще одно замечательное свойство – Initial Condition (первоначальное состояние). По отношению к проводникам оно означает начальное напряжение на проводе при старте симуляции и назначается в режиме меток LABEL из левого меню. Давайте присвоим проводнику от базы транзистора Q1 (он же подключен и к выводу конденсатора C2) метку IC=0. Запустим график и … - тоже работает (Рис. 38 ). Вот и еще один способ обнаружился.
Ну а теперь несколько экзотичный, хотя и работающий в некоторых случаях способ. Иногда достаточно просто поменять конденсатор на его анимированную модель, лежащую в библиотеке Capacitors=›Animated. Есть у меня большое подозрение, что в этом случае срабатывает стоящее по умолчанию для этой модели в ее MDF свойство PRECHARGE=0. Правда этот способ хорош, когда времязадающий конденсатор в единственном числе.
Как мы видим из всех приведенных примеров, в основном устойчивый запуск генераторов связан именно с проблемами конденсаторов, а уж если быть совсем точным, то с начальным условием старта симуляции. Вот этот фактор и надо учитывать при моделировании генераторов в ISIS.
Недавно на форуме всплывал вопрос по генератору трехточке Колпитца, навеянный материалом, расположенным по этой ссылке:
http://logic-bratsk.ru/radio/ewb/ewb...-8-1/2-8-1.htm
Автор вопроса поступил именно так, как я описывал вначале, т.е. просто перенес схему от Electronic Workbench в ISIS. Естественно, результат был плачевный. Но теперь мы «вооружены и очень опасны». Поступим так же, как и в предыдущих случаях (Рис. 39).
Простым добавлением IC=0 в базовую цепь легко удалось запустить генератор. Более того, в ISIS результат симуляции именно этого варианта оказался более приемлемым. Если у этой схемы в EWB согласно приведенной ссылке период оказался равным 7,34 мс при теоретическом — 6,28 мс, то в ISIS период равен 6,63 мс (Рис. 40). Сравните, чей ближе. Этот вариант в приложенном файле 3_POINT\Colpitts1_IC.DSN. В той же папке вариант с емкостной связью Colpitts2_Precharge.DSN, в котором использовано свойство конденсаторов PRECHARGE. Чтобы уж окончательно развеять мифы, я взял и грубо, не вдаваясь в расчеты, набросал схему с индуктивной связью – генератор Мейснера (или Майснера). И воспользовавшись свойством Initial Condition, в несколько секунд добился его работы. Этот вариант я также приложил в той же папке под именем Meisner1_IC.DSN. Думаю, достаточно материала по чисто аналоговым генераторам, чтобы убедиться в их работоспособности. Мы же далее немного остановимся на RC-генераторах на логических элементах, с которыми тоже у начинающих возникают большие проблемы.
Я уже ранее указывал на свойство SCHMITT, которое в большинстве случаев позволяет запустить генератор на логических элементах. Но это большинство тоже строго ограничено. Как правило, все пытаются моделировать генератор на элементах 2И-НЕ микросхемы 4011 – наши аналоги ЛА7 в сериях 176, 561, 564 и т.п. Мы уже рассмотрели ее модель выше и обратили внимание, что свойство SCHMITT прописано в MDF. Быстренько набросаем типовой генератор, пропишем первому логическому элементу по входам это свойство и запустим симуляцию (Рис. 41).
Я на рисунке 42 приведу аналоговые графики в характерных точках схемы. Обратите внимание, что на четвертом – DIGITAL первый пробник выглядит достаточно «коряво». Именно поэтому в данном случае я и использовал аналоговые графики для анализа этого генератора. Этот вариант во вложении LOGIC_SCHMITT\ NAND_2.DSN.
В той же папке лежит схема генератора на элементах 3И-НЕ микросхемы 4023. И так же, как и в предыдущем случае для логического элемента стоящего первым задано SCHMITT=D0,D1,D2. Ну вроде все, как учили, но при попытке запустить симуляцию мы видим унылые серые квадратики вместо веселого перемигивания и строго половинчатые уровни напряжения по всем входам/выходам (Рис. 43). Вроде кому то пора что-то набить - это я имею ввиду себя. Но, я и не говорил, что это свойство будет работать всегда.
А вот теперь открою секрет из «загашника» - почему не работает. Сходите в файл 40NAND3.MDF, назначенный для 4023 и посмотрите в его начало. Раньше просто посылать вас туда было бесполезно - вы б его и не нашли, но теперь уже пора. Ниже я приведу значимый кусок из этого файла:
Код:
*MAPPINGS,3,VALUE+VOLTAGE
4073+5V : TDLHDQ=45n, TDHLDQ=55n, TGQ=?
4073+10V : TDLHDQ=20n, TDHLDQ=25n, TGQ=?
4073+15V : TDLHDQ=15n, TDHLDQ=20n, TGQ=?

*MODELDEFS,0    

*PARTLIST,1    
U?,AND_3,AND_3,PRIMITIVE=DIGITAL,TDHLDQ=‹TDHLDQ›,TDLHDQ=‹TDLHDQ›,TGQ=‹TGQ›
Вы где-нибудь видите упоминание SCHMITT? Представьте, я тоже не вижу. Ну и что тогда здесь будет работать? Делаем вывод – это свойство будет работать только в тех случаях, если прописано в MDF для данного компонента. А универсальными моделями, содержащими его, являются те, которые предназначены для моделирования триггеров Шмитта. Так что не надо даже лазить по всем MDF, а достаточно заглянуть в библиотеку. Вводим ключевое слово Schmitt, выбираем серию, например 4000 и видим, что наряду с рассмотренным в предыдущем параграфе 40NAND2, которое назначено для 4011 и двухвходового триггера Шмитта 4093, это свойство будет еще в модели инверторов 40INV.MDF (Рис. 44).
Заглянем в этот MDF и увидим, что его можно примвоить следующим инверторам: 4009, 4049, 4069 (конечно же для 40106, 4093 и 4584 оно уже присвоено). Присваиваться оно будет строчкой SCHMITT=D, поскольку у инверторов только один вход, и он не нумеруется. Файл 40INV.MDF есть во вложении.
Ну а как быть, если мне приспичило использовать, например, элементы 2ИЛИ-НЕ нашей К561ЛЕ5 или ее аналога CD4001 – в Протеусе просто 4001. Там Шмитт не катит…. Итак, второй «кролик из цилиндра» - я сегодня как факир. Подумайте логически, о чем я тут распинался вначале. Ну а теперь посмотрите на Рис. 45 и загляните в папку LOGIC_GEN вложения. Там представлены в двух дизайнах генераторы на двух и трех логических элементах. От комментариев воздержусь, по-моему, и так всем все ясно.
Ну, вот такой небольшой, но весьма познавательный материал по моделированию генераторов в ISIS. Надеюсь, что теперь со страниц форума надолго пропадут заголовки типа: «не работает генератор в Протеусе». А если начнут появляться в мое отсутствие, то каждый теперь знает, куда послать страждущего…
************************************************** ************************
Материал был уже готов и выложен на форуме, когда в параллельной ветке форума:
https://kazus.ru/forums/showthread.php?t=13612
возник вопрос о генераторах на триггерах в Протеусе. Естественно, я не мог пройти мимо, так как этот вопрос напрямую связан с симуляцией генераторов, рассматриваемой в этом пункте. Чтобы не нарушать нумерацию прилагаемых рисунков, в этом дополнении их приводить не буду. Но в дополнительном вложении Trigger_Gens в папке Examples_Gens добавлю парочку вариантов генераторов на RS-триггерах, устойчиво работающих в Протеусе.
А заинтересовал меня этот вопрос еще и потому, что при исследовании модели 4042, на которой сделана попытка просимулировать генератор по приведенной выше ссылке, обнаружена ошибка. Суть ошибки в том, что в реальном триггере CD4042 происходит асинхронный перенос данных с входов Dx на выходы Qx при одинаковых уровнях сигнала на управляющих входах CLK и POL. Т.е. если CLK=POL=0 или CLK=POL=1, то сигнал с входа D должен переноситься на соответствующий ему выход Q асинхронно. Внутренняя структура модели 4042 в ISIS выполнена на D-триггерах и сигнал переносится только по изменению фронтов на управляющих входах, что не соответствует действительности. Я не поленился, и проверил поведение аналогичной модели в Multisim 11, там она ведет себя вполне адекватно и генератор с использованием данной модели устойчиво запускается. Пришлось заняться исправлением модели. Что у меня получилось в результате приложено в папке вложения New_model_4042. В папке Structure_Vers_1 приложен тестовый проект одного из четырех каналов микросхемы, созданного на основе даташита. Однако, мне этот вариант не очень понравился и другой, более компактный приложен в папке Structure_Vers_2. С этим вариантом был протестирован генератор. Результат в проекте из папки Test_Generator_With_Child. Там схематичная модель присоединена в качестве дочернего листа к графической модели. С этого листа скомпилирован файл 4042B.MDF. Тест модели с этим файлом приложен в папке Test_Generator_With_MDF. Можно просто cкопировать его в папку MODELS Протеуса, а над моделью из этого проекта произвести Make Device и сохранить вариант 4042B для дальнейшего использования. Если есть желание заменить существующую модель 4042, то можно над ней проделать Make Device и на третьей вкладке поправить ссылку для MODFILE на 4042B.MDF. Для желающих полностью заменить модель в библиотеке DIGITAL.LML рекомендую воспользоваться методикой из п.6.17 этой части FAQ. С этой целью в папке New_4042_MDF приложен MDF-файл, в разделе *MAPPINGS литера B на конце имени модели отсутствует, как и в оригинальном файле модели из поставки Протеуса.
************************************************** **************************
Рисунки 36, 37, 38.
Рисунки 39, 40, 41.
Рисунки 42, 43, 44.
Рисунок 45.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_36.gif
Просмотров: 529
Размер:	15.2 Кб
ID:	11310   Нажмите на изображение для увеличения
Название: Pic_37.gif
Просмотров: 619
Размер:	28.3 Кб
ID:	11311   Нажмите на изображение для увеличения
Название: Pic_38.gif
Просмотров: 511
Размер:	17.3 Кб
ID:	11312  

Нажмите на изображение для увеличения
Название: Pic_39.gif
Просмотров: 478
Размер:	7.6 Кб
ID:	11313   Нажмите на изображение для увеличения
Название: Pic_40.gif
Просмотров: 427
Размер:	14.2 Кб
ID:	11314   Нажмите на изображение для увеличения
Название: Pic_41.gif
Просмотров: 537
Размер:	5.7 Кб
ID:	11315  

Нажмите на изображение для увеличения
Название: Pic_42.gif
Просмотров: 470
Размер:	19.4 Кб
ID:	11316   Нажмите на изображение для увеличения
Название: Pic_43.gif
Просмотров: 500
Размер:	5.6 Кб
ID:	11317   Нажмите на изображение для увеличения
Название: Pic_44.gif
Просмотров: 456
Размер:	17.6 Кб
ID:	11318  

Нажмите на изображение для увеличения
Название: Pic_45.gif
Просмотров: 577
Размер:	10.8 Кб
ID:	11319  
Вложения:
Тип файла: rar GENERATORS.rar (315.7 Кб, 1294 просмотров)
Тип файла: rar Trigger_Gens.rar (114.3 Кб, 962 просмотров)

Последний раз редактировалось Halex07; 14.04.2014 в 17:58.
Halex07 вне форума  
Эти 10 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), haruta (23.08.2010), kittec (22.09.2010), retas (08.12.2013), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 23.08.2010, 23:24  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.4. Полезные опыты с цифровым элементом в ISIS. Заключительный материал об IC, NS, PRECHARGE и SCHMITT.
Этот дополнительный материал призван поставить финальную точку в разборке ситуации с цифровыми элементами в ISIS. Разбирая в предыдущем параграфе генераторы, я уже привел характерные особенности их запуска в симуляторе. Но, все же, немного поразмыслив, решил более подробно разобрать – чем же характерны цифровые элементы в Протеусе, ну и попутно ознакомить вас с еще одним очень полезным свойством – NS (NODESET).
Внимание! Я пошел на поводу у ребят из Лабцентра и допустил серьезную «очепятку» вслед за ними. В п.6.1 для аналого-цифрового примитива свойство гистерезиса для нижнего порога записывается как VHL, а не VLH. И в хелпе Протеуса и у меня ранее ошибка. Приношу извинения за себя и Labcenter Electronics и восстанавливаю «статус кво».
Для начала рассмотрим – как ведет себя типовой цифровой примитив буфера или инвертора при подаче на его вход аналогового сигнала. Для этого подадим на его вход линейно изменяющееся напряжение от генератора (треугольный сигнал). Для этой цели я воспользуюсь генераторомPulse из левого меню Generator Mode с несколько «заумными» настройками (Рис. 46).
Допустим, мы приняли длительность фронта (Rise) и спада (Fall) импульса равными половине его периода, а ширину верхней полки Width равной нулю. Получится, что наш импульс состоит только из линейно повышающегося и понижающегося фронтов, т.е. фактически треугольного сигнала. Если частота равна 1 Гц, то период 1 сек, а фронт и спад по 500мсек. Я взял для своих экспериментов сигнал частотой 10Гц и амплитудой 5 Вольт. Соответственно фронт и спад будут в 10 раз меньше. Теперь подадим этот сигнал на вход цифрового примитива BUFFER из библиотеки Modelling Primitives. На выход повесим зонд напряжения и проанализируем с помощью аналогового графика выходной сигнал в зависимости от напряжения на входе цифрового буфера. Эта ситуация с выделенными характерными точками представлена на рисунке 47.
Наш цифровой буфер ведет себя как трехпороговый элемент с уровнями 0В, 2,5В (половина питания) и 5В (полное питание). Для того чтобы представить себе откуда взялись эти точки, вспомним приведенные в п.6.1 свойства аналого-цифрового примитива по умолчанию. Вычислим абсолютные значения:
• Порог переключения на высокий уровень – VTH=70% – 5*0,7=3,5В (точка 2);
• Порог переключения на низкий уровень – VTL=30% – 5*0.3=1,5B (точка 4);
• Гистерезисы переключения – VHH=VHL=10% – 5*0,1=0,5B. Переход в неопределенную зону (2,5В) происходит от нуля – VTL+VHL=2.0В (точка 1) и от единицы – VTH-VHH=3,0В (точка 3).
Ну, вот мы и просчитали все наши выделенные точки. И теперь можем точно предсказать – как поведет себя цифровой элемент с этими свойствами по умолчанию при подаче на его вход сигнала определенным напряжением. Для примера я занизил амплитуду треугольника до 3В – ниже порога переключения VTH. Результат симуляции графика на рисунке 48, и он вполне предсказуем.
Пойдем дальше и рассмотрим – что дает нам добавление в примитиве свойства SCHMITT. График для примитива буфера приведен на рисунке 49. Сравнивая с Рис. 46, делаем вывод – исчезли гистерезисы. Остались только две точки переключения – переход на высокий уровень при 3,5В и возврат на низкий при 2,0В. Вот она физическая сущность этого «загадочного свойства». Но стоит еще раз заметить, что воздействует оно только на исходные цифровые примитивы, из которых построена модель реального логического элемента. Вспомните о том, что я писал в предыдущем параграфе про элементы 3И-НЕ микросхемы 4023. Но и это еще не все сюрпризы связанные с цифровыми примитивами ISIS. Дотошные пользователи решат – да вот мы обнулим гистерезисы и получим тот же SCHMITT. И вот тут всплывает один неприятный нюанс из серии «индейской национальной избы», как обозвал ее пес Шарик в мультике про Простоквашино. Попытки изменить аналого-цифровые свойства примитива посредством переназначения VTH, VTL, VHH и VHL к желаемому результату не приведут. Можете поэкспериментировать самостоятельно. График будет «стоять как вкопанный». И не важно, в чем вы их будете назначать – в абсолютных значениях или в процентах. Во всяком случае, я лично реального результата не получил. Результаты моих исследований для примитива буфера и инвертора, который, как и положено, ведет себя с точностью до наоборот, приведены в соответствующих проектах Buffer.DSN и Inverter.DSN вложения. Может кому-то повезет больше.
Зато картина существенно меняется, если мы задействуем свойство ITFMOD и причислим наш примитив к какой либо конкретной серии цифровой логики. На рисунке 50 показан вариант с присвоением примитиву ITFMOD=CMOS. Сравните уровни с графиком рисунка 49 – полное совпадение.
Практически мы получили тот же эффект, что и при воздействии свойства SCHMITT, только другим путем. В данном примере нам достаточно было задать гистерезис 40%. Простая арифметика: 40% от 5В составит 2В. При этом VTL+VHL=1,5+2=3,5В т.е. совпадет с точкой перехода на уровень логической единицы VTH. Таким образом, мы убрали ступеньку на переднем фронте импульса. Далее VTH-VHH=3,5-2=1,5В – совпадает с точкой перехода на низкий уровень VTL. Этот вариант убирает ступеньку на заднем фронте импульса. Когда я задал VHL=VHH=50%, что составит 2,5В я сдвинул точки перехода так, что ранее срабатывает VTH или VTL. При любом значении одного из гистерезисов менее 40% будет появляться соответствующая ступенька с уровнем 2,5В как на графике рисунка 47. Варьируя этими четырьмя значениями для логического элемента в проекте, мы можем добиваться нужных нам результатов. Следует помнить, что единицы измерения для них должны совпадать – или все в Вольтах или все в процентах. Последнее принято по умолчанию.
Поэтому если вы поставите какой-либо элемент 4000 серии в схему и зададите ему в свойствах только VTL и VTH, но в абсолютных единицах, например VTL=1.5 и VTH=3.5, то гистерезисы, которые остались по умолчанию в процентах работать не будут и эффект будет тот же, что и на Рисунке 50. Различные варианты с графиками для CMOS приведены в Buffer_CMOS.DSN. Все вышесказанное касается и других серий цифровых микросхем, только и уровни там будут несколько другие в соответствии с заданными в ITFMOD.MDF. Пример для TTL во вложении Buffer_TTL.DSN.
Теперь вернемся на секунду к нашему генератору на инверторах и с точки зрения новых познаний рассмотрим, почему он не запускается без лишних телодвижений с нашей стороны. Я еще раз повторил картинку генератора на двух элементах 2И-НЕ с установленными зондами на входах-выходах элементов (Рис. 51 ).
Обратите внимание, что при запуске симуляции напряжение во всех контрольных точках практически одинаковое и равно половине питания или тому пресловутому порогу 2,5В на предыдущих графиках. Значит, для того чтобы его сдвинуть хотя бы в одной из точек и нужны дополнительные меры. Это можно сделать даже кнопкой BUTTON, посадив кратковременно на землю, например, входы первого логического элемента при запущенной симуляции. Но мы уже знаем, что есть такое интересное свойство IC Initial Condition для цепей, которым мы воспользовались в предыдущем параграфе. Однако и здесь тоже кроется несколько подводных камней. Главная особенность состоит в том, что данное свойство можно присваивать только аналоговым цепям. Если Вы попытаетесь назначить IC цепи, не содержащей аналоговых компонентов – Протеус незамедлительно при старте симуляции вывесит красное сообщение об ошибке. Для цепей которые соединяют только цифровые коимпоненты аналогичное свойство носит название BS (Boot State) – состояние при загрузке. Свойству BS можно назначать состояние в любом виде, которое поддерживает Протеус для цифровых цепей. Это: 1, 0, H, L, HIGH, LOW, SHI, WHI, SLO, WLO или FLT. Второй особенностью IC является то, что это состояние принимается для цепи до начала первой итерации, т.е. до начала расчета симулятором ProSPICE операционных точек схемы. Для задания начальных условий по постоянному току при нулевой итерации служит другая директива NS (NODESET) – установка узла. Она назначается, как и IC через лэйбл, присваиваемый нужному проводу. Например, NS=10 означает, что на начальной стадии расчета точки в данном узле цепи устанавливается значение 10 Вольт. Это свойство наиболее полезно, когда ProSPICE не может точно рассчитать потенциал узла на начальной стадии и является как бы подсказкой симулятору – каким принять значение потенциала в первый момент расчета. Оно так же полезно, когда симулируется достаточно сложная схема, поскольку позволяет симулятору сократить время на расчет операционных точек.
Обе директивы IC и NODESET являются стандартными для всех программ, базирующихся на ядре SPICE. Это и OrCAD, и Multisim и т.д. Открыв любую книжку, посвященную описанию этих программ, вы сможете найти эти директивы в главах, посвященных заданию начальных условий моделирования. В тоже время свойство PRECHARGE для конденсаторов, которое мы тоже использовали для запуска генераторов, является фирменной добавкой Лабцентра к SPICE-симулятору. Ну, и чтобы окончательно поставить точку в этом вопросе рассмотрю еще один пример применения данных свойств. Очень часто разработчики используют для сброса цифровых счетчиков, регистров, да и микроконтроллеров интегрирующую RC-цепочку. Не будьте так уверены в ее непогрешимой работе, просто прилепив ее к соответствующей цепи. Взгляните на рисунок 52. На левом графике RC-цепочка стоит с параметрами по умолчанию, на среднем – с применением Initial Condition, а на правом – PRECHARGE. Надеюсь, для вас не составит большого труда сделать вывод, – в каком случае цепочка обеспечит вам сброс, а в каком нет. Данный пример во вложении носит имя RC_Reset.DSN.
Ну и в заключении данного материала сошлюсь на раздел HELP Протеуса, где описан материал посвященный начальным условиям. ProSPICE Help =› ADVANCED TOPICS =› INITIAL CONDITIONS. Желающие прочитать в оригинале, могут заглянуть туда.
Рисунки 46. 47, 48.
Рисунки 49. 50, 51.
Рисунок 52.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_46.gif
Просмотров: 364
Размер:	19.5 Кб
ID:	11809   Нажмите на изображение для увеличения
Название: Pic_47.gif
Просмотров: 333
Размер:	11.6 Кб
ID:	11810   Нажмите на изображение для увеличения
Название: Pic_48.gif
Просмотров: 307
Размер:	7.6 Кб
ID:	11811  

Нажмите на изображение для увеличения
Название: Pic_49.gif
Просмотров: 307
Размер:	10.4 Кб
ID:	11812   Нажмите на изображение для увеличения
Название: Pic_50.gif
Просмотров: 321
Размер:	14.3 Кб
ID:	11813   Нажмите на изображение для увеличения
Название: Pic_51.gif
Просмотров: 367
Размер:	9.2 Кб
ID:	11814  

Нажмите на изображение для увеличения
Название: Pic_52.gif
Просмотров: 369
Размер:	12.3 Кб
ID:	11815  
Вложения:
Тип файла: rar Digital_Elements.rar (54.9 Кб, 888 просмотров)

Последний раз редактировалось Halex07; 03.09.2010 в 18:52.
Halex07 вне форума  
Эти 12 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bi_max (28.09.2011), bozhko (22.09.2010), gena1959 (25.08.2010), kittec (22.09.2010), ReLe1 (14.08.2011), Tischon (21.01.2011), TOMCON (03.09.2010), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 03.09.2010, 19:17  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.5. «Я его слепила из того, что было…». Анатомия CD4060 – прообраза будущей К176ИЕ12.
Когда я достаточно давно задумал сделать модель К176ИЕ12, то естественно подумал – а что можно взять за основу для будущей модели. Основательно перерыв все библиотеки тогдашней версии Протеуса, да и в нынешней там мало что изменилось, я остановил свое внимание на модели 4060. Микросхема представляет собой 14-разрядный счетчик со встроенной схемой генератора. Частота генератора может задаваться как RC цепочкой, так и кварцевым резонатором. Почему-то у нас в России эта микросхема не пользуется особой популярностью. Подозреваю, все дело в том, что она не имеет отечественного аналога. Ближайшее, что когда-то предлагалось в журнале «Радио» №6 за 2006 год, - это аналог на двух м/сх: К561ИЕ16 и К561ЛА7. Да и публикаций всевозможных устройств на этой микросхеме не так уж много. Правда в свое время «Мастер-Килька» отозвался выпуском набора NF239 для сборки таймера: http://www.masterkit.ru/main/set.php?code_id=129679, но и тот уже на данный момент снят с продаж. Больше всего публикаций самоделок на данной микросхеме встречается в журнале «Радиоконструктор», авторы которого до сих пор нет-нет, да и опубликуют что-то свежее с использованием CD4060. В то-же время, данная микросхема до сих пор выпускается многими зарубежными фирмами под несколько различающимися названиями. Это и CD4060BC у Fairchild и MC14060B у On Semiconductor и HEF4060B у Philips (ныне NXP). Наиболее подробные даташиты на эти микросхемы у двух последних из перечисленных. Я и сам, грешен, пару лет назад использовал ее для создания 12-ти часового таймера заряда резервного аккумулятора в одном девайсе, который благополучно пашет до сих пор на одном из подведомственных объектов. Для тех, кто заинтересуется применением микросхемы всерьез, но не дружит с английским рекомендую ознакомится со статьей «Анатомия таймера на ИС CD4060 из набора “МАСТЕР_КИТ» в №3 за 2006 год журнала «Радиосхема» http://publ.lib.ru/ARCHIVES/R/''Radioshema''/_''Radioshema''.html.
Ну а мы бегло познакомимся с особенностями ее модели в Протеусе, чтобы иметь подходящую материальную базу для создания К176ИЕ12. Если заглянуть в свойства модели 4060, то помимо типовых для всей этой серии мы обнаружим параметр Oscillator Frequency (Частота генератора) со значением по умолчанию Default (Рис. 46).
На третьей вкладке Make Device обнаруживается, что Defaut Value для свойства CLOCK, каковым и является частота генератора равно None, т.е. генератор отключен, а Limits для него установлен Positive or Zero (положительное или ноль). Для того чтобы привести микросхему в чувство введем вместо Default (Рис. 53 ) числовое значение, например 10 (Гц), а также завесим на землю вход сброса счетчика MR. Запускаем симуляцию, и наш счетчик начинает благополучно моргать выходами и входами времязадающих цепей RS, RTC, СTC. Прицепим к ним осциллограф, а заодно и частотомер и убедимся, что там прямоугольные импульсы с заданной нами частотой 10 Гц, т.е. работает встроенный в модель генератор (Рис 54 ). Этот пример во вложении Internal_Osc.DSN.
Для того, чтобы понять какое еще кроме цифровых значение можно вписать в Oscillator Frequency, нам придется добыть из библиотеки DIGITAL.LML и исследовать файл модели 4060.MDF. Я приложил его для тех, кому лень воспользоваться утилитьой GETMDF.EXE. Ниже приведены первые разделы файла.
Код:
*PROPERTIES,1
CLOCK=EXTERNAL

*MAPPINGS,3,VALUE+VOLTAGE
4060+5V : TDOSC=35n, TDCQ=25n, TDMRQ=100n
4060+10V : TDOSC=13n, TDCQ=10n, TDMRQ=40n
4060+15V : TDOSC=8.5n, TDCQ=6n, TDMRQ=30n

*MAPPINGS,2,CLOCK
DEFAULT : CLKOSC=DIGITAL,CLKGATE=NULL
EXTERNAL : CLKOSC=NULL, CLKGATE=DIGITAL

*MODELDEFS,0
Внимательно посмотрев на разделы *PROPERTIES,1 и *MAPPINGS,2,CLOCK можно сделать вывод, что микросхема должна адекатно реагировать на значение EXTERNAL в окне Oscillator Frequency. Попробуем этот вариант. Заменим значение 10 словом EXTERNAL и вновь запустим симуляцию. Микросхема тихо стоит, но симулятор не ругается и ошибок не выдает, значит наше предположение верное. Далее придется обратиться к даташиту на сей девайс, чтобы посмотреть – как подключается времязадающая RC цепочка. Можно просто в режиме подключения к Интернету щелкнуть в свойствах кнопку Data (или по меню правой кнопки Display Datasheet) и скачать файрчилдовский даташит. Я же приведу на Рис. 55 вариант от MC14060B, поскольку в нем наиболее крупно расписана формула для частотозадающей цепи. Небольшое пояснение – левый по схеме вывод Rs в других даташитах соединен с выводом 11 микросхемы, который здесь обозначен как CLOCK.
В соответствии с формулой рассчитаем для той же частоты 10 Гц сопротивление резистора Rtc для емкости Ctc в 1мкФ. Получим 43,2кОм – берем ближайшее 43к. В соответствии с упоминавшейся статьей Rs выбирается в пределах 2…10Rtc. Я поставил 200кОм. Ну и чтобы закрепить материал предыдущего параграфа я приложил три варианта: External_Animal_C.DSN (на Рис. 56 ) – с анимированным конденсатором; External_Precharge_C.DSN – используется PRECHARGE и External_IC_wire.DSN – используется Initial Condition. Открыв соответствующие проекты во вложении и, запустив симуляцию, вы можете лично убедиться, что все они имеют право на существование. Попадание в частоту оказалось не очень, но все же удачным. Вместо расчетных 10 Гц имеем 15, но для RC генератора, да еще в программе, а не в железе – это достаточно неплохо. Желающие могут подобрать резистор, увеличив сопротивление для получения точных 10 Гц. У меня получилось при R1=68кОм – этот вариант оставлен в External_IC_wire.DSN.
Теперь приведу еще одну картинку из даташита с очень важным в дальнейшем пояснением. На Рис. 57 приведена упрощенная схема структуры HEF4060B. Я опять воспользовался тем, что в этом даташите нужный мне элемент уже заранее прорисован покрупнее. Обратите внимание, что в том месте, где подключается конденсатор CTC – вывод 11 микросхемы, используется триггер Шмитта! Это важно для нас в дальнейшем. Мы попытаемся пойти дальше разработчиков модели 4060 и воспользоваться этим моментом.
Налюбовавшись вдоволь на структуру, представленную на Рис. 57 вновь обратимся к файлу 4060.MDF. Теперь нас интересует PARTLIST, приведенный ниже:
Код:
*PARTLIST,19   
OSC,CLOCK,,CLOCK=‹CLOCK›,INIT=0,PRIMITIVE=‹CLKOSC›,PRIMTYPE=DIGITAL!
U1,INVERTER,INVERTER,PRIMITIVE=DIGITAL
U2,NAND_2,NAND_2,PRIMITIVE=DIGITAL,TDHLDQ=‹TDOSC›,TDLHDQ=‹TDOSC›
U3,INVERTER,INVERTER,PRIMITIVE=DIGITAL,TDHLDQ=‹TDOSC›,TDLHDQ=‹TDOSC›
U4,NAND_2,NAND_2,PRIMITIVE=DIGITAL,TDHLDQ=‹TDOSC›,TDLHDQ=‹TDOSC›
U5,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U6,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U7,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U8,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U9,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U10,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U11,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U12,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U13,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U14,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U15,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U16,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U17,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
U18,DTFF,DTFF,PRIMITIVE=DIGITAL,TDHLCQ=‹TDCQ›,TDLHCQ=‹TDCQ›,TDRQ=‹TDMRQ›
Мы можем констатировать, что помимо внутреннего генератора OSC и элементов входной логики U1…U4, модель содержит 14 счетных DTFF триггеров – элементы U5…U18. Можно сделать вывод, что разработчик модели полностью воспроизвел внутреннюю структуру, т.е. имеет место полное схематичное моделирование. В случаях с цифровыми моделями это вполне приемлемо, поскольку симуляция в отличие от аналоговых проходит намного быстрее и не «съедает» ресурсы компьютера. На временных параметрах, заданных примитивам останавливаться не буду, поскольку мы их назначение достаточно подробно разбирали раньше. Также, не стану подробно разбирать и NETLIST, а просто приведу кусочек восстановленной структуры модели 4060 на Рис. 58. Полностью структуру рисовать не имеет смысла, т.к. соединения всех 14 счетных триггеров одинаковы и повторяют друг друга.
Тем, кто с элементами цифровой логики знаком только понаслышке, и собирается дальше осваивать представленный здесь материал, могу порекомендовать найти и ознакомиться с одной из нижеперечисленных книг:
Угрюмов Е.П. «Цифровая схемотехника», БХВ-Петербург, - есть два издания 2000 и 2004 года, годится любое, мне лично больше нравится старое.
Уилкинсон Барри «Основы проектирования цифровых схем», М., ИД «Вильямс», 2004.
Точчи Рональд Дж,, Уидмер Нил С., «Цифровые системы. Теория и практика» , М., ИД «Вильямс», 2004.
Годится и любой другой учебник по основам цифровой схемотехники. Желательно иметь понятия о работе JK и D триггеров, последовательных и параллельных счетчиков, в т.ч. Джонсона и сдвиговых регистров. Само собой разумеется, что работа логических элементов И, ИЛИ, исключающее ИЛИ и их комбинаций тоже не должна ставить вас в тупик. В последующем материале я буду свободно оперировать этими понятиями, а разжевывать работу этих элементов я не ставлю себе в задачи. Моя забота – научить вас созданию моделей в Протеусе, но никак не основам цифровой техники, иначе мы увязнем в этом материале на год, а нас ждет еще масса полезных сюрпризов из приемов работы с моделями в этой программе.
Рисунки 53, 54, 55.
Рисунки 56, 57, 58.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_53.gif
Просмотров: 380
Размер:	16.3 Кб
ID:	11816   Нажмите на изображение для увеличения
Название: Pic_54.gif
Просмотров: 454
Размер:	76.7 Кб
ID:	11817   Нажмите на изображение для увеличения
Название: Pic_55.gif
Просмотров: 346
Размер:	25.4 Кб
ID:	11818  

Нажмите на изображение для увеличения
Название: Pic_56.gif
Просмотров: 371
Размер:	81.3 Кб
ID:	11819   Нажмите на изображение для увеличения
Название: Pic_57.gif
Просмотров: 369
Размер:	24.4 Кб
ID:	11820   Нажмите на изображение для увеличения
Название: Pic_58.gif
Просмотров: 371
Размер:	7.8 Кб
ID:	11821  

Halex07 вне форума  
Эти 9 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), E_C_C (03.12.2013), kittec (22.09.2010), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 03.09.2010, 19:33  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.7. Пример создания полной схематичной модели счетчика К176ИЕ12. Часть 2 – встроенный генератор и делитель тактовой частоты.
Итак, первоначально воспроизведем входную цепь микросхемы, допустим первые четыре триггера делителя тактовой частоты. Я сначала делаю это обычно в отдельном дизайне, на главном листе, чтобы не париться с «прыжками» по листам туда-сюда. Нам потребуются цифровые примитивы INVERTER и DTFF из библиотеки Modelling Primitives. Кроме того, сразу же можно отыскать и втащить в проект цифровой генератор CLOCK из библиотеки Simulator Primitives. Мы его используем для тестирования, а в дальнейшем в модели для внутреннего генератора по аналогии с CD4060. Первый вариант для тестирования представлен на Рис. 64.
Я преднамеренно поставил у элементов в свойствах флажок Hidden напротив Component Value, воспользовавшись Property Assignment Tools (PAT). Для этого в окне String PAT набираем VALUE, в переключателе Action устанавливаем Hide, а ниже выбираем On Click и пробегаем щелчками левой кнопки по всем установленным компонентам. Кто еще не выучил PAT как «Отче наш…» - привыкайте. Сейчас у нас на схеме всего 7 элементов, а будет в несколько раз больше. И задавать каждому свойства вручную – каторжный труд. Еще я отключил опцию Show Hidden Text в меню Temlate =› Set Design Default. Это позволило мне сэкономить пространство проекта, поскольку картинки становятся уже достаточно объемными и лишняя информация на них нам ни к чему. Итак, из литературы по ссылкам в предыдущем параграфе, а кто и по памяти, мы знаем, что каждый из D-триггеров в таком включении поделит тактовую частоту на 2. Т.е., подав на вход 32768Гц, мы получим сетку частот, выделенную красным на Рис. 64. Проверяем это в приложенном проекте GEN_IE12_st_1.DSN, а в проекте GEN_IE12_st_2.DSN проверяем функционирование нашего генератора в соответствии с Рис. 63 при внешней задающей RC-цепи. Оба проекта в папке TEST1. Во втором случае я воспользовался IC=0 на инверсной цепи Z для запуска генератора. Теперь, когда мы убедились в успешной работе тестовых проектов, создаем модуль, а количество разрядов делителя на дочернем листе увеличиваем до требуемых пятнадцати. Как выглядит наш модуль на основном листе в действии показано на рисунке 65.
Пока наш примитив генератора OSC находится на основном листе. Мы получили требуемую сетку частот в соответствии с описанием микросхемы. На рисунке 66 приведены три цифровых графика работы модуля с различными временными интервалами.
Для чего я привел эти графики? Очень важный момент, при создании сложных многофункциональных моделей – это совпадение фаз сигналов с их реальными прототипами. Если на секунду вернуться к временной диаграмме на Рис. 60, можно заметить, что передний фронт импульсов на выходах F, S2 и S1 должен совпадать, что я и проконтролировал по верхнему графику. Ну и попутно проверили периоды следования импульсов.
Я не буду здесь приводить дочерний лист с пятнадцатиразрядным счетчиком, потому что он займет слишком много места. Желающие посмотрят его самостоятельно в тестовом проекте Modul_Gen.DSN в папке MODUL1 вложения. Мы же, убедившись в работоспособности делителя, идем дальше и начинаем процесс создания внутреннего генератора модели. Для этого помещаем наш примитив CLOCK с именем OSC на дочерний лист и подключаем его на вход инвертора U1. В свойствах генератора ставим галочку Edit all properties as text и вводим вручную следующие строки:
PRIMITIVE=‹CLKOSC›
PRIMTYPE=DIGITAL!
CLOCK=‹CLOCK›

Строка INIT=0 там уже присутствует и в ней я просто убрал фигурные скобки, чтоб она стала видимой (Рис. 67).
Кроме того, на свободном поле дочернего листа размещаем текстовый скрипт следующего содержания:
*DEFINE
CLKOSC=DIGITAL
CLOCK=32768

Этот скрипт назначает нашему генератору свойства, принятые по умолчанию. Частоту я взял для стандартно используемого с К176ИЕ12 кварцевого резонатора 32768Гц. Теперь возвращаемся на основной лист и запускаем симуляцию. Если все сделано правильно, то наш модуль будет функционировать так же, как и с внешним генератором. Отдублируем модуль на этом же листе и зададим ему другое имя, чтобы не было совпадения и ошибки, например GEN_DEVIDER_1. Кроме того у копии модуля нам придется проследовать на дочерний лист и вручную назначить имя генератору тоже отличное от первого варианта, например OSC1. Теперь в свойствах модуля GEN_DEVIDER_1 впишем строку CLOCK=16386 и вновь запустим симуляцию (Рис. 68 ).
На всех выходах свежеиспеченного модуля частота упала вдвое. Ну, вот мы и получили управление частотой генератора модели с основного листа. Для чистоты эксперимента зайдем на дочерний лист первого модуля и выполним компиляцию MDF с этого листа. Я приложил получившийся файл Modul_Gen_2.MDF в папку MODUL1_1 вместе с этим тестовым проектом Modul_Gen_2.DSN. Ниже приведено начало этого файла:
Код:
*PROPERTIES,2    
CLKOSC=DIGITAL
CLOCK=32768

*MODELDEFS,0    

*PARTLIST,18   
OSC,CLOCK,,CLOCK=‹CLOCK›,INIT=0,PRIMITIVE=‹CLKOSC›,PRIMTYPE=DIGITAL!
U1,INVERTER,INVERTER,PRIMITIVE=DIGITAL
U2,INVERTER,INVERTER,PRIMITIVE=DIGITAL
Как и следовало ожидать, скрипт *DEFINE превратился в *PROPERTIES. Но самое главное, обратите внимание на первую строчку *PARTLIST. Сравните ее с аналогичной для генератора OSC модели CD4060 и убедитесь, что они полностью совпадают. Мы на верном пути!
Теперь займемся свойством CLKOSK, которое определяет тип модели генератора OSC. По умолчанию оно равно DIGITAL - цифровой. Мы же на основном листе в свойствах модуля впишем ему значение NULL - пусто. Пробуем симуляцию и видим, что внутренний генератор перестал работать, что нам и нужно. Теперь попробуем запустить наш модуль с внешней RC цепочкой, задав свойство IC=0 одной из внешних цепей. Наш модуль опять запустился и частота импульсов на выходе определяется внешними компонентами (Рис. 69). Этот пример приложен в проекте Modul_Gen_2.DSN, который расположен в папке MODUL1_1.
Таким образом, мы пришли к варианту построения генератора аналогичного модели CD4060. Нам осталось только расписать таблицу *MAP ON и заставить ее работать. Давайте окончательно воспроизведем вариант CD4060. Для этого изменим скрипт *DEFINE дочернего листа следующим образом:
*DEFINE
CLOCK=DEFAULT

Где-нибудь на свободном поле листа поместим еще один скрипт:
*MAP ON CLOCK
DEFAULT : CLKOSC=DIGITAL
EXTERNAL : CLKOSC=NULL

Ну, а в свойствах модуля на основном листе впишем строку CLOCK=32768. Запустим симуляцию – работает. Для дубля модуля зададим CLOCK=EXTERNAL и навесим внешние RC элементы, не забыв задать IC=0. Тоже работает (Рис. 70). Вот теперь у нас почти полностью аналогичный генератор. Если мы задаем цифровое значение свойству CLOCK на основном листе, то включается внутренний генератор, а если задать ему значение EXTERNAL – то необходима внешняя RC-цепь или внешний генератор на вход Z. Таким образом, с помощью одного свойства компонента мы управляем как частотой внутреннего генератора, так и режимом его работы.
Этот пример в папке MODUL1_2 под именем Modul_Gen_4.DSN. Ну и в заключение проверяем работу модуля при подаче сигнала от внешнего генератора – пример Modul_Gen_5.DSN. Вот и весь материал, который я хотел довести до вас в этом параграфе. Но наиболее внимательные уже наверное заметили, что я тихо замолчал про параметр CLKGATE, который имеется в MAP ON CLOCK для модели 4060. Честно говоря, я так и не понял до конца – зачем он там присутствует, поскольку упоминается только в таблице и далее нигде не встречается. Наличие или отсутствие его особого значения на работу модели не оказывает, в чем мы убедились, «забыв» включить его в карту для модуля GEN_DIVIDER. Есть у меня подозрение, что CLKGATE=NULL команда симулятору PROSPICE не создавать виртуальный генератор для модели при использовании режима внешнего. Возможно, таким образом, автор модели 4060 преследовал цель снизить нагрузку на ЦП компьютера в режиме внешнего генератора модели. Если попадет под руку какой-нибудь доходяга Пентиум III, попробую проверить, но на тех монстрах, которые сейчас в наличии эффектов не заметно. Наиболее сложная в понимании часть будущей модели К176ИЕ12 на этом завершена. Нам осталось сформировать генератор для динамической индикации и формирователь минутного импульса. Об этом далее…
Рисунки 64, 65, 66.
Рисунки 67, 68, 69.
Рисунок 70.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_64.gif
Просмотров: 364
Размер:	30.9 Кб
ID:	12055   Нажмите на изображение для увеличения
Название: Pic_65.gif
Просмотров: 335
Размер:	30.5 Кб
ID:	12056   Нажмите на изображение для увеличения
Название: Pic_66.gif
Просмотров: 339
Размер:	44.7 Кб
ID:	12057  

Нажмите на изображение для увеличения
Название: Pic_67.gif
Просмотров: 309
Размер:	33.1 Кб
ID:	12058   Нажмите на изображение для увеличения
Название: Pic_68.gif
Просмотров: 351
Размер:	46.1 Кб
ID:	12059   Нажмите на изображение для увеличения
Название: Pic_69.gif
Просмотров: 314
Размер:	35.2 Кб
ID:	12060  

Нажмите на изображение для увеличения
Название: Pic_70.gif
Просмотров: 320
Размер:	51.2 Кб
ID:	12061  
Вложения:
Тип файла: rar 176IE12_part2.rar (274.7 Кб, 903 просмотров)

Последний раз редактировалось Halex07; 09.09.2010 в 20:21.
Halex07 вне форума  
Эти 7 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
kittec (22.09.2010), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 09.09.2010, 20:30  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.8. Пример создания полной схематичной модели счетчика К176ИЕ12. Часть 3 – формирование сигналов динамической индикации и минутного импульса.
Четырехтактный формирователь сигналов управления динамической индикацией, пожалуй, самый простой узел внутренней структуры К176ИЕ12. Если проанализировать временную диаграмму на рисунке 60, мы увидим, что это последовательная цепочка импульсов с частотой 128Гц на выходах Т1, Т2, Т3, Т4 микросхемы. Из литературы нам известно, что для таких целей наиболее часто используют кольцевые счетчики 1 из n на регистрах сдвига, замкнутых в кольцо. Так мы и поступим. Поскольку это модель, а не реальное устройство схема самовосстановления режима работы такого счетчика будет излишеством, а для того чтобы обеспечить предустановку одного из триггеров в единичное состояние при старте симуляции воспользуемся стандартным для триггеров свойством INIT. Кто забыл – смотрите HELP для примитива D-триггера. Для первого из четырех триггеров установим INIT=1. Ну и еще один нюанс. Нам нужна частота импульсов 128Гц, триггеров – четыре. Включаем в голове математику, а кто не изучал – арифметику. Тактовая частота для регистра сдвига должна быть в 4 раза выше, т.е. 512Гц. Проверяем наш регистр в отдельном проекте – 128Hz.DSN (вложение папка 4Takt). Схема формирователя и график его переключения представлены на Рис. 71.
Нам осталось только поместить данный формирователь на дочерний лист модуля, созданного ранее, присоединить его к выходу делителя с частотой 512Гц – это выход элемента U8 в делителе и привести в порядок нумерацию элементов, чтобы не было конфликта. Кроме того, добавим на основном листе нашему модулю соответствующие выходы T1…T4. Чтобы добавить реальности при тестировании, введем начальный сброс модуля. Для этого на его вход R1 я подал цифровой сигнал перепада с 1 на 0 с помощью генератора Digital Edge (DEDGE) из левого меню Generator Mode с параметрами, представленными на Рис. 72.
Это позволит нам более четко отслеживать поведение нашей модели. Тестируем новый вариант модуля в интерактивном режиме – все нормально, на выходе Т1 присутствуют требуемые 128Гц. Теперь проведем тест с помощью цифрового графика (Рис. 73), и тут же обнаруживается несоответствие временной диаграмме из рисунка 60.
Я нарочно оставил это проект под названием Modul_2_bad.DSN во вложении MODUL2, чтобы вы могли сравнить его с хорошим Modul_2_good.DSN. Разберем причину моего косяка и быстро устраним. Согласно рисунку 71 я поставил предустановку INIT=1 для первого триггера, т.е. в момент времени 0 – он установлен в единицу и по первому же положительному перепаду на счетных входах CLK нашего регистра она уедет во второй триггер с выходом T2, что мы и получили на графике рисунка 73. Ошибка настолько очевидна, что правится в шесть секунд. Переносим INIT=1 из первого триггера формирователя в четвертый и снова тестируем (Рис. 74). Статус кво восстановлен, и все соответствует документации.
Фактически, нам осталось сформировать минутный импульс, и наша модель будет почти готова. Тут тоже придется немного «попотеть», поскольку импульс довольно хитрый. Согласно временной диаграмме передний его фронт возникает по прошествии 39 сек, а длительность составляет 20 сек, т.е. после 59 сек мы должны иметь на выходе М опять ноль. Эту часть структуры К176ИЕ12 для проверки мы также соберем сначала в отдельном проекте. Не будем мудрствовать и сформируем эту часть все на тех же D-триггерах по схеме суммирующего счетчика. Десятичное число 60 эквивалентно двоичному – 111100, т.е. потребуется 6 разрядов (триггеров). Кроме того, придется входы RESET раздвоить по OR (ИЛИ), так как нам необходимо иметь сброс и от внешнего сигнала и при достижении отсчета 60 секундных импульсов (1 минуты). В качестве формирователя длительности импульса используем все тот же примитив DTFF, но уже как обычный RS-триггер. На вход S собираем через примитив AND (И) число 39 (двоичное значение 100111), на вход R - число 59 (двоичное – 111011). В нашем случае это допустимо, т.к. указанные числа имеют значительный разброс значащих единиц, но в некоторых случаях такая логика работы входов невозможна и приходится использовать инверсию незначащих нулей. В цифровых примитивах Протеуса это достигается добавлением для соответствующего входа строки INVERT=Dх в окне свойств, где х – номер входа (счет ведется с нуля, т.е. верхний вход пяти-входового элемента AND будет D0, а нижний D4). Схема достаточно громоздкая, но я ее поджал за счет применения шины и приведу полностью на Рис. 75 . Во вложенном в папку MODUL3 файле Counter60.DSN представлен тестовый проект.
Обратите внимание, что для логического элемента U7 (AND_4), формирующего импульс сброса счетчика по достижении числа 60 установлены свойства TDLHDQ=100n и TDHLDQ=100n (нарастание и спад импульса по 100 наносекунд). Иначе он просто не будет виден на графике, поскольку слишком короткий. График работы схемы представлен на рисунке 76.
Если запустить симуляцию тестового проекта, то, манипулируя кнопкой Gate Polarity прибора Counter Timer можно измерить длительность и паузу минутного импульса. Генератор я уже поставил на 1 Гц для имитации реальных условий. Правда, занятие это в реальном времени утомительное, приходится честно высиживать минуту, наблюдая за таймером.
Нам осталось перенести формирователь минутного импульса в дочерний лист модуля и добавить вход R2 и выход М к нему на основном листе. Я проделал эту манипуляцию в проекте Modul_3.DSN соответствующей папки вложения. Там же представлены графики с различными временными интервалами, на которых видны те или иные выходные сигналы модуля.
Нам же осталось для придания нашей будущей модели более реальных характеристик на дочернем листе для каждого элемента задать соответствующие временные задержки фронтов. Вот тут-то и вспомним добрым словом разработчиков программы Протеус. В финале структура содержит 32 цифровых элемента. Нам предстоит каждому задать TDLHDQ, TDHLDQ и т.д. Как работенка – впечатляет? Но на помощь опять приходит PAT. Поскольку и здесь мы воспользуемся аналогией с моделью 4060, то в конечном итоге сведем все это к таблице MAP ON. Начнем с того, что зададим всем триггерам TDHLCQ=‹TDCQ› и TDLHCQ=‹TDCQ›. Вызываем окно Property Assignment Tools и набираем в окне String строку TDHLCQ=‹TDCQ› (Рис. 77).
Если не хотите, чтобы это значение подсвечивалось под каждым элементом, поставьте по краям фигурные скобки. Но мне в данном случае это не нужно, я хочу себя контролировать. В рамке Action нам предстоит действие назначить, т.е. Assign. Дальше у нас три пути:
• Можно стандартно выбрать On Click и честно прощелкать мышью все нужные компоненты. Процедура, которую многие уже наверняка освоили. Наводим до появления «указательного перста» с зеленым прямоугольником справа и щелкаем левой кнопкой мыши. 26 триггеров – столько же щелчков. Шурик в «Кавказской пленнице» пожалел птичку, ну а мне – мышку жалко…
• Можно заранее выделить (обвести, удерживая нажатой кнопку мыши) район с нужными элементами, а лишь потом вызвать PAT. Причем он сразу предложит в рамке Aply To действие Global Tagged, т.е. для всех выделенных красным компонентов. Кстати, я так и не разобрался, чем отличается Local Tagged – все равно присваивается выделенным. Это уже более прогрессивный метод и за один раз при правильном построении схемы (похвалюсь – как у меня в данном случае) можно зацепить достаточно много объектов.
• Ну, и наконец, можно выбрать All Objects, но тут надо быть предельно осторожным. В частности, при использовании на дочернем листе модуля мы присвоим это свойство и всем объектам на основном листе – оно нам надо? Такие вещи хороши, когда питание переназначаешь, вроде VCC или VSS, но зачем примитиву генератора TDHLCQ? А ведь назначит, я проверял. Еще удобно, когда надо скрыть/показать что-то у всех объектов – этим мы воспользуемся позже.
Ну, в общем, в данном случае мне идеально подходит для назначения второй вариант. Я выделяю часть триггеров, стоящих в одной колонке и вызываю PAT. Ввожу строку как на рисунке 77 и давлю OK. Под соответствующими триггерами сразу появляется видимая строка (Рис. 78 ). Вся операция прошла в три действия, причем в последнем участвовал только один триггер минутного импульса. Последняя введенная строка сохраняется в PAT, и набирать мне ее пришлось только один раз.
Но присмотритесь внимательно – мне ведь еще пару свойств прописывать – а куда? Cо свободным местом в проекте – полный напряг. Но я не зря затеял практический повтор материала по PAT. Цитирую опять, пусть и не дословно, классику комедии – «Кавказскую пленницу»: «Тот, кто нам мешает – тот и поможет…», т.е. PAT. Для начала надо визуально убедиться, что я назначил TDHLCQ всем триггерам. Ну а больше мне на него любоваться незачем. Вызываю окно PAT, в String оставляю только аббревиатуру TDHLCQ, а в Action выбираю Hide – скрыть. И вот теперь в рамке Aply To выбираю All Objects – пригодилось! Все, зарыл TDHLCQ. Но в свойствах триггеров, если выбрать соответствующий пункт оно видно (Рис. 79). Видно его и в режиме Edit all properties as text.
А то, что я применил Hide ко всем объектам в данном случае не криминально, поскольку это свойство есть только у счетчиков и триггеров и сработало оно только для них. Аналогичным образом всем триггерам назначаем и TDLHCQ=‹TDCQ›, а затем и TDRQ=‹TDMRQ›. Ну уж будем последовательными и всем логическим элементам в проекте назначим TDHLDQ=‹TDOSC› и TDLHDQ=‹TDOSC›.
Ну и, закончив все вышеуказанные операции, осталось на свободном поле дочернего листа поместить скрипт следующего содержания:
*MAP ON VOLTAGE
5V : TDOSC=35n, TDCQ=25n, TDMRQ=100n
10V : TDOSC=13n, TDCQ=10n, TDMRQ=40n

Пока я нахально слизал задержки из модели 4060, чтоб протестировать нашу модель, но позже подумаем, как и сделать более реальными. Снова тестируем наш модуль. Опля, что-то не то. Ну да, забыл в свойствах модуля на основном листе прописать напряжение в соответствии с только что написанной картой. Добавляем там строчку VOLTAGE=10V, и все становится на свои места. Этот пример в файле Modul_4.DSN папки MODUL4 вложения. Ну вот, теперь у нас все подготовлено и протестировано, осталось только закончить модель. Об этом в следующем параграфе.
Рисунки 71, 72, 73.
Рисунки 74, 75, 76.
Рисунки 77, 78, 79.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_71.gif
Просмотров: 353
Размер:	64.1 Кб
ID:	12106   Нажмите на изображение для увеличения
Название: Pic_72.gif
Просмотров: 298
Размер:	15.3 Кб
ID:	12107   Нажмите на изображение для увеличения
Название: Pic_73.gif
Просмотров: 299
Размер:	7.6 Кб
ID:	12108  

Нажмите на изображение для увеличения
Название: Pic_74.gif
Просмотров: 311
Размер:	51.4 Кб
ID:	12109   Нажмите на изображение для увеличения
Название: Pic_75.gif
Просмотров: 324
Размер:	47.3 Кб
ID:	12110   Нажмите на изображение для увеличения
Название: Pic_76.gif
Просмотров: 302
Размер:	10.9 Кб
ID:	12111  

Нажмите на изображение для увеличения
Название: Pic_77.gif
Просмотров: 292
Размер:	15.7 Кб
ID:	12112   Нажмите на изображение для увеличения
Название: Pic_78.gif
Просмотров: 300
Размер:	10.2 Кб
ID:	12113   Нажмите на изображение для увеличения
Название: Pic_79.gif
Просмотров: 296
Размер:	13.3 Кб
ID:	12114  

Вложения:
Тип файла: rar 176IE12_part3.rar (160.4 Кб, 872 просмотров)

Последний раз редактировалось Halex07; 11.09.2010 в 00:15.
Halex07 вне форума  
Эти 7 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 11.09.2010, 00:27  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.9. Пример создания полной схематичной модели счетчика К176ИЕ12. Часть 4 – создаем MDF и законченную Schematic модель.
Наступила пора извлечь из небытия нашу графическую модель К176ИЕ12, созданную в п.6.6. Помещаем ее в поле проекта и в свойствах устанавливаем флажок Attach Hierarchy Module. Заходим на дочерний лист и втаскиваем туда (меню File=›Import Section) секцию, которую создали с дочернего листа предыдущего проекта Modul_4.DSN.
Да, давно это было… склероз, однако. Придется кое-что еще поправить на дочернем листе. В тестовом проекте Modul_4 вход формирователя минутного импульса напрямую соединен с выходом S делителя, а в реальности это отдельный вход С у графической модели. Ну, это поправимо и сейчас – разрываем и добавляем на дочернем листе терминал C на вход минутного формирователя (Рис. 80 ).
Возвращаемся на родительский лист и заходим в свойства модели. Там в первую очередь нам необходимо прописать вручную частоту и напряжение так, как мы это делали в предыдущем проекте для модуля. Иначе, при запуске симуляции вылетит «красная птичка». Также, если мы ранее не назначали нашей модели префикс и VALUE, то тоже пора дописать (Рис. 81 ), хотя пока это и не обязательное требование.
Теперь соединяем S1 с С и заземляем входы сброса R1 и R2, на выходы вешаем зонды и запускаем симуляцию. Если ранее нигде не накосячили, все прекрасно работает. Останавливаемся и … вот и горчичнички (Рис. 82 ).
Ну конечно, про ITFMOD мы забыли. А ведь при создании графики мы прилепили скрытые пины питания VSS/VDD. Вот симулятор нас и предупредил, что они отсутствуют на дочернем листе. Но мы их и не собираемся там рисовать, а просто добавим в свойствах одну строку: ITFMOD=CMOS. Пробуем еще раз – все, проблема со специей (SPICE), т.е. горчицей разрешилась (как-бы каламбур). Я оставлю эти два примера Graphic_with_Child с окончаниями bad (плохой – без ITFMOD) и good (хороший – с ITFMOD) в папке Graphic_and_Hierarchy вложения. Результаты теста на рисунке 83.
Поскольку тест прошел удачно, и все наши графики приближены к реальности, можно приступить к формированию MDF. Но прежде необходимо до конца разобраться с задержками, ведь у нас по-прежнему они используются от модели 4060. Когда в п.6.2 мы пробовали создать модель 176ЛА7, я упоминал, что стандартные задержки распространения для этой серии при питании 9В равны 250 наносек. Это все, что мне удалось найти в справочниках. Ну чтож, давайте отталкиваться от этого. Заменим в карте MAP ON VOLTAGE на дочернем листе задержки следующим образом:
*MAP ON VOLTAGE
5V : TDOSC=400n, TDCQ=520n, TDMRQ=1200n
10V : TDOSC=250n, TDCQ=325n, TDMRQ=750n

Чтоб не возникало кривотолков – поясню. Для 10(9)V я взял стандартную задержку распространения для логических элементов - в нашей модели это TDOSC. Для 5V она увеличится и где-то мне попадалось значение 400 наносек. Значения для триггеров TDCQ и TDMRQ я просто взял и просчитал на калькуляторе пропорционально от модели 4060. Понимаю, что кривлю душой, но садиться с осциллом замерять реальные – мне, честно говоря, ну ни в жилу. Да и нет у меня пачки микросхем, а с единичных экземпляров – все равно будет лажа. Так что, примите – как есть. В общем, тестируем с этими задержками и убеждаемся, что никаких излишних эксцессов не вылезает. Протестировать придется и при VOLTAGE=5V, чтобы быть до конца уверенными в себе. Этот проект Model_with_child.DSN представлен в папке Model_and_MDF вложения.
Теперь у нас все готово к компиляции MDF, но прежде одно маленькое замечание, которое предшествует небольшому сюрпризу для вас. Обратимся снова к рисунку 80. Помните, я для ужимания схемы прибегнул к применению шины? Соответственно проводникам, присоединенным к шине пришлось назначить соответствующие метки (лэйблы). Так вот, при компиляции MDF эти метки и превратятся в узлы для этих цепей. Те цепи, которые не помечены и не присоединены к входным/выходным терминалам будут просто автоматически пронумерованы компилятором типа #00001, #00002 и т.д. Цепи, входящие в шину и помеченные с помощью лэйблов в NETLIST будут выглядеть так:
Q1,4
Q1,LBL
U30,IP,D0
U29,IP,D0
U22,OP,Q

Это пример узла с меткой Q1 – выход триггера U22. На работоспособность модели это не повлияет, но если кого-то смущает данный момент – придется перерисовать дочерний лист, исключив из него шину, а все соединения сделать отдельными проводниками.
Заходим на дочерний лист и вызываем компилятор через меню Tools=›Model Compiler. Указываем путь сохранения к нашей текущей папке проекта, а также меняем имя файла, чтоб совпадало с именем модели – 176IE12, хотя это и необязательно, но так меньше путаницы (Рис. 84 ).
Готовый файл 176IE12.MDF лежит в папке Model_and_MDF вложения. Теперь настала пора присоединить его к графической модели. Я не стану для этой цели использовать уже находящуюся в поле проекта графику с присоединенным Child Sheet. Причин несколько. Во-первых, я хочу оставить ее вам для сравнения. Во-вторых, там уже прописаны вручную свойства CLOCK, VOLTAGE и ITFMOD, а я хочу показать их присоединение с нуля. Ну и в-третьих, эти уже присоединенные свойства все-равно пришлось бы править на третьей вкладке Make Device. Поэтому, мы начнем с голой графики, а для этого используем еще одну графическую модель на этом же листе проекта. Выделяем ее и запускаем незаслуженно подзабытую нами Make Device.
На первой вкладке, если еще не прописано, вставляем Device Name176IE12 и Reference Prefix U. Я не стал здесь оригинальничать и оставил префикс, принятый в ISIS по умолчанию для микросхем. Лишний раз напомню, что здесь мы можем применить только английский язык. Ни какого русского языка Протеус здесь не потерпит (Рис 85). Вторую вкладку можно спокойно пропустить, там нам исправлять и добавлять нечего. На третьей вкладке нам предстоит добавить сразу несколько свойств. Начнем с CLOCK. Выбираем через кнопку New опцию Blank Item – (чистая позиция) и заполняем ее в соответсвии с рисунком 86. Name должно быть только CLOCK и никаким другим. Именно так оно прописано у нас в скриптах на дочернем листе модели, а теперь уже и в файле MDF. В графе Description (описание) допустим русский язык. Я ввел фразу: Частота (Внешн.=External). Именно так она будет отображаться в окне свойств. Тип переменной Type я оставил по умолчанию, т.е. String. При этом отсутствуют какие либо ограничения по вводу значений в эту строку. В прототипе 4060 используется тип Float и ограничение Positive, Non-Zero, т.е. действует защита от ввода отрицательного и нулевого значения. Возможно, и есть смысл сделать аналогично, но я надеюсь, что в России хотя бы одной бедой когда-то станет меньше, и отрицательные значения частоты туда писать не будут. Следующий Type, относящийся к окошку ввода оставляем Normal, т.к. нам необходимо будет окно доступное для записи значения частоты. А вот Default Value (по умолчанию) я в последний момент решил поменять на External. Причина все та же, не очень надеюсь, что наши пользователи запомнят, как пишется это слово. И, хотя я и ввел подсказку в описании, но так надежнее, да и числовое значение вбить на это место всегда быстрее, даже полному чайнику в расположении символов на клавиатуре.
Снова давим кнопочку New =› Blank Item. При этом свойство CLOCK запомнится в окне свойств модели, а нам предстанет чистое окно для заполнения следующего с именем VOLTAGE (Рис. 87 ). Заполняем его аналогично. В описании я ввел фразу Задержка для питания. Тип переменной в данном случае Keyword (Non-Editable) (ключевое слово – нередактируемое). Здесь уместна «защита от дураков», ведь упорно будут пытаться вписать 9V – пусть помучаются. В появившемся окне Keywords вводим наши возможные значения (те, что в MAP ON VOLTAGE в начале строк до двоеточия). Значения разделяем запятой без последующего пробела. Ну и по умолчанию Default Value выставляем 10V (наиболее близкое к стандартному питанию).
И опять щелкаем New, но на этот раз выбираем стандартное свойство из раскрывающегося списка ITFMOD. Здесь просто в Default Value задаем ему значение CMOS, а все остальное уже заранее заполнено в шаблоне (Рис. 88 ).
И в последний раз кликаем New и выбираем из списка MODFILE. Тут в окошке Default Value вводим имя нашего файла 176IE12.MDF (Рис. 89 ) и на этот раз давим кнопку Next. Со свойствами мы покончили. На последней вкладке вводим данные так, как нам хочется (Рис. 90 ) и сохраняем нашу модель пока в библиотеке USRDVC.
Ну, вот и все, наша модель готова к использованию. Теперь необходимо поместить файл 176IE12.MDF в папку MODELS Протеуса, чтобы он был доступен из любого нового проекта. Создаем тестовые проекты и проверяем работу микросхемы 176IE12. У меня во вложении это: TEST_176IE12_int.DSN для внутреннего и TEST_176IE12_RC.DSN для RC-генератора в папке Model_and_MDF. На этом наши мучения с созданием модели счетчика К176ИЕ12 закончены.
В заключение несколько слов о путях дальнейшего развития этой модели. Первоначально у меня были замыслы использовать свойство SCHMITT для элемента U2 по схеме дочернего листа для автоматического запуска генератора при наличии внешних цепей и переводе в режим External. Однако, если вы внимательно изучали материал, посвященный генераторам в п.6.3 и 6.4, то обратили внимание, что при использовании этого свойства частота получаемого RC-генератора значительно ниже, чем при IC и PRECHARGE. Причем она настолько ниже, что вообще не стыкуется с расчетными данными, полученными по формулам из справочников по цифровым устройствам. Поэтому от этой затеи я отказался. Попытка втащить свойство IC внутрь модели тоже была обречена на провал. Наличие IC предусматривает наличие аналоговой цепи внутри модели – хоть пресловутый резистор на 1 миллиОм, а надо врезать в эту цепь. При этом сразу падает быстродействие модели, а оно у нас и так невелико – при задирании частоты внутреннего генератора выше 600кГц или 1,2 -1,3 кГц с RC мой Core Quad с 2500 ГГц тактовой и 4(3,2) Гбайт мозгов благополучно грузится на все 100% и начинает бросаться «китайскими парашютистами» в логе. Ну а про PRECHARGE вообще можно забыть – конденсатор у нас снаружи. Но все-же покажу, как сделать со свойством SCHMITT на примере Graphic_with_Child_SCHMITT.DSN, лежащем в папке Graphic_and_Hierarchy. Для элемента U2 в свойствах вписываем SCHMITT=‹ SCHMITT ›, а скрипт для генератора дописываем следующим образом:
*MAP ON CLOCK
DEFAULT : CLKOSC=DIGITAL, SCHMITT=NULL
EXTERNAL : CLKOSC=NULL, SCHMITT=D

Вот и вся модификация. Если кому то нравится этот вариант, то скомпилируйте 176IE12.MDF с дочернего листа модуля из проекта Graphic_with_Child_SCHMITT.DSN самостоятельно. Я там уже заранее поставил и задержки, которые мы использовали в конечном варианте. Можно даже сразу откомпилировать в папку MODELS Протеуса. Она при старте компилятора предлагается автоматически.
Еще, учитывая наличие второй Российской достопримечательности после дорог, можно создать и скомпилировать (сторонней программой, а не Протеусом!!!) файл помощи типа xxx.HLP. Файл помещаем в папку HELP Протеуса, а на четвертой вкладке Make Device (которую пока мы просто проскакиваем) в графе Help File указываем путь к файлу помощи. Возможно, я так и поступлю, но сделаю единый xxx.HELP для всей 176-й серии позже (да проклянут меня владельцы Windows 7!!!).
Ну и последнее замечание. Если все же до конца покривить душой и оставить задержки как у модели 4060, то модель 176ИЕ12 будет меньше грузить ЦП компьютера, так что это тоже вариант модификации. А мы далее переходим к созданию счетчиков неизменно сопутствующих применению К176ИЕ12 в схемах часов.
Рисунки 80, 81, 82.
Рисунки 83, 84, 85.
Рисунки 86, 87, 88.
Рисунки 89, 90.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_80.gif
Просмотров: 328
Размер:	40.2 Кб
ID:	12156   Нажмите на изображение для увеличения
Название: Pic_81.gif
Просмотров: 313
Размер:	47.7 Кб
ID:	12157   Нажмите на изображение для увеличения
Название: Pic_82.gif
Просмотров: 289
Размер:	36.3 Кб
ID:	12158  

Нажмите на изображение для увеличения
Название: Pic_83.gif
Просмотров: 319
Размер:	64.0 Кб
ID:	12159   Нажмите на изображение для увеличения
Название: Pic_84.gif
Просмотров: 296
Размер:	29.7 Кб
ID:	12160   Нажмите на изображение для увеличения
Название: Pic_85.gif
Просмотров: 298
Размер:	31.5 Кб
ID:	12161  

Нажмите на изображение для увеличения
Название: Pic_86.gif
Просмотров: 307
Размер:	39.9 Кб
ID:	12162   Нажмите на изображение для увеличения
Название: Pic_87.gif
Просмотров: 292
Размер:	37.5 Кб
ID:	12163   Нажмите на изображение для увеличения
Название: Pic_88.gif
Просмотров: 288
Размер:	37.8 Кб
ID:	12164  

Нажмите на изображение для увеличения
Название: Pic_89.gif
Просмотров: 293
Размер:	39.7 Кб
ID:	12165   Нажмите на изображение для увеличения
Название: Pic_90.gif
Просмотров: 291
Размер:	28.7 Кб
ID:	12166  
Вложения:
Тип файла: rar 176IE12_part4.rar (125.8 Кб, 899 просмотров)

Последний раз редактировалось Halex07; 11.09.2010 в 12:17.
Halex07 вне форума  
Эти 12 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bi_max (28.09.2011), bozhko (22.09.2010), grbizly (14.09.2010), kittec (22.09.2010), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), WjaCHSL (11.09.2010), ДимаК (21.06.2011)
Непрочитано 16.09.2010, 21:04  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.10. Структура модели счетчика 4026 – основы для будущей К176ИЕ4. Полезные сведения о примитивах счетчиков и дешифраторов в ISIS.
В 176-й серии микросхем есть два счетчика-дешифратора неизменно сопутствующих К176ИЕ12 при создании схем электронных часов с сегментными индикаторами. Это декадный счетчик К176ИЕ4 с выходами в коде семисегментного индикатора и К176ИЕ3 – аналогичный предыдущему счетчик с коэффициэнтом пересчета 6. Почему-то в таблицах аналогов микросхем нашему К176ИЕ4 принято подставлять в аналог импортный CD4026. Но редко кто при этом делает ссылку на то, что аналог неполный. Я бы рискнул подчеркнуть, что аналогия наблюдается только в функции десятичного пересчета и выходов в семисегментном коде и не более того. Но, тем не менее, воспользовавшись моделью для 4026 как основой, можно попробовать создать 176ИЕ4. Оставим пока в покое наши счетчики, и попробуем посмотреть, как выглядит модель 4026. Файл 4026.MDF извлекается аналогично модели 4060 и расположен в той же библиотеке DIGITAL.LML. Я прикреплю его к вложению для тех, кому лень лишний раз поработать с GETMDF. Там же вы найдете даташит на CD4026B от фирмы Texas Instruments. Он самый маленький по размеру из имеющихся у меня в наличии, поэтому не сильно увеличит объем вложения. А вот внутреннюю структуру на Рис. 91 я взял от HCF4026 – этот даташит с самыми четкими картинками, но и весит в три раза больше.
Если проанализировать структуру счетчика, то можно сделать вывод, что это пятиразрядный счетчик Джонсона на D-триггерах с дешифрацией кода в семисегментный на логических элементах. В принципе, мы могли бы, как и в случае с 4060 воспроизвести эту структуру на цифровых примитивах и получить вполне нормальную, рабочую модель счетчика. Но давайте заглянем в 4026.MDF. Ниже приведен раздел, содержащий список компонентов модели:
Код:
*PARTLIST,4    
U1,COUNTER_4,COUNTER_4,ALOAD=0,ARESET=1,INVERT="OE,CE,MAX",LOWER=0,PRIMITIVE=DIGITAL,UPPER=9,USEDIR=0
U2,DECODER_4_7,DECODER_4_7,PRIMITIVE=DIGITAL,TG=‹TG›,TYPE=7B
U3,OR_4,OR_4,INVERT=D2,PRIMITIVE=DIGITAL,TG=‹TG›
U4,BUFFER,BUFFER,PRIMITIVE=DIGITAL,TG=‹TG›
Приятная неожиданность, не правда ли? Весь список – 4 примитива. Ни триггеров, ни многовходовых логических элементов. Остается констатировать факт – в данном случае применена поведенческая модель, т.е. функции реального компонента имитированы с помощью подходящих по назначению цифровых примитивов, путем задания им специфических свойств. Как я и обещал, в процессе создания моделей мы познакомимся с цифровыми примитивами поближе. В данном случае присутствуют два заслуживающих особого внимания компонента. Это COUNTER_4 и DECODER_4_7. Логические элементы, надеюсь, не вызывают каких-либо затруднений в использовании. Кстати, изучив специфические свойства четырехразрядного счетчика и декодера из 4 разрядов в семисегментный код, мы сможем без труда использовать и остальные примитивы счетчиков и дешифраторов. Итак, приступим.
Четырехразрядный универсальный счетчик COUNTER_4 с обвеской для тестирования представлен на Рис. 92, а тестовый проект в папке COUNTER_TEST вложения. Для визуальной индикации состояния его выходов я использовал модель семисегментного индикатора 7SEG-BCD, позволяющую в цифровом виде просматривать двоичный код. Обратите внимание, что у этой модели вывод младшего разряда находится справа. Имена выводов не индицируются, поэтому просто запомните на будущее.
Для начала познакомимся с назначением выводов (пинов) модели.
Входы:
D0…D4 – (Load data) входы данных параллельной загрузки счетчика.
UCLK – (Count-up clock) счетный вход инкремента (приращения) по положительному фронту импульса.
DCLK – (Count-down clock) счетный вход декремента (уменьшения) по положительному фронту импульса.
CNTUP – (Count up/down direction control) вход направления счета. По умолчанию отключен. Подключается флажком в свойствах: лог.0 – счет вниз, лог.1 – счет вверх.
ОE – (Output-enable control) разрешение выходов. Лог.1 разрешает сигнал на выходах Q0…Q4.
CE – (Count-enable control) вход разрешения счета. Лог.1 разрешает счет.
LOAD – (Load input) вход разрешения параллельной загрузки. По умолчанию синхронный, т.е. при установке в лог. 1 загрузка с входов D0…D4 осуществляется по переднему фронту UCLK или DCLK. При установке в асинхронный режим флажком в свойствах загрузка осущесвляется по переднему фронту импульса на нем независимо от счетных входов.
RESET – (Reset input) сброс счетчика по умолчанию синхронный по положительному фронту UCLK или DCLK. Перевод в асинхронный режим флажком в свойствах.
Выходы:
Q0…Q4 – (Count output) выходы счетчика.
MIN – (Minimum count output) выход минимального значения. Сигнал на нем формируется при направлении счета вниз и установленном значении Minimum count value в Advanced свойствах.
MAX – (Maximum count output) выход максимального значения. Сигнал на нем формируется при направлении счета вниз и установленном значении Maximum count value в Advanced свойствах.
RCO – (Ripple-carry output) выход достижения верхнего или нижнего порога счета. Сигнал на нем формируется как по верхнему Minimum count value, так и по нижнему Maximum count value пределам счета.
Окно свойств счетчика представлено на Рис. 93.
Из основного окна свойств непосредственно доступны только три флажка: Asynchronous Load (ALOAD), Asynchronous Reset (ARESET) и Use CNTUP Direction Control (USEDIR). О них я упоминал в описании выводов модели. По умолчанию они не определены – None (символ знака вопроса). Для установки необходимо добиться щелчком мыши галочки в окошке, для снятия – пустого окна. Все остальные свойства спрятаны в раскрывающемся списке Advanced Properties. В основном это временные свойства задержек. Я не думаю, что стоит приводить здесь весь список времянок с переводом Протеусной «фени» на наш великий и могучий. Как расшифровывать эту временную абракадабру я уже описывал, ничего принципиально нового здесь нет. Остановлюсь только на трех параметрах, которые нам будут интересны в данный момент. Все они сосредоточены в конце раскрывающегося списка и по умолчанию не определены, т.е. None.
Lower Count Value (LOWER) – нижнее значение предела счетчика.
Upper Count Value (UPPER) – верхнее значение предела счетчика.
Output Value On Reset (RESET) – состояние выходов счетчика после воздействия сигнала сброса по входу RESET.
Все эти три значения задаются десятичными числами. Следует помнить, что исходное состояние выходов 0000 – тоже значимое состояние. Поэтому, при задании пределов для счетчиков-делителей его необходимо учитыватьи задавать предел на единицу меньше. Например, для декадного счетчика с коэффициентом пересчета 10 необходимо задать верхний предел UPPER=9. При этом LOWER и RESET можно и не задавать, если счетчик только суммирующий. Однако, если предполагается реверсивный счет, то лучше его обозначить. Если вы хотите получить реверсивный счетчик с одним тактовым входом, то просто объедините UCLK и DCLK, включите флажок USEDIR и управляйте направлением счета с помощью входа CNTUP. Интересно назначение последнего из трех вышеуказанных свойств – RESET. Если задать ему ненулевое числовое значение ниже верхнего предела, то при воздействии входного сигнала RESET счетчик будет сбрасываться не в ноль, а в это значение, при условии, что в данный момент значение на выходах больше данного числа. Для предустановки счетчика при запуске симуляции как и у триггеров используется свойство INIT, введенное в ручную в окне дополнительных свойств. Если вы введете INIT= 3, то при старте симуляции встанут в лог. 1 выходы Q0 и Q1 (двоичное 0011). Также как и с другими цифровыми примитивами здесь применимо свойство INVERT как к входам, так и к выходам. Например, по умолчанию счет происходит по переднему фронту тактового импульса на UCLK. Если ввести INVERT=UCLCK, то счетчик будет перекидываться по заднему фронту этого импульса. В INVERT можно записывать одновременно несколько выводов модели, разделяя их имена запятыми без дополнительных пробелов. Например: INVERT=D0,D1,D2,D3,RESET проинвертирует сигналы на всех входах данных и входе сброса, т.е. счетчик сбрасываться будет лог. 0.
Как вы уже, наверное, догадались из рисунка 92, чтобы активировать модель счетчика – получить сигналы на выходах и разрешить счет необходимо подать на OE и CE сигналы лог. 1. Чтобы вы могли самостоятельно изучить возможности универсальной модели счетчика, я приложил два проекта Manual_TEST.DSN и Auto_TEST.DSN в папке COUNTER_TEST. В первом из них тестирование с различными предустановками осуществляется путем ручного изменения состояния логических переключателей на входах счетчиков. Во втором на входы поданы сигналы генераторов, тестирование по частотомерам в интерактивном режиме и с помощью графиков.
Мы тестировали четырехразрядную модель универсального счетчика, но в арсенале цифровых примитивов имеются различные варианты от трех до 14 разрядов. Свойства у всех у них аналогичны расмотренному нами.
Следующий не менее интересный примитив дешифратор DECODER_4_7. Свойств у него будет поменьше, но, тем не менее, знание особенностей этой модели позволит нам успешно применять ее и другие дешифраторы для своих целей.
Вид декодера включенного в двроичный режим с обвеской для ручного теста показан на Рис. 95.
Назначение выводов модели.
Входы:
D0…D4 – (Data input to be decoded) входы данных для декодирования.
EN – (Enable) сигнал на выходах разрешен.
ALL – (All outputs active) се выходы в активное состояние в соответствии с выбранным в окне свойств уровнем LOW или HIGH для All sets all outputs (ALL). По умолчанию не выбрано – None.
Выходы:
Q0…Q6 – (Decoded output value) декодированное выходное значение.
Теперь рассмотрим окно свойств (Рис. 96).
Decoder Type (TYPE) – тип декодированного сигнала. На этом свойстве остановимся особо чуть ниже.
All sets all outputs (ALL) – установка всех выходов по сигналу на входе ALL. Описано выше.
Warnings for missing table entries (WARN) – желтое предупреждение в логе в случае отсутствия данных в таблице для присутствующей на входах кодовой комбинации.
В раскрывающемся списке Advanced Properties прописаны все типы задержек, присущие данной модели. На них я также как и со счетчиком останавливаться не буду.
При наличии на входе EN высокого логического уровня данные на выходах модели устанавливаются в соответствии с двоичной кодовой комбинацией на входах и типом дешифратора, выбранным в окне свойств. Вот на этом моменте остановимся подробнее.
Возможны пять типов дешифрации входного сигнала, выбираемых из раскрывающегося списка:
BINARY – в этом режиме двоичному коду на входах D0…D4 модели соответствует единственный активный выход в соответствии с заданным входным значением, т.е. 0000 активирует выход D0, 0001 – выход D1 (на Рис. 95) … 1001 – выход D9 1111 – выход D15. Конечно, последние два из перечисленных вариантов в нашем случае отсутствуют, но имеются, например, в модели DECODER_4_16.
BCD – двоично-десятичный декодер. Этот вариант до цифры 9 – код 1001 полностью совпадает с двоичным, однако последующие комбинации четырехразрядного кода не рассматриваются, и состояния выходов не меняют. Это вытекает из концепции BCD кодирования, где каждый разряд десятичного числа описывается двоичной тетрадой, т.е. числу 123 будет соответствовать в коде BCD кодовая комбинация 0001 0010 0011 (сотни-десятки-единицы).
Две кодовых комбинации для семисегментного кода – и 7B. Варианты отображения сегментов для кода на входах представлены на Рис. 97 и всегда доступны в файле помощи по кнопке HELP в окне свойств. Если кто-то затрудняется найти отличие – сравните цифры 6 и 9.
Ну и, наконец, пятый, самый интересный тип TABLE – дающий нам возможность проявить собственные фантазии. Этот тип туманно описан в HELP, поэтому я восполню пробелы в информации. Как и следует из перевода, это табличный тип представления соответствия числа на входе состоянию выходов. С ним неразрывно связано свойство LENGTH (длина таблицы), которое вручную надо задать в окне свойств, выбрав этого тип дешифратора. В качестве примера использования этого типа в папке DECODER вложения приложен проект TABLE.DSN, в котором с помощью таблицы я задал декодирование семисегментного кода, где комбинациям с 10 по 15 соответствуют выходные сигналы мнемоники букв A, b, С, d, E, F для индикатора с общим катодом. Ниже приведен код, заданный в свойствах:
Код:
LENGTH=16
TABLE0=%0111111
TABLE1=%0000110
TABLE2=%1011011
TABLE3=%1001111
TABLE4=%1100110
TABLE5=%1101101
TABLE6=%1111101
TABLE7=%0000111
TABLE8=%1111111
TABLE9=%1101111
TABLE10=%1110111
TABLE11=%1111100
TABLE12=%0111001
TABLE13=%1011110
TABLE14=%1111001
TABLE15=%1110001
Рассмотрим, как он сформирован. LENGTH=16 задает количество строк таблицы, включая TABLE0. Далее, в каждой строке, начинающейся со слова TABLE, назначен двоичный код на выходах Q соответствующий десятичному значению после слова TABLE на входах D. Знак процента после равенства означает, что далее следует двоичное число. В двоичном значении, как и обычно, младший разряд справа, т.е. в нашем случае для шести выходов они расположены как Q6,Q5…Q0. Используя другие типы примитивов дешифраторов с меньшим или большим числом входов/выходов, можно таблично задать любую задуманную заранее комбинацию. Обращаю только внимание на то, что заданная длина таблицы и количество знаков в двоичном числе должны совпадать соответственно с числом строк и числом выходов модели, иначе получите «горчичник» в логе. Различные примеры для тестирования модели дешифратора приложены в проектах BIN_BCD.DSN и 7A_7B.DSN папки DECODER вложения. Из названий видно какие типы где тестируются. Для вариантов 7A и 7B я показал, как с помощью свойства INVERT для выходов можно использовать индикаторы с общим катодом и общим анодом.
На этом пока закончим знакомство с примитивами и вернемся к нашей модели 4026. В папке CD4026_model я привел проект, в котором по файлу MDF реконструирована внутренняя структура модели счетчика. На рисунке 98 она приведена полностью. Наверное, теперь, когда ясны те или иные назначения свойств использованных примитивов, излишние комментарии по поводу работы этой структуры становятся неуместными. Но все-же немного поясню, чтобы снять ненужные вопросы. Посредством назначения верхнего и нижнего пределов и запрещения параллельной загрузки примитив U1 превращен в обычный десятичный счетчик. Посредством INVERT изменен активный уровень по входу CE, чтобы совпадал с реальным. Все ненужное завешено на VSS, т.е. на нулевой вывод питания, причем вход OE для этого проинвертирован, чтобы активным разрешением по нему стал лог. 0. Проинвертирован также и выход MAX, чтобы создать перепад с нуля на единицу на выходе СO по достижении десятого импульса. Кстати, здесь есть небольшое расхождение с реальной микросхемой по временному формированию этого сигнала не влияющее на работу при последовательном соединении счетчиков. На элементе U2 реализовано декодирование в сигнал семисегментного кода по таблице 7B (шестерка и девятка с «хвостиками»). На четырехвходовом ИЛИ - элементе U3 реализовано формирование импульса по счету 2. Здесь также применена инверсия к третьему сверху входу. Ну и цифровой буфер U4 применен чисто для «гальванического» разделения входа DEI и выхода DEO.
Вот эту структуру мы и возьмем за основу для формирования моделей наших К176ИЕ3 и К176ИЕ4, прибегнув к некоторым корректировкам в сторону их особенностей. Об этом в следующем материале.
Рисунки 91. 92, 93.
Рисунки 94, 95, 96.
Рисунки 97, 98.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_91.gif
Просмотров: 302
Размер:	87.5 Кб
ID:	12439   Нажмите на изображение для увеличения
Название: Pic_92.gif
Просмотров: 370
Размер:	39.8 Кб
ID:	12440   Нажмите на изображение для увеличения
Название: Pic_93.gif
Просмотров: 290
Размер:	16.7 Кб
ID:	12441  

Нажмите на изображение для увеличения
Название: Pic_94.gif
Просмотров: 306
Размер:	26.6 Кб
ID:	12442   Нажмите на изображение для увеличения
Название: Pic_95.gif
Просмотров: 296
Размер:	8.5 Кб
ID:	12443   Нажмите на изображение для увеличения
Название: Pic_96.gif
Просмотров: 277
Размер:	17.3 Кб
ID:	12444  

Нажмите на изображение для увеличения
Название: Pic_97.gif
Просмотров: 303
Размер:	21.1 Кб
ID:	12445   Нажмите на изображение для увеличения
Название: Pic_98.gif
Просмотров: 310
Размер:	13.6 Кб
ID:	12446  
Вложения:
Тип файла: rar CD4026.rar (370.0 Кб, 944 просмотров)
Halex07 вне форума  
Эти 9 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), dosikus (22.09.2010), kittec (22.09.2010), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 16.09.2010, 21:10  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.11. Поведенческие модели К176ИЕ4 и К176ИЕ3 для Протеуса на основе примитивов универсальных счетчиков.
Для начала сформируем графические модели этих счетчиков в соответствии с Рис. 99.
Надеюсь, что мне не стоит в очередной раз повторять процесс создания графики, я просто приложил проект Graphic_model.DSN, в котором есть и несформированная в модели графика и готовые модели. Обратите внимание, что моделям назначен корпус DIL14 в отличие от шестнадцативыводной К176ИЕ12. Базовая графика показана на рисунке 100.
Обратите внимание, что вместо стандартного обозначения счетного вывода я применил к нему символ “T”. Протеус не приучен различать прописные и строчные буквы, а латинским символом “c” у нас уже обозначен третий выход на семисегментный индикатор. Поэтому пришлось пойти на такую замену. Порывшись в старых справочниках, в книге В. Л. Шило «Популярные цифровые микросхемы» М., Радио и связь, 1989 мне удалось найти временные диаграммы формирования сигналов на выходах P и 4(2) этих микросхем. Диаграмма приведена на Рис. 101. Соответственно на ней U2 – выходной сигнал на выводе 2 (P), а U3 – выходной сигнал на выводах 3 счетчиков.
Приведу еще несколько выдержек из различных справочных материалов, посвященных этим счетчикам, которые пригодятся нам в дальнейшем. Установка триггеров счетчиков в 0 происходит подачей лог. 1 на вход R, переключение (счет) по спаду импульса положительной полярности на входе С (в моем случае T). Сигнал на входе S служит для изменения полярности выходных семисегментных кодовых комбинаций. В случае подачи на вход S положительного сигнала лог. 1 получаем на выходе код для индикаторов с общим анодом, а в случае лог. 0 – код для индикаторов с общим катодом. При использовании вакуумно-люминисцентных индикаторов на этот вход подается модулирующие импульсы, например 32 кГц счетчиков К176ИЕ5 или К176ИЕ12. При использовании жидкокристалических индикаторов также подаются модулирующие импульсы, но с частотой на порядок ниже 30-100Гц, которые одновременно подаются и на подложку индикатора. Импульсы на выходах P и 4 (2) данных счетчиков позволяют при последовательном соединении организовать разряды индикации минут от 0 до 59 и часов от 0 до 23. Спады положительных импульсов на соответствующих выходах служат в качестве тактовых для переключения старших разрядов. Мы рассмотрим в дальнейшем организацию структуры электронных часов с использованием данных счетчиков. А пока, отталкиваясь от этих данных и приняв структуру 4026 как базовую, попробуем создать на ее основе модели данных счетчиков.
Основным отличием К176ИЕ4 от CD4026 является наличие входа S, позволяющего инвертировать выходной код. Достаточно добавить к исходной структуре дополнительную логику, реализующую данную функцию и модель приобретет все необходимые нам свойства. Проще всего реализовать этот момент с помощью двухвходовых элементов XOR (исключающее ИЛИ). Кроме того, нам потребуется изменить полярность сигналов на выходах P и 4. Это легко делается с помощью свойства INVERT. Получившаяся в результате данных действий структура показана на Рис. 102.
В отличие от модели 4026 в данном случае не инвертируется сигнал MAX со счетчика U1, но зато инвертируется выход D элемента 4ИЛИ U10. На выходе дешифратора включены элементы исключающее ИЛИ, которые с помощью изменения полярности сигнала на входе S позволяют инвертировать выходной код. На Рис. 103 приведена временная диаграмма для данного варианта.
Для лучшего восприятия диаграммы я включил в нее в виде семиразрядной шины сигнал на выходах a…g. В данном случае на входе S присутствует лог. 0 и код шины соответствует сигналам для индикатора с общим катодом. Все отличие от 4026 в инверсии сигналов на выходах P и 4. Данный вариант модели имеет право на существование, и даже будет корректно работать, поскольку нужные перепады уровней с лог. 0 на лог. 1 после цифры 3 и с лог. 1 на лог. 0 после цифры 9 совпадают во времени с приведенными на диаграмме Рис. 101 сигналами для счетчика К176ИЕ4. Но вот длительности этих импульсов оставляют желать…. Попробуем с помощью дополнительных элементов устранить данное несоответствие. Я не стал сильно мудрить и посредством двух дополнительных элементов 2И и триггеров достиг желаемого (Рис. 104).
В результате проведенных коррекций картинка на диаграмме (Рис. 105 ) стала полностью совпадать с приведенной ранее на рисунке 101. Данные примеры приложены в папке вложения 176IE4_structure. Проект IE4_var_1.DSN – с укороченными импульсами и проект IE4_var_2.DSN с дополнительными триггерами и импульсами соответствующими диаграмме рисунка 105. Аналогичные примеры для счетчика К176ИЕ3 приведены в папке 176IE3_structure. Они отличаются только логикой формирования импульсов на выходах P и 2, поскольку счетчик имеет коэффициент пересчета 6. Я не стану здесь приводить лишние картинки, желающие посмотрят их в соответствующих проектах.
В проектах Test_176IE3_IE4_V1.DSN и Test_176IE3_IE4_V2.DSN данные структуры присоединены в виде дочерних листов к соответствующим графическим моделям, и из них построена схема счетных секций минут и часов для проверки моделей в действии. Папка с проектами называется Test_counters.
Но готовых файлов MDF во вложении вы не найдете. Дело в том, что в процессе построения моделей этих счетчиков меня слегка «торкнуло» и я нашел более красивое и близкое к реальности решение для этих моделей. Заодно «пристрелю еще одного ушастого» - познакомлю вас с цифровым примитивом универсального регистра сдвига. Вот из тех моделей мы и сформируем MDF для последующего использования.
Рисунки 99, 100, 101.
Рисунки 102, 103, 104.
Рисунок 105.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_99.gif
Просмотров: 340
Размер:	18.9 Кб
ID:	12756   Нажмите на изображение для увеличения
Название: Pic_100.gif
Просмотров: 287
Размер:	21.9 Кб
ID:	12757   Нажмите на изображение для увеличения
Название: Pic_101.gif
Просмотров: 279
Размер:	9.0 Кб
ID:	12758  

Нажмите на изображение для увеличения
Название: Pic_102.gif
Просмотров: 345
Размер:	51.8 Кб
ID:	12759   Нажмите на изображение для увеличения
Название: Pic_103.gif
Просмотров: 275
Размер:	7.3 Кб
ID:	12760   Нажмите на изображение для увеличения
Название: Pic_104.gif
Просмотров: 333
Размер:	54.2 Кб
ID:	12761  

Нажмите на изображение для увеличения
Название: Pic_105.gif
Просмотров: 325
Размер:	13.7 Кб
ID:	12762  
Вложения:
Тип файла: rar 176IE3_4_count.rar (103.2 Кб, 882 просмотров)

Последний раз редактировалось Halex07; 22.09.2010 в 18:42.
Halex07 вне форума  
Эти 12 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), CERGEI1982 (22.09.2010), dosikus (22.09.2010), edt (09.05.2011), kittec (22.09.2010), parcshin (24.04.2011), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)
Непрочитано 22.09.2010, 18:43  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.12. SHIFTREG - примитив универсального регистра сдвига и модели К176ИЕ4 и К176ИЕ3 для Протеуса на его основе.
Если вспомнить описание внутренней структуры счетчика 4026, то изначально я упоминал, что он построен на базе пятиразрядного счетчика Джонсона. Не являются исключением и наши К176ИЕ3, К176ИЕ4. Типично счетчик Джонсона выглядит как замкнутый в кольцо сдвиговый регистр, у которого инверсный выход последнего триггера соединен с входом D первого. Давайте попробуем построить максимально приближенную к реальности модель на базе универсального сдвигового регистра. Для начала познакомимся с примитивом SHIFTREG и его свойствами. Поскольку нам потребуется пятиразрядный регистр сдвига, я буду рассматривать именно SHIFTREG_5, у остальных свойства те же. Для ручного тестирования я обвешал примитив переключателями и пробниками из Debugging Tools (Рис. 106 ) и поместил в проект ShiftReg5_Manual_test.DSN в папке SHIFTREG_TEST вложения.
Для начала познакомимся с назначением входов и выходов примитива.
Входы:
DL – (New lower data) вход данных младшего разряда регистра, по сути вход D триггера младшего разряда.
D0…D4 – (Parallel load data) входы данных для параллельной загрузки.
DU – (New upper data) вход данных старшего разряда регистра, по сути вход D триггера старшего разряда.
CLK – (Clock) тактовый вход. По умолчанию сдвиг (а также загрузка и сброс, если не установлены флажки в свойствах) происходит по переднему фронту импульса на нем.
RESET – (Data reset) сброс данных. По умолчанию при лог. 1 на этом входе по переднему фронту CLK. Для асинхронного сброса только этим сигналом необходимо установить флажок в свойствах (Рис. 107).
HOLD – (Shift-hold) удержание данных. Лог. 1 на этом входе запрещает сдвиг данных по тактовому сигналу на входе CLK.
UP – (Direction control) направление сдвига. При лог. 1 на этом входе сдвиг происходит с входа DL по направлению вверх, т.е. Q0=›Q1…Q4. При лог. 0 на этом входе сдвиг происходит с входа DU по направлению вниз, т.е. Q4=›Q3…Q0.
LOAD – (Data load) сигнал параллельной загрузки со входов D0…D4. По умолчанию при лог. 1 на этом входе по переднему фронту CLK. Для асинхронной загрузки только этим сигналом необходимо установить флажок в свойствах (Рис. 107).
OE – (Output-enable) сигнал, разрешающий работу выходов данных Q0…Q4. Обратите внимание, что сигналы на выходах переноса QL и QU он не блокирует.
Выходы:
QL и QU – (Lower Q and Upper Q) выходы соответственно переноса вниз и вверх. Фактически сигнал на этих выходах дублирует соответственно Q0 и Q4, но как бы гальванически развязан от них.
Q0…Q4 – (Data output) выходы данных соответствующих разрядов регистра.
Теперь обратимся к окну свойств SHIFTREG (Рис. 107). По сути, я уже почти все описал, пока рассматривал назначение выводов. Осталось указать, что Initial Output Value (INIT) определяет состояние триггеров регистра при старте симуляции. По умолчанию оно не определено, но если ввести в него десятичное значение, например 3, то при старте симуляции соответственно выходы (триггеры) Q0 и Q1 встанут в состояние лог.1. Фактически, у счетчиков было то же самое. Ну и конечно по раскрывающемуся списку Advanced Properties запрятаны все возможные задержки распространения сигнала для данного примитива.
В папке SHIFTREG_TEST имеется проект ShiftReg5_auto_test.DSN, в котором приведены характерные комбинации сигналов и свойств для применения примитива в качестве сдвигового регистра. Последний пример в этом проекте показывает организацию счетчика Джонсона, который нам необходим для создания моделей наших счетчиков. На рисунке 108 приведена диаграмма его работы. Мы видим, что полный цикл от состояния от 00000 до 11111 счетчик проходит за 10 тактовых импульсов.
Фактически, это то, что нам нужно для построения моделей. Достаточно проинвертировать тактовый вход, чтобы срабатывание происходило по спаду тактового импульса и половина модели готова. Причем импульсы на выходах переполнения P (выход Q4) и 4 (выход Q3) уже будут иметь необходимую длительность. Если кому интересен первоисточник информации, рекомендую обратиться к книге: Ковалев В. Г. Лебедев О. Н. «Электронные часы на микросхемах» М.: Радио и связь, 1985. Там построение счетчиков ИЕ3, ИЕ4 рассмотрено в главе 3 «Микросхемы серии 176». Ну, что-ж, полдела сделано, но очень не хочется крутить «хитрый» дешифратор на мелкой логике для преобразования кода Джонсона в семисегментный. И тут на помощь нам снова приходит примитив дешифратора, только на этот раз DECODER_5_8. Поступим просто: пять входов этого дешифратора заводим на выходы счетчика, а первые семь выходов описываем таблицей для семисегментного индикатора. Правда таблица получится достаточно длинной, 2 в степени 5, т.е. 32 строки, потому что неиспользуемые комбинации также пришлось включить с нулевыми значениями выходов. Если этого не сделать, ISIS будет "плеваться" горчичниками на отсутствующие комбинации. Результирующий код получился следующим:
Код:
{LENGTH=32
TABLE0=%00111111
TABLE1=%00000110
TABLE2=0
TABLE3=%01011011
TABLE4=0
TABLE5=0
TABLE6=0
TABLE7=%01001111
TABLE8=0
TABLE9=0
TABLE10=0
TABLE11=0
TABLE12=0
TABLE13=0
TABLE14=0
TABLE15=%01100110
TABLE16=%01101111
TABLE17=0
TABLE18=0
TABLE19=0
TABLE20=0
TABLE21=0
TABLE22=0
TABLE23=0
TABLE24=%01111111
TABLE25=0
TABLE26=0
TABLE27=0
TABLE28=%00000111
TABLE29=0
TABLE30=%01111101
TABLE31=%01101101}
Еще раз напомню, что фигурные скобки в начале и конце кода включают Hide - скрытие кода, чтобы он не загромождал проект. Я привел только значимые коды (всего их 10) таблицы в двоичном виде, чтобы было нагляднее видно расположение разрядов в коде, а остальное в десятичном. Симулятор Протеуса обучен воспринимать и другие варианты. Значимые строки тоже можно было бы записать в другом виде, например в шестнадцатеричном. Тогда строка для нуля имела бы вид - TABLE0=$3F, а для девятки TABLE16=$6F. Знак доллара перед числом означает шестнадцатеричное значение. Но до знака равенства, т.е. после слова TABLE можно использовать только десятичное значение. Еще обратите внимание, что семиразрядные коды следуют в таблице не по порядку, поскольку код Джонсона до половины максимального значения (для пятиразрядного счетчика это 10) нарастает, а потом спадает в зависимости от количества поступивших на вход счетчика импульсов. Поэтому числу 5 соответствует TABLE31, а числу 9 – TABLE16. Кто «не въезжает» – в «Основы цифровой техники», читать про счетчик Джонсона. По этому поводу предупреждал.
Ну и еще один полезный совет тем, кто будет аналогичные операции проводить самостоятельно. Поскольку можно использовать шестнадцатеричные значения, то чтобы «не парить себе мозги», можно воспользоваться утилитами генераторов кода для семисегментных индикаторов, например, встроенными в компиляторы фирмы Mikroelektronika.
Оставляем выходы модели счетчика в том виде, в котором они и были, т.е. с использованием исключающего ИЛИ (проще тут ничего не придумаешь) и формируем наши модели. Для счетчика К176ИЕ4 мы практически уже все сформировали, и мне остается только привести получившуюся внутреннюю структуру на Рис. 109.
Как видно из рисунка, схема получилась даже несколько проще, чем с универсальным счетчиком. Аналогично сформируем и счетчик К176ИЕ3. Правда здесь придется уже немного усложнить схему. Дело в том, что менять разрядность входного регистра сдвига мы не можем, он должен быть пятиразрядным, а счетчик должен иметь коэффициент пересчета – 6, и при этом еще и сохранить возможность внешнего сброса – вход R. Поэтому пришлось применить еще один логический элемент двухвходового ИЛИ, а для формирования импульса сброса по достижении числа 6 можно воспользоваться незадействованным выходом дешифратора. Достаточно было прописать в нужной строке таблицы единичку в старшем разряде TABLE30=%11111101, и мы без всяких лишних хлопот получили нужный нам коэффициент пересчета. Структура приведена на Рис. 110.
Тесты структур для каждого счетчика приведены в папке вложения COUNTER_STRUCTURE_TEST, а общий тест счетных декад на их основе в папке MODELS_WITH_CHILD_LIST. В ней модели еще имеют дочерний лист и можно туда перейти. Вот с этих листов и скомпилируем MDF файлы соответствующих счетчиков. Как это делается, я уже объяснял в примере со счетчиком ИЕ12, но прежде чем компилировать добавим, также по аналогии с ИЕ12 временные задержки к элементам структуры счетчиков ИЕ3 и ИЕ4. В папке MODELS_WITH_CHILD_LIST они уже с добавленными свойствами, поэтому на дочерних листах присутствует скрипт MAP ON VOLTAGE. Поскольку у нас модель поведенческая, я добавил временные параметры только к тем элементам, которые непосредственно задействованы в передаче сигналов с входов на выходы микросхемы, т. е. сдвиговому регистру и выходной логике на исключающих ИЛИ. Да и у регистра прописаны только те «времянки», которые связаны со счетным входом и входом сброса.
Ну и окончательный тест моделей счетчиков с прописанными в свойствах файлами MDF приложен в папке MODELS_WITH_MDF_TEST. Естественно, в этой же папке лежат и сами файлы 176IE3.MDF и 176IE4.MDF. Тест показывает, что модели ведут себя вполне адекватно. Итак, у нас уже три собственных работающих схематичных модели 176-й серии. Пришел черед научиться формировать из своих моделей библиотеки.
Рисунки 106, 107, 108.
Рисунки 109, 110.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_106.gif
Просмотров: 1153
Размер:	11.8 Кб
ID:	13454   Нажмите на изображение для увеличения
Название: Pic_107.gif
Просмотров: 461
Размер:	16.6 Кб
ID:	13455   Нажмите на изображение для увеличения
Название: Pic_108.gif
Просмотров: 481
Размер:	22.2 Кб
ID:	13456  

Нажмите на изображение для увеличения
Название: Pic_109.gif
Просмотров: 523
Размер:	45.6 Кб
ID:	13457   Нажмите на изображение для увеличения
Название: Pic_110.gif
Просмотров: 536
Размер:	49.0 Кб
ID:	13458  
Вложения:
Тип файла: rar 176IE3_4_shiftreg.rar (118.7 Кб, 1013 просмотров)

Последний раз редактировалось Halex07; 10.10.2010 в 08:35.
Halex07 вне форума  
Эти 17 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
aaalfa (27.09.2010), bozhko (26.12.2010), dosikus (10.10.2010), EKuzmich (22.09.2010), gena1959 (17.10.2010), nikseln (26.09.2010), parcshin (24.04.2011), ReLe1 (14.08.2011), Tischon (21.01.2011), Traan (16.09.2013), valvlad (13.05.2011), ДимаК (21.06.2011)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
Linux-ваше мнение Tvenn Делимся опытом 6169 23.08.2015 08:57
Pictiva TM 128 X 64 OLED Module (SSD0323) + AVR + PROTEUS - рабочий проект для начинающих OttoStirliz Микроконтроллеры, АЦП, память и т.д 8 28.05.2010 16:59


Часовой пояс GMT +4, время: 14:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot