![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation ПОЧЕМУ ИМЕННО ЗАЩЕЛКА? При рассмотрении указанного на рис. 8.14 протокола обмена сигналами по тинам микропроцессора возникает ряд вопросов: , Почему адрес не удерживается на шине ABUS на протяжении всей процедуры? В реальной системе, функционирующей согласно этому протоколу, шины ABUS и DBUS бывают совмещены посредством мультиплексирования в одной шине с тремя состояниями, благодаря чему экономится число выводов и сигнальных линий. Почему сигнал AVALID не используется в качестве тактового сигнала для фиксации адреса в регистре, переключающемся по положительному фронту? Отсутствует достаточное время для установления; в реальной системе сигналы на адресной шине только-только устанавливаются к моменту, задаваемому нарастающим фронтом сигнала AVALID, или даже чуть-чуть позднее. Ну, ладно; тогда почему сигнал AVALID нельзя использовать в качестве тактового сигнала для регистра, переключающегося по отрицательному фронту? Так можно поступить, но сигналами с выходов защелки можно воспользоваться быстрее; установившиеся значения сигналов на шине ABUS проходят на выход защелки непосредственно, для этого не нужно ждать спадающего фронта тактового сигнала. Благодаря этому можно ослабить требования, предъявляемые к времени доступа элементов памяти и других устройств, на которые подаются сигналы с выходов защелки. В табл. 8.2 представлена профамма на языке ABEL для дешифратора с защелкиванием. Поскольку усфойству доступны только старшие разряды адресной шины ABUS [ 31. .20], результатом декодирования может быть лишь обращение к одному из участков памяти объемом 1 Мбайт или больше (2 = 1 М). Постоянному запоминающему устройству (ПЗУ, ROM) отводится 1-мегабайто-вый участок памяти с самыми старшими адресами OxfffOOOOO-Oxffffffff, и этот участок выбирается сигналом ROMCS. Три 16-мегабайтовых блока оперативной памяти (ОЗУ, RAM) размещены на младших адресах, начиная с 0x00000000, 0x01000000 и 0x02000000 соответственно. Обратите внимание на то, что в определении адресного пространства ОЗУ используются безразличные значения, поскольку речь идет об обращении к участку памяти объемом больше 1 Мбайт. Возможны и другие способы таких определений (см. упражнение 8.1). Равенства в табл. 8.2 для сигналов выбор кристалла составлены по образцу. Приведенному в начале этого раздела. Каждое из выражений типа ABUS==ROM , Посредством которых выбирается устройство, порождает один терм-произведе-не, и каждое равенство дает фи терма-произведения. Заметьте, что в объявлении выводов указано свойство retain, чтобы предотвратить исключение компилятором консенсусных термов в процессе оптимизации. Видя, как легко образовать в комбинационном ПЛУ SR- и D-защелки, вы, возможно, испытьшаете соблазн пойти дальше и попытаться создать переключаю- Цийся по фронту D-триггер. В принципе, это возможно, но будет дооого стоить- # !AVALID & RAMCSl # AVALID к RAMCS2 у переключающегося по фронту триггера имеется четыре внутренних состояния и, следовательно, две петли обратной связи, для которых необходимы два выхода ПЛУ. Кроме того, значения времени установления, времени удержания и задержек распространения у такого триггера будут совсем плохими по сравнению со значениями тех же величин у готовых триггеров, изготовленных по той же технологии. Наконец, как следует из нашего рассмотрения в разделе 7.10.6, таблицы потока всех триггеров, переключающихся по фронту, содержат существенные источники опасности, которые могут быть скрыты только путем регулирования задержек сигналов на пути их следования, что трудно реализовать в конструкции, собираемой на основе ПЛУ. Табл. 8.2. Программа на языке ABEL для дешифратора адреса с защелкиванием aodule latchdec title Latching Microprocessor Address Decoder Inputs AVALID, ABUS31..ABUS20 pin; Latched and decoded outputs ROKCS, RAMCSO, RAMCSl, MMCS2 pin istype сош,retain; ABUS = [ABUS31..ABUS201; ROM = hFFF; RAKBAMO = [0,0,0,0,0,0,0,0,-X.,.X.,.X.,.X.] RAMBAHKl = C0.0,0,0,0,0,0,1,.X.,.X.,.X.,.X.] RAKBA8K2 = [0,0.0,0,0,0,1.0,.X.,.X. X.,.X.3 equations RDMCS = AVALID к CABUS==R0M) # AVALID к ROMCS # (ABUS==R0M) & RDMCS; RAMCSO = AVALID к (ABUS==RAMBANKO) # 1AVALID & RAMCSO # (ABUS==RAMBAHKO.) & RAMCSO RAMCSl = AVALID & (ABUS==RAMBANK1) # (ABUS==RAMBAMK1) & RAMCSl RAMCS2 = AVALID к (ABUS= RAMBANK2) # (ABUS==RAMBANK2) & RAMCS2 end latcMec 8.2.7. Описание регистров и защелок на языке VHDL Схемы регистра и защелки можно задать на языке VHDL структурно. Например, в табл. 8.3 представлена структурная VHDL-программа, соответствующая схеме D-защелки, приведенной нарис. 7.12. Но написание структурных программ едва ли может служить мотивацией использования языка VHDL; наша цель заключается в написании поведенческих программ, которые позволяют моделировать работу схем на более интуитивном уровне. Табл. 8.3. Структурная VHDL-программа для D-защелки, приведенной на рис. 7.12 Xibrarv IEEE; 8в TEEE,std.logic n64,all; entity Vdlatcb is port (D. C: in STD.LOGIC; Q, Q.4: buffer STD LOaiC ); end Vdlattfii; arcbitect-jre Vdiatcfc a of Vdlatch is sjgnal Ш, SK. STD.LOGIC; coapoaeat inv port (X; in STD.LOGIC; 0: out STD.LOaiC ); end cospo.ie.it; cDspo3Si.t naad2b port CIO, II; m STD.LOGIC; 0; buffer STD ..LOGIC : end oompoasEt; begin 01: mv port кар (D,D>0: U2: nand2b port aap (D,C,StO; U3: Eand2b port шар (C,D.4,RN); li4: r.and2b port map (SK.QH.Q); Ub; natidSb port, itiap (Q.RI.QN); end Vdl3.tcb s; В табл. 8.4 помещена основанная на использовании процесса поведенческая VHDL-архитектура для D-защелки, в которой дня описания поведения защелки понадобилась всего л ишь одна строка текста. Обратите внимание: VHDL-компилятор из этого описания делает вывод о том, что речь идет о защелке; действительно, в этом описании ничего не говорится о том, что надо делать, если С не равно 1, и поэтому компилятор создает предполагаемую защелку (inferred latch), которая сохраняет значение Q до очередного возобновления процесса. VHDL-компилятор всегда создает защелку для сигнала, которому присваивается значение в операторе if или в операторе case, если перечислены не все возможные комбинации входных сигналов. Табл. 8.4. Поведенческая architecture Vdlatch b of Vdlatch is VHDL-структура для D-зашелки begia process(C, D, Q) begin if (C=l) then Q <- D; end if; QN <= not Q; end process; end Vdiatch b; тип buffer и другие возможности Заметьте, что в табл. 8.3 Q и QN определены как сигналы типа buffer, а не out, поскольку в определении архитектуры они используются как входы и как выходы. Но тогда мы должны ввести специальный 2-входовой вентиль NAND nand2b с выходным сигналом типа buffer, чтобы избежать несогласованности типов (out и buf f ег) при обращении к компонентам U4 и U5. Впрочем, можно было воспользоваться внутренними сигналами, чтобы обойти эту проблему, как это сделано в табл. 8.5. Как вы теперь уже знаете, в языке VHDL одни и те же вещи можно выразить многими различными способами. ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |