Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 81
Текст из файла (страница 81)
При моделировании все это происходит за нулевое время в модели. Если процесс записан надлежащим образом, то, будучи запущен, он исполняется один или несколько раз и останавливается. Однако существует возможность записать процесс неправильно, который никогда не остановится. Рассмотрим, например, процесс всегос однимпоследовательнымоператором "Х <= поТ Х" и списком чувствительности " (Х) ". Поскольку на каждом проходе значение Х изменяется, процесс будет запущен навсегда, хотя и будет занимать нулевое время в модели. Едва ли это полезно! На практике в моделирующих программах имеются средства защиты, которые обычно обнаруживают подобное нежелательное поведение и прерывают исполнение такого процесса после, скажем, тысячи проходов. Список чувствительности является необязательным; при моделировании исполнение процесса, у которого нет списка чувствительности, начинается в нулевой момент времени.
Одно из применений такого процесса- это генерирование входных колебаний при тестировании (см. табл.4.65 ниже). В языке ЧНРЬ имеются последовательные операторы нескольких видов. Первый из них — это последовательный сигначьный оператор присваивания (зедиепгга! з)япа)-аззгяптеп! згагетепг); у него тот же самый синтаксис, что и у параллельного аналога (з)дпа!-пате <= ехргсзз)оп;), но последовательный оператор располагается в теле процесса, а не в теле архитектуры. Аналогичный оператор для переменных — это оператор присваивания значения переменной !иаггаЫе-аззгдптеп! зга)етеп!), синтаксис которого имеет вид: ьиапаЫе-пате: = ехргезз)оп;".
Заметьте, что в случае переменных используется другой оператор присваивания, а именно: = . 346 Глава 4. Принципы проектирования комбинационных лозмчеоких охам Ради учебных целей, потоковая архитектура устройства для обнаружения простых чисел из табл. 4.50 воспроизведена в табл. 4.56 как процесс.
Обратите вни мание, что мы все еще продолжаем совершенствовать архитектуру того же са мого объекта ргуше, который первоначально был объявлен в табл. 4.43. В этой новой архитектуре (ргз те 6 агс)э) имеется только один параллельный оператор; этим оператором является процесс. Список чувствительности процесса со держит только массив н, представляющий собой первичные сигналы на входах устройсшв, реализующего желаемую комбинационную логическую функцию. Вы ходы вентилей И необходимо задать как переменные, а не как сигналы, поскольку внутри процесса определения сигналов не разрешены.
В противном случае тело процесса было бы очень похоже на тело исходной архитектуры. На самом деле типичные программные средства синтеза, вероятнее всего, построили бы одну и ту же схему по любому из этих описаний. Табл. 4.66. Потоковая ННО(.-архитектура устройства обнаружения простых чи- сел,основанная на использовании процесса агсцзсестпге ргзшеб егсЬ ог ргзше зв Ьейяп ргосевв(И) таг1аЬ1е НЗь НО, И31 Н2(. И1, И21. И1 НО, И2 Н1Ь ИО: ЯТО Ь0010; Ьея1п ИЗЬ ИО := пег И(3) аш1 И(0); И31 И2(.
Н1 := псе Н(3) епд пес И(2) апд И(1) Н21„И1 НО псе Н(2) аш1 И(1) апд И(0); Н2 Н11 ИО И(2) апд пот И(1) апд И(О); Р < И31 ИО ог И31 И21 Н1 ог И2(, И1 ИО ог И2 И11. НО; епд ргосевв; епд ргзшеб агсЬ; ПРИЧУДЛИВОЕПОВЕДЕНИЕ Помните, что операторы исполняются внутри процесса последовательно. Предположим, что по какой-то причине мы записали последний оператор в табл. 4.56 (присвоение значения сигналу Р) первым.
Тогда мы наблюдали бы довольно причудливое поведение процесса. При первом запуске процесса моделирующая программа пожаловалась бы, что значения переменных считываются до того, как этим переменным присвоены какие-либо значения. При последующих возобновлениях процесса сигналу Р присваивалось бы значение, основанное на лредыдУ- щит значениях переменных, которые сохранялись, пока процесс был приостановлен. Затем переменным присваивались бы новые значения, которые запоминались бы до очередного запуска процесса. Таким образом значение сигнала на выходе схемы всегда отставало бы от значений входнглх сигналов на один шаг.
4.У. язык описания схем ЧНО<. 847 Другие последовательнь<е операторы, помимо простого присваивания, дают возможность творчески подойти к описанию поведения схемы. По-видимому, самый знакомый из них — это оператор 1г (11 з<а<етеп<1 синтаксис которого приведен в табл. 4.57. В первой и простейшей форме зтого оператора проверяется булево выражение Ьоо!еап-ехргехз<оп и, если оно имеет значение Сгпе, то исполняется последовательный оператор зедиеп<1а1ы<а<етеп!.
Во второй форме добавляется предложение "е2 ее" с другим последовательным оператором зедиепйа1-з<а<етеп<, который исполняется, если булеза выражение имеет значение Еа1ве. Табл. 4.бТ. Синтаксис оператора х" в языке ЧНИ. 1т Ьоа1еап-ехргезз<оп С«еп зедиеп<1а1-Па<етеп! еп«И; 1Х Ьоо1еап-екРгехх1ап С<зев зедиеп<1а1гк<а<еп<еи! е1ве зедиепба!оца<етеп! еп«И„. 1Х Ьоа1еап-ехргезз1оп с«еп зедиеп<1а1-з<шетеп< е1вах Ьо<<1еап-ехргек<1ап Сйев зедиепба1ена<етепг е1вьх Ьоо!сап-ехргезз1оп свел аедиетш1пна<етеп< еаб 1Я< 1» Ьао!еап-ехргезя<оп сЬев хедиет<а1ояа<етеп! е1вИ Ьоо!еап-гхргетгап с«вв зедиеп<1а1-х<а<етеп! е1в11 Ьоо1еап-ехргезя1ап с!<ел зедиеп<!а1-з<а<етеп! е1ве авдиев<<а!-з<а<етеп! еп«1Х; Для образования вложенных операторов уй-С!<еп-е1ее в языке ЧНПВ ис-' пользуется специальное ключевое слово е1в1х, которое вводит «средние» предложения.
Последовательный оператор зедиепба1ы<а<етеп< предложения е1еуб исполняется в том случае, когда булево выражение Ьоо1еап-ехргезз1оп в этом предложении истинно, а все предшествующие булевы выражения Ьоо1еапехргезз1опз оказываются ложными.
Последовательный оператор зедиеп<1а1- з<а<етеп! заключительного необязательного предложения е1ее исполняется только тогда, когда все предыдущие выражения Ьоо1еап-ехрге<з1апз имеют значения ба1ве. В табл. 4,58 представлен вариант архитектуры устройства для обнаружения простых чисел, в котором используется оператор 1 б. Локальная переменная Н1 введена для того, чтобы отобразить преобразованное значение входного воздействия << в виде целого числа; зто позволяет оперировать целыми числами при сравнениях в операторе 1 й.
Булевь< выражения в табл. 4.58 не перекрываются, то есть в любой момент времени значение с гое имеет только одно из них. На самом деле в данном при- 348 Глава 4. Г(ринципы проектирование комбинационных логических схем ложении не было необходимости использовать в полном объеме возможности вложенных операторов 11. С помощью средств синтеза можно было бы построить схему, в которой вычисление логических выражений происходило последовательно, но схема при этом работала бы медленнее. Когда нужно выбирать среди нескольких альтернатив на основании значения только одного сигнала или выражения, обычно более читабельным н дающим лучший результат синтеза является оператор сазе!со зе з(а(етеп!).
Табл. 4.58. Архитек(ураустройствадляобнаружения простыхчисел,в которой использован оператор з агсЬ1еескиге рг1ве7 агсЬ от рг1ве 1а Ьейьп ргосеав(И) такзабье М1: 1ИТЕСЕЕ; Ьейьп И1 := СОМУ 1МТЕИЕЕ(М); 11 И1=1 ог М1=2 ЕЬеа И < '1'; е1взя И1 3 ог И1 Б ог М1=7 ог М1=11 ог М1=13 ЕЬеа И <=- '1'; е1ве Р <= '0'; евЫ 11; елЫ ргосева; еаб рг1ве7 агсЬ; Табл.4.89. Синтаксис операто- ра сазе в языке ЧНО1. саве ехргеьа(оп зв впеп г(к(и'ех => кециев((аря(а(етев(з впеп с(ю(сез > зедиеппа(-з(а(етеп(з епЫ саве; В табл. 4 60 приведена еще одна архитектура устройства для обнаружения простых чисел, на этот раз записанная с использованием оператора са ее. Подобно тому, как это было в варианте с параллельным оператором ае1есг, оператор сазе позволяет в очень наглядной форме задать желаемое функциональное поведение.
Синтаксис оператора сазе представлен в табл. 4 59. В этом операторе вычисляется заданное выражение ехргезз(оп, по его значению выбирается одна из альтернатив с)(о(сез и исполняются соответствующие последовательные операторы зе((иеп((а(м(а(етеп(л Заметьте, что в каждом из наборов альтернатив с((о(сез можно записать один или большее число последовательных операторов.
Сами альтернативы с)(о(сез могут иметь форму одного значения или нескольких значений, разделенных вертикальной чертой 1 ~ ). Альтернативы с)(о(сея должны быть взаимно исключающими и содержать все возможные значения типа выражения егргезз(оп; в последней альтернативе с)(о(сез можно воспользоваться ключевым словом ос)тела для указания всех значений, которые еще не были упомянуты ранее.
4.7. Язык описания схем ЧНО~ 349 Табл. 4. 60. Архитектура устрой ства для обнаружения простых чисел, в которой использован оператор саве агсЬ1сесеаге ргзяе8 агсЬ от ргзяе зв Ьебтв ргосеве(И) Ьебтп саве СОИУ 1ИТЕОЕК(И) зе илес 1 => Г <= '1'; ипеп 2 => Г < '1'; ииеп 3 1 8 1 7 1 11 1 13 => Г < '1' ииеп ссиегв => Г <= 'О'; епа саве; епа ргосеев; ева ргзяе8 агсЬ; Другой важный класс последовательных операторов образуют операторы 1 о ар (1 сор ьтагетепгз). Синтаксис простейшего из них указан в табл. 4 61; в этом примере возникает бесконечный цикл.
Хотя в обычных языках, на которых пишется программное обеспечение, бесконечные циклы нежелательны, мы увидим в параграфе 7.12, как можно с большой пользой употребить такой цикл прн моделировании работы схемы. Табл,4.61. Синтаксис основного оператора 1оор а языке ЧН()~ 1оор тедиепи(артагетепг зедиепба1ецагетепг епс 1оор; Более знакомым вариантом цикла является уже рассматривавшийся вьппе цикл Гег (г"ог 1оор), синтаксис которого указан в табл. 4.62. Заметьте, что переменная цикла Ыепп7)ег объявляется неявно ее упоминанием в цикле аког, и она имеет тот же тип, что и диапазон гапке. Эту переменную можно использовать в последовательных операторах внутри цикла, и посредством ее перебираются все значения диапазона галие слева направо по мере перехода от одного шага итерации к другому.
Табл. 4. 62. Синтаксис цикла гог в языке ЧН01 1ог Ыепт11ег 1п галие 1оор кедиепварзгаытепе гедиевг(а1-згагетепс епц 1оср; Имеются еще два других полезных последовательных оператора, которые могут исполняться внутРи цикла; это операторы ех1 г (ех1 с тагетет) н пех с 350 Глава 4. Принципы проектирования комбинационных логических охе«я (с ех г лают епг). Оператор ех1 с, когда он исполняется, передает управление оператору, непосредственноследуюшемузаконцом цикла, Сдругойстороны, опера тор пехг вызывает пропуск всех остающихся в цикле операторов н переход к началу следующей итерации данного цикла.