Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
|
(926)274-88-54 ГлавнаяИнтернет-магазинТкани в наличииМягкая мебельДиваны еврокнижка
Диван-кровать
Диван книжка
Кожаные диваны
Угловые диваны
Кресло-кровать
Недорогие диваны
Кресла
Диваны с фабрики
Кожаная мебель
Производство
Недорогая мебель
Как купитьЗаказ мебелиМебель для домаКухниШкафы купеОфисная мебельШкольная мебельПродажа мебели
Карта сайта
Вакансии
Схема проезда
(926)274-88-54
|
Читальный зал --> Программные средства foundation 328 Глава 4. Принципы проектирования комбинационных логических схем Табл. 4.34. Примеры объявления массивов в языке VHDL type monthly.count is array (1 to 12) of integer; type byte is array (7 downto 0) of STD LOGIC; constant WORD LEN: integer := 32; type word is array (W0RD LEN-1 downto 0) of STD LOGIC; constant NUM REGS: integer := 8; type reg.file is array (1 to NUM.REGS) of word; type statecount is array (traffic light state) of integer; Элементы массива считаются упорядоченными слева направо в том же направлении, в каком индекс пробегает свои значения. Таким образом, индексы самых левых элементов массивов типов monthly count, byte, word, reg f ile и statecount в табл. 4.34 равны 1, 7, 31, 1 и reset соответственно. Обращение к отдельным элементам массивов в операторах программы на языке VHDL осуществляется путем указания имени массива и индекса элемента в круглых скобках. Если, например, М, В, W, R и S - сигналы или переменные тех пяти типов массивов, которые приведены в табл. 4.34, то любая из записей М {11), В (5), W (W0RD LEN-5 ),R(0,0),R{0) hS{ reset) является правильным указанием элемента. Массивы-литералы (array literals) можно задать, перечисляя в скобках значения элементов. Например, переменной В типа byte можно задать значение, состоящее из одних единиц, оператором В:=(1, 1, 1, 1, Ч, 1, I); В языке VHDL возможно и в более сжатой форме задавать значения, указывая индекс. Например, следующая запись обеспечивает присвоение единичных значений всем элементам переменной W типа word, за исключением младших разрядов каждого байта, которым присваиваются нулевые значения: W := {0=> О, 8=> О, 1б=> О, 24 => О , others=> 1 ) ; Рассмотренные правила справедливы при любом типе элементов (element-type), но литерал типа STD LOGIC легче всего записать в виде строки . Строкой (string) в языке VHDL является последовательность символов ISO, заключенная в двойные кавычки, типа Hi there . Строка - это, конечно, массив символов; поэтому массиву типа STD LOGIC заданной длины можно присвоить значение, выраженное строкой той же длины, если только символы в строке принадлежат набору из девяти символов, которыми, по определению, исчерпываются возможные значения элементов типа STD LOGIC: О, и и т.д. Таким образом, предыдущие два примера можно переписать в виде: В: = 11111111 ; W: = 11111110111111101111111011111110 ; Можно также указывать подмножество непосредственно следующих один за другим элементов массива или, как говорят, вырезку из массива (array slice), задавая начальный и конечный индексы подмножества; например: М (6 to 9), В(3 downto 0),W{15 downto 8),R{0,7 downto 0),R(1 to 2),S(stop to go). Заметьте, что направление изменения индекса в вырезке должно быть таким же, как у исходного массива. Наконец, массивы или элементы массивов можно объединять с помощью оператора конкатенации & (concatenation operator), который соединяет массивы и элементы в том порядке, в каком они записаны слева направо. Например, запись О & 1 & 1Z эквивалентна строке 011Z , а выражение В (б downto О) & В (7) представляет собой циклический сдвиг 8-разрядного массива В на 1 разряд влево. Самым важным типом массивов в типичной программе на языке VHDL является определяемый пользователем в соответствии со стандартом IEEE 1164 логический тип std logic vector, которым задается упорядоченный набор элементов типа std logic. Определение этого типа имеет вид: type STD LOGIC VECTOR is array (natural range <>) of STD LOGIC; Это пример типа массива без ограничений (unconstrained array type): диапазон возможных значений индекса массива не задан, за исключением того, что он должен быть подмножеством определенного типа, в данном случае - типа natural. Эта особенность языка VHDL позволяет записывать архитектуры, функции и другие элементы программ в более общем виде, до некоторой степени независимо от размеров массивов и диапазонов возможных значений индексов. Действительный диапазон значений индекса определяется в тот момент, когда сигналу или переменной ставится в соответствие этот тип. В следующем разделе мы увидим примеры этого. 4.7.4. функции и процедуры Подобно функции в любом языке программирования высокого уровня, функция (function) в языке VHDL получает ряд аргументов (arguments) и возвращает результат (result). При определении функции на языке VHDL и при ее вызове каждый из аргументов и результат имеют предустановленный тип. Синтаксис определения функции (function definition) приведен в табл. 4.35. За присвоением функции определенного имени следует список формальных параметров (formal parameters), который используется в теле функции; число параметров может быть любым, начиная с нуля. При вызове функции формальные параметры в обращении к ней замещаются действитечьны.ми параметрами (actual parameters). В соответствии со строгим следованием типам в языке VHDL действительные параметры должны быть того же типа или подтипа, что и формальные параметры. Когда функция вызывается из архитектуры, на место ее вызова возвращается значение, тип которого указывается посредством return-type. Как видно из таблицы, внутри функции можно определить ее собственные локальные типы, константы, переменные и вложенные функции и процедуры. Между ключевыми словами begin и end располагается ряд последовательных операторов , которые исполняются при вызове функции. Последовательные операторы и их синтаксис будут предметом более подробного разбора позднее, но вам должны быть понятны приводимые здесь примеры с учетом вашего предыдущего опыта программирования. Архитектуру вентиля запрета на языке VHDL, приведенную в табл. 4.26, можно видоизменить, используя функцию, как показано в табл. 4.36. В определении функции момент возврата к месту вызова указывается ключевым словом return, за которым следует выражение, значение которого и будет возвращено. Тип результата вычисления этого выражения должен быть согласован со значением return-type в объявлении функции. В логическом пакете стандарта IEEE 1164 определено много функций, оперирующих типами std logic и std logic vector. Помимо того, что предусматривается ряд определяемых пользователем типов, пакет содержит также основные логические операции над сигналами или переменными этих типов, такие как and и or. Язык VHDL обладает тем достоинством, что в нем возможна перегрузка операторов {operator overloading). Это позволяет пользователю выбирать активизируемую функцию посредством применения символа встроенной операции (and, or, + и т д.) к согласованному набору типов операндов. Возможно несколько определений одного и того же символа операции; каждый раз, когда встречается данный оператор, компилятор автоматически выбирает определение, согласованное по типу операндов. В качестве примера табл. 4.37 содержит код, взятый из пакета IEEE, которым определяется операция and для операндов типа stdlogic. Может казаться, что этот отрывок сложен, но нами уже введены все основные элементы языка, употребляемые здесь (за исключением слова resolved , которое будет рассмотрено в разделе 5.6.4 в связи с логическими схемами с тремя состояниями). Табл. 4.35. Синтаксисопределения , . , - функции в языке VHDL function fxmctton-namc ( signal-names : signal-type; signal-names : signal-type; signal-names : signal-type ) return return-type is type declarations constant declarations variable declarations function definitions procedure definitions begin sequential-statement sequential-statement end fimction-name; ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |