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

Простейшее

с разбиением

Прямое

Почти прямое

состояния

Q1-Q3

Q1-Q3

Q1-Q5

Q1-Q4

IN!T

(ХМ)

00001

0000

00010

0001

00100

0010

inOQQ

lOOCW

1000

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

Код начального состояния выбирается таким образом, чтобы автомат можно было легко установить в это состояние при запуске (в типичных схемах это 00...00 или 11...11).

Минимизируется число переменных состояния, которые изменяются на каждом переходе.

Максимизируется число переменных состояния, которые не изменяются в пределах фуппы связанных друг с другом состояний (то есть в пределах такой Фуппы состояний, для которой большинство переходов не выводит за пределы этой фуппы).

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

Если существуют неиспользуемые состояния (то есть если s < 2 , и = riog2*l), то выбираются лучшие из имеющихся комбинаций переменных состояния для достижения упомянутых выше целей. Из этого следует, что, как правило, не останавливаются на выборе в качестве кодов состояний s первых и-разрядных целых чисел.

Множество переменных состояния разбивают на отдельные биты или поля таким образом, чтобы каждый бит или поле имели определенное значение в смысле воздействия входных сигналов или поведения автомата со стороны выхода.

Табл. 7.7. Возможные способы кодирования состояний в случае автомата, описываемого табл. 7 6

Кодирование



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

Некоторые из этих идей нашли свое отражение в кодировании с разбиением , приведенном в табл. 7.7. Как и ранее, начальному состоянию присвоена комбинация ООО, которую легко установить асинхронно (путем подачи сигнала RESET на входы CLR триггеров) или синхронно (путем пропускания сигнала RESET через вентили И на входы всех D-триггеров). Наш случай замечателен тем, что имеется только четыре состояния помимо состояния INIT, которое является совершенно особым состоянием: будучи однажды запущенным, автомат более никогда не попадает в это состояние. Поэтому можно выделить переменную состояния Q1 для указания, является данное состояние автомата состоянием INIT или нет, а переменные состояния Q2 и Q3 использовать для различения четырех других состояний, не являющихся состоянием INIT.

Присвоение двоичных комбинаций этим четырем состояниям выглядит в столбце табл. 7.7, озаглавленном С разбиением , как осуществленное в порядке двоичного счета, но это простое совпадение. На самом деле разряды состояний Q2 и Q3 несут индивидуальную смысловую нагрузку, относящуюся к входам автомата и к его выходу. Бит Q3 указывает последнее значение сигнала на входе А, а по биту Q2 можно судить о том, выполняются ли в текущем состоянии условия, когда выходной сигнал должен равняться 1. Закрепляя за отдельными разрядами кода состояния такие значения, можно надеяться, что логика переходов и логика выхода окажутся проще, чем в том случае, когда комбинации Q2, Q3 будут случайно распределены между состояниями, не являющимися состоянием INIT. В следующих разделах мы продолжим разработку нашего конечного автомата на основе именно такого кодирования.

Другим полезным правилом назначения двоичных комбинаций, которое применимо к любым конечным автоматам, является прямое кодирование {one-hot assignment), также представленное в табл. 7.7. Число переменных состояния при таком способе представления больше минимального: предусматривается выделение по одному биту на каждое состояние. Помимо простоты, достоинством прямого кодирования является то, что оно приводит к самым коротким уравнениям возбуждения, так как в каждый триггер единица записывается только при переходе в одно состояние. Недостаток прямого кодирования, особенно для автоматов с большим числом состояний, очевиден: оно требует применения (много) большего числа триггеров, чем это минимально необходимо. Однако прямое кодирование является идеальным для таких автоматов с состояниями, выход которых должен указывать их текущее состояние в виде слов кода 1 из sy>. В этом случае выходы триггеров, хранящих состояние в прямом коде, могут служить непосредственными выходами автомата и применения какой бы то ни было дополнительной комбинационной логики на выходе не требуется.

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



состояние. Реализация конечного автомата с таким кодированием состояний рассматривается в задачах 7.37 и 7.40.

Выше мы пообещали рассмотреть расстановку неиспользуемых состояний, когда число возможных состояний автомата при наличии п триггеров, равное 2 , больше требуемого числа состояний автоматал. Имеют смысл два подхода, в зависимости от предъявляемых требований:

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

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

Мы увидим, к чему приводят оба подхода, по мере разработки конечного автомата, выбранного нами в качестве примера.

7.4.4. Синтез с использованием D-триггеров

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

Заменяя имена состояний в таблице состояний (возможно минимизированной) кодами состояний, мы получаем таблицу переходов. В таблице переходов для каждой комбинации кода состояния и входного воздействия указан код следующего состояния. Табл. 7.8 представляет собой таблицу переходов и значений выходного сигнала, которая получается для рассматриваемого конечного автомата с табл. 7.6 в качестве таблицы состояний в результате кодирования с разбиением , указанного в табл. 7.7.

Следующий шаг заключается в составлении таблицы возбуждения; в этой таблице для каждой комбинации кода состояния и входного воздействия указываются значения сигналов, которые необходимо подать на входы триггеров, чтобы заставить автомат перейти в желаемое следующее состояние с соответствующим кодом. Сфуктура и содержание этой таблицы зависят от типа используемых триггеров (D-, JK-, Т-фиггеры и т.д.). Обычно конкретный тип триггеров имеется



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


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