![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation Табл. 5.47. Поведенческая VHDL-программа для 9-входовой схемы проверки на четность library IEEE; use IEEE.std logic 1164,all; entity parity9 is port ( I: in STD LOGIC VECTOR (1 to 9); EVEN. ODD: out STD.LOGIC end parity9; architecture paritySp of parity9 is begin process (I) variable p : STD.LOGIC; begin p := 1(1); for j in 2 to 9 loop if I(j) = 1 then p := not p; end if; end loop; ODD <= p; EVEN <= not p; end process; end parity9p; Библиотеки типичных специализированных ИС и ИС типа FPGA содержат в качестве примитивов двух- и трехвходовые схемы ИСКЛЮЧАЮЩЕЕ ИЛ И и ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ. В специализированных интегральных КМОП-схемах эти примитивы обычно очень эффективно реализуются на уровне транзисторов с помощью логических ключей (см. задачи 5.56 и 5.73). Применяя эти примитивы, можно сформировать быстрые и компактные древовидные схемы ИСКЛЮЧАЮЩЕЕ ИЛИ. Однако типичные VHDL-средства синтеза недостаточно развиты, чтобы создать эффективную древовидную структуру на основе поведенческой программы типа той, какая приведена в табл. 5.47. Чтобы получить точно то, что мы хотим, следует написать структурную программу. В табл. 5.48 представлена структурная профамма на языке VHDL для 9-входовой схемы ИСКЛЮЧАЮЩЕЕ ИЛИ, являющейся эквивалентом ИС 74x280, изображенной на рис. 5.75(a), как по структуре, так и по реализуемой функции. В качестве основного блока древовидной схемы ИСКЛЮЧАЮЩЕЕ ИЛИ в этом примере использован предварительно определенный компонент vxor 3. В случае специализированной ИС мы бы заменили этот компонент 3-входовым примитивом ИСКЛЮЧАЮЩЕЕ ИЛИ из библиотеки специализированных ИС. Кроме того, если доступна 3-входовая схема ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ, то можно было бы исключить явную инверсию сигнала Y3, а вместо этого формировать сигнал U5 с помощью функции XNOR, используя неинвертированный сигнал Y3 в качестве третьей из ее переменных. Табл. 5.48. Структурная VHDL-программа для устройства проверки на четность, аналогичного ИС 74x280 library IEEE; use IEEE.std.logic.1164.all; entity V74x280 is port ( I: in STD.LOGIC.VECTOR (1 to 9); EVEN. ODD: out STD.LOGIC end V74x280; architecture V74x280s of V74x280 is component vxorS port (A, B, C: in STD.LOGIC; Y: out STD.LOGIC); end component; signal Yl, Y2, Y3, Y3N: STD.LOGIC; begin Ul: vxorS port map (1(1), 1(2), 1(3). Yl) U2: vxorS port map (1(4), 1(5), 1(6). Y2), U3: vxorS port map (1(7). 1(8), 1(9), Y3); Y3N <= not Y3; U4: vxor3 port map (Yl, Y2, Y3, ODD); U5: vxor3 port map (Yl. Y2. Y3N, EVEN); end V74x280s; Наш заключительный пример, приведенный в табл. 5.49, является вариантом схемы декодера Хэмминга (рис. 5.77) на языке VHDL. Функция syndrome {DU) вычисляет 3-разрядный синдром 7-разрядного неисправленного вектора входных данных DU. В главном процессе исправленному вектору выходных данных DC первоначально присваивается значение DU. Функция CONV INTEGER (см. раздел 4.7.4) преобразует 3-разрядный синдром в целое число. Если синдром отличен от нуля, то соответствующий бит в DC инвертируется, и таким образом исправляется предполагаемая одиночная ошибка. Равенство синдрома нулю говорит о том, что ошибки либо нет, либо произошли необнаруживаемые ошибки; при этом на выходе NOERROR возникает единичный сигнал активного уровня. 5.9. Компараторы Сравнение двух двоичных слов с целью обнаружения их равенства - это операция, широко применяемая в компьютерных системах и устройствах сопряжения. На рис. 2.7(a), например, была показана структура системы, в которой каждое из устройств способно сравнивать слово выбор устройства с предварительно установленным в нем идентификатором устройства . Схема, которая сравнивает два двоичных слова и показывает, равны они или нет, называется компаратором (comparator). Некоторые компараторы интерпретируют входные слова как числа со знаком или без знака, а также выдают арифметическое соотношение между Табл. 5.49. Поведенческая VHDL-программа для исправления ошибок в коде Хэмминга library IEEE; use IEEE.std logic 1164.all; use IEEE.std logic iinsigned.all; entity hamcorr is port ( DU: IN STD.LOGIC.VECTOR (1 to 7); DC- OUT STD L0GIC VECTOR (1 to 7); NOERROR: OUT STD.LOGIC end hamcorr; architecture hamcorr of hamcorr is function syndrome (D: STD LOGIC VECTOR) return STD LOGIC VECTOR is variable SYN: STD.LOGIC.VECTOR (2 downto 0); begin SYN(O) := D(l) xor 0(3) xor D(5) xor D(7); SYN(l) := D(2) xor D(3) xor D(6) xor D(7); SYN(2) := D(4) xor D(5) xor D(6) xor D(7); return(SYN); end syndrome; begin process (DU) variable i: INTEGER; begin DC <= DU; i := CONV.INTEGER(syndrome(DU)); if i = 0 then NOERROR <= Ч; else NOERROR <= 0; DC(i) <= not DU(i); end if; end process; end hamcorr; словами (больше или меньше). Эти устройства часто называются компараторами значений {magnitude comparators). 5.9.1. Структура компаратора Схемы ИСКЛЮЧАЮЩЕЕ ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ можно считать 1-разрядными компараторами. На рис. 5.78(a) вентиль ИСКЛЮЧАЮЩЕЕ ИЛИ (ИС 74x86) представлен как 1-разрядный компаратор. На выходе D1FF появляется сигнал высокого уровня в том случае, если сигналы на входах различны. Объединяя схемой ИЛИ выходы четырех схем ИСКЛЮЧАЮЩЕЕ ИЛИ, можно получить 4-разряд- ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |