Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Модель цифрового счетчика в Simulink
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
ksv198
Встала вот задачка смоделировать в Simulink'е цифровой многоразрядный счетчик с обратными связями (для нужного коэффициента деления). Нарисовал для тренировки 4-х разрядный двоичный на D-триггерах. Без обратных связей все делит как полагается. При попытке сделать его десятичным (обратная связь через 2И элемент) ругается. Ввожу задержку в обратной связи - ругаться перестает, но моделирует неправильно sad.gif .
Подскажите плз, что не так? Модельку прилагаю. Там синим выделен "функциональный" счетчик, он работает ОК, но мне надо именно модель с выходами всех разрядов.
Нажмите для просмотра прикрепленного файла
NickNich
Рассчитайте, каким будет состояние Вашего счётчика на Д-триггерах после прихода первого активного фронта тактового сигнала, если начальное состояние этого счётчика было - все нули. Потом проверьте, как из этого состояния формируется сигнал сброса. Получится весело smile.gif)

И учтите, что линия задержки, в Вашем случае задерживает не на период клока, а на период выборки. У Вас Sampling time = 0.1, а период клока - два периода выборки.
ksv198
Цитата(NickNich @ Mar 30 2006, 11:09) *
Рассчитайте, каким будет состояние Вашего счётчика на Д-триггерах после прихода первого активного фронта тактового сигнала, если начальное состояние этого счётчика было - все нули. Потом проверьте, как из этого состояния формируется сигнал сброса. Получится весело smile.gif)

И учтите, что линия задержки, в Вашем случае задерживает не на период клока, а на период выборки. У Вас Sampling time = 0.1, а период клока - два периода выборки.

Я понимаю, что идеализованное моделирование приводит к неопределенностям при расчетах. Однако в жизни если спаять такой счетчик он работать будет, реально! И делить на 10 будет! Что в Simulink'е сделать надо, чтобы похоже на реальность было?
NickNich
Вы правда пробовали спаять счётчик именно по той схеме, которую нарисовали (т.е. четыре д-триггера, и линии Q1 и Q3 объединены по И и заведены на сигнал сброса)? И оно делит на 10?

Объясняю - если начальное состояние счётчиков все нули, то после прихода первого фронта выход Q0 переключится в 1, ето вызовет появление автивного фронта на тактовом входе второго триггера, т.е. Q1 переключится в 1 и т.д. Т.е. после первого фронта у вас на выходе счётчика будут все единицы. Далее, ваша схема формирует сигнал асинхронного сброса, который сбрасывает все счсётчики в нули. Что будет дальше - понятно?
ksv198
Цитата(NickNich @ Mar 30 2006, 12:17) *
Вы правда пробовали спаять счётчик именно по той схеме, которую нарисовали (т.е. четыре д-триггера, и линии Q1 и Q3 объединены по И и заведены на сигнал сброса)? И оно делит на 10?

Объясняю - если начальное состояние счётчиков все нули, то после прихода первого фронта выход Q0 переключится в 1, ето вызовет появление автивного фронта на тактовом входе второго триггера, т.е. Q1 переключится в 1 и т.д. Т.е. после первого фронта у вас на выходе счётчика будут все единицы. Далее, ваша схема формирует сигнал асинхронного сброса, который сбрасывает все счсётчики в нули. Что будет дальше - понятно?

Поверьте, счетчики с отличным от степени 2 коэффициентом деления паял и не раз. Конечно не на D-триггерах, а на интегральных счетчиках. И то, что в приведенной мной модели не верно работает схема на триггерах я тоже понимаю. Как сделать-то чтобы работало? Введение задержек после каждого триггера (на 2-4-8-16 тактов) не помогает. Как построить реально работающую модель 4-х разрядного двоичного счетчика?
NickNich
На тех д-триггерах, которые Вы установили, и при той схеме счётчика, которую выбрали - сразу не сделаете. Придётся городить костыли.

1. Переставьте выходные разряды счётчика с прямых выходов триггеров на инверсные. В этом случае, счётчик будет считать в прямом направлении (сейчас он считает в инверсном, от 15 до 0).

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

3. При такой организации счёта, счётчик будет повторяться каждые 11 импульсов, т.к. после прихода строба сброса он сбрасывается в 15, и от 15 начинает считать до 10 с прокруткой через 0. Поэтому дешифратор надо настраивать на выходное значение, равное 9, т.е. 1001. Это - обещанный костыль.

А ещё лучше - посмотреть другие схемы организации счётчиков. Выбранная вами - не самая удачная, т.к. на практике имеет длинные просечки при переключении
ksv198
Цитата(NickNich @ Mar 30 2006, 16:37) *
На тех д-триггерах, которые Вы установили, и при той схеме счётчика, которую выбрали - сразу не сделаете. Придётся городить костыли.

1. Переставьте выходные разряды счётчика с прямых выходов триггеров на инверсные. В этом случае, счётчик будет считать в прямом направлении (сейчас он считает в инверсном, от 15 до 0).

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

3. При такой организации счёта, счётчик будет повторяться каждые 11 импульсов, т.к. после прихода строба сброса он сбрасывается в 15, и от 15 начинает считать до 10 с прокруткой через 0. Поэтому дешифратор надо настраивать на выходное значение, равное 9, т.е. 1001. Это - обещанный костыль.

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

Спасибо! Я так понял, что надо модель готовую n-разрядного двоичного счетчика поискать и не мучиться. Предложенный Вами способ мне не подойдет, так как надо моделировать отталкиваясь от реально работающих логических схем, но все равно спасибо за совет.
NickNich
Если необходимо сделать делитель на том счётчике, который нарисован ( обратной счётчике), то логика работы схемы остаётся та же самая. Только значение счётчика, при котором вырабатывается строб асинхронного сброса будет 5 или 6 (т.к. счётчик считает от 15 до нуля, в обратном направлении). В момент сброса он будет сбрасываться в 0, и через него прокручивается в 15 и т.д. Тут надо дешифратор правильно подобрать, будет 4, 5 или 6.

Если настроить дешифратор на 6, согласно логическому уравнению (not(Q(0)|Q(3))) & (Q(1)&Q(2)) сигнал сброса от верхней схемы совпадает с сигналом сброса от нижней (синей) схемы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.