Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
|
(926)274-88-54 ГлавнаяИнтернет-магазинТкани в наличииМягкая мебельДиваны еврокнижка
Диван-кровать
Диван книжка
Кожаные диваны
Угловые диваны
Кресло-кровать
Недорогие диваны
Кресла
Диваны с фабрики
Кожаная мебель
Производство
Недорогая мебель
Как купитьЗаказ мебелиМебель для домаКухниШкафы купеОфисная мебельШкольная мебельПродажа мебели
Карта сайта
Вакансии
Схема проезда
(926)274-88-54
|
Читальный зал --> Программные средства foundation Теперь мы можем написать структурную программу, которая предусматривает создание восьми таких 8-разрядных компараторов, выходные сигналы которых пропускаются через дополнительную логику, чтобы найти полный результат сравнения. Один из способов, каким это можно сделать, показан в табл. 6.30. Оператор generate создает не только отдельные 8-разрядные компараторы, но также и логику покаскадного включения, с помощью которой информация, необходимая для выдачи окончательного результата, собирается путем последовательного учета сигналов на выходах отдельных каскадов, начиная с самого старшего и кончая самым младшим. Табл. 6.30. Структурная VHDL-архитектура для 64-разрядного компаратора architecture coi!ip64s arch of соарб4 is cotaponent compS port ( A, E: 3B STD LOQIC VECTuR (7 downto 0); EQ. GT: oat STD.LOGIC); end component; sigaal EQS, GT8; STD.LOGIC,VECTOR (T dowato 0); - =, > for 8-bit slice signal SEQ, SJT: STD.LOGIC,VECTOR (8 dorato 0); - serial сЫиу-oi slice rei5-,ilts begin .EQ(8) 1; SCTCS) < 0; Ul: for i in 7 downto 0 gensrate X32: cotupB port кар (k(7+i*S dowsto i 8), E(7+i*8 downto i+8), EQ8Ci), QTSCi)); SEQ(3) SEQCi+l) aud EQ8{i); SGT(i) <= SGT(i-fl) or (SEQCi-l) and GT8<i)); end gessrats; EQ <= SEQ(O); GT <= SGT(U); ead cozp64s aicb; Если до архитектуре, приведенной в табл. 6.28, относительно простые программные средства могут выдать в качестве результата синтеза схему медленного итерационного компаратора, то в случае архитектуры из табл. 6.30 результатом синтеза будет более быстрое устройство, поскольку в нем в более явной форме извлекается информация из каждого 8-разрядного звена, которая затем пропускается через более быструю комбинационную схему (состоящую всего лишь из 8-уровневой логики И-ИЛИ, а не из 64-уровневой). Более сильные программные средства могут распараллелить 8-разрядный компаратор, предложив более*быструю неитерационную структуру наподобие ИС средней степени интеграции 74x682 (см. рис. 5.84), и преобразовать нашу итерационную логику объединения сигналов, поступающих от отдельных каскадов, в двухуровневую схему, реализующую выражения вида сумма произведений , подобные тем, какие бьши приведены в программе на языке ABEL в табл. 6.8. 6.3.5. Компаратор с управляемым режимом работы в качестве следующего примера давайте предположим, что имеется система, в которой нужно, как правило, сравнивать два 32-разрядных двоичньос слова, но иногда во входных словах необходимо игнорировать значения одного или двух младших разрядов. Режим работы задается двумя битами М1 и МО, как указано в табл. 6.9. Желаемое функционирование разрабатываемого устройства совсем легко обеспечить средствами языка VHDL, используя оператор case для выбора нужного поведения, как это сделано в профамме в табл. 6.31. Эта профамма представляет собой вполне доброкачественное поведенческое описание, которое также полностью синтезируемо. Однако у такого описания имеется все же существенный недостаток: оно, вероятнее всего, приведет к созданию в процессе синтеза трех отдельных компараторов для обнаружения равенства или неравенства сравниваемых величин (представленньЕх 32, 31 и 30 двоичными разрядами), по одному на каждый из случаев в операторе case. Отдельные компараторы могут при этом быть или не быть бысфодействующими, как это обсуждалось в предыдущем разделе, но в данном примере мы не будем подробно разбирать этот вопрос. Табл. 6.31. VHDL-программа с поведенческой архитектурой для 32-разрядного компаратора с управляемым режимом работы libraxy IEEE; use IEEE.std.logJc 1l64.alI; use IEEE. std logj c.unsignea.a.l 1; entity ViEOdecmp is port ( K: in STO.LOGIC.yECTOR (1 dosnto 0); - mode A, Б: in STD.LOGIC.VECTOR (31 dowato 0); - uns.1gr.ed ir-tegers EQ, ОТ: o\iz STD.LOGIC ); - ccEparisoa results end Vasodecmp; architecture Vaodecap.. arch of VmodecHip is begin process (M, A, B) begin case M is when 00 = > if Л - В then EQ <= Ч; else EQ <= 0; end if; If A > В tben GT <= !; else GT <~ 0; and if; when 01 if A(31 dowato 1) - B(31 dosnto 1) thee EQ <= 1; else £Q 0; end ii; if A(3; dow.>5to 1) > B(3i dowato 1) then GT <= 1; else GT 0; end if; whea 10 => if A(31 downto 2) = В(31 downto 2) then EQ < 1; else EQ 0; snd if; If A(3i dow-ato 2) > B(3l downto 2) then GT <- I; elsf GT <= 0; end i£; when others => EQ 0; GT <= 0; ond case; end process; snd Vi!;odec4r.p..ai-ch; Более эффективное решение заключается в выполнении только одного сравнения входных слов по 30 старшим битам и получении окончательного результата с помощью дополнительной логики, которая реализует зависящую от режима работы функцию и позволяет, по мере необходимости, учитывать значения младших разрядов. Этот подход продемонсфирован в табл. 6.32. Результат сравнения 30 старших битов представлен внутри процесса двумя переменными: EQ3 О и GT30. Затем используется оператор case, аналогичный приведенному в предыдущей архитектуре, посредством которого получается окончательный результат в зависимости от режима работы. Если желательно, то ЗО-разрядный компаратор можно оптимизировать в отношении быстродействия методами, которые бьши рассмофены в предыдущем разделе. 6.3.6. Счетчик числа единиц Несколько важных алгоритмов предусматривают счет числа единичных битов в слове данных. Подсчет числа единиц недавно был включен в системы команд ряда микропроцессоров в качестве одной из основных операций. В этом примере предполагается, что нам надо построить комбинационную схему, считающую число единиц в 32-разрядном двоичном слове, которая могла бы быть частью арифметическо-логического устройства микропроцессора. Подсчет числа единиц совсем нетрудно описать в поведенческой VHDL-программе, как это видно из табл. 6.33. Эта программа вполне синтезируема, но результатом синтеза может оказаться очень медленная и неэффективная реализация, состоящая из 32 последовательно включенных 5-разрядных сумматоров. Чтобы синтезировать счетчик числа единиц с лучшими параметрами, необходимо придумать экономичную структуру и затем описать ее в виде архитектуры. Такой структурой является дерево сумматоров, показанное на рис. 6.15. Полный сумматор (FA) выполняет сложение трех входных битов, вырабатывая 2-разрядную сумму. Пары 2-разрядных чисел складьшаются с помощью 2-разрядных сумматоров ADDER2, у каждого из которых имеется вход переноса, позволяющий добавить к сумме значение еще одного бита. Полученные 3-разрядные суммы объединяются 3-разрядными сумматорами ADDER3, а последняя пара 4-разрядных сумм складывается в 4-разрядном сумматоре ADDER4. С учетом сигналов, подаваемых на входы переноса, эта древовидная структура обеспечивает подсчет числа единиц в 31 разряде. При наличии единицы в оставшемся входном разряде это обстоятельство учитывается с помощью отдельного 5-разрядного устройства INCR5 увеличения числа на единицу. Табл. 6.32. Более эффективная архитектура для 32-разрядного компаратора с управляемым режимом работы architecture Vssodecpe.arch ol Vraodecap is begin process (H, A, B) vai-iable EQ30. GT30: STD...LOaiC; - SO-bit comparison results begin if A(31 doynto 2) = B(3i downto 2) then EQ30 Ч; else SQ30 ;= O; end if-if Д(31 dowato 2) > B(31 downto 2) then CT30 : l; else 0T30 := 0 svd ii case M is . - , when 00 => if EQ30=i and A(i dcsrato 0) = B(l downto 0) then EQ < I; else EQ <= 0; end if; if GT30=l or (EQ30-l and A(1 downto C) > B(! downto 0)) then GT <= 1; else GT <= 0; end if; when 01 => if EQ30=l and A(i) = B(l) then EQ <- 1; else SQ <= 0; end if; if GT30=l or (EQ30=l and A(i) > B(l)) thee GT <= 1; else GT <= 0; end if; when 10 => EQ <= EQ30; GT <= GT30; when others > EQ 0; GT <= 0; end case; end process; end ¥modecpe..arch; ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |