Звоните! 
 (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.64. Синтаксис цикла while в языке VHDL

while boolean-expression loop sequential-statement

sequential-statement end loop;

Табл. 4.65. Использование оператора wait языка VHDLдля генерирования входных воздействий при тестировании

entity InhibitTestBench is end InhibitTestBench;

architecture InhibitTB.arch of InhibitTestBench is

component Inhibit port (Х,У: in BIT; Z: out BIT); end component;

signal XT, YT, ZT: BIT;

begin

Ul: Inhibit port map (XT, YT, ZT);

process

begin

XT <= 0; YT <= 0

wait for 10 ns; 1 XT <= 0; YT <= Ч

wait for 10 ns;

XT <= 1 ; YT <= 0

wait for 10 ns;

XT <= Ч ; YT <= Ч

wait; - this suspends the process indefinitely end process; end InhibitTB.arch;

Когда уже имеется VHDL-программа, корректная с точки зрения синтаксиса, для наблюдения за ее работой можно воспользоваться VHDL-средствами моделирования. Мы не будем подробно рассматривать эти вопросы, но составить общее представление о том, как работает моделирующая программа, полезно.

В момент, когда моделирующая программа начинает работать, время в модечи {simulation time) равно нулю. В этот момент всем сигналам присваиваются их

нижнего уровня. Эти оценки позволяют моделирующей VHDL-программе приближенно предсказывать временное поведение больших по размеру схем, составленных из таких компонентов.

Другой способ включения отсчета времени предоставляет последовательный оператор wait {wait statement). Этим оператором можно воспользоваться, чтобы приостановить процесс на заданное время. В табл. 4.65 приведена в качестве примера программа, в которой оператор wait использован для того, чтобы сформировать в модели входное воздействие для тестирования вентиля запрета, состоящее в переборе четырех различных комбинаций входных сигналов с шагом 10 НС по оси времени.



значения по умолчанию (от которых работа вашей программы не должна зависеть!). Инициализируются также сигналы и переменные, начальные значения которых объявлены явно (мы не говорим, как это делается). Затем моделирующая программа начинает исполнение всех процессов и параллельных операторов в данном проекте.

Конечно, моделирующая программа не может фактически обеспечить одновременное протекание процессов и исполнение параллельных операторов, но она притворяется, будто делает это, с помощью упорядоченного по времени списка событий и матрицы чувствительности к сигналам . Заметьте, что каждый параллельный оператор эквивалентен одному процессу.

В нулевой момент времени в модели моделирующая профамма готова начать исполнение всех процессов и выбирает один из них. Выполняются все последовательные операторы этого процесса, включая циклы, если они предусмотрены. Когда исполнение этого процесса заканчивается, выбирается еще один процесс и так далее, до тех пор пока не будут выполнены все процессы. Этим завершается цикл моделирования (simulation cycle).

Во время исполнения процесса могут возникать новые значения сигналов. Немедленного присвоения сигналам этих значений не происходит; вместо этого новые значения помещаются в список событий {event list), и намечается, что они станут эффективными в определенный момент времени. Если присвоение отнесено к явно заданному времени в модели (например, с задержкой, указанной в предложении after), то в списке событий предусматривается выполнение данного действия именно в этот момент времени. В противном случае считается, что присвоение должно произойти немедленно ; однако в действительности реализация этого события откладывается до момента времени, равного текущему времени в модели плюс один элементарный сдвиг по времени . Под элементарным сдвигам по времени (delta delay) понимается бесконечно короткий отрезок времени, такой что текущее время в модели плюс любое число элементарных сдвигов все еще остается равным тому же самому значению. Этот принцип позволяет, когда необходимо, многократно исполнять процесс в модели за нуле- < вое время.

После того как цикл моделирования завершен, просматривается список событий в поисках одного или нескольких сигналов, которые изменяются в ближайший очередной момент времени. Таким моментом может быть более позднее время, отличающееся от текущего лишь на один элементарный сдвиг, либо очередной момент может определяться реальной задержкой в схеме, и тогда время в модели продвигается до этого момента. В любом случае осуществляется запланированное изменение сигнала. Некоторые из процессов могут быть чувствительны к изменяющимся сигналам согласно сведениям, хранящимся в матрице чувствительности к сигналам. В ней для каждого сигнала указано, у каких процессов этот сигнал имеется в списке чувствительности. (У процесса, эквивалентного параллельному оператору, в список чувствительности заносятся все его управляющие сигналы и данные.) Все процессы, чувствительные к только что изменившемуся сигналу, намечаются для исполнения в очередном цикле моделирования, к которому моделирующая профамма и приступает.



Дэухфазная работа модел1фующей программы на каждом цикле моделирования, сопровождающаяся просмотром списка событий и составлением очередного списания присвоения сигналам их новых значений, продолжается неограниченно долго, до тех пор, пока список событий не будет исчерпан. На этом моделирование завершается.

Механизм списка событий позволяет имитировать исполнение параллельных процессов, несмотря на то, что работа моделирующей программы представляет собой один поток операций, выполняемых на единственном компьютере. А механизм элементарных сдвигов по времени обеспечивает правильность работы моделирующей программы, хотя может потребоваться многократное исполнение процесса или набора процессов в моменты времени, разделенные элементарными сдвигами, прежде чем изменяющиеся сигналы приобретут свои установившиеся значения. Этот механизм используется также для обнаружения выходящих из-под контроля процессов (типа X <= not X ); если в результате выполнения тысячи циклов моделирования на тысяче элементарных сдвигов по времени не происходит продвижение времени в модели на сколько-нибудь реальную величину, то, вероятнее всего, что-то не так.

4.7.10. Синтез

Как мы упоминали в начале этого параграфа, язык VHDL первоначально предназначался для описания логических схем и моделирования и лишь позднее бьш приспособлен для синтеза. В этом языке много конструктивов и излишеств, которые не могут быть синтезированы. Однако представленные в этом параграфе сокращенные версии языка и стили написания программ в общем случае обеспечивают синтезирование большинством программных средств.

Но все же от того, как вы напишете программу, сильно зависит качество схемы, которую вы получите в результате синтеза. Приведем несколько примеров.

Конструкции с последовательным управлением типа if-elsif-elsif-else могут приводить к цепочке последовательно включенных логических схем, проверяющих соответствующие условия. Если условия являются взаимно исключающими, то лучше использовать операторы case или select.

Цикл в процессе обычно разворачивается в множество копий той или иной комбинационной логической схемы, чтобы обеспечить исполнение этого оператора. Если вы хотите, чтобы эта комбинационная логическая схема была только в одном экземпляре и использовалась последовательно шаг за шагом, то вы должны спроектировать последовательностную схему; о таких схемах речь пойдет в последующих главах.

Если вы ошибетесь в условном операторе в процессе, не указав выход для какой-либо комбинации входных сигналов, то это приведет к созданию компилятором защелки для удержания старого значения сигнала, который в противном случае мог бы измениться. В общем случае образование таких защелок нежелательно.

Кроме того, в зависимости от реализации программных средств могут оказаться несинтезируемыми и другие элементы и структуры языка. Вам, безусловно, еле-



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


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