Звоните! 
 (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

Табл. 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 модели всех библиотечных компонентов



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 
Продажа и изготовление мебели.


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