| TTL и CMOS логика Цифровая схемотехника на логических микросхемах. Счетчики, сдвиговые регистры, простая логика... |
Циклическое отнимание
12.12.2015, 13:13
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.03.2006
Сообщений: 3,609
Сказал спасибо: 141
Сказали Спасибо 427 раз(а) в 377 сообщении(ях)
|
Re: Циклическое отнимание
NewWriter, А=const названа условно.
Показано для ввода конкретного значения.
Есесно для циклов используются переменные.
...
NewWriter, omercury,
Много переменных (A,C,D,E,Y)
Неизвестно в какой точке повторять цикл.
Неизвестно на какую величину будет изменяться переменная - на единицу или другую величину.
...
Реализаций схемотехнических решений множество
...
Что-то инет глючит ...
Последний раз редактировалось johanh; 12.12.2015 в 13:41.
|
|
|
|
12.12.2015, 15:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.03.2006
Сообщений: 3,609
Сказал спасибо: 141
Сказали Спасибо 427 раз(а) в 377 сообщении(ях)
|
Re: Циклическое отнимание
|
|
|
|
12.12.2015, 17:09
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Циклическое отнимание
Сообщение от johanh
|
|
Неизвестно в какой точке повторять цикл.
|
Известно, автор ведь и написал, "пока результат вычитания больше, чем B". Это становится понятно, если отталкиваться именно от последовательного вычитания числа B, а не от умножения B на некоторое число раз.
Применительно именно к схемотехнике это будет выглядеть вот так: (вместо дискретных элем. взят готовый сумматор, и предполагается, что в самом начале A›B). Осталось допилить логику управления (сброс, перезапуск)
Схемотехнический реализаций задачи не так уж и много, они все крутятся вокруг одной и той же темы. Вариации будут лишь в разрядности чисел и в управлении переключениями.
А представьте, если умножать. Ну ладно там умножить на 2, на 4, или на 8 - это простые сдвиги влево. А если умножить на 3, на 5, на 6? Ведь аппаратно умножение то выполняется на сдвиговых регистрах и все равно на сумматорах.
Это в программировании записывается легко и просто - 4*В. А вот аппаратно то...
И уж если умножать - то вот тогда действительно неизвестно, на сколько нужно умножить, чтобы соблюсти условие, данное топикстартером
Последний раз редактировалось NewWriter; 12.12.2015 в 17:20.
|
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
12.12.2015, 17:26
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.03.2006
Сообщений: 3,609
Сказал спасибо: 141
Сказали Спасибо 427 раз(а) в 377 сообщении(ях)
|
Re: Циклическое отнимание
NewWriter, Там есть промежуточные значения ...
Это я показал 2 варианта.
...
Надо учесть , что счетчики (регистры) более продвинутые примитивы ...
...
Другая схемотехника ...
..
Если A=const переменными остаются C,D,E,Y
...
От регистров уже рябит в глазах.
|
|
|
|
12.12.2015, 21:00
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.03.2006
Сообщений: 3,609
Сказал спасибо: 141
Сказали Спасибо 427 раз(а) в 377 сообщении(ях)
|
Re: Циклическое отнимание
A=x
B=z
Y=A-4(3)B
1 if Y =‹ B E=Y+B , D=E+B , C= D+B , (A=C+B), Y , end
Y=Y-B go to 1
Вот другой алгоритм с уменьшением переменной Y на величину B.
Без вывода промежуточного результата.
Другое схемное решение.
Последний раз редактировалось johanh; 12.12.2015 в 21:07.
|
|
|
|
12.12.2015, 21:55
|
|
|
Временная регистрация
Регистрация: 18.10.2015
Сообщений: 60
Сказал спасибо: 63
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Циклическое отнимание
Ох вы тут и настрочили.
Сообщение от omercury
|
|
Насколько понял, это делитель.
|
БИНГО!
Нужна схема деления ( предполагается, что остатка не будет)
Схематически задание звучит так:
Нужно поделить два числа (А/В) используя...
Операцию циклического отнимания,
сначала А - В = у, потом у - В = у1, у1 - В = у2... (то есть делитель всегда одинаковый), цикл продолжается, пока результат отнимания не будет меньшим от В.
Итерации цикла подсчитывает COUNTER (счетчик), он же и останавливает цикл (как, я не совсем понимаю), после остановки этот же COUNTER подает на выход результат деления.
п.с. так как у меня были проблемы организацией зацикливания отнимания, я и задал вопрос о нем в начале темы.
п.с.с. на скриншоте примерная схема (рисовал её преподаватель), по которой нужно организовать деление
|
|
|
|
12.12.2015, 22:04
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Циклическое отнимание
Сообщение от johanh
|
|
Вот другой алгоритм
|
А теперь думаем, насколько весело мы будем АППАРАТНО реализовывать всё это, и в особенности умножение на 3, если
Сообщение от johanh
|
|
От регистров уже рябит в глазах.
|
..
Программно выглядит легко, учитывая, что АЛУ требуемой разрядности уже встроен в некий процессор и требуется лишь подавать команды. А вот если топикстартеру необходимо разработать это самое АЛУ, как аппаратное устройство, эт уже совсем другой вопрос...
Так что, зачем выдумывать сложности там, где их нет?
Сообщение от Andrey_AHAHAC
|
|
на скриншоте примерная схема (рисовал её преподаватель),
|
Ваш препод либо кое-что упустил (позабыл нарисовать или сознательно не нарисовал), либо сам не шибко то рубит в теме (это более вероятно, судя по этому рисунку). Потому как нельзя вернуть в операнд сумматора результат, не применив схемы какой-либо задержки. Просто потому, что число A не может быть одновременно равно результату A-B. .... A≠A-B
PS. присмотревшись к рисунку... я действительно понимаю, что либо препод "слегка не рубит", либо схема неправильно перерисована. Потому что после сумматора выходят данные разрядностью в n бит, а на логическом элементе и тем более на счетном входе счетчика - должен быть 1 бит. И как можно результатом с выхода - тактировать счетчик??? И почему после счетчика - снова разрядность 1 бит выходит????
Сообщение от Andrey_AHAHAC
|
|
он же и останавливает цикл (как, я не совсем понимаю)
|
Я на схеме показал, как (магнитудный компаратор кода и лог.элемент "И")... там нужно только малость подпилить схему перезапуска вычислений.
На счетном выходе нужно добавить 1 для верного числа вычитаний
Последний раз редактировалось NewWriter; 12.12.2015 в 22:30.
|
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
12.12.2015, 22:08
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Циклическое отнимание
NewWriter, шинами пользоваться не имеете. Пины на шине у вас глобальные.
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
12.12.2015, 22:13
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Циклическое отнимание
Сообщение от Easyrider83
|
|
шинами пользоваться не имеете.
|
Возможно
|
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
12.12.2015, 22:48
|
|
|
Временная регистрация
Регистрация: 18.10.2015
Сообщений: 60
Сказал спасибо: 63
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Циклическое отнимание
Сообщение от NewWriter
|
|
Ваш препод либо кое-что упустил (позабыл нарисовать или сознательно не нарисовал)
|
Сообщение от NewWriter
|
|
Потому что после сумматора выходят данные разрядностью в n бит, а на логическом элементе и тем более на счетном входе счетчика - должен быть 1 бит.
|
Этот рисунокНАходу нам давался как подсказка. Безусловно он не дал нормальную(рабочую схему), а всего лишь хотел показать примерный алгоритм решения задачи деления.
Суть этой подсказки я уже описал:
1. Циклическое отнимание.
2. Останавливает цикл и дает ответ деления -- COUNTER.
И задача стоит все это реализовать (в этом и нужна помощь).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:23.
|
|