![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation Табл. 4.60. Архитектура устройства для обнаружения простыхчисел, в которой использован оператор case architecture prime8 arch of prime is begin process(N) begin case CONV INTEGER(N) is when 1 => F <= Ч; when 2 => F <= 1 ; when 3 I 5 I 7 i 11 i 13 => F <= ; when others => F <= 0; end case; end process; end prime8 arch; Другой важный класс последовательных операторов образуют операторы 1оор(1 оорstatements). Синтаксис простейшего из них указан в табл. 4.61; в этом примере возникает бесконечный цикл. Хотя в обычных языках, на которых пишется программное обеспечение, бесконечные циклы нежелательны, мы увидим в параграфе 7.12, как можно с большой пользой употребить такой цикл при моделировании работы схемы. Табл.4,61. Синтаксис основного оператора loop в loop языке VHDL sequential-statement sequential-statement end loop; Более знакомым вариантом цикла является уже рассматривавшийся выше цикл for (for loop), синтаксис которого указан в табл. 4.62. Заметьте, что переменная цикла identifier объявляется неявно ее упоминанием в цикле for, и она имеет тот же тип, что и диапазон range. Эту переменную можно использовать в последовательных операторах внутри цикла, и посредством ее перебираются все значения диапазона range слева направо по мере перехода от одного шага итерации к другому. Табл. 4.62. Синтаксисцикла for в языке for identifier in range loop VHDL sequential-statement .sequential-statement end loop; Имеются еще два других полезных последовательных оператора, которые могут исполняться внутри цикла; это операторы exit (exit statement) и next (п ext statement). Оператор exi t, когда он исполняется, передает управление оператору, непосредственно следующему за концом цикла. С другой стороны, оператор next вызывает пропуск всех остающихся в цикле операторов и переход к началу следующей итерации данного цикла. Наше старое доброе устройство для обнаружения простых чисел вновь представлено в табл. 4.63, на этот раз - в виде архитектуры, в которой использован цикл for. Замечательно то, что в данном примере дается истинно поведенческое описание: здесь язык VHDL на самом деле используется для определения того, является входное воздействие N простым числом или нет. Мы увеличили также размерность массива N до 16 разрядов, чтобы подчеркнуть тот факт, что мы способны теперь создавать компактные модели схем, не перечисляя в явном виде сотни простых чисел. Табл. 4.63. Архитектура устройства для обнаружения простыхчисел, в которой использован оператор for library IEEE; use IEEE.std logic 1164.all; entity рг1ше9 IS port ( N: m STD LOGIC VECTOR (15 downto 0); F: out STD.LOGIC ); end prime9; architecture prime9 arch of рптеЭ is begin process(N) variable NI: INTEGER; variable prime: boolean; begin NI := CONV INTEGER(N); prime ;= true; if N1=1 or N1=2 then null; - take care of boundary cases else for 1 m 2 to 253 loop if NI mod 1=0 then prime := false; exit; end if; end loop; end if; if prime then F <= Ч; else F <= 0; end if; end process; end prime9 arch; Оператор loop последнего вида - это цикл while (while loop), синтаксис которого приведен в табл. 4.64. В такой конструкции булево выражение boolean-expression вычисляется перед началом каждой итерации, и цикл выполняется только до тех пор, пока значение этого выражения остается равным true. ПЛОХОЙПРОЕКТ Приведенный втабл. 4.63 вариант структуры - это хороший пример применения цикла for и плохой пример проектирования схемы. Хотя VHDL и является мощным языком профаммирования, использование всех его возможностей в полном объеме при описании устройства может оказаться неэффективным, а само проектируемое устройство - несинтезируемым. Виновник этого в табл. 4.63 - оператор mod. Для этой операции требуется деление целых чисел, тогда как большинстю программных средств, ориентированных на язык VHDL, не в состоянии синтезировать схемы деления за исключением особых случаев типа деления на степень 2 (реализуемого сдвигом). Но даже если бы профаммные средства могли синтезировать делители, мы не захотели бы задавать структуру устройства для обнаружения простых чисел в таком виде. Приведенное в табл. 4.63 описание предполагает создание комбинационной схемы, поэтому профаммные средства должны были бы образовать 252 комбинационных делителя, по одному на каждое значение i, для развертывания цикла for и реализации схемы! Процессы можно использовать для описания поведения как комбинационных, так и последовательностных схем. В главе 5, в разделах, относящихся к языку VHDL, будет дано много больше примеров описания комбинационных схем. Для описания последовательностных схем понадобятся некоторые дополнительные свойства этого языка; они будут рассмотрены в парафафе 7.12, а примеры проектирования последовательностных схем будут приведены в VHDL-разделах главы 8. 4.7.9. Отсчет времени и моделирование Ни в одном из примеров, с которыми мы имели дело до сих пор, отсчет времени при работе схемы не моделировался: все происходило в модели за нулевое время. Однако в языке VHDL имеются замечательные средства отображать ход времени, и это является еще одной действительно важной стороной данного языка. В нашей книге мы не станем вдаваться в подробности по этому поводу, но несколько идей здесь все же приведем. Язык VHDL позволяет с помощью ключевого слова after задавать временную задержку в любом сигнальном операторе присваивания, в том числе при последовательном, параллельном, условном и избирательном присваивании. Например, архитектуру вентиля запрета из табл. 4.26 можно было бы записать в следующем виде: Z <= Ч after 4 ns whenХ=Ч andY=0 else О after 3 ns; Этим моделируется вентиль запрета с задержкой, равной 4 не при переходе выходного сигнала из О в 1, и с задержкой всего 3 не при переходе из 1 в О, В типичной среде проектирования специализированных ИС такими параметрами задержки наделены написанные на языке VHDL модели всех библиотечных компонентов ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |