![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation Табл. 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. Цикл в процессе обычно разворачивается в множество копий той или иной комбинационной логической схемы, чтобы обеспечить исполнение этого оператора. Если вы хотите, чтобы эта комбинационная логическая схема была только в одном экземпляре и использовалась последовательно шаг за шагом, то вы должны спроектировать последовательностную схему; о таких схемах речь пойдет в последующих главах. Если вы ошибетесь в условном операторе в процессе, не указав выход для какой-либо комбинации входных сигналов, то это приведет к созданию компилятором защелки для удержания старого значения сигнала, который в противном случае мог бы измениться. В общем случае образование таких защелок нежелательно. Кроме того, в зависимости от реализации программных средств могут оказаться несинтезируемыми и другие элементы и структуры языка. Вам, безусловно, еле- ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |