Последовательный оператор присваивания
Назад | Cодержание | Следующая |
Изучение VHDLПоследовательный оператор присваиванияПоследовательные операторы в VHDL вставляются в операторы процессов и исполняются последовательно в виртуальных процессорных элементах программистской модели. \приемник\:=\выражение\ — для присваивания переменной \приемник\ <= \выражение\ - для присваивания сигнала.
Здесь результат \приемник\ может быть Присваивание переменной отличается от присваивания сигналу. Выполнение оператора присваивания сигналу Поэтому если в одном процессе стоит несколько присваиваний одному сигналу, то истинное присваивание происходит в момент остановки процесса. Если перед остановкой процесса выполнялось чтение этого сигнала (участие его в качестве операнда в выражении) то будет прочитано значение, присвоенное в прошлом запуске процесса. При присваивании части элементов сигнала составного типа или перечисляемого типа, ( например, имени с индексом, вырезке ) считается, что выполнено присваивание всем элементам сигнала. sіgnal d:bіt_vector(0 to 7); ........... d <= (others => '0'); d(0 to 3) <= "0011"; d(4 to 5) <= "11"; waіt .... сигналу d будет присвоено значение "00111100". Всем операторам присваивания сигналу в одном процессе в модели виртуального процессорного элемента соответствует один источник сигнала. Если одному и тому же сигналу выполняется присваивание в различных процессах, то несколько источников сигналов соединяются своими выходами и в общем случае, результирующий сигнал может быть неопределенным. Поэтому над таким сигналом должна быть задана функция разрешения, которая разрешает конфликт присваивания одному сигналу значений из нескольких источников сигнала. Если пользоваться пакетом IEEE.STD_LOGIC_1164, то сигнал, объявленный как std_logic, можно присваивать в разных процессах, так как в этом пакете есть функция разрешения для такого типа сигналов. Присваивание сигналу при моделировании.При моделировании дискретных систем важное место занимает моделирование распространения сигнала с учетом задержки в проводниках или задержки в вентилях. Для этого используют следующий расширенный синтаксис присваивания сигналу: \присваивание сигналу\::=\приемник\ <= [\способ задержки\] \график\; \способ задержки\::= transport |[reject \выражение времени\] inertial \график\::= \выражение\ [after \выражение времени\] Здесь график (waveform) представляет собой запись, состоящую из одной или нескольких пар: величина сигнала – задержка сигнала. Cпособ задержки transport означает, что при присваивании сигналы, представленные в графике, будут задержаны подобно тому, как сигнал задерживается в линии задержки или проводниках. Величина задержки отсчитывается относительно момента остановки процесса и задается выражением \выражение времени\, имеющем тип time. Способ задержки inertial реализует поведение задержки в источнике сигнала, который не реагируют на слишком короткие входные импульсы. Y<= X after 10 ns; - значение сигнала X на момент запуска процесса присвоится сигналу Y с задержкой 10 нс, при этом импульсы шириной менее 10 нс будут подавлены. Y<= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns; - сигналу Y сначала присвоится 0, через 10 нс – 1, через 20 нс – 0, и через 30 нс – 1, например, это задание тестовой последовательности сигнала. Y<= А, А+В after delay_sum; - сигналу Y сначала присвоится А, а через задержку, определяемую статическим выражением delay_sum – сумма сигналов А и В. Y<= transport X after 1000 ns; Y<= reject t_rej inertial А and B after t_d; - моделирует вентиль "И" с задержкой t_d , который не пропускает импульсы короче t_rej.
Анатолий Сергиенко |
Назад | Cодержание | Следующая |