SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Параллельные и
последовательные операторы



       Языки описания аппаратуры




      Хаханова И.В, каф.АПВТ,
      ХНУРЭ, e-mail:                        1
      hahanova@mail.ru             09.02.2011
    Цель лекции: Изучение основных
     последовальных и параллельных операторов
     VHDL
    Содержание:
     1. Последовательные и параллельные операторы
     2. Создание VHDL-моделей триггеров
     3. Оператор If
     4. VHDL-модель мультиплексора
     5. Условный и селективный параллельные операторы
     6. Оператор case
     7. Оператор Null
     8. Оператол Loop
     9. Процесс с оператором wait
     10. Cигналы
     11. Переменные
     12. Константы
                                                                   2
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Последовательные и параллельные операторы

                                  Параллельные
                             time delta   A   B   C   D
A <= B; -- оператор 1
                              0   +0      1   2   3   0
B <= C; -- оператор 2
                              10 +0       1   2   3   4   (оператор3 выполняется первым)
C <= D; -- оператор 3
                              10 +1       1   2   4   4   (затем выполняется оператор 2)
                              10 +2       1   4   4   4   (затем выполняется оператор 1)
                              10 +3       4   4   4   4   (отсутствие выполняемых команд)


                              Последовательные
process (B, C, D)            time delta A B C D
begin                          0 +0 1 2 3 0
A <= B; -- оператор 1         10 +0 1 2 3 4 (выполняются операторы 1,2,3;
B <= C; -- оператор 2                              затем обновляются A,B,C)
C <= D; -- оператор 3         10 +1 2 3 4 4 (выполняются операторы 1,2,3;
end process;                                       затем обновляются A,B,C)
                              10 +2 3 4 4 4 (выполняются операторы 1,2,3;
                                                   затем обновляются A,B,C)
                              10 +3 4 4 4 4 (никаких действий не происходит)
                                                                                             3
  Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                           09.02.2011
Последовательные и параллельные
операторы (2)
 1. Заполнить таблицу, выполнив моделирование
    параллельных операторов
    A <= B after 5 ns;
    B <= C after 5 ns;     time delta A B  C              D
    C <= D after 5 ns;

 2. Заполнить таблицу, выполнив моделирование
    последовательных операторов
    process (B, C, D)
    begin
        A <= B after 5 ns;  time delta A B C              D
        B <= C after 5 ns;
        C <= D after 5 ns;
    end process;


                                                                       4
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru       09.02.2011
Оператор назначения сигнала
  Синтаксис:
           signal_name <= [delay_mechanism ] waveform ;
 Форма сигнала:
   waveform_element ::= value_expression [ after
   time_expression ] { , ... }
 Пример:
signal D_OUT, E_OUT: BIT_VECTOR (3 downto 0);
   .............................
   D_OUT <= "0000" after 2 ns;
   E_OUT <= "0000" after 2 ns, "1111" after 7 ns;




                                                                   5
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Оператор If
if condition then                               if condition then
   sequential statements l                              sequential
else                                               statements
   sequential statements 2                      {elsif condition then
end if;                                            sequential statements }
                                                [else
Пример                                              sequential statements]
if CLK = '1' then
                                                end if;
   Q <= D after 10 ns;
   QN <= not D after 10 ns;
end if;

                                                                                 6
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                 09.02.2011
Оператор case (1)
 Синтаксис:
   case expression is
              when choice1 => sequential statementsl
              when choice2 => sequential statements2
              ...
              [when others => sequential statements]
   end case ;
   Первым вычисляется выражение expression. Если
   оно равно choice1, то выполняется
   последовательный statements1; если – choice2, то
   выполняется последовательный оператор
   statements2.
   Все возможные значения выражения должны быть
   включены в поля выбора. Если они явно не
   задаются, в case нужно использовать идентификатор
   when others.
                                                                   7
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Оператор case (2)
      Type sel_type is range 0 to 3;
      Signal Sel: sel_type;
      case Sel is
                                 I
         when 0 => F <= I0;                           0


                                 I
         when 1 => F <= I1;                           1
                                                          MUX   F
         when 2 => F <= I2;      I                    2


         when 3 => F <= I3;      I                    3


        end case;                                         Sel




                                                                             8
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru             09.02.2011
Оператор Null
       Используется, если нет необходимости в каком
        либо действии, но по правилам синтаксиса
        оператор должен присутствовать.

 Синтаксис
     [label:] null;

 Пример
    case opcode is
      when add => Ace := Ace + operand;
      when subtract => Ace := Ace - operand;
      when nop => null;
    end case;

                                                                   9
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Условный и селективный параллельные
операторы назначения сигнала (1)
    Условный оператор назначения сигнала
      (conditional signal assignment statement):
      signal_name <= expression1 when condition1
           else expression2 when condition2
         ...
           [else expressionN];

    Селективный оператор назначения сигнала
      (selected signal assignment statement):
     with expression select
          signal_name <= waveform1 when choices1,
                            waveform2 when choices2,
                                    ...
                            [waveformN when choicesN,]
                            [waveformN+1 when others];
     Условный и селективный операторы являются параллельными


                                                                       10
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru        09.02.2011
Условный и селективный параллельные
операторы назначения сигнала (2)

     Реализация мультиплексора « 4 в 1»
 1.   С условным оператором:
           F <= I0 when Sel = 0
                    else I1 when Sel = 1
                                                   I0
                    else I2 when Sel = 2
                    else I3;                       I1
 2.   С селективным оператором:                           MUX   F
           with Sel select                         I2
           F <= I0 when 0,
                I1 when 1,                         I3
                I2 when 2,
                I3 when 3;                                Sel

                                                                        11
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru         09.02.2011
library IEEE;
Дешифратор                                             use IEEE.std_logic_1164.all;

                                                       entity decoder is
                                                  f0   port (i : in std_logic_vector(2 downto 0);
 i0                 DEC                           f1       f : out std_logic_vector(7 downto 0));
 i1                                               f2
 i2                                               f3   end decoder ;
                                                  f4   architecture arch of decoder is
                                                  f5   begin
                                                  f6        with i select
                                                  f7
                                                       F <= “00000001” when “000”,
i2   i1   i0   f7   f6   f5   f4   f3   f2   f1   f0          “00000010” when “001”,
0    0    0    0    0    0    0    0    0    0    1           “00000100” when “010”,
0    0    1    0    0    0    0    0    0    1    0           “00001000” when “011”,
0    1    0    0    0    0    0    0    1    0    0           “00010000” when “100”,
0    1    1    0    0    0    0    1    0    0    0
                                                              “00100000” when “101”,
1    0    0    0    0    0    1    0    0    0    0
                                                              “01000000” when “110”,
1    0    1    0    0    1    0    0    0    0    0
                                                              “10000000” when others;
1    1    0    0    1    0    0    0    0    0    0
1    1    1    1    0    0    0    0    0    0    0    end arch;

Задание: создать модель декодера используя операторы if, case и условный параллельный оператор
                                                                                                       12
   Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                     09.02.2011
library IEEE;
Шифратор                                               use IEEE.std_logic_1164.all;

                                                       entity decoder is
 i0                                                    port(i : in std_logic_vector(7 downto 0);
 i1                  Coder                        f0       f : out std_logic_vector(2 downto 0));
 i2                                               f1
 i3                                               f2   end decoder ;
 i4                                                    architecture arch of decoder is
 i5                                                    begin
 i6                                                         with i select
 i7
                                                       F <= “000” when “00000001”,
i7   i6   i5   i4   i3   i2   i1   i0   f2   f1   f0          “001” when “00000010” ,
0    0    0    0    0    0    0    1    0    0    0           “010” when “00000100” ,
0    0    0    0    0    0    1    0    0    0    1           “011” when “00001000” ,
0    0    0    0    0    1    0    0    0    1    0           “100” when “00010000” ,
0    0    0    0    1    0    0    0    0    1    1
                                                              “101” when “00100000” ,
0    0    0    1    0    0    0    0    1    0    0
                                                              “110” when “01000000” ,
0    0    1    0    0    0    0    0    1    0    1
                                                              “111” when others ;
0    1    0    0    0    0    0    0    1    1    0
1    0    0    0    0    0    0    0    1    1    1    end arch;

Задание: создать модель шифратора используя операторы if, case и условный параллельный оператор
                                                                                                      13
   Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                    09.02.2011
Параллельный сдвигатель
 library ieee;
 use ieee.std_logic_1164.all;
 entity barrel_shifter is
   port(
      a: in std_logic_vector(7 downto 0);
      amt: in std_logic_vector(2 downto 0);
      y: out std_logic_vector(7 downto 0)
   );
 end barrel_shifter ;

 architecture sel_arch of barrel_shifter is
 begin
   with amt select
     y<= a                   when "000",
       a(0) & a(7 downto 1)        when "001",
       a(1 downto 0) & a(7 downto 2) when "010",
       a(2 downto 0) & a(7 downto 3) when "011",
       a(3 downto 0) & a(7 downto 4) when "100",
       a(4 downto 0) & a(7 downto 5) when "101",
       a(5 downto 0) & a(7 downto 6) when "110",
       a(6 downto 0) & a(7) when others; -- 111
 end sel_arch;


                                                                  14
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
+
                                                             Flip-flop      D   Clk   Q
                                                                            0    r    0

    D-триггер                                                D      Q       1
                                                                            x
                                                                                 r
                                                                                 0
                                                                                      1
                                                                                      Q
                                                              Clk           x    1    Q
         Latch                                                              x    f    Q
                           D     En    Q+
       D                                                     r – передний фронт (0 -> 1),
               Q           0     1     0                     f – заданий фронт (1 -> 0),
                           1     1     1
       En                  x     0     Q           library IEEE;use IEEE.std_logic_1164.all;
                                                   entity DFF is
library IEEE;use IEEE.std_logic_1164.all;          port (D, CLK: in std_logic;
entity DFF is                                            Q: out std_logic);
port (D, En: in std_logic;Q: out std_logic);       end DFF;
end DFF;                                           architecture SIMPLE of DFF is
architecture SIMPLE of DFF is                        begin
begin                                                  process (CLK)
  process (D, En)                                       begin
    begin                                                 if CLK = '1' then
     if En = '1' then                                        Q <= D;
        Q <= D;                                            end if;
     end if;                                             end process;
  end process;                                     end SIMPLE;
endХаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru
     SIMPLE;                                                                                        15
                                                                                            09.02.2011
RS-триггер                                    library IEEE;use IEEE.std_logic_1164.all;
                                              entity RS_FF is
R                             Q               port (R, S: in std_logic;
                                                      Q, nQ: out std_logic);
                                              end RS_FF ;
                                              architecture SIMPLE of RS_FF is
                              _
                              Q                  signal Qin, nQin: std_logic;
 S                                            begin
                                                process (R,S)
                         Q
                  +
      R    S    Q                                 begin
      0    0    Q        Q                          if R = '1' then
      0    1    1        0                             Qin <= '0' ; nQin <= '1' ;
      1    0    0        1                          elsif S = '1' then
               запрещенная                             Qin <= '1' ; nQin <= '0' ;
      1    1
               комбинация                           end if;
                                                end process;
                                                 Q <= Qin; nQ <= nQin;
                                              end SIMPLE;

                                              Задание: создать модель триггера, используя
                                              логические уравнения
                                                                                                    16
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                     09.02.2011
R’S’-триггер                                   library IEEE;use IEEE.std_logic_1164.all;
  _                                            entity nRnS_FF is
  S                           Q                port (nR, nS: in std_logic;
                                                       Q, nQ: out std_logic);
                                               end nRnS_FF ;
                                               architecture SIMPLE of nRnS_FF is
                              _
                              Q                   signal Qin : std_logic;
 _
 R                                             begin
                                                 process (nR, nS)
                         Q
                     +
      R    S     Q                                 begin
                запрещенная                          if nR = '0' then
      0    0
                комбинация                              Qin <= '0' ;
      0    1     0       1                          elsif nS = '0' then
      1    0     1       0                              Qin <= '1' ;
      1    1     Q       Q                           end if;
                                                 end process;
                                                  Q <= Qin; nQ <= not Qin;
                                               end SIMPLE;

                                              Задание: создать модель триггера, используя
                                              логические уравнения                                17
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                   09.02.2011
library IEEE;use IEEE.std_logic_1164.all;
                                           entity JKFF is
  JK-триггер                                   port (SN, RN, J, K, CLK: in std_logic;
                                                      Q, QN : out std_logic);
          QN        Q                      end JKFF;
                                           architecture JKFF1 of JKFF is
                                               signal Qin: std_logic;
RN           JKFF            SN
                                           begin
                                               process (SN, RN, CLK)
                                  +            begin
          K CLK J
                  J        K   Q
                                                if RN = '0' then
                  1        0   1                      Qin <= '0' after 10 ns; -- сброс в 0
Уравнение:        0        1   0                elsif SN = '0' then
Q+ = JQ' + K'Q    1        1   Q'                     Qin<= '1' after 10 ns; -- установка в 1
                  0        0   Q                elsif CLK = '0' and CLK'event then
                                                      Qin<=(J and not Qin) or
                                                                (not K and Qin) after 10ns;
                                                end if;
                                               end process ;
                                               Q<=Qin; QN <= not Qin;
                                           end JKFF1 ;

                                                                                                 18
     Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                             09.02.2011
Синхронные управляющие сигналы
                                               library ieee; use
Триггер с синхронизацией по                        ieee.std_logic_1164.all;
переднему фронту и синхронной                  entity flop is
установкой                                         port(Clk, D, S: in std_logic;
                                                          Q: out std_logic);
                        D   S
                            Q


                            k
                            l
                            C




                                               end flop;         k
                                                                 l
                                                                 C




                S
            D       Q                          architecture archi of flop is
                                               begin
             Clk                                process (Clk)
                                                 begin
                                                   if Clk'event and Clk='1' then
                                                      if S='1' then Q <= '1';
                                                      else Q <= D; end if;
                                                   end if;
                                                end process;
                                               end archi;                                  19
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                           09.02.2011
Сигнал разрешения синхронизации
                                           library ieee; use ieee.std_logic_1164.all;
Триггер с синхронизацией по                entity flop is
переднему фронту и                             port(Clk, D, CE: in std_logic;
разрешением синхронизации                      Q: out std_logic);
                                           end flop;
                                           architecture archi of flop is
          D        Q                       begin
          CE                                 process (Clk)
                                               begin
           Clk                                   if Clk'event and Clk = '1' then
                                                   if CE='1' then
                                                      Q <= D;
                                                 end if; end if;
                                               end process;
                                           end archi;
                                                                                           20
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                           09.02.2011
Задание
 1.         Разработать модель n                                                                  Описание
            разрядного счетчика
                         Counter                                                     N=номер в списке группы + 3
                                n                               n
                                     D                   Q
                                         En                                            Группа       5         6        9
                                         T          Cout                               m            2         3        4
                                         Ld
                                              Clr
                                                                                     Все изменения состояния счетчика
                                                                                      происходят по переднему фронту
                                                                                      синхроимпульса. Счетчик
 2.         На основе созданной модели                                                генерирует перенос (Cout) в
            разработать структурную                                                   состоянии (2n-1), если T = 1,
            модель m*n разрядного                                                     поэтому
            счетчика                                                              Управляющие сигналы
                                                                                                        Q+           Описание
              D            Q        Q1        D2     D              Q   Q2
                                                                                  Clr   Ld  En      T
       D1
       En                                     En
                                                                                   1    X    X      X    0    Cброс
              En                Carry1               En
       T1     T          Cout                        T          Cout     Carry2    0    1    X      X    D    Параллельная загрузка
              Ld                                     Ld                            0    0    1      0    Q    Сохранение состояния
                   Clr                                    Clr
                                                                                   0    0    0      1    Q    Сохранение состояния
ClrN                                                                               0    0    1      1   Q+1   Счет на увеличение
LdN
Clk


Можно использовать VHDL-модель счетчика 74163 [1,стр 77-79]                                                                             21
  Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                                                       09.02.2011
Циклы: Loop
     Синтаксис:
       [ loop_label: ] loop
           { sequential_statement }
          end loop [ loop_label ] ;

     Для окончания цикла может использоваться оператор
      exit:
     [ label: ] exit [ loop_label ][when boolean _expression];

     Если метка не указана, то выполняется выход из
      цикла, содержащего оператор exit. Для прерывания
      текущей итерации – оператор next:
     [ label:] next [ loop_label ] [when boolean _expression];


                                                                         22
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru          09.02.2011
Циклы: Loop. Примеры
    Пример 1
     signal Clock : BIT := '0';
          ...
     Clk_1: process (Clock)
          begin
           L1: loop
                  Clock <= not Clock after 5 ns;
           end loop L1;
          end process Clk_1;
    Пример 2
     L2: loop
          A:= A+1;
          exit L2 when A > 10;
     end loop L2;


                                                                  23
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Циклы: While
    Синтаксис:
     [ loop_label: ] while condition loop
          { sequential_statement }
     end loop [ loop_label ] ;

    Пример:
     Shift_3: process (Input_X)
          variable i : POSITIVE := 1;
     begin
          L3: while i <= 8 loop
                  Output_X(i) <= Input_X(i+8) after 5 ns;
                  i := i + 1;
          end loop L3;
     end process Shift_3;
                                                                    24
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru     09.02.2011
Циклы: For
  Синтаксис:
     [loop-label:] for loop-index in range loop
         sequential statements
     end loop [loop-label];

  Пример:
     for count_value in 0 to 127 loop
         count_out <= count_valueafter 5 ns;
     end loop;
                                                                  25
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Процесс
   Со списком                                     С оператором wait
    чувствительности:                               process
    process(sensitivity-list)                        begin
    begin                                               sequential-statements
        sequential-statements                           wait-statement
    end process;                                        sequential-statements
                                                        wait-statement
                                                     end process;



      В процессе не может одновременно использоваться оператор wait и
      список чувствительности.

                                                                                   26
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                    09.02.2011
Оператор wait
    Синтаксис:
     [ label: ] wait | on signal _name {,...} |
                       until boolean_expression |
                       for time_expression ] ;

    Пример 3:
     wait until clk = 1; wait for 1 ms;
       Оператор wait может содержать комбинацию из нескольких
        форм:
     wait on clk until reset = '0';
     wait until trigger = '1' for 1 ms;
       Следующая форма выполняет приостановку процесса до
        окончания моделирования.
     wait;

                                                                         27
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru          09.02.2011
Сигналы
    Сигналы декларируются вне процесса, в начале
     архитектуры. Они предназначены для связи между
     процессами и могут использоваться в любом месте в
     пределах архитектуры.
    Синтаксис
     signal signal_name {, ...} : type_name [ := initial_value
     ];
    Оператор назначения для сигнала:
     Signal_name < = expression [after delay];
    Пример:
     architecture ExDecl of DataTransm is
         signal Temp: Std_Logic;
         signal FlagC, FlagZ: Bit;
     begin
                                                                         28
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru          09.02.2011
Переменные
    Переменные могут применяться для локального хранения
     данных в процессах, процедурах и функциях. Они
     должны быть объявлены в процессе, процедуре или
     функции в которых используются и являются локальными
     для них.
    Синтаксис:
     variable variable_name {, ...} : type_name [ := initial_value];
    Оператор присваивания для переменных:
     Variable_name: = expression;

    Пример:
     variable FreeAccess : Boolean := true;
     variable E : BIT;
     variable I : INTEGER;


                                                                           29
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru            09.02.2011
Различие между переменными и сигналами

    Процесс с переменными                         Процесс c сигналами
    entity dummy is                                 entity dummy is
     port (trigger: in integer);                      port (trigger: in integer);
    end dummy ;                                     end dummy;

                                                    architecture sig of dummy is
    architecture var of dummy is                      signal sum: integer:=0;
      signal sum: integer:=0;                         signal sig1: integer:=1;
    begin                                             signal sig2: integer:=2;
      process
       variable var1: integer:=1;                     signal sig3: integer:=3;
       variable var2: integer:=2;                   begin
                                                      process
       variable var3: integer:=3;                      begin
      begin                                                wait on trigger;
           wait on trigger;                                sig1 <= sig2 + sig3;
           var1 := var2 + var3;                            sig2 <= sig1;
           var2 := var1 ;
           var3 := var2 ;                                  sig3 <= sig2;
           sum <= var1 + var2 + var3;                      sum <= sig1 + sig2 + sig3;
          end process;                                 end process;
    end var;                                        end sig;
                 var1  2+3=5
                 var2    5
                 var3    5
                 sum 5+5+5=15
                                                                                                30
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                 09.02.2011
Константы
    Синтаксис:
     constant constant_name {, ...} : type_name :=
     constant_value [:=expression];

    Постоянная задержка delay1 типа time, имеющая
     значение 5 ns, может быть определена как:
     constant delay1: time: =5 ns;
    Пример:
     type WeekDay is (Mon,Tue,Wed,Thu,Fri,Sat,Sun);
     constant StartDay : WeekDay := Sat;
     constant LogicalGND : Bit := ‘0’;
     constant BusWidth, QueueLength : Integer := 16;
     constant CLKPeriod : Time := 15 ns;
     constant MaxSimTime : Time := 200 * CLKPeriod;
                                                                  31
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Выводы
    Операторы в VHDL бывают параллельные и
     последовательные:
       Параллельные операторы:
               паралельный оператор назначения сигнала
               условный оператор назначения сигнала
               селективный оператор назначения сигнала
       Последовательные операторы:
               оператор if
               оператор case
               оператор цикла loop
               оператор цикла while
               оператор цикла for
    Оператор process является параллельным
     оператором, содержит последовательные операторы.
     Существуют две формы оператора: со списком
     чувствительности и с операторами wait.
                                                                  32
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Контрольные вопросы и задания (1)
 1.     Пусть сигнал s в текущий момент имеет значение
        '0'. Чему будут равны булевы переменные v1 и v2
        после выполнения следующих операторов в
        процессе?
            S<='1';
            v1 :=s;
            wait on s;
            v2:=s;

 2.     Создать процесс, эквивалентный параллельному
        оператору выбора назначения сигнала:
        with bit_vector’(s, r) select
          q <= q when "00",
               '0' when "01",
               '1' when "10",
               'Z' when "11";
                                                                  33
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Контрольные вопросы и задания (1)
  1. Какой(какие) из следующих примеров содержит ошибку.
  a) A объект типа BIT
  case A is
       when '0' => report "Error";
       when '1' => report "OK";
      end case;
  b) A объект типа INTEGER
  case A is
       when 0|1|2 => report "Error#1";
       when 3|4 => report "Error#0";
       when others => report "OK";
      end case;
  c)A объект типа STD_LOGIC
  case A is
       when 'U'|'X'|'Z'|'W' => report "Unknown";
       when '1'|'H' => report "High";
       when '0'|'L' => report "Low";
      end case;

                                                                   34
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Контрольные вопросы и задания (2)
3.    Создать процесс, эквивалентный условному оператору
      назначения сигнала:
      mux_logic:
          z <= a and not b after 5 ns when enable='1' and sel='0' else
               x or y after 6 ns when enable = '1' and sel := '1' else
               '0' after 4 ns;

4.    Разработать поведенческую модель мультиплексора
      4x1. Использовать тип std_logic для входных портов.
      Задержка распространения сигнала от входа до выхода
      равна 4,5 ns. Следует описать задержку как константу и
      использовать ее в архитектуре.

5.    D-триггер с синхронизацией по уровню сохраняет свое
      значение, если G = 0, и Q=D, если G = 1. Используя
      оператор процесса, записать VHDL-код D-триггера.
                                                                            35
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru            09.02.2011
Контрольные вопросы и задания (3)
1.    Нарисуйте диаграмму для сигнала Q.
      entity TEST is      C

       port (C, D:in BIT; D
           Q :out BIT); Q
      end entity TEST;
      architecture BEHAVIORAL of TEST is
      begin
       process (C)
       begin
         if C='1' then
           Q <= D;
         end if;
       end process;
      end architecture BEHAVIORAL;
                                                                  36
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru   09.02.2011
Контрольные вопросы и задания (4)
Какой из следующих процессов содержит ошибку.
a)process (A)
  begin                           b)process
   if FALLING_EDGE(A) then          begin
     Y <= A after 5 ns;
   elsif RISING_EDGE(A) then            if FALLING_EDGE(A) then
     Y <= A after 7 ns;                    Y <= A after 5 ns;
   end if;                              elsif RISING_EDGE(A) then
  end process;                             Y <= A after 7 ns;
                                        end if;
c) process (A)                        wait on A;
    begin
       if FALLING_EDGE(A) then      end process;
               Y <= A after 5 ns;
      elsif RISING_EDGE(A) then
               Y <= A after 7 ns;
      end if;
      wait on A;
   end process;
                                                                      37
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru       09.02.2011
Задания для самостоятельной работы (1)
  1.    Для следующего VHDL-кода пусть D изменяется на '1' в
        момент времени 5 ns. Описать значения A, B, C, D, E и F
        и время их формирования. Другими словами, указать
        значения сигналов во время 5 ns, 5 ns + , 5 ns + 2, ... .
        Опиcать первые 20 шагов моделирования или до
        исчезновения изменений сигналов, или до появления
        периодически повторяющейся последовательности
        значений сигналов:
                                                P1: process (A) begin
   entity prob4 is                                        B <= A;
     port (D: in bit);                              end process P1;
   end prob4 ;                                  P2: process
   architecture q1 of prob4 is                      begin
    signal A, B, C, E, F: bit;                            wait until A <= '1' ;
                                                          wait for 0 ns;
   begin
                                                          E <= B;
            C <= A;                                       F <= E;
            A <= B or D;                             end process P2 ;
                                                end architecture q1;
                                                                                          38
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                          09.02.2011
Задания для самостоятельной работы (2)
 1.    DD-триггер подобен D-триггеру с синхронизацией по
       фронту, за исключением того, что он может изменять
       состояние (Q+ = D) при появлении переднего и заднего
       фронтов синхроимпульса. Триггер имеет вход сброса R. При
       R = 0 триггер устанавливается в 0 независимо от
       синхронизации. Записать VHDL-код для DD-триггера.
 2.    Записать VHDL-код для SR-триггера, используя:
          a) условный оператор назначения сигналов;
          b) логические уравнения; Q+<=R' S+R'S'Q
          c) два логических элемента.
 3.    Записать интерфейс и поведенческую архитектуру для
       двухвходового мультиплексора с входными портами: a, b и
       sel; выходом – z. Когда sel='0', то z<=a. Иначе z<=b. Написать
       testbench для модели мультиплексора.



                                                                           39
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru           09.02.2011
Задания для самостоятельной работы (3)
 1.   Триггер-переключатель имеет входы I0, I1, T и Reset, а
      также выходы Q и QN. Сброс триггера происходит при
      Reset =1 независимо от значений сигналов на других
      входах. Триггер работает следующим образом. Если
      I0=1, он меняет состояние по переднему фронту
      сигнала T; а если I1 = 1 – по заднему. Если I0=I1= 0,
      то триггер сохраняет состояние. Пусть задержка
      передачи сигнала от T до выхода – 8 ns, и от сброса до
      выхода – 5 ns.
      a) Создать VHDL-модель триггера.
      b) Записать последовательность команд программы
         моделирования для его тестирования. Подать на
         входы I1 = 1, I0 = 0. После двухкратного
         переключения триггера подать набор I1 = 0, I0 = 1.
         Завершить моделирование после двух изменений на
         выходах.
                                                                   40
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru    09.02.2011
Контрольные вопросы и задания (2)
  2. Записать декларацию константы размером 32 бита для
     числа ?
  3. Записать декларации переменных: счетчик counter
     инициализированный 0; флаг-статуса flag-busy
     указывающую занят модуль или нет; temp_result типа
     std_ulogic для хранения временных результатов.
  4. Записать оператор if который устанавливает переменную
     odd в ‘1’, если n нечетно, и odd=’0’, если n – четно.
  5. Написать модель тристабильного буффера, используя
     стандартную логику для входов data и enable и выхода
     output.              enable   data    output
                                 0' или 'L'                Z'
                                 1' или 'H' 0' или 'L'     0'
                                 1' или 'H' 1' или 'H'     1'
                                         иначе             X'

                                                                        41
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru        09.02.2011
Задания для самостоятельной работы
  1. Для каждого из следующих выражений определить является ли оно
      синтаксически правильным. Если да, то определить его значение.
            2*3+6/4                          3 + -4
            “cat”&character(‘0’) true and x and not t or z
            B”101110” sll 3                  B”100010” sra 2 & X”2C”
  2. Записать модель счетчика с синхровходом clk типа bit и выходом типа integer.
      Поведенческя архитектура должна содержать процесс в котором декларируется
      переменная count инициализируемая нулем. Процесс ожидает изменение clk.
      Когда clk переключается в ‘1’ процесс увеличивет count на 1 и передает
      значение на выход.
  3. Записать модель АЛУ со входом и выходом типа integer и входом выбора
      функции select типа bit. Если select=’0’ на выход выдается сумма значений на
      входах; иначе на выходе ‘1’, если значение на входах совпадаюн и ‘0’, если –
      нет.
  4. Записать модель цифрового интегратора имеющего: синхровход clock типа bit,
      вход данных и выход типа real. Интегратор выполняет сложение
      последовтельности входных данных. По переднему фронту на синхровходе
      устройство прибавляет число со входа к сумме и передает ее на выход.
  5. Записать оператор case, который переводит переменную x типа std_ulogic в тип
      X01 ({‘X’, ‘0’, ‘1’}).
                                             Тип std_ulogic          Тип X01
                                                 0' или 'L'             0'
                                                 1' или 'H'             1'
                                            X', 'W', 'Z', 'U', '-'     X'

                                                                                             42
 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                             09.02.2011
Задания для самостоятельной работы (2)
 6. Записать оператор case, который устанавливает переменную character_cless типа
     integer
         1, если переменная ch типа character содержит буквы,
         2 , если переменная ch содержит цифры
         3, если переменная ch содержит остальные печатные символы
         4, если переменная ch содержит не печатные символы.
 7. Записать цикл, зависящий от входа d. По переднему фронту синхровхода, если
     d=’0’ – цикл выполняется, если d=’1’ – выход из цикла.
 8. Записать цикл while, вычисляющий экспоненциальную функцию, с точностью до
     1/104.

 9. Записать цикл for, вычисляющий экспоненциальную функцию, из предыдущей
     задачи, точностью до восьми первых слагаемых ряда.
 10. Разработать поведенческую модель ограничителя (limiter) с тремя входами типа
     integer: data_on, lower и upper. Устройство также имеет выход data_out типа
     integer и выход out_of_limits типа bit. Данные со входа data_in поступают на
     выход data_out, если его значение находится в пределах lower и upper. Если
     data_in меньше lower, то data_out = lower. Если data_in больше upper, то
     data_out = upper. Выход out_of_limits=1, когда data_in выходит за пределы lower
     и upper.
 11. Разработать модель арифметического модуля для чисел с плавающей точкой.с
     входами данных: x и y, и выходом z. Также устройство имеет вход выбора
     функции типа перечисления со значениями: add.

                                                                                               43
Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru                                09.02.2011

Mais conteúdo relacionado

Mais procurados

Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionRoslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advancedRoman Brovko
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на rubyEvgeny Smirnov
 
Управляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условияУправляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условияEvgeny Smirnov
 
Типы данных (продолжение). Операторы. Стандартные библиотеки
Типы данных (продолжение). Операторы. Стандартные библиотекиТипы данных (продолжение). Операторы. Стандартные библиотеки
Типы данных (продолжение). Операторы. Стандартные библиотекиIhor Porotikov
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...Iosif Itkin
 
логические модели переключательных схем
логические модели переключательных схемлогические модели переключательных схем
логические модели переключательных схемЕлена Ключева
 
язык програмирования
язык програмированияязык програмирования
язык програмированияOlegmingalev1997
 
5 логические элементы компьютера
5 логические элементы компьютера5 логические элементы компьютера
5 логические элементы компьютераzarechneva
 
Razbiraemsya s preobrazovaniem_tipov
Razbiraemsya s preobrazovaniem_tipovRazbiraemsya s preobrazovaniem_tipov
Razbiraemsya s preobrazovaniem_tipovRodion Golovushkin
 
Scala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinScala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinVasil Remeniuk
 
апкс 2011 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilogIrina Hahanova
 
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКАВведение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКАIgor Kleiner
 
практика 4
практика 4практика 4
практика 4student_kai
 

Mais procurados (19)

Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionRoslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
моап 2011 05
моап 2011 05моап 2011 05
моап 2011 05
 
Основы программирования на ruby
Основы программирования на rubyОсновы программирования на ruby
Основы программирования на ruby
 
Управляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условияУправляющие структуры в Ruby: условия
Управляющие структуры в Ruby: условия
 
Типы данных (продолжение). Операторы. Стандартные библиотеки
Типы данных (продолжение). Операторы. Стандартные библиотекиТипы данных (продолжение). Операторы. Стандартные библиотеки
Типы данных (продолжение). Операторы. Стандартные библиотеки
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
 
логические модели переключательных схем
логические модели переключательных схемлогические модели переключательных схем
логические модели переключательных схем
 
Attributes in VHDL
Attributes in VHDLAttributes in VHDL
Attributes in VHDL
 
язык програмирования
язык програмированияязык програмирования
язык програмирования
 
5 логические элементы компьютера
5 логические элементы компьютера5 логические элементы компьютера
5 логические элементы компьютера
 
Razbiraemsya s preobrazovaniem_tipov
Razbiraemsya s preobrazovaniem_tipovRazbiraemsya s preobrazovaniem_tipov
Razbiraemsya s preobrazovaniem_tipov
 
fp intro
fp introfp intro
fp intro
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 
Scala Magic, Alexander Podhaliusin
Scala Magic, Alexander PodhaliusinScala Magic, Alexander Podhaliusin
Scala Magic, Alexander Podhaliusin
 
апкс 2011 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilog
 
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКАВведение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
 
практика 4
практика 4практика 4
практика 4
 
4 algoritm
4 algoritm4 algoritm
4 algoritm
 

Destaque

Онлайн маркетинг микс
Онлайн маркетинг микс Онлайн маркетинг микс
Онлайн маркетинг микс Kameliq Ninakova
 
Article pe2ndeso
Article pe2ndesoArticle pe2ndeso
Article pe2ndesoiesMola
 
Ies la mola judith y virginia
Ies la mola judith y virginiaIes la mola judith y virginia
Ies la mola judith y virginiaiesMola
 
Sat -mrphong12
Sat -mrphong12Sat -mrphong12
Sat -mrphong12vjt_chjen
 
Microsoft word thi bd đh hoa-485
Microsoft word   thi bd đh hoa-485Microsoft word   thi bd đh hoa-485
Microsoft word thi bd đh hoa-485vjt_chjen
 
հաշվետվություն
հաշվետվությունհաշվետվություն
հաշվետվությունtatevtatev
 
Media question 2
Media question 2Media question 2
Media question 2samiii1994
 
Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...
Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...
Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...Igor Nitsovych
 
11a; sense and movement
11a; sense and movement11a; sense and movement
11a; sense and movementkwiley0019
 
Bvdas Channelize Our Potential
Bvdas Channelize Our PotentialBvdas Channelize Our Potential
Bvdas Channelize Our PotentialBhoolkubvdas
 
10a, nutrition
10a, nutrition10a, nutrition
10a, nutritionkwiley0019
 

Destaque (20)

Онлайн маркетинг микс
Онлайн маркетинг микс Онлайн маркетинг микс
Онлайн маркетинг микс
 
Landscaping for Pollinators in Oklahoma
Landscaping for Pollinators in OklahomaLandscaping for Pollinators in Oklahoma
Landscaping for Pollinators in Oklahoma
 
Article pe2ndeso
Article pe2ndesoArticle pe2ndeso
Article pe2ndeso
 
Ies la mola judith y virginia
Ies la mola judith y virginiaIes la mola judith y virginia
Ies la mola judith y virginia
 
Santy 5a
Santy 5aSanty 5a
Santy 5a
 
2a; cells
2a; cells2a; cells
2a; cells
 
Office plots 2014 sept paper 4 co150
Office plots 2014 sept paper 4 co150Office plots 2014 sept paper 4 co150
Office plots 2014 sept paper 4 co150
 
Dossier prensa semana17
Dossier prensa semana17Dossier prensa semana17
Dossier prensa semana17
 
Sat -mrphong12
Sat -mrphong12Sat -mrphong12
Sat -mrphong12
 
Microsoft word thi bd đh hoa-485
Microsoft word   thi bd đh hoa-485Microsoft word   thi bd đh hoa-485
Microsoft word thi bd đh hoa-485
 
հաշվետվություն
հաշվետվությունհաշվետվություն
հաշվետվություն
 
MeEvaluation
MeEvaluation MeEvaluation
MeEvaluation
 
Nõukogude autod
Nõukogude autodNõukogude autod
Nõukogude autod
 
Media question 2
Media question 2Media question 2
Media question 2
 
Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...
Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...
Kulakov v.i. lekarstvennye_sredstva,_primenyaemye_v_akusherstve_i_ginekologii...
 
11a; sense and movement
11a; sense and movement11a; sense and movement
11a; sense and movement
 
Wildflowers: Habitat for Native Pollinators on the Kerr Ranch
Wildflowers: Habitat for Native Pollinators on the Kerr Ranch Wildflowers: Habitat for Native Pollinators on the Kerr Ranch
Wildflowers: Habitat for Native Pollinators on the Kerr Ranch
 
Multiple Species Grazing in Oklahoma
Multiple Species Grazing in OklahomaMultiple Species Grazing in Oklahoma
Multiple Species Grazing in Oklahoma
 
Bvdas Channelize Our Potential
Bvdas Channelize Our PotentialBvdas Channelize Our Potential
Bvdas Channelize Our Potential
 
10a, nutrition
10a, nutrition10a, nutrition
10a, nutrition
 

Mais de Irina Hahanova

апкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросыапкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросыIrina Hahanova
 
апкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilogапкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilogIrina Hahanova
 
цсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памятицсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памятиIrina Hahanova
 
цсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памятицсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памятиIrina Hahanova
 
цсноп 2 11_1_vital
цсноп 2 11_1_vitalцсноп 2 11_1_vital
цсноп 2 11_1_vitalIrina Hahanova
 
апкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройствапкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройствIrina Hahanova
 
апкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжапкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжIrina Hahanova
 
апкс 2011 04_verilog
апкс 2011 04_verilogапкс 2011 04_verilog
апкс 2011 04_verilogIrina Hahanova
 
апкс 2011 03_verilog
апкс 2011 03_verilogапкс 2011 03_verilog
апкс 2011 03_verilogIrina Hahanova
 
апкс 2011 01_введение
апкс 2011 01_введениеапкс 2011 01_введение
апкс 2011 01_введениеIrina Hahanova
 
моап 2011 02_active_1
моап 2011 02_active_1моап 2011 02_active_1
моап 2011 02_active_1Irina Hahanova
 
моап 2011 01_введение
моап 2011 01_введениемоап 2011 01_введение
моап 2011 01_введениеIrina Hahanova
 

Mais de Irina Hahanova (13)

апкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросыапкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросы
 
апкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilogапкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilog
 
цсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памятицсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памяти
 
цсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памятицсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памяти
 
цсноп 2 11_1_vital
цсноп 2 11_1_vitalцсноп 2 11_1_vital
цсноп 2 11_1_vital
 
апкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройствапкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройств
 
апкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжапкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолж
 
апкс 2011 04_verilog
апкс 2011 04_verilogапкс 2011 04_verilog
апкс 2011 04_verilog
 
апкс 2011 03_verilog
апкс 2011 03_verilogапкс 2011 03_verilog
апкс 2011 03_verilog
 
апкс 2011 01_введение
апкс 2011 01_введениеапкс 2011 01_введение
апкс 2011 01_введение
 
моап 2011 03
моап 2011 03моап 2011 03
моап 2011 03
 
моап 2011 02_active_1
моап 2011 02_active_1моап 2011 02_active_1
моап 2011 02_active_1
 
моап 2011 01_введение
моап 2011 01_введениемоап 2011 01_введение
моап 2011 01_введение
 

моап 2011 04

  • 1. Параллельные и последовательные операторы Языки описания аппаратуры Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: 1 hahanova@mail.ru 09.02.2011
  • 2. Цель лекции: Изучение основных последовальных и параллельных операторов VHDL  Содержание: 1. Последовательные и параллельные операторы 2. Создание VHDL-моделей триггеров 3. Оператор If 4. VHDL-модель мультиплексора 5. Условный и селективный параллельные операторы 6. Оператор case 7. Оператор Null 8. Оператол Loop 9. Процесс с оператором wait 10. Cигналы 11. Переменные 12. Константы 2 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 3. Последовательные и параллельные операторы Параллельные time delta A B C D A <= B; -- оператор 1 0 +0 1 2 3 0 B <= C; -- оператор 2 10 +0 1 2 3 4 (оператор3 выполняется первым) C <= D; -- оператор 3 10 +1 1 2 4 4 (затем выполняется оператор 2) 10 +2 1 4 4 4 (затем выполняется оператор 1) 10 +3 4 4 4 4 (отсутствие выполняемых команд) Последовательные process (B, C, D) time delta A B C D begin 0 +0 1 2 3 0 A <= B; -- оператор 1 10 +0 1 2 3 4 (выполняются операторы 1,2,3; B <= C; -- оператор 2 затем обновляются A,B,C) C <= D; -- оператор 3 10 +1 2 3 4 4 (выполняются операторы 1,2,3; end process; затем обновляются A,B,C) 10 +2 3 4 4 4 (выполняются операторы 1,2,3; затем обновляются A,B,C) 10 +3 4 4 4 4 (никаких действий не происходит) 3 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 4. Последовательные и параллельные операторы (2) 1. Заполнить таблицу, выполнив моделирование параллельных операторов A <= B after 5 ns; B <= C after 5 ns; time delta A B C D C <= D after 5 ns; 2. Заполнить таблицу, выполнив моделирование последовательных операторов process (B, C, D) begin A <= B after 5 ns; time delta A B C D B <= C after 5 ns; C <= D after 5 ns; end process; 4 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 5. Оператор назначения сигнала  Синтаксис: signal_name <= [delay_mechanism ] waveform ;  Форма сигнала: waveform_element ::= value_expression [ after time_expression ] { , ... }  Пример: signal D_OUT, E_OUT: BIT_VECTOR (3 downto 0); ............................. D_OUT <= "0000" after 2 ns; E_OUT <= "0000" after 2 ns, "1111" after 7 ns; 5 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 6. Оператор If if condition then if condition then sequential statements l sequential else statements sequential statements 2 {elsif condition then end if; sequential statements } [else Пример sequential statements] if CLK = '1' then end if; Q <= D after 10 ns; QN <= not D after 10 ns; end if; 6 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 7. Оператор case (1) Синтаксис: case expression is when choice1 => sequential statementsl when choice2 => sequential statements2 ... [when others => sequential statements] end case ; Первым вычисляется выражение expression. Если оно равно choice1, то выполняется последовательный statements1; если – choice2, то выполняется последовательный оператор statements2. Все возможные значения выражения должны быть включены в поля выбора. Если они явно не задаются, в case нужно использовать идентификатор when others. 7 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 8. Оператор case (2) Type sel_type is range 0 to 3; Signal Sel: sel_type; case Sel is I when 0 => F <= I0; 0 I when 1 => F <= I1; 1 MUX F when 2 => F <= I2; I 2 when 3 => F <= I3; I 3 end case; Sel 8 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 9. Оператор Null  Используется, если нет необходимости в каком либо действии, но по правилам синтаксиса оператор должен присутствовать. Синтаксис [label:] null; Пример case opcode is when add => Ace := Ace + operand; when subtract => Ace := Ace - operand; when nop => null; end case; 9 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 10. Условный и селективный параллельные операторы назначения сигнала (1)  Условный оператор назначения сигнала (conditional signal assignment statement): signal_name <= expression1 when condition1 else expression2 when condition2 ... [else expressionN];  Селективный оператор назначения сигнала (selected signal assignment statement): with expression select signal_name <= waveform1 when choices1, waveform2 when choices2, ... [waveformN when choicesN,] [waveformN+1 when others]; Условный и селективный операторы являются параллельными 10 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 11. Условный и селективный параллельные операторы назначения сигнала (2)  Реализация мультиплексора « 4 в 1» 1. С условным оператором: F <= I0 when Sel = 0 else I1 when Sel = 1 I0 else I2 when Sel = 2 else I3; I1 2. С селективным оператором: MUX F with Sel select I2 F <= I0 when 0, I1 when 1, I3 I2 when 2, I3 when 3; Sel 11 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 12. library IEEE; Дешифратор use IEEE.std_logic_1164.all; entity decoder is f0 port (i : in std_logic_vector(2 downto 0); i0 DEC f1 f : out std_logic_vector(7 downto 0)); i1 f2 i2 f3 end decoder ; f4 architecture arch of decoder is f5 begin f6 with i select f7 F <= “00000001” when “000”, i2 i1 i0 f7 f6 f5 f4 f3 f2 f1 f0 “00000010” when “001”, 0 0 0 0 0 0 0 0 0 0 1 “00000100” when “010”, 0 0 1 0 0 0 0 0 0 1 0 “00001000” when “011”, 0 1 0 0 0 0 0 0 1 0 0 “00010000” when “100”, 0 1 1 0 0 0 0 1 0 0 0 “00100000” when “101”, 1 0 0 0 0 0 1 0 0 0 0 “01000000” when “110”, 1 0 1 0 0 1 0 0 0 0 0 “10000000” when others; 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 end arch; Задание: создать модель декодера используя операторы if, case и условный параллельный оператор 12 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 13. library IEEE; Шифратор use IEEE.std_logic_1164.all; entity decoder is i0 port(i : in std_logic_vector(7 downto 0); i1 Coder f0 f : out std_logic_vector(2 downto 0)); i2 f1 i3 f2 end decoder ; i4 architecture arch of decoder is i5 begin i6 with i select i7 F <= “000” when “00000001”, i7 i6 i5 i4 i3 i2 i1 i0 f2 f1 f0 “001” when “00000010” , 0 0 0 0 0 0 0 1 0 0 0 “010” when “00000100” , 0 0 0 0 0 0 1 0 0 0 1 “011” when “00001000” , 0 0 0 0 0 1 0 0 0 1 0 “100” when “00010000” , 0 0 0 0 1 0 0 0 0 1 1 “101” when “00100000” , 0 0 0 1 0 0 0 0 1 0 0 “110” when “01000000” , 0 0 1 0 0 0 0 0 1 0 1 “111” when others ; 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 end arch; Задание: создать модель шифратора используя операторы if, case и условный параллельный оператор 13 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 14. Параллельный сдвигатель library ieee; use ieee.std_logic_1164.all; entity barrel_shifter is port( a: in std_logic_vector(7 downto 0); amt: in std_logic_vector(2 downto 0); y: out std_logic_vector(7 downto 0) ); end barrel_shifter ; architecture sel_arch of barrel_shifter is begin with amt select y<= a when "000", a(0) & a(7 downto 1) when "001", a(1 downto 0) & a(7 downto 2) when "010", a(2 downto 0) & a(7 downto 3) when "011", a(3 downto 0) & a(7 downto 4) when "100", a(4 downto 0) & a(7 downto 5) when "101", a(5 downto 0) & a(7 downto 6) when "110", a(6 downto 0) & a(7) when others; -- 111 end sel_arch; 14 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 15. + Flip-flop D Clk Q 0 r 0 D-триггер D Q 1 x r 0 1 Q Clk x 1 Q Latch x f Q D En Q+ D r – передний фронт (0 -> 1), Q 0 1 0 f – заданий фронт (1 -> 0), 1 1 1 En x 0 Q library IEEE;use IEEE.std_logic_1164.all; entity DFF is library IEEE;use IEEE.std_logic_1164.all; port (D, CLK: in std_logic; entity DFF is Q: out std_logic); port (D, En: in std_logic;Q: out std_logic); end DFF; end DFF; architecture SIMPLE of DFF is architecture SIMPLE of DFF is begin begin process (CLK) process (D, En) begin begin if CLK = '1' then if En = '1' then Q <= D; Q <= D; end if; end if; end process; end process; end SIMPLE; endХаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru SIMPLE; 15 09.02.2011
  • 16. RS-триггер library IEEE;use IEEE.std_logic_1164.all; entity RS_FF is R Q port (R, S: in std_logic; Q, nQ: out std_logic); end RS_FF ; architecture SIMPLE of RS_FF is _ Q signal Qin, nQin: std_logic; S begin process (R,S) Q + R S Q begin 0 0 Q Q if R = '1' then 0 1 1 0 Qin <= '0' ; nQin <= '1' ; 1 0 0 1 elsif S = '1' then запрещенная Qin <= '1' ; nQin <= '0' ; 1 1 комбинация end if; end process; Q <= Qin; nQ <= nQin; end SIMPLE; Задание: создать модель триггера, используя логические уравнения 16 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 17. R’S’-триггер library IEEE;use IEEE.std_logic_1164.all; _ entity nRnS_FF is S Q port (nR, nS: in std_logic; Q, nQ: out std_logic); end nRnS_FF ; architecture SIMPLE of nRnS_FF is _ Q signal Qin : std_logic; _ R begin process (nR, nS) Q + R S Q begin запрещенная if nR = '0' then 0 0 комбинация Qin <= '0' ; 0 1 0 1 elsif nS = '0' then 1 0 1 0 Qin <= '1' ; 1 1 Q Q end if; end process; Q <= Qin; nQ <= not Qin; end SIMPLE; Задание: создать модель триггера, используя логические уравнения 17 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 18. library IEEE;use IEEE.std_logic_1164.all; entity JKFF is JK-триггер port (SN, RN, J, K, CLK: in std_logic; Q, QN : out std_logic); QN Q end JKFF; architecture JKFF1 of JKFF is signal Qin: std_logic; RN JKFF SN begin process (SN, RN, CLK) + begin K CLK J J K Q if RN = '0' then 1 0 1 Qin <= '0' after 10 ns; -- сброс в 0 Уравнение: 0 1 0 elsif SN = '0' then Q+ = JQ' + K'Q 1 1 Q' Qin<= '1' after 10 ns; -- установка в 1 0 0 Q elsif CLK = '0' and CLK'event then Qin<=(J and not Qin) or (not K and Qin) after 10ns; end if; end process ; Q<=Qin; QN <= not Qin; end JKFF1 ; 18 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 19. Синхронные управляющие сигналы library ieee; use Триггер с синхронизацией по ieee.std_logic_1164.all; переднему фронту и синхронной entity flop is установкой port(Clk, D, S: in std_logic; Q: out std_logic); D S Q k l C end flop; k l C S D Q architecture archi of flop is begin Clk process (Clk) begin if Clk'event and Clk='1' then if S='1' then Q <= '1'; else Q <= D; end if; end if; end process; end archi; 19 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 20. Сигнал разрешения синхронизации library ieee; use ieee.std_logic_1164.all; Триггер с синхронизацией по entity flop is переднему фронту и port(Clk, D, CE: in std_logic; разрешением синхронизации Q: out std_logic); end flop; architecture archi of flop is D Q begin CE process (Clk) begin Clk if Clk'event and Clk = '1' then if CE='1' then Q <= D; end if; end if; end process; end archi; 20 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 21. Задание 1. Разработать модель n Описание разрядного счетчика Counter  N=номер в списке группы + 3 n n D Q En Группа 5 6 9 T Cout m 2 3 4 Ld Clr  Все изменения состояния счетчика происходят по переднему фронту синхроимпульса. Счетчик 2. На основе созданной модели генерирует перенос (Cout) в разработать структурную состоянии (2n-1), если T = 1, модель m*n разрядного поэтому счетчика Управляющие сигналы Q+ Описание D Q Q1 D2 D Q Q2 Clr Ld En T D1 En En 1 X X X 0 Cброс En Carry1 En T1 T Cout T Cout Carry2 0 1 X X D Параллельная загрузка Ld Ld 0 0 1 0 Q Сохранение состояния Clr Clr 0 0 0 1 Q Сохранение состояния ClrN 0 0 1 1 Q+1 Счет на увеличение LdN Clk Можно использовать VHDL-модель счетчика 74163 [1,стр 77-79] 21 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 22. Циклы: Loop  Синтаксис: [ loop_label: ] loop { sequential_statement } end loop [ loop_label ] ;  Для окончания цикла может использоваться оператор exit: [ label: ] exit [ loop_label ][when boolean _expression];  Если метка не указана, то выполняется выход из цикла, содержащего оператор exit. Для прерывания текущей итерации – оператор next: [ label:] next [ loop_label ] [when boolean _expression]; 22 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 23. Циклы: Loop. Примеры  Пример 1 signal Clock : BIT := '0'; ... Clk_1: process (Clock) begin L1: loop Clock <= not Clock after 5 ns; end loop L1; end process Clk_1;  Пример 2 L2: loop A:= A+1; exit L2 when A > 10; end loop L2; 23 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 24. Циклы: While  Синтаксис: [ loop_label: ] while condition loop { sequential_statement } end loop [ loop_label ] ;  Пример: Shift_3: process (Input_X) variable i : POSITIVE := 1; begin L3: while i <= 8 loop Output_X(i) <= Input_X(i+8) after 5 ns; i := i + 1; end loop L3; end process Shift_3; 24 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 25. Циклы: For  Синтаксис: [loop-label:] for loop-index in range loop sequential statements end loop [loop-label];  Пример: for count_value in 0 to 127 loop count_out <= count_valueafter 5 ns; end loop; 25 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 26. Процесс  Со списком  С оператором wait чувствительности: process process(sensitivity-list) begin begin sequential-statements sequential-statements wait-statement end process; sequential-statements wait-statement end process; В процессе не может одновременно использоваться оператор wait и список чувствительности. 26 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 27. Оператор wait  Синтаксис: [ label: ] wait | on signal _name {,...} | until boolean_expression | for time_expression ] ;  Пример 3: wait until clk = 1; wait for 1 ms;  Оператор wait может содержать комбинацию из нескольких форм: wait on clk until reset = '0'; wait until trigger = '1' for 1 ms;  Следующая форма выполняет приостановку процесса до окончания моделирования. wait; 27 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 28. Сигналы  Сигналы декларируются вне процесса, в начале архитектуры. Они предназначены для связи между процессами и могут использоваться в любом месте в пределах архитектуры.  Синтаксис signal signal_name {, ...} : type_name [ := initial_value ];  Оператор назначения для сигнала: Signal_name < = expression [after delay];  Пример: architecture ExDecl of DataTransm is signal Temp: Std_Logic; signal FlagC, FlagZ: Bit; begin 28 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 29. Переменные  Переменные могут применяться для локального хранения данных в процессах, процедурах и функциях. Они должны быть объявлены в процессе, процедуре или функции в которых используются и являются локальными для них.  Синтаксис: variable variable_name {, ...} : type_name [ := initial_value];  Оператор присваивания для переменных: Variable_name: = expression;  Пример: variable FreeAccess : Boolean := true; variable E : BIT; variable I : INTEGER; 29 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 30. Различие между переменными и сигналами  Процесс с переменными  Процесс c сигналами entity dummy is entity dummy is port (trigger: in integer); port (trigger: in integer); end dummy ; end dummy; architecture sig of dummy is architecture var of dummy is signal sum: integer:=0; signal sum: integer:=0; signal sig1: integer:=1; begin signal sig2: integer:=2; process variable var1: integer:=1; signal sig3: integer:=3; variable var2: integer:=2; begin process variable var3: integer:=3; begin begin wait on trigger; wait on trigger; sig1 <= sig2 + sig3; var1 := var2 + var3; sig2 <= sig1; var2 := var1 ; var3 := var2 ; sig3 <= sig2; sum <= var1 + var2 + var3; sum <= sig1 + sig2 + sig3; end process; end process; end var; end sig; var1 2+3=5 var2 5 var3 5 sum 5+5+5=15 30 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 31. Константы  Синтаксис: constant constant_name {, ...} : type_name := constant_value [:=expression];  Постоянная задержка delay1 типа time, имеющая значение 5 ns, может быть определена как: constant delay1: time: =5 ns;  Пример: type WeekDay is (Mon,Tue,Wed,Thu,Fri,Sat,Sun); constant StartDay : WeekDay := Sat; constant LogicalGND : Bit := ‘0’; constant BusWidth, QueueLength : Integer := 16; constant CLKPeriod : Time := 15 ns; constant MaxSimTime : Time := 200 * CLKPeriod; 31 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 32. Выводы  Операторы в VHDL бывают параллельные и последовательные:  Параллельные операторы:  паралельный оператор назначения сигнала  условный оператор назначения сигнала  селективный оператор назначения сигнала  Последовательные операторы:  оператор if  оператор case  оператор цикла loop  оператор цикла while  оператор цикла for  Оператор process является параллельным оператором, содержит последовательные операторы. Существуют две формы оператора: со списком чувствительности и с операторами wait. 32 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 33. Контрольные вопросы и задания (1) 1. Пусть сигнал s в текущий момент имеет значение '0'. Чему будут равны булевы переменные v1 и v2 после выполнения следующих операторов в процессе? S<='1'; v1 :=s; wait on s; v2:=s; 2. Создать процесс, эквивалентный параллельному оператору выбора назначения сигнала: with bit_vector’(s, r) select q <= q when "00", '0' when "01", '1' when "10", 'Z' when "11"; 33 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 34. Контрольные вопросы и задания (1) 1. Какой(какие) из следующих примеров содержит ошибку. a) A объект типа BIT case A is when '0' => report "Error"; when '1' => report "OK"; end case; b) A объект типа INTEGER case A is when 0|1|2 => report "Error#1"; when 3|4 => report "Error#0"; when others => report "OK"; end case; c)A объект типа STD_LOGIC case A is when 'U'|'X'|'Z'|'W' => report "Unknown"; when '1'|'H' => report "High"; when '0'|'L' => report "Low"; end case; 34 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 35. Контрольные вопросы и задания (2) 3. Создать процесс, эквивалентный условному оператору назначения сигнала: mux_logic: z <= a and not b after 5 ns when enable='1' and sel='0' else x or y after 6 ns when enable = '1' and sel := '1' else '0' after 4 ns; 4. Разработать поведенческую модель мультиплексора 4x1. Использовать тип std_logic для входных портов. Задержка распространения сигнала от входа до выхода равна 4,5 ns. Следует описать задержку как константу и использовать ее в архитектуре. 5. D-триггер с синхронизацией по уровню сохраняет свое значение, если G = 0, и Q=D, если G = 1. Используя оператор процесса, записать VHDL-код D-триггера. 35 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 36. Контрольные вопросы и задания (3) 1. Нарисуйте диаграмму для сигнала Q. entity TEST is C port (C, D:in BIT; D Q :out BIT); Q end entity TEST; architecture BEHAVIORAL of TEST is begin process (C) begin if C='1' then Q <= D; end if; end process; end architecture BEHAVIORAL; 36 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 37. Контрольные вопросы и задания (4) Какой из следующих процессов содержит ошибку. a)process (A) begin b)process if FALLING_EDGE(A) then begin Y <= A after 5 ns; elsif RISING_EDGE(A) then if FALLING_EDGE(A) then Y <= A after 7 ns; Y <= A after 5 ns; end if; elsif RISING_EDGE(A) then end process; Y <= A after 7 ns; end if; c) process (A) wait on A; begin if FALLING_EDGE(A) then end process; Y <= A after 5 ns; elsif RISING_EDGE(A) then Y <= A after 7 ns; end if; wait on A; end process; 37 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 38. Задания для самостоятельной работы (1) 1. Для следующего VHDL-кода пусть D изменяется на '1' в момент времени 5 ns. Описать значения A, B, C, D, E и F и время их формирования. Другими словами, указать значения сигналов во время 5 ns, 5 ns + , 5 ns + 2, ... . Опиcать первые 20 шагов моделирования или до исчезновения изменений сигналов, или до появления периодически повторяющейся последовательности значений сигналов: P1: process (A) begin entity prob4 is B <= A; port (D: in bit); end process P1; end prob4 ; P2: process architecture q1 of prob4 is begin signal A, B, C, E, F: bit; wait until A <= '1' ; wait for 0 ns; begin E <= B; C <= A; F <= E; A <= B or D; end process P2 ; end architecture q1; 38 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 39. Задания для самостоятельной работы (2) 1. DD-триггер подобен D-триггеру с синхронизацией по фронту, за исключением того, что он может изменять состояние (Q+ = D) при появлении переднего и заднего фронтов синхроимпульса. Триггер имеет вход сброса R. При R = 0 триггер устанавливается в 0 независимо от синхронизации. Записать VHDL-код для DD-триггера. 2. Записать VHDL-код для SR-триггера, используя: a) условный оператор назначения сигналов; b) логические уравнения; Q+<=R' S+R'S'Q c) два логических элемента. 3. Записать интерфейс и поведенческую архитектуру для двухвходового мультиплексора с входными портами: a, b и sel; выходом – z. Когда sel='0', то z<=a. Иначе z<=b. Написать testbench для модели мультиплексора. 39 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 40. Задания для самостоятельной работы (3) 1. Триггер-переключатель имеет входы I0, I1, T и Reset, а также выходы Q и QN. Сброс триггера происходит при Reset =1 независимо от значений сигналов на других входах. Триггер работает следующим образом. Если I0=1, он меняет состояние по переднему фронту сигнала T; а если I1 = 1 – по заднему. Если I0=I1= 0, то триггер сохраняет состояние. Пусть задержка передачи сигнала от T до выхода – 8 ns, и от сброса до выхода – 5 ns. a) Создать VHDL-модель триггера. b) Записать последовательность команд программы моделирования для его тестирования. Подать на входы I1 = 1, I0 = 0. После двухкратного переключения триггера подать набор I1 = 0, I0 = 1. Завершить моделирование после двух изменений на выходах. 40 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 41. Контрольные вопросы и задания (2) 2. Записать декларацию константы размером 32 бита для числа ? 3. Записать декларации переменных: счетчик counter инициализированный 0; флаг-статуса flag-busy указывающую занят модуль или нет; temp_result типа std_ulogic для хранения временных результатов. 4. Записать оператор if который устанавливает переменную odd в ‘1’, если n нечетно, и odd=’0’, если n – четно. 5. Написать модель тристабильного буффера, используя стандартную логику для входов data и enable и выхода output. enable data output 0' или 'L' Z' 1' или 'H' 0' или 'L' 0' 1' или 'H' 1' или 'H' 1' иначе X' 41 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 42. Задания для самостоятельной работы 1. Для каждого из следующих выражений определить является ли оно синтаксически правильным. Если да, то определить его значение. 2*3+6/4 3 + -4 “cat”&character(‘0’) true and x and not t or z B”101110” sll 3 B”100010” sra 2 & X”2C” 2. Записать модель счетчика с синхровходом clk типа bit и выходом типа integer. Поведенческя архитектура должна содержать процесс в котором декларируется переменная count инициализируемая нулем. Процесс ожидает изменение clk. Когда clk переключается в ‘1’ процесс увеличивет count на 1 и передает значение на выход. 3. Записать модель АЛУ со входом и выходом типа integer и входом выбора функции select типа bit. Если select=’0’ на выход выдается сумма значений на входах; иначе на выходе ‘1’, если значение на входах совпадаюн и ‘0’, если – нет. 4. Записать модель цифрового интегратора имеющего: синхровход clock типа bit, вход данных и выход типа real. Интегратор выполняет сложение последовтельности входных данных. По переднему фронту на синхровходе устройство прибавляет число со входа к сумме и передает ее на выход. 5. Записать оператор case, который переводит переменную x типа std_ulogic в тип X01 ({‘X’, ‘0’, ‘1’}). Тип std_ulogic Тип X01 0' или 'L' 0' 1' или 'H' 1' X', 'W', 'Z', 'U', '-' X' 42 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011
  • 43. Задания для самостоятельной работы (2) 6. Записать оператор case, который устанавливает переменную character_cless типа integer  1, если переменная ch типа character содержит буквы,  2 , если переменная ch содержит цифры  3, если переменная ch содержит остальные печатные символы  4, если переменная ch содержит не печатные символы. 7. Записать цикл, зависящий от входа d. По переднему фронту синхровхода, если d=’0’ – цикл выполняется, если d=’1’ – выход из цикла. 8. Записать цикл while, вычисляющий экспоненциальную функцию, с точностью до 1/104. 9. Записать цикл for, вычисляющий экспоненциальную функцию, из предыдущей задачи, точностью до восьми первых слагаемых ряда. 10. Разработать поведенческую модель ограничителя (limiter) с тремя входами типа integer: data_on, lower и upper. Устройство также имеет выход data_out типа integer и выход out_of_limits типа bit. Данные со входа data_in поступают на выход data_out, если его значение находится в пределах lower и upper. Если data_in меньше lower, то data_out = lower. Если data_in больше upper, то data_out = upper. Выход out_of_limits=1, когда data_in выходит за пределы lower и upper. 11. Разработать модель арифметического модуля для чисел с плавающей точкой.с входами данных: x и y, и выходом z. Также устройство имеет вход выбора функции типа перечисления со значениями: add. 43 Хаханова И.В, каф.АПВТ, ХНУРЭ, e-mail: hahanova@mail.ru 09.02.2011