Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003), страница 35
Описание файла
DJVU-файл из архива "Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003)", который расположен в категории "". Всё это находится в предмете "микропроцессорные системы (мпс)" из 8 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "микропроцессорные системы" в общих файлах.
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 35 - страница
1роектирование на МНР(. Гогда оператор присваивания будет выглядеть следующим образом (лис.инг 4.2): Листинг 4.2 мосеев ( З.пп) мдап оиц < = Евапврове Ьпп акоев 5 пе; юа рсосевв; : помощью ключевого слова ееапвросс мы включили механизм транспорт(ых, а не инерционных задержек. Временная диаграмма работы такого устюйства представлена на рис. 4.2, который демонстрирует ситуацию, когда, (есмотря на то, что значение '4' входного сигнала апп сохранялось в тече(ие времени 3 нс., а значение '6' — в течение времени 4 нс., зти значения :игналов появились на выходе.
Рис. 4.2. Временная диаграмма, соответствующая функционированию модели с листинга 4,2 если все же ограничение на минимальную длительность нахождения вход(ого сигнала в некотором состоянии есть, но оно не равно задержке алиячия на сигнал выходной (например, равно 4 нс.), то мы возвращаемся к янерционным задержкам, но задаем инерционность в явном виде, не призавнивая ее задержке (листинг 4.3).
Листинг 4.3 ркосевв (апп) вевап аиц < = селесс 4 апесСАат апп алвес 5 пв; аи) реосевв; В этом случае значение '4' и '6' на входе будет отфильтровано (расстояние иежлу событиями перехола сигнала в это состояние и событием перехода из него в состояние '6' равно 3 нс., аналогично — для '6' составляет 4 нс., что не превосходит значения времени, указанного в секции тезесе).
Значение же яи пройдет на выход. Иллюстрация данного примера приведена на Глава ( Рис. 4.3. Временная диаграмма, соответствующая функционированию модели с листинга 4.3 Использование процессов, сигналов и переменных в поведенческом моделировании Процессы и лрисваивание значений сигналам Часто встает вопрос, сколько процессов необходимо использовать, чтобы промоделировать одно устройство. Если устройство выполняет несколько функций (действий), то каждое из них реализуется в виде отдельного параллельного оператора или процесса для удобства понимания работы модели. Если устройство состоит из нескольких узлов, то каждый из них можно промоделировать в виде отдельного процесса. Однако это не обязательно.
Во многих случаях в одном процессе можно выполнять несколько функций. Рассмотрим некоторые проблемы, возникающие при совмещении нескольких действий по сути моделируемого устройства — действий параллельных, в одном процессе. Рис. 4.4. Моделируемое устройство аю Промоделируем устройство, которое имеет три входа (а, ь, с( и два выхода (а, е). г( = а + ь, е = (а + (о(хс (рис. 4.4). Как обычно, в реальнои Проекги ование на )гН0!. устройстве все входы и выходы устройства функционируют параллельно в физическом времени.
Значения задержек нас в данном случае не волнует, и в описании модели устройства мы их опускаем (модель будет работать по дельта-задержкам). Попробуем промоделировать работу этого устройства с использованием одного процесса. Пусть текст модели выглядит так, как представлено в листинге 4.4. епанчу а1и ав ровс (а,Ь,с: ап гпеедеп; гп апопс апгедетГ е: оис ьпседет); ея6 епе1су а1п; аасЫ.Сеоепве Ьеьа~гаош оа а1и ав рг с) е: рвооевв(а,Ь,с) Ъед1п д<=аеЬ; е < = с*с; епа рвооевв рг г( е; еяа авсиасесепве Ьеьамьоиг; На первый взгляд модель должна замечательно работать.
Однако можно наблюдать результат ее работы, который представлен на рис. 4.5. Рис. 4.6. Временная диаграмма работы устройства, описанного а листинге 4.4 На выходе г( наблюдается желаемый результат, а выход е ведет себя странно: ожидаемый после момента времени 7 результат '49' появляется только в иомент времени 10, когда на этом выходе уже должно быть значение '56', которому там так и не суждено появиться. Такое поведение выхода е связа- тра Глава ю но с тем, что его значение определяется на базе сигнала й, декларированию- ГО В епгзеу а1а КаК СИГНаЛ ВЫХОдНОй (опг), ИЗМЕНЕНИЕ ЗНаЧЕНИя КОтсретЮ осуществляется в теле того же процесса. Процесс срабатывает каждый раз при изменении состояния хотя бы одною сигнала, входящего в его список чувствительности. При каждом срабатывннии, для формирования выходных сигналов берутся те значения входиыт сигналов, которые они имеют в момент модельного времени, соответствующий текущему срабатыванию процесса.
Обратите внимание! Поскольку сигнал й, являющийся для объекта выхонным, используется в левой части оператора присваивания, его тип должен быть определен как ьпоаг. Если это по каким-либо причинам нежелателы но, необходимо использовать сигнал, описанный внутри архитектурною тела. Это может выглядеть следующим образом (листинг 4.5). Лветингн4 о агеьзгеегиге Ьеьатгош а ое а1сс Ьв вСдпа1 ййсьпнедег; Ьедап рг й е: ргоеевв(а,Ь,с) Ьедап йй < = а + Ь! е < = йй*ст й< = йй; епй ргоеевв рг й е; епй агеьгееееиге Ьеьа стах а; Такое описание будет функционировать, так же как и описание в листинге 4.4.
Забегая вперед, можно сказать, что для того, чтобы схема работаню желаемым образом, в данном случае нужно использовать не сигнал, а переменную. Таким образом, когда процесс рг й е выполняется очередной раз, для определения нового значения сигнала е используется то значение сигнала й которое сигнал й имел при запуске процесса рг й е на выполнение, т.
ю. прежнее, а не новое значение сигнала й, сформированное операторои й< = а + ь (рис. 4.6). Несмотря на то, что оператор присваивания значению сигналу е написан текстуально, после операции присваивания нового значения сигналу й, и будет в теле процесса выполняться после него, в системс моделирования значение сигнала й сменится только после завершения актю выполнения процесса (единицы параллельных действий в модели ию УНАН,). раектироаание на )/Н!Х 175 Рис. 4.6.
Срабатывание процесса для момента модельного времени Т д = 7 нс йеханизм дельта-задержек здесь не включается, т. к. операторы присваива(ия значения сигналу, расположенные в теле процесса, рассматриваются вк операторы последовательные, операторы в теле процесса рг г( е. Едини(ей же планирования срабатывания в модельном времени выступает про(есс в целом. )сзннкшую проблему можно решить несколькими способами. Во-первых, в еле процесса можно переписать оператор присваивания значения для е ЛсдуЮщИМ ОбраЗОМ: е< = (а + Ь)Хс; В даННОй МОДЕЛИ ЭтО НЕ ВЫЗОВЕТ )рсблем, но это возможно не всегда. юлее корректным решением будет разнесение операторов присваивания в кокые процессы, как представлено в листинге 4.6. Листинг 4,6- ' всЬЕСеоецве Ьеьае1ог1 ое а1ц Ев адеп рг ГН рвооевв(а,Ь,с) с<=а+Ь; вва рвооевв рх б; рг е: реосевв (с,б) е< = с*с; еос рассеяв рг е; ас ввоЬ1ееоеиве Ьеьаеаог1; Глава 4 Кроме того, можно оставить оба оператора присваивания значений сигнз лам внутри тела одного процесса, но использовать промежуточную локаль ную переменную (представлено в листинге 4.7).
1 'Листйнг 4.7 агсЬ1сесепге Ьеьач1оиг1а ог а1и 1в Ъеяап рг 4 е1: ргооевв(а,Ь,с) чег1аЬ1е чаг: апсеяег; Ьедап чаг: =а+Ь> гт< = чаг; е< = чаг*сг епа ргооеав рг о е1; епй агоМЕеоспге Ьеьачтоиг1а; В отличие от сигнала, переменная немедленно меняет свое значение послг выполнения операции присваивания, и это новое значение становится сразу же видимым для последующих операторов в теле процесса. В обоих случаях модель будет функционировать правильно. Результат рабо. ты представлен на рис. 4.7. Рис. 4Л. Временная диаграмма работы устройств, описанных в листингах 4.6 и 4,7 Переменная чаг — локальная переменная процесса рг о е1, следовательно, она не является разделяемой, т.
е. не может быть использована никаким дру. гим процессом. Конечно, для этого простого примера мы можем выйти из положения, вообще не используя процесса в архитектурном теле, а поставив два простьц параллельных оператора присваивания значений сигналам (листинг 4.8). 'фоекгирование на чН01 Г77 мсЬШесгсгв Ьеьачьоог2 ог а1с 1в мя1п д < = и -~ Ь; е< = <З*с; игз агой.еесеиге Ьеьачтоиг2; )лесь, с учетом механизма дельта-задержек, изменение сигнала <з, выползенное первым оператором, приведет к повторному срабатыванию второго зператора, задающего значение с в тот же момент модельного времени, но ~же с новым значением <з.
отметим, что варианты, представленные листингами 4.6 и 4.8, являются и юнее гибкими. В случае изменения только одного сигнала с будет запущен юлько оператор с< = <зхс; а оператор с< = а + ь; срабатывать не будет. 5сли такие же операторы мы сделали бы последовательными операторами в нле процесса (листинги 4.4 и 4.7), то мы заставили бы выполняться оба зператора при каждом изменении любого из входных сигналов.
Функциональной ошибки в этом нет, но на времени моделирования это, конечно, жажется не лучшим образом. 8 заключение отметим, что при заданных в нашем примере простых преобзазованиях, целесообразнее предпочесть более прямой вариант реализации (листинг 4.9). Лвствнг4;9 втсвзгесгсге ЬеЬачьосгз ог а1и ав 5едзс о< = а+Ь; е<= (а+И*с; впй агсЬЗЕесеигв Ьеьачьоигз; Здесь дважды вычисляется (а + ь), но зато не включается механизм дельтащержек и не происходит повторного выполнения оператора е< = <зхс; в згнет на одно изменение входных сигналов, как это будет происходить в примере, приведенном в листинге 4.8. Результаты работы программ (листинги 4.8 и 4.9) также соответствуют предггавленным на рис.