![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation library IEEE; use IEEE.std.logic.1164,all; ent.ity Vdff IS port <D, CLK: ic STD LQ2IC; Q: out STD.LOGiC ); end Vdff; architecture Vdff.b oi Vdti is begin process(CLK) begin if (CLKevent and CLK=l) then Q < = D; ead if; end process; end Vdff.b; Табл. 8.5. Альтернативный вариант структурной VHDL-программы для D-защелки, приведенной на рис. 7.12 library IEEE; use TEEF..std logic 1164.aH; entity Vdlatcb is port (D, C: ia STD.LOGIC; Q. QN: out STO.LOGIC ); ead Vdlatch; architecture Vdlatch s2 of Vdlatch is signal VU, S.N, RN. Iq, IQN: STD.LOGIC; coapoaeat xav port (I: in STD.LOGIC; 0: oat STD.LOGIC ); end component; component liaudS port (TO, II; in STD.LOGiC; 0: out STD.LOGIC ); end component; begin Ul: inv port cap (D,DN); 02: aandS port иар (D.CSK); U3: naxid2 port вар (C.DN.RN); U4: nasd2 port иар (SN.iqu.IQ); US: nand2 port laap (IQ, bIQK); Q IQ; QS IQN; end Vdlatcb ..s2; Чтобы описать переключение триггеров по фронту, нам необходим один из предопределенных атрибутов сигнала в языке VHDL - признак event {event attribute). Если SIG-это имя сигнала, то конструкщм SIG event на любом элементарном шаге по времени выдает значение true, когда сигнал SIG изменяет свое значение, и false - в противном случае. С помощью признака event можно смоделировать переключающийся по фронту триггер так, как это сделано в таблице 8.6. В операторе IF конструкция CLK event выдает значение true на каждом перепаде тактового сигнала, но условие CLK = 1 обеспечивает присвоение значения D сигналу Q только на нарастающем фронте. Заметьте, что список чувствительности процесса содержит только сигнал CLK; изменения сигнала D в какое-то другое время в этой функциональной модели не существенны. Табл.8.6. Поведенческая VHDL-модель переключающегося по фронту D-триггера Модель D-триггера можно усовершенствовать, добавив асинхронные входы и инвертированный выход, как у каждого из триггеров в ИС 74x74; такое усовершенствование осуществлено в табл. 8.7. Табл. 8.7. VHDL-модель D-триггера с установкой в единичное состояние и сбросом, подобного триггерам в ИС 74x74 library IEEE; use IEEE.std logic U64.all; entity Vdff74 is port (D, CLK, PR.L, CLR L: in STD.LOGIC; Q, q.N; out STD.LOGIC .); end Vdff74; architecture Vdff74 b of Vdff74 is signal PR, GLR: STD.LOGIC; begin process(CLR L, CLR, PR L, PR, CLK) begin PR <= not PR L; CLR <= not CLR.L; if (CLR FB) = i then Q < 0; QN < 0; elsif CLR = 1 then Q < 0; QN <= 1; elsxf PR = Ч then Q <= 1 ; QN 0; elsif (CLKevettt and GLK=l) then Q <= D; QN <= not D; end if; end process; end Vdff74 b; Табл. 8.8. VHDL-модель 16-разрядного регистра со многими функциональными возможностями library IEEE; use IEEE.std.logic.1164.all; entity Vregie is port (CLK, CLKEN, OE L, CLR L: ia STD.LOGIC; D: in STD.LOGIC.VECTORd to 16); -~ Input bus Q: out STD.UI.OGIC VECTOR (1 to 16) ); - Output bus (three-state) end Vregl6; architecture Vregie of Vregie is signal CLR, OE: STD.LOGIC; - active-high versions of signals signal IQ: STD.LOGIC.VECTORd to 16); - internal Q signals begin processCCLK, CLR.L. CLR, OE L, OE, IQ) begin CLR <= not CLR.L; OE <= not OE L; if (CLR =4) then IQ <= (others => 0); elsif (CLKeveot and CLK=l) then if (CLKES=4) then IQ <= D; end if; end if; if QE = 1 thea Q <= To.StdOLogicVector(IQ); else Q <= (others Z); end if; end process; end Vregie; ограничения синтеза Теоретически первый оператор elsif в табл. 8.8 мог бы содержать все условия, которые должны выполняться для присвоения значения D сигналу IQ. Другими словами, он мог бы иметь вид: elsif (CLK event) and (CLK= 1) and (CLKEN = 1) then . . . , a не быть вложенным оператором if для того, чтобы проверять значение CLKEN. Но сделано это так, как указано в профамме, из весьма прагматических соображений. При подготовке этой главы был использован VHDL-компилятор, способный синтезировать лишь подмножество языка VHDL; сегодня это справедливо для любого VHDL-компилятора. В частности, возможность употребления признака event для задания чувствительности к фронту Офаничивалась только той формой, какая указана в данном примере и в ряде других примеров. Этим в процессе синтеза достигается отображение в переключающийся по фронту D-триггер. В нашем примере вложенный оператор if, проверяющий значение CLKEN, приводит к синтезу логики мультиплексирования на D-входах этих триггеров. В этой более детальной функциональной модели обнаруживается, что выходные сигналы Q и QN не всегда являются дополнением один другого: это правило оказывается нарушенным, когда одновременно подаются сигналы сброса и установки в единичное состояние. Однако в этой модели не приняты во внимание такие временньге характеристики, как задержка распространения, время установления и время удержания, поскольку этот материал выходит за рамки обсуждения возможностей языка VHDL в нашей книге. Определяя входы данных и выходы как векторы, можно, конечно, смоделировать регистры с ббльшим числом разрядов и включить дополнительные функции. В табл. 8.8, например, представлена модель 16-разрядного регистра с выходами с тремя состояниями, входом разрешения тактового сигнала, входом разрешения выхода и входом сброса. Вектор внутренних сигналов IQ используется для сохранения сигналов на выходах триггеров, а выходы с тремя состояниями и управление ими определяются так же, как это было сделано в разделе 5.6.4 8.3. Последовательностные ПЛУ 8.3.1. Биполярные последовательностные ПЛУ Приведенная на рис. 8.17 ИС PAL16R8 является представителем первого поколения последовательностных ПЛУ, изготовленных по биполярной (ТТЛ-) технологии. У этой микросхемы восемь основных входов, восемь выходов, общий тактовый сигнал и общий входной сигнал разрешения выхода; схема размещается в корпусе с 20 выводами. Матрица И-ИЛИ в ИС PAL16R8 - точно такая же, как у комбинационного ПЛУ PAL16L8. Но в ИС PAL16R8 между матрицей И-ИЛИ и ее восемью выходами 01-08 находятся переключающиеся по фронту D-триггеры. Ко всем триггерам подведен об-ищй тактовый сигнал, подаваемый навход CLK, и их состояние изменяется на нараста- ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |