Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Программные средства foundation 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 [ 106 ] 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359

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;



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 [ 106 ] 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.