Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 132
Текст из файла (страница 132)
6.2. 6.8. Примеры проектирования о использованием языка УН(ЗХ. 891 Табл. 8.18. ПРогРамма на Языке ЧНР~ длЯ 16-РазРЯдного УстРойства быст- рого сдвига, осуществляющего только циклический сдвиг влево 1«ьгагу Хккк! пае 1555 вгб 1ок«с 1164 а11, епв«гу го126 и рога ( «и бтэ 156!с угстав(15 бом:о Р), — Ра«а «прмв 5 « зто ьозХО гастев ;з б . го О), — бь«(г алло г, 5-15 РООУ овг з(Р (ООХс уксток(15 боев!о О) — вага ьм о.
«рпг ), епб го116, вгсЬ «емоге го11Ь агсЬ ог га116 «а Ьек«п ргосевв(Р1И, 5) «м«аыв Х, У, Х 5«О (ОСУС УКСП)5(15 боевое 0), ьея«в «1 5(О)='1' «Ьеп Х 315«14 боевое О) й РХИ(15); етое Х . РХВ, епб «У, «Х 5(1) '1' гЬеп У «Х(13 бовпго О) й Х(15 бои«во 14), е1ве У Х, епа « «г 6(2)-'1' гьеп Е У(11 бове.+о 0) й У(15 баепго !2), е1ав Х У, впб «г, «1 5(З) '1' .Ьвп РООУ с ХДУ бо вго 0) й УД1Ь оопп(о 5), е1ва РОО." < Х, еоб епб ргосевв, епб го)'б вась, Но в решаемой здесь задаче требуется, чтобы устройство быстрого сдвига могло выполнять сдвиг и влево, и вправо.
В табл.6.19 представлена исправленная предыдущая программа, способная выполнять циклические сдвиги в любом направлении. Направление слв ига задается дополнительным входным сигналом ()1 ««: 0 — для сдвига влево, 1 — для сдвига вправо. В каждом из звеньев, образующих последовательную цепочку, характер сдвига определяется оператором сабе, выбирающим одну из четырех возможностей по значению сигнала 91 6 и того бита Б, который управляет этим звеном. Обратите внимание, что мы ввели локальные 2-разрядные переменные СТ««).1 дЛЯ ХраНЕНИЯ ПарЫ Значений ()1««и Я (1 ); Каждый оператор сазе управляется одной из этих переменных. У вас может появиться желание исключить эти переменные и просто управлять каждым оператором саяе с помощью конкатенации с18 а я ( х ), но синтаксис языка ЧНР(, не позволяет это сделать, потому что тип конкатенации бьш бы неизвестен Типичный синтезатор языка УНР1.
создаст 3- или 4-входовой мультиплексор лля каждого оператора саве в табл. 6.19. Для последнего оператора саве хороший синтезатор сформирует только 2-входовой мультиплексор. Итак, теперь у нас есть устройство быстрого сдвига, которое будет выполнять циклические сдвиги влево или вправо, но л)ы сделали еще не все: необходимо позаботиться о логических и арифметических сдвигах в обоих направлениях. На рис. 6,14 представлен наш план завершения проекта.
Согласно этому плану наше устройство начинается с блока н()1616, разработку которого мы только что завершили, а для управления направлением сдвига, в зависимости от сигнала С, используется дополнительная логика. Теперь необходимо «скорректировать» некоторые из полученных битов, если выполняется логический или арифметический сдвик При логическом или арифметическом сдвиге на л разрядов влево мы должны присвоить правым л — 1 би- 692 Глава 6. Примеры проектирования комбинационных схем там значение О или первоначальное значение бита, находившегося в крайнем правом разряде соответственно. Для логического или арифметического сдвига на и разрядов вправо мы должны присвоить левым и —. ) битам значение О или первоначальное значение бита, находившегося в крайнем левом разряде соответственно. Табл. 6.19.
Программа на языке ЧН()(. для 16-разрядного устройства быстрого сдвига, выполняющего циклические сдвиги влево и вправо 11Ьгагу 1ЕЕЕ: ТЕБЕ.асо Хоя!с 1!Ба.ахм еы1еу ГО1Г16 рог! Вха: 3: шз: ОООТ: ): егй го1г16; гп Бто Во!с тес»ОБ(!6 аоипсо 0); — Вага !проса 1п зто ХО01О тесл)е (3 соамо 0); — зы!г «аоппг, О-!6 !и Зта, !.СО!С; -- ЗЫ!г сиге<с!оп, О">Ь, 1=>Е опг Бто 1л01с тестой(16 соипсо 0) " Веса ьпа опгрпг агспмес!аге о116г агсЬ о! м1г16 !е Ье61п ргосеаа(016, З, ОГВ) иаггаые Х, Т, 2: ЗТО !ЛО!С тес!СЕ(16 ооипго О)! иа=гаь1е стю.о, стю.1, сгю.2, шзьЗ: зто !ил!с„тестзе(1 аоамо я ! ЬеЕ!» СТКЬО : Б(О) й Охзи СТЮ.1:" 3!1) й 01Е; ШЮ.2: З(2) й О!Е; СТЙ13:= З(3) й 01К; саве С)ЕЬО !а >Ьеп "ОО" ! "О!' -> Х : Из; иьеп "10" => х : 01и(!а Зоепы О) й 016(!Б)! иьеа "!1' > Х : 01Е(0) й 01М(16 ао асс 1Н иЬеп о<Ьега > пи11; епо сапа; сапе С*в!.1 (а иЬеп "М" ! "О!" > т ; Х; иьап "!О" > и:- Х(!З ооиа.о О) й Хиб 6 пго М); иьеп "11" => Т := Х(1 аогаго О) й х(16 аоипсо 2); иЬеп осЬеге > ап11! еи1 оса; сапе СТВЬ2 1е ъып "СО" ! "01" => 2: У; иЬеа "!О" -> 7:- П1! 6 псо О) й Т(16 6 !о !2); има '11" => у.: т(3 аоопго 0) й х(16 соипсо 4); иЬаа о»Ьега > пп!1; епа сапе; сапе СТЮ 3 ге иЬеп 'Оо" ! "ОМ -> ООШ <- 2; иЬеа и10" ! "1!" > ОООТ <= 2(7 осипго 0) й 7(16 Боепсо 6); иЬеп мЬме > пп11; е!и! сапе; апа р!.осеае; еаа го116г агсь! СО() Т(15.'О) Р!Ю(1гко) 8(З;0) С(гео) рис.
6.14. Блок-схема устРойства быстРого сдвига 6.6. Примеры проектирования с использованием языка УНЕ)ь 693 1гЬгагу 1ЕЕЕ; нее тззз.е*а 1ок1С 1154.е) 1; нее 1ЕЕЕ,ега 1азхс агхгд.а11; впсхху 11хпр хе ротс ( Ртз: хп Зта Жзто тс ГРВ(15 ааапгс О); 3: 1п И(51СИЕР(З аоеппо О); РЕЯ: га Зтв 10010; Рпхт: ха Зтп 10ШС; Розг: онп Зтп (.сстс увотзк(15 аоеспс 0) Раса апросе ЗГЦ11 а С, 0-15 Ихнр апаша гьхнр Васа Раса дне апхрнс епа 11хнр; агсдхгвсхнге 11хпр агсд от 11хнр 1е двз1п ргосеаеютк, 3, РЕЗ, РРВТ1 Ь|В1а 1ог г 1п 0 Гс 15 1оор ш П < солт твтезевгз)) впа (рен '1 ) хь и Рост(1) <- роьт; вьее Розт(1) < Ртк(1); еаа 11; епа 1оср; вха ргосееп; епа 11хнр агсд; Блок, соответствующий циклу Тот в табл. 6.20, синтезировать легко, но заранее нельзя быть уверенным, что его логика будет вполне подходящей.
В частности, наличие операции "<'*, выполняемой на каждом проходе цикла, может заставить синтезатор включить универсальный компаратор, сравнивающий значения величин, несмотря на то, что один из операндов является константой, и поэтому сигнал на каждом выходе можно было бы получить с помощью небольшого чис"а вентилей. (Например, реализация логики "7 < ООнч 1итесек (я)" состоит всего лишь в подведении провода з ( 3 ) !) В рассуждении, вынесенном за пределы основного текста и озаглавленном «Последовательная структура схемы корРекциигь говорится о структурном варианте этой функции.
Как показано на рис. 6. 14, наша стратегия состоит в том, чтобы вслед за устройством р(О~Я16, осуществляющим циклический сленг, включить схему коррекции рзй) р((ей), которая заполняет нужные младшие ралзяды при логическом или арифметическом сдвиге влево, и схему коррекции г(Х() Р(г(9П(), которая заполняет нужные старшие разряды при логическом нли арифметическом сдвиге вправо, В табл. 620 приведена поведенческая программа на языке УНР1. для схемы коррекции при сдвиге влево. У нее имеются 16-разрядные входы и выходы данных ОТР) и РООТ соответственно. На входы управления поступают сигналы Е, кОтОРыми заДается величина сдвига, сигнал Разрешения коррекЦии ЕЕН н новая величина БЕАТ для вставления в корректнруемые разряды выходных данных. Схема помешает значение корректирующего бита в каждый разряд данных на выходе ОООТ ( 1), ЕслИ Т меньше Я и коррекция разрешена; в противном случае на выходы схемы передаются значения битов на входе Оты (1) без изменений.
табл. 6.20. Поведенческая программа на языке УН0ь для схемы коррекции при сдвиге влево 594 Глава 6. Примеры проектирования комбинационных схем ПОСЛЕДОВАТЕЛЬНАЯ СТРУКТУРА СХЕМЫ КОРРЕКЦИИ Структурная архитектура схемы коррекции приведена в табл.6.21. По существу, здесь определена итерационная схема, вырабатывающая 16-разрядный вектор ГЯЕ) с равным 1 значением ГЯЕ) (1), если 1-й бит нуждается в коррекции. Процелура начинается с того, что биту ГЯЕ1. (15) присваивается значение О, поскольку в этом разряде никогда не требуется коррекция.
Для остальных значений 1 величина ЕБЕНУ (1) должна равняться 1, если значение Я равно 1+ 1, и в том случае, когда биту ГЯЕ1, (1+1) уже присвоено единичное значение. Таким образом, присваивание значений битам ЕБЕНУ оператором депегасе создает последовательную цепочку 2-входовых вентилей ИЛИ: один из входов каждого вентиля ИЛИ предназначен для подачи 1, когда Я=1 (что обнаруживается по результату декодирования 4-входовым вентилем И), а другой вход каждого следующего вентиля ИЛИ соединен с выходом предыдущего вентиля ИЛИ. Оператор присваивания 0()СТ (1 ) создает 16 двухвходовых мультиплексоров, каждый из которых выбирает бит входных данных Сти (з ) или корректирующий бит (ГСЛТ) в зависимости отзначеиия ГЯЕП (1) . Реализация схемы коррекции в виде последовательной цепочки оказывается компактной, но очень медленной по сравнению со схемой, в которой сигнал на каждом выходе ГЯЕЕ вырабатывается двухуровневой логикой по выражениям вида «сумма произведений».
Однако в данном случае большая задержка не имеет значения, поскольку схема коррекции располагается в конце пути прохождения данных. Если все же быстродействие существенно, то можно воспользоваться «бесплатным» приемом, который позволяет уменьшить задержку вдвое (см. задачу 6.12). При сдвиге вправо коррекция начинается с противоположной стороны слова данных, поэтому может показаться, что необходима еще одна схема коррекции. Однако, как мы скоро увидим, для этого можно воспользоваться уже имеющейся схемой, если только изменить порядок следования входных и выходных битов на противоположный. Табл.