SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
6. Пример проектирования
             арифметического устройства


             Автоматизация проектирования
                 компьютерных систем

                  д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
21.02.2011                e-mail: hahanova@mail.ru       1
Цель лекции и содержание
     Цель ознакомление с проектами, которые
      вынесены на лабораторные занятия
     План
          Беззнаковое умножение
          Знаковое умножение
          Быстрое знаковое умножение
          Беззнаковое деление
          Знаковое деление
          Реализация арифметических устройств, на
           примере последовательного сумматора
    21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   2
                                  hahanova@mail.ru
Двоичное умножение

• Двоичное умножение требует только операций
  сложения и сдвига. В качестве примера выполняется
  умножение двоичных чисел: 1310x1110.
               Множимое                          1101 (13)
               Множитель                         1011 (11)
                                                 1101
                                                1101
               Частичные
               произведения        }            100111
                                                0000
                                                100111
                                               1101
                                               10001111 (143)

  21.02.2011        д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   3
                                  hahanova@mail.ru
Схема устройства двоичного умножения
                                                    Произведение

           Load                8        7     6      5       4      3     2   1   0
     C     Sh                                                                         ACC
           Ad
     O
     N
                     Clk
     T
                                                                     Множитель
     R                                       4-битный
           Done                    Cm        сумматор
     O
     L          St

           M
                                            Множимое

Суммирование каждого частичного произведения выполняется сразу после
его формирования, таким образом, в один момент времени складывается
не более двух двоичных чисел.

   21.02.2011              д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:               4
                                         hahanova@mail.ru
Выполнение умножения
первоначальное содержание регистра произведения                   000001011   M(11)
(сложение с множимым, так как М=1)                                 1101        (13)
после сложения                                                    011011011
после сдвига                                                      001101101   M
(сложение с множимым, так как М=1)                                 1101
после сложения                                                    100111101
после сдвига                                                      010011110   M
(пропуск операции сложения, так как М=0)
после сдвига                                                      001001111   M
(сложение с множимым, так как М=1)                                 1101
после сложения                                                    100011111
после сдвига(окончательный результат)                             010001111   (143)
               Линия, разделяющая произведение и множимое

  21.02.2011       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:               5
                                 hahanova@mail.ru
Граф управляющего автомата устройства умножения

                                                 St'
                                  S10               S0
                        S9        Done              0       St
                        Sh
                 S8
                 Ad                                                  M
             M                                           M'
                      M'                                             S2
             S7                                                      Ad
             Sh

                  S6         M'                                S3
                  Ad
                                               M'              Sh
                       M        S5               S4        M
                                Sh               Ad
21.02.2011            д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:        6
                                    hahanova@mail.ru
Управляющий блок со счетчиком
Схема управления умножением
 St                                       Done
                     Схема                Load
 M                 сложение-              Ad
                     сдвиг                Sh
                                                      St'     S0       St
                                                               0                      M'
                       K                                                                    K'M'
                                                                            M
                   Счетчик                     S5                                K'        S3
                                              Done                          S2
                                                                                           Sh
                                                                   K        Ad    M

                                                              S4                 KM'
                                                              Sh
      21.02.2011             д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:                       7
                                           hahanova@mail.ru
Умножение знаковых двоичных чисел (1)
                                                        Множимое Множит ель
  0.1012 = 5/810 1.0112 = -5/810                            +        +
                                                            -        +
                                                            +        -
        0.1   1 1    (+7/8)         Множимое
      x 0.1   0 1    (+5/8)         Множитель               -        -
(0. 0 0)0 1   1 1    (+7/64)       Примечание:правильное представление
(0.)0 1 1 1          (+7/16)       дробных частичных произведений требует
 0. 1 0 0 0   1 1    (+35/64)      расширения знакового бита за двоичной
                                   точкой,как это показано в скобках. (Такое
                                   расширение не является обязательным для
                                   аппаратуры)

        1.1    0 1    (-3/8)
      x 0.1    0 1    (+5/8)
(1. 1 1)1 1    0 1    (-3/64)         Примечание:расширение знакового бита
(1.)1 1 0 1           (-3/16)         обеспечивает правильное представление
 1. 1 1 0 0    0 1    (-15/64)        отрицательного произведения

 21.02.2011          д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:        8
                                   hahanova@mail.ru
Умножение знаковых двоичных чисел (2)

           0.1   0 1    (+5/8)
         x 1.1   0 1    (-3/8)
(0. 0    0)0 1   0 1    (+5/64)
(0.)0    1 0 1          (+5/16)
 0. 0    1 1 0   0 1
 1. 0    1 1            (-5/8)            Примечание: выполняется сложение
 1. 1    1 0 0   0 1    (-15/64)          с дополнительным кодом множимого


          1.1    0 1   (-3/8)
        x 1.1    0 1   (-3/8)
(1. 1   1)1 1    0 1   (-3/64)
(1.)1   1 0 1          (-3/16)
 1. 1   1 0 0    0 1
 0. 0   1 1            (+3/8)           Примечание: выполняется сложение
 0. 0   0 1 0    0 1   (+9/64)         с дополнительным кодом множимого

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

              Load            8      7      6       5      4      3      2   1    0
              Sh
      C       Ad
      O
      N
                     Clk
      T
                                                                      Множитель
      R                    5-битный полный
      O       Done         сумматор        Cm Cm
      L        St
               Cm                 Формирователь
                                  обратного кода
          M

                                         Множимое
 21.02.2011            д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:                   10
                                     hahanova@mail.ru
Граф состояний для умножения в
дополнительном коде
                                               St'

                              S10                 S0
                              Done                 0     St

              S8            S9
             CmAd           0                                     M
             M                                         M'
                         M'                                       S2
              S7                                                  Ad
              Sh

                   S6       M'                              S3
                   Ad
                                             M'             Sh
                        M       S5             S4 M
                                Sh             Ad
21.02.2011         д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:        11
                                 hahanova@mail.ru
Структурная схема быстрого устройства
умножения
                                             Произведение
                                                                 B
         Load
         Sh
   C     AdSh
   O
   N
   T
                                                   Cm
   R     Done                                Cm
   O         St
   L
             Cm           Формирователь
                          обратного кода
       M

                              Множимое

21.02.2011        д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:       12
                                hahanova@mail.ru
Граф состояний управляющего автомата для
быстрого устройства умножения
                                           St'
                            S10              S0
                            Done             0      St

                                                  M'             M

                       S9                         S2
                       Sh                         Sh     M'
                            M'              M'                   M
                    M S6               M' S4             M
                            Sh               Sh
              M   M'
                                   M                M'
                                             M

 21.02.2011       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:       13
                                hahanova@mail.ru
Деление двоичных чисел
                                      1010 частное
    делитель       1101           10000111 делимое
                                   1101
                                    0111
    (135 13 = 10                    0000
     остаток 5)                      1111
                                     1101
                                      0101
                                      0000
                                      0101 остаток

21.02.2011     д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   14
                             hahanova@mail.ru
Устройство двоичного деления

                 Регистр частного                                    Sh
                                                          Sh
X8 X7 X6 X5 X4 X3 X2 X1 X0                                Ld

                                                              Su          St(Старт-сигнал)

Устройство вычитания                               C                       V
     и сравнения
                                                               Control (переполнение)

0     Y3 Y2 Y1 Y0                                                  Clock



    21.02.2011        д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:                    15
                                    hahanova@mail.ru
Условие переполнения
    X8X7X6X5X4 Y3Y2Y1Y0 – левые пять битов регистра
    делимого больше или равны делителю, частное будет
    больше 15 и возникнет переполнение. Обратите внимание:
    если X8X7X6X5X4 Y3Y2Y1Y0 , частное будет


X 8 X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0 X 8 X 7 X 6 X 5 X 4 0000 X 8 X 7 X 6 X 5 X 4 X 3  16
                                                                                         16
            Y3Y2Y1Y0                       Y3Y2Y1Y0                   Y3Y2Y1Y0




     21.02.2011            д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:             16
                                         hahanova@mail.ru
Граф состояний для управляющей
схемы устройства деления
                                     St
                   St'     S0                                    S2     C
                          Stop                       C'          Sh
                                     C/V                    C'              S3
                                                                            Su
                         S10                              S4
                          0                               Sh       C
                                                       C'
                                                                        S5
              S9                 C                                      Su
              Su                   S7          C'      S6
                          C'       Sh                  Sh
                                                C

                                     S8
                                     Su
 21.02.2011              д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:            17
                                       hahanova@mail.ru
Структурная схема устройства деления
знаковых чисел
    DBus (Шина данных)
                               16                      16
                                     Делимое
                                                                             Ldu
                        Acc (Остаток)           Q (Частное)                         Cm1
                   16
                                    16                                   Sh Ldl
                                                                 C
                                                 Ena
                                                                                          St
                   Cout                  Cin    Cm2                      Управл.
                                                                 K        схема
                                16                                                        V
             Cm2


                                16                                          S      Lds
                                                                  Ldd
                          Делитель                                           Знак
                                                                Co1Ldd
                                16

21.02.2011                д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:                         18
                                        hahanova@mail.ru
Описание сигналов схемы устройства
    деления знаковых чисел
    Ldu – загрузка с шины старшей половины делимого;
    Ldl – загрузка с шины младшей половины делимого;
    Lds – загрузка знака делимого в знаковый триггер;
    S – знак делимого;
    Cm1 – дополнение регистра делимого (дополнительный код);
    Ldd – загрузка с шины делимого;
    Su – подключение выхода сумматора к шине (Ena) и загрузка верхней
    половины делимого из шины;
    Cm2 – разрешение преобразования в обратный код (Cm2 подключен к
    знаковому биту делимого таким образом, что положительное число
    преобразуется в дополнительный код, а отрицательное – нет);
    Sh – сдвиг регистра делимого влево на 1 разряд и увеличение счетчика на
    1;
    C – выход переноса сумматора (если С=1, делитель можно вычесть из
    верхней части делимого);
    St – старт;
    V – переполнение;
    Qneg – частное будет отрицательным (Qneg = 1, когда знаки делимого и
    делителя различны).
    21.02.2011         д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:      19
                                     hahanova@mail.ru
Граф управляющей схемы
для деления знаковых чисел

               St'    S0      St                              S2
                      Rdy                                     Ldl S
                                                             S'
                                                                          S4
                                    S10                      S3         Co1Ldd
                                     V                       Ldd
         S9                  C'Qneg'                     C
         Co1     C'Qneg                                                 S5
                             S7                    K'C'                 Sh
                             Sh                  KC'               C'
                     KQneg
                               C                     C       S6
                                                             Sh
                       S8
         KQneg'        Su                              K'
21.02.2011              д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:             20
                                      hahanova@mail.ru
Проектирование арифметического
           устройства на примере
       последовательного сумматора
21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   21
                           hahanova@mail.ru
Структурно-функциональная схема
     последовательного сумматора
                                              Аккумулятор
                                           SI
                                                  x3 x2 x1 x0                   xi           sumi
          N(Старт-сигнал)                  Sh
                                           Load

                                                                                      Full
                Управл. Sh                 SI
                                           Sh     y3 y2 y1 y0                   yi   Adder
                 схема                     Load
                              Load                                              ci           ci+1
                                               Регистр слагаемого

                Clock                    Последовательный
           N'                                                                        Q R D
                                                 сумматор
                                                                                     Q' CK
     N'
          S0
          0
                   N                                           Sh
S5                      S1
Sh         N           Load                                  Clock

S4                     S2
Sh                     Sh
      21.02.2011                 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:                 22
          S3                                   hahanova@mail.ru
          Sh
Функционирование последовательного
сумматора


              X          Y                 ci           sumi   ci+1
     t0      0101       0111               0              0     1
     t1      0010       1011               1              0     1
     t2      0001       1101               1              1     1
     t3      1000       1110               1              1     0
     t4      1100       0111               0             (1)   (0)


21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:          23
                              hahanova@mail.ru
Проектирование управляющего автомата

              N'


          S0
                   N               Текущее Следующее состояние               Значение выхода
     N'   0                       состояние  N=0        N=1                    Sh      Load
S5                      S1            S0      S0         S1                    0        0
Sh        N            Load
                                      S1      S2         S2                    0        1
                                      S2      S3         S3                    1        0
S4                     S2             S3      S4         S4                    1        0
Sh                     Sh             S4      S5         S5                    1        0
          S3                          S5      S0         S1                    1        0
          Sh




 21.02.2011                   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:             24
                                            hahanova@mail.ru
Verilog-модель управляющего автомата.1

module FSM (input Clk, Reset, N,
             output Sh, Load);
/* Определение меток состояний*/
   parameter S0=3'b000;
   parameter S1=3'b001;
   parameter S2=3'b010;
   parameter S3=3'b011;
   parameter S4=3'b100;
   parameter S5=3'b101;
 21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   25
                            hahanova@mail.ru
Verilog-модель управляющего автомата.2

reg [2:0] state, next_state;
  /* Регистр состояний автомата*/
always @(posedge Clk, posedge Reset)
      if (Reset)
            state <= S0;
      else
            state <= next_state;


  21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   26
                             hahanova@mail.ru
Verilog-модель управляющего автомата.3

/* Функция переходов*/
always @(*)
   case (state)
       S0 : if (N) next_state <= S1;
             else next_state <= S0;
       S1 : next_state <= S2;
       S2 : next_state <= S3;
       S3 : next_state <= S4;
       S4 : next_state <= S5;
       S5 : if (N) next_state <= S1;
            else next_state <= S0;
       default: next_state <= S0;
   endcase
  21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   27
                                hahanova@mail.ru
Verilog-модель управляющего автомата 4

// Функции выходов
assign Sh = (state==S2) ||(state==S3)||
         (state==S4) || (state==S5) ? 1'b1 : 1'b0;
assign Load = (state==S1) ? 1'b1 : 1'b0;


endmodule


  21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   28
                                hahanova@mail.ru
Кодирование состояний автомата при
 синтезе схемы
 work.FSM(verilog)-state_h.state[5:0]
  original code -> new code
    000 -> 000001
    001 -> 000010
    010 -> 000100
    011 -> 001000
    100 -> 010000
    101 -> 100000

 21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   29
                            hahanova@mail.ru
Verilog-модель регистра
module register
    (input Clk, Load, Sh, SI, input [3:0] D;
    output reg [3:0] Q);

  always @(negedge Clk)                        D
                                                               Reg
                                                                         Q
     if (Sh)                                       4                 4
                                               SI
            Q <= {SI, Q[3:1]};                 Load
     else if (Load)                            Sh
            Q<=D;                              Clk
  endmodule
  21.02.2011    д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:             30
                              hahanova@mail.ru
Verilog-модель последовательного сумматора.1

module seq_adder (input N, clk, reset,
                      input [3:0] X, Y,
                     output [4:0] result);
 wire Sh, Load, sum, Cout;
 wire [3:0] Xin, Yin;
 reg Cin;

// Подключение компонентов: автомат и два регистра
   FSM U1 (.Clk(clk), .Reset(reset), .N(N), .Sh(Sh),
              .Load(Load));
   register Reg_X (.Clk(clk), .Load(Load), .Sh(Sh),
                            .SI(sum), .D(X), .Q(Xin));
   register Reg_Y (.Clk(clk), .Load(Load), .Sh(Sh),
                            .SI(Yin[0]), .D(Y), .Q(Yin));
  21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   31
                                hahanova@mail.ru
Verilog-модель последовательного сумматора.2

// Двоичный сумматор
   assign sum = Xin[0]^Yin[0]^Cin;
   assign Cout = (Xin[0]&Yin[0])|(Xin[0]&Cin)|(Yin[0]&Cin);

//Триггер
   always @(negedge clk or posedge Load)
       if (Load)    Cin <=1'b0;
       else if (Sh) Cin<=Cout;

  assign result={Cin,Xin};
endmodule


  21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   32
                                hahanova@mail.ru
TestBench для последовательного сумматора 1

module seq_adder_tb;
// Декларации внутренних сигналов
   reg N, clk, reset;     reg [3:0]X, Y;
   wire [4:0] result;
   reg [3:0] X_test [5:0], Y_test [5:0];
   parameter period = 'd 20;
   wire ERROR;

  // Описание тестируемого модуля
  seq_adder UUT (.N(N), .clk(clk), .reset(reset),
           .X(X), .Y(Y), .result(result));
  21.02.2011    д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   33
                              hahanova@mail.ru
TestBench для последовательного сумматора 2

initial begin
         X_test [0] = 4'b0000;                X_test [1] = 4'b0001;
         X_test [2] = 4'b1000;                X_test [3] = 4'b1111;
         X_test [4] = 4'b1010;                X_test [5] = 4'b0101;
         Y_test [0] = 4'b0000;                Y_test [1] = 4'b0001;
         Y_test [2] = 4'b1000;                Y_test [3] = 4'b1111;
         Y_test [4] = 4'b1010;                Y_test [5] = 4'b0101;
   end

initial begin // генератор синхросигнала
   clk=1'b0; reset=1'b1;
   #5 reset<=1'b0;
   forever #(period/2) clk=~clk;
  end
  21.02.2011       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:       34
                                 hahanova@mail.ru
TestBench для последовательного
 сумматора 3
  integer i, j; reg [3:0]A,B;
  reg [4:0] SUM, Sum_etalon;
always
  for (i=0; i<=5; i=i+1) begin
      X = X_test[i];
      for (j=0; j<=5; j=j+1) begin
        N = 1'b1; Y = Y_test[j];
        N = repeat (2) @(negedge clk) 1'b0;
        //чтение результатов операции
        #(5*period) A=X; B=Y; SUM=result;
        Sum_etalon={1'b0,X} + Y;
     end
end
  21.02.2011     д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   35
                               hahanova@mail.ru
TestBench для последовательного сумматора 4

  assign ERROR = (SUM!=Sum_etalon)? 1'b1: 1'b0;
  initial $monitor ($realtime,
            "ps %h %h %h %h %h %h ",
             N,clk,reset,X,Y,result);
endmodule




  21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   36
                             hahanova@mail.ru
Макрофайл для тестирования
comp -include $DSNsrcregister.v
comp -include $DSNsrcfsm.v
comp -include $DSNsrcseq_adder.v
comp -include "$DSNsrcTestBenchseq_adder_TB.v"

asim seq_adder_tb

close –list
close –wave
wave N clk reset X Y SUM
wave UUT/U1/sh UUT/U1/load UUT/U1/state
list -dec A B SUM Sum_etalon ERROR
run 5000 ns

21.02.2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   37
                              hahanova@mail.ru
Результаты тестирования
последовательного сумматора
            TIME       A           B          SUM      Sum_etalon    ERROR
            0.000      ?           ?           ?             ?         0
         140.000 ns    0            0           0            0         0
         280.000 ns    0            1           1            1         0
         420.000 ns    0            8           8            8         0
         560.000 ns    0           15          15            15        0
         700.000 ns    0           10          10            10        0
         840.000 ns    0            5           5            5         0
         980.000 ns    1            0           1            1         0
          1.120 us     1            1           2            2         0
          1.260 us     1            8           9            9         0
          1.400 us     1           15          16            16        0
          1.540 us     1           10          11            11        0
          1.680 us     1            5           6            6         0
          1.820 us     8            0           8            8         0
          1.960 us     8            1           9            9         0
          2.100 us     8            8          16            16        0
          2.240 us     8           15          23            23        0
          2.380 us     8           10          18            18        0
21.02.20112.520 us    д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:           38
                       8            5          13            13        0
                                    hahanova@mail.ru
          2.660 us     15           0          15            15        0
Имплементация. Размер проекта

 Размер проекта 270 эквивалентных
  вентилей. Использует 15 триггеров и 15
  блоков LUT.
  Logic Utilization:
   Number of Slice Flip Flops:     15 out of 1,536
   1%
   Number of 4 input LUTs:         14 out of 1,536
   1%
  Total equivalent gate count for design: 204
 21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   39
                            hahanova@mail.ru
Имплементация
Оценка временных параметров.1




21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   40
                           hahanova@mail.ru
Имплементация
Оценка временных параметров. 2




21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   41
                           hahanova@mail.ru
Имплементация
Оценка временных параметров. 3
                         1,6 ns
                                        0,6 ns

             N



       clk

                                                   10,3 ns

       result[0]

21.02.2011         д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   42
                                 hahanova@mail.ru
Командный файл для моделирования
после имплементации
 comp -include "$DSNsrcseq_adder_timesim.vhd"
  comp -include
  "$DSNsrcTestBenchseq_adder_TB.v"
  asim seq_adder_tb -sdftyp
  /UUT=$DSNSRCseq_adder_timesim.sdf
  close -list
  wave
  wave -noreg N clk reset X Y SUM
  wave UUT/U1/sh UUT/U1/load UUT/U1/state
  list -collapse -dec A B Sum Sum_etalon ERROR
  run 5000 ns
 21.02.2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   43
                            hahanova@mail.ru
Приложение – Макро-язык. Asim
Команда asim - Инициализирует моделирование.
   asim [ -help ] [ -file <filename> ] [ -i <iteration_limit> ]
     <configuration> | <entity> [ <architecture> ]
Аргументы:
   -help – вывод короткого описания синтаксиса команды;
   -file <filename> – описывает необязательный командный файл,
       содержащий аргументы для команды asim. Эти аргументы можно
       использовать вместо того, чтобы непосредственно вводить их в
       команде;
   -i <iteration_limit> – устанавливает максимальное число дельта-
       итераций, которые могут быть выполнены в одно и то же время
       моделирования. Это позволяет избежать бесконечных циклов;
   <configuration> – задает имя конфигурации верхнего уровня для
       моделирования;
   <entity> – имя интерфейса верхнего уровня для моделирования;
   <architecture> – имя архитектуры для моделирования. Если имя не
       указано, будет использована последняя откомпилированная
       архитектура для данного интерфейса. Этот аргумент может
       использоваться только с интерфейсом.
  21.02.2011             д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   44
                                       hahanova@mail.ru
Команда list
 Открывает окно List и/или добавляет сигналы
  к существующему окну.
   list [ -collapse ] [ -<radix> ][ -width <n> <item_name> ... ]
Аргументы:
   -collapse – переключатель между промежуточными и
      результирующими значениями, которые выводятся на экран.
      Результирующим считается значение последнего цикла
      моделирования в описанном времени моделирования.
   -<radix> – задает систему счисления для сигналов, описанных в
      команде. Доступные опции: binary (abbr. bin) – двоичная;
      octal (abbr. oct) – восьмеричная; decimal (abbr. dec) –
      десятичная; hex – шестнадцатеричная;
   -width <n> – параметр “n” задает ширину колонки;
   < item_name>– имя сигнала для размещения в окне List.

  21.02.2011       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:   45
                                 hahanova@mail.ru
Команда wave
Команда добавляет указанные сигналы в окно Wave.
  wave [-<radix>] [ -<format> ] [ -height <pixels> ]
      [ -color <red_value, green_value, blue_value> ]
      [ <item_name> ] ... ] ...
Аргументы:
   -<format> – необязательный параметр, задающий один из следующих
      типов: literal (abbr. li) – символьный; logic (abbr. lo) – логический;
      Символьная waveform представляет собой прямоугольники, в
      которые вписаны значения. Логические сигналы могут быть либо 1,
      0, X или Z.
   -height <pixels> – высота waveform в пикселах;
   -color <red_value, green_value, blue_value> – цвет waveform,
      описываемый тремя параметрами с диапазоном значений 0-255,
      соответствующими красной, зеленой и синей составляющей цвета
      (RGB-модель цвета);
   <item_name> – имя сигнала.

  21.02.2011          д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail:       46
                                    hahanova@mail.ru
Команда run
 Выполняет моделирование.
 Синтаксис:
 run [ <time_step> | @<time> | -all | -next ]
 Аргументы:
 <time_step> – промежуток времени для моделирования;
 @<time> – абсолютное время, до которого будет
  осуществляться моделирование;
 -all – выполняются все возможные шаги моделирования, пока не
  будет обработано последнее событие из очередей драйверов;
 -next – выполнение до следующей записи в очередь драйвера.




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

Contenu connexe

En vedette

Sugar Nr. 1 Drug in Thailand
Sugar Nr. 1 Drug in ThailandSugar Nr. 1 Drug in Thailand
Sugar Nr. 1 Drug in Thailandbkkhealth
 
Change Management
Change ManagementChange Management
Change Managementprasadumesh
 
Doorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos Borsboom
Doorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos BorsboomDoorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos Borsboom
Doorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos Borsboomadfiz
 
Obstetrics (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...
Obstetrics   (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...Obstetrics   (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...
Obstetrics (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...Igor Nitsovych
 
Presentación centro inglés
Presentación centro inglésPresentación centro inglés
Presentación centro inglésiesMola
 
Pharaoh's snake at the chemist lab.
Pharaoh's snake  at the chemist lab.Pharaoh's snake  at the chemist lab.
Pharaoh's snake at the chemist lab.iesMola
 
Fiscale aspecten - Guus Ottenheijm
Fiscale aspecten - Guus OttenheijmFiscale aspecten - Guus Ottenheijm
Fiscale aspecten - Guus Ottenheijmadfiz
 
Problemi programmazione lineare
Problemi  programmazione lineareProblemi  programmazione lineare
Problemi programmazione lineareCristina Scanu
 
2011 04 14 acta reunion director
2011 04 14 acta reunion director2011 04 14 acta reunion director
2011 04 14 acta reunion directorcomiteportos
 
Romeo and Juliet
Romeo and JulietRomeo and Juliet
Romeo and Julietaschoenborn
 
Social Media kansen in 2011
Social Media kansen in 2011Social Media kansen in 2011
Social Media kansen in 2011expressivodesign
 
Adfiz Wft portaal
Adfiz Wft portaalAdfiz Wft portaal
Adfiz Wft portaaladfiz
 
Proiect PW: Aplicatii .jar
Proiect PW: Aplicatii .jarProiect PW: Aplicatii .jar
Proiect PW: Aplicatii .jarcip32
 

En vedette (19)

Sam's Principle
Sam's PrincipleSam's Principle
Sam's Principle
 
Sugar Nr. 1 Drug in Thailand
Sugar Nr. 1 Drug in ThailandSugar Nr. 1 Drug in Thailand
Sugar Nr. 1 Drug in Thailand
 
Change Management
Change ManagementChange Management
Change Management
 
Doorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos Borsboom
Doorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos BorsboomDoorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos Borsboom
Doorrekenen gevolgen kostencompensatie - Gerard van Santen / Jos Borsboom
 
nuevas tecnologias
nuevas tecnologiasnuevas tecnologias
nuevas tecnologias
 
Obstetrics (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...
Obstetrics   (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...Obstetrics   (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...
Obstetrics (national) под ред. э.к. айламазяна, в.и. кулакова, в.е. радзинс...
 
Presentación centro inglés
Presentación centro inglésPresentación centro inglés
Presentación centro inglés
 
Pharaoh's snake at the chemist lab.
Pharaoh's snake  at the chemist lab.Pharaoh's snake  at the chemist lab.
Pharaoh's snake at the chemist lab.
 
Fiscale aspecten - Guus Ottenheijm
Fiscale aspecten - Guus OttenheijmFiscale aspecten - Guus Ottenheijm
Fiscale aspecten - Guus Ottenheijm
 
Problemi programmazione lineare
Problemi  programmazione lineareProblemi  programmazione lineare
Problemi programmazione lineare
 
Future of PHP
Future of PHPFuture of PHP
Future of PHP
 
2011 04 14 acta reunion director
2011 04 14 acta reunion director2011 04 14 acta reunion director
2011 04 14 acta reunion director
 
Romeo and Juliet
Romeo and JulietRomeo and Juliet
Romeo and Juliet
 
13a ecology
13a ecology13a ecology
13a ecology
 
Social Media kansen in 2011
Social Media kansen in 2011Social Media kansen in 2011
Social Media kansen in 2011
 
The Crucible
The CrucibleThe Crucible
The Crucible
 
Adfiz Wft portaal
Adfiz Wft portaalAdfiz Wft portaal
Adfiz Wft portaal
 
Proiect PW: Aplicatii .jar
Proiect PW: Aplicatii .jarProiect PW: Aplicatii .jar
Proiect PW: Aplicatii .jar
 
Աշոտ
ԱշոտԱշոտ
Աշոտ
 

Plus 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 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilogIrina 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 02_verilog
апкс 2011 02_verilogапкс 2011 02_verilog
апкс 2011 02_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
 

Plus de Irina Hahanova (16)

апкс 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 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilog
 
апкс 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 02_verilog
апкс 2011 02_verilogапкс 2011 02_verilog
апкс 2011 02_verilog
 
апкс 2011 01_введение
апкс 2011 01_введениеапкс 2011 01_введение
апкс 2011 01_введение
 
моап 2011 05
моап 2011 05моап 2011 05
моап 2011 05
 
моап 2011 04
моап 2011 04моап 2011 04
моап 2011 04
 
моап 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 06_проектирование арифметических устройств

  • 1. 6. Пример проектирования арифметического устройства Автоматизация проектирования компьютерных систем д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 21.02.2011 e-mail: hahanova@mail.ru 1
  • 2. Цель лекции и содержание  Цель ознакомление с проектами, которые вынесены на лабораторные занятия  План  Беззнаковое умножение  Знаковое умножение  Быстрое знаковое умножение  Беззнаковое деление  Знаковое деление  Реализация арифметических устройств, на примере последовательного сумматора 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 2 hahanova@mail.ru
  • 3. Двоичное умножение • Двоичное умножение требует только операций сложения и сдвига. В качестве примера выполняется умножение двоичных чисел: 1310x1110. Множимое 1101 (13) Множитель 1011 (11) 1101 1101 Частичные произведения } 100111 0000 100111 1101 10001111 (143) 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 3 hahanova@mail.ru
  • 4. Схема устройства двоичного умножения Произведение Load 8 7 6 5 4 3 2 1 0 C Sh ACC Ad O N Clk T Множитель R 4-битный Done Cm сумматор O L St M Множимое Суммирование каждого частичного произведения выполняется сразу после его формирования, таким образом, в один момент времени складывается не более двух двоичных чисел. 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 4 hahanova@mail.ru
  • 5. Выполнение умножения первоначальное содержание регистра произведения 000001011 M(11) (сложение с множимым, так как М=1) 1101 (13) после сложения 011011011 после сдвига 001101101 M (сложение с множимым, так как М=1) 1101 после сложения 100111101 после сдвига 010011110 M (пропуск операции сложения, так как М=0) после сдвига 001001111 M (сложение с множимым, так как М=1) 1101 после сложения 100011111 после сдвига(окончательный результат) 010001111 (143) Линия, разделяющая произведение и множимое 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 5 hahanova@mail.ru
  • 6. Граф управляющего автомата устройства умножения St' S10 S0 S9 Done 0 St Sh S8 Ad M M M' M' S2 S7 Ad Sh S6 M' S3 Ad M' Sh M S5 S4 M Sh Ad 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 6 hahanova@mail.ru
  • 7. Управляющий блок со счетчиком Схема управления умножением St Done Схема Load M сложение- Ad сдвиг Sh St' S0 St 0 M' K K'M' M Счетчик S5 K' S3 Done S2 Sh K Ad M S4 KM' Sh 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 7 hahanova@mail.ru
  • 8. Умножение знаковых двоичных чисел (1) Множимое Множит ель 0.1012 = 5/810 1.0112 = -5/810 + + - + + - 0.1 1 1 (+7/8) Множимое x 0.1 0 1 (+5/8) Множитель - - (0. 0 0)0 1 1 1 (+7/64) Примечание:правильное представление (0.)0 1 1 1 (+7/16) дробных частичных произведений требует 0. 1 0 0 0 1 1 (+35/64) расширения знакового бита за двоичной точкой,как это показано в скобках. (Такое расширение не является обязательным для аппаратуры) 1.1 0 1 (-3/8) x 0.1 0 1 (+5/8) (1. 1 1)1 1 0 1 (-3/64) Примечание:расширение знакового бита (1.)1 1 0 1 (-3/16) обеспечивает правильное представление 1. 1 1 0 0 0 1 (-15/64) отрицательного произведения 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 8 hahanova@mail.ru
  • 9. Умножение знаковых двоичных чисел (2) 0.1 0 1 (+5/8) x 1.1 0 1 (-3/8) (0. 0 0)0 1 0 1 (+5/64) (0.)0 1 0 1 (+5/16) 0. 0 1 1 0 0 1 1. 0 1 1 (-5/8) Примечание: выполняется сложение 1. 1 1 0 0 0 1 (-15/64) с дополнительным кодом множимого 1.1 0 1 (-3/8) x 1.1 0 1 (-3/8) (1. 1 1)1 1 0 1 (-3/64) (1.)1 1 0 1 (-3/16) 1. 1 1 0 0 0 1 0. 0 1 1 (+3/8) Примечание: выполняется сложение 0. 0 0 1 0 0 1 (+9/64) с дополнительным кодом множимого 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 9 hahanova@mail.ru
  • 10. Схема устройства умножения в дополнительном коде Произведение Load 8 7 6 5 4 3 2 1 0 Sh C Ad O N Clk T Множитель R 5-битный полный O Done сумматор Cm Cm L St Cm Формирователь обратного кода M Множимое 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 10 hahanova@mail.ru
  • 11. Граф состояний для умножения в дополнительном коде St' S10 S0 Done 0 St S8 S9 CmAd 0 M M M' M' S2 S7 Ad Sh S6 M' S3 Ad M' Sh M S5 S4 M Sh Ad 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 11 hahanova@mail.ru
  • 12. Структурная схема быстрого устройства умножения Произведение B Load Sh C AdSh O N T Cm R Done Cm O St L Cm Формирователь обратного кода M Множимое 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 12 hahanova@mail.ru
  • 13. Граф состояний управляющего автомата для быстрого устройства умножения St' S10 S0 Done 0 St M' M S9 S2 Sh Sh M' M' M' M M S6 M' S4 M Sh Sh M M' M M' M 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 13 hahanova@mail.ru
  • 14. Деление двоичных чисел 1010 частное делитель 1101 10000111 делимое 1101 0111 (135 13 = 10 0000 остаток 5) 1111 1101 0101 0000 0101 остаток 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 14 hahanova@mail.ru
  • 15. Устройство двоичного деления Регистр частного Sh Sh X8 X7 X6 X5 X4 X3 X2 X1 X0 Ld Su St(Старт-сигнал) Устройство вычитания C V и сравнения Control (переполнение) 0 Y3 Y2 Y1 Y0 Clock 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 15 hahanova@mail.ru
  • 16. Условие переполнения X8X7X6X5X4 Y3Y2Y1Y0 – левые пять битов регистра делимого больше или равны делителю, частное будет больше 15 и возникнет переполнение. Обратите внимание: если X8X7X6X5X4 Y3Y2Y1Y0 , частное будет X 8 X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0 X 8 X 7 X 6 X 5 X 4 0000 X 8 X 7 X 6 X 5 X 4 X 3  16    16 Y3Y2Y1Y0 Y3Y2Y1Y0 Y3Y2Y1Y0 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 16 hahanova@mail.ru
  • 17. Граф состояний для управляющей схемы устройства деления St St' S0 S2 C Stop C' Sh C/V C' S3 Su S10 S4 0 Sh C C' S5 S9 C Su Su S7 C' S6 C' Sh Sh C S8 Su 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 17 hahanova@mail.ru
  • 18. Структурная схема устройства деления знаковых чисел DBus (Шина данных) 16 16 Делимое Ldu Acc (Остаток) Q (Частное) Cm1 16 16 Sh Ldl C Ena St Cout Cin Cm2 Управл. K схема 16 V Cm2 16 S Lds Ldd Делитель Знак Co1Ldd 16 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 18 hahanova@mail.ru
  • 19. Описание сигналов схемы устройства деления знаковых чисел  Ldu – загрузка с шины старшей половины делимого;  Ldl – загрузка с шины младшей половины делимого;  Lds – загрузка знака делимого в знаковый триггер;  S – знак делимого;  Cm1 – дополнение регистра делимого (дополнительный код);  Ldd – загрузка с шины делимого;  Su – подключение выхода сумматора к шине (Ena) и загрузка верхней половины делимого из шины;  Cm2 – разрешение преобразования в обратный код (Cm2 подключен к знаковому биту делимого таким образом, что положительное число преобразуется в дополнительный код, а отрицательное – нет);  Sh – сдвиг регистра делимого влево на 1 разряд и увеличение счетчика на 1;  C – выход переноса сумматора (если С=1, делитель можно вычесть из верхней части делимого);  St – старт;  V – переполнение;  Qneg – частное будет отрицательным (Qneg = 1, когда знаки делимого и делителя различны). 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 19 hahanova@mail.ru
  • 20. Граф управляющей схемы для деления знаковых чисел St' S0 St S2 Rdy Ldl S S' S4 S10 S3 Co1Ldd V Ldd S9 C'Qneg' C Co1 C'Qneg S5 S7 K'C' Sh Sh KC' C' KQneg C C S6 Sh S8 KQneg' Su K' 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 20 hahanova@mail.ru
  • 21. Проектирование арифметического устройства на примере последовательного сумматора 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 21 hahanova@mail.ru
  • 22. Структурно-функциональная схема последовательного сумматора Аккумулятор SI x3 x2 x1 x0 xi sumi N(Старт-сигнал) Sh Load Full Управл. Sh SI Sh y3 y2 y1 y0 yi Adder схема Load Load ci ci+1 Регистр слагаемого Clock Последовательный N' Q R D сумматор Q' CK N' S0 0 N Sh S5 S1 Sh N Load Clock S4 S2 Sh Sh 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 22 S3 hahanova@mail.ru Sh
  • 23. Функционирование последовательного сумматора X Y ci sumi ci+1 t0 0101 0111 0 0 1 t1 0010 1011 1 0 1 t2 0001 1101 1 1 1 t3 1000 1110 1 1 0 t4 1100 0111 0 (1) (0) 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 23 hahanova@mail.ru
  • 24. Проектирование управляющего автомата N' S0 N Текущее Следующее состояние Значение выхода N' 0 состояние N=0 N=1 Sh Load S5 S1 S0 S0 S1 0 0 Sh N Load S1 S2 S2 0 1 S2 S3 S3 1 0 S4 S2 S3 S4 S4 1 0 Sh Sh S4 S5 S5 1 0 S3 S5 S0 S1 1 0 Sh 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 24 hahanova@mail.ru
  • 25. Verilog-модель управляющего автомата.1 module FSM (input Clk, Reset, N, output Sh, Load); /* Определение меток состояний*/ parameter S0=3'b000; parameter S1=3'b001; parameter S2=3'b010; parameter S3=3'b011; parameter S4=3'b100; parameter S5=3'b101; 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 25 hahanova@mail.ru
  • 26. Verilog-модель управляющего автомата.2 reg [2:0] state, next_state; /* Регистр состояний автомата*/ always @(posedge Clk, posedge Reset) if (Reset) state <= S0; else state <= next_state; 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 26 hahanova@mail.ru
  • 27. Verilog-модель управляющего автомата.3 /* Функция переходов*/ always @(*) case (state) S0 : if (N) next_state <= S1; else next_state <= S0; S1 : next_state <= S2; S2 : next_state <= S3; S3 : next_state <= S4; S4 : next_state <= S5; S5 : if (N) next_state <= S1; else next_state <= S0; default: next_state <= S0; endcase 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 27 hahanova@mail.ru
  • 28. Verilog-модель управляющего автомата 4 // Функции выходов assign Sh = (state==S2) ||(state==S3)|| (state==S4) || (state==S5) ? 1'b1 : 1'b0; assign Load = (state==S1) ? 1'b1 : 1'b0; endmodule 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 28 hahanova@mail.ru
  • 29. Кодирование состояний автомата при синтезе схемы  work.FSM(verilog)-state_h.state[5:0] original code -> new code 000 -> 000001 001 -> 000010 010 -> 000100 011 -> 001000 100 -> 010000 101 -> 100000 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 29 hahanova@mail.ru
  • 30. Verilog-модель регистра module register (input Clk, Load, Sh, SI, input [3:0] D; output reg [3:0] Q); always @(negedge Clk) D Reg Q if (Sh) 4 4 SI Q <= {SI, Q[3:1]}; Load else if (Load) Sh Q<=D; Clk endmodule 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 30 hahanova@mail.ru
  • 31. Verilog-модель последовательного сумматора.1 module seq_adder (input N, clk, reset, input [3:0] X, Y, output [4:0] result); wire Sh, Load, sum, Cout; wire [3:0] Xin, Yin; reg Cin; // Подключение компонентов: автомат и два регистра FSM U1 (.Clk(clk), .Reset(reset), .N(N), .Sh(Sh), .Load(Load)); register Reg_X (.Clk(clk), .Load(Load), .Sh(Sh), .SI(sum), .D(X), .Q(Xin)); register Reg_Y (.Clk(clk), .Load(Load), .Sh(Sh), .SI(Yin[0]), .D(Y), .Q(Yin)); 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 31 hahanova@mail.ru
  • 32. Verilog-модель последовательного сумматора.2 // Двоичный сумматор assign sum = Xin[0]^Yin[0]^Cin; assign Cout = (Xin[0]&Yin[0])|(Xin[0]&Cin)|(Yin[0]&Cin); //Триггер always @(negedge clk or posedge Load) if (Load) Cin <=1'b0; else if (Sh) Cin<=Cout; assign result={Cin,Xin}; endmodule 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 32 hahanova@mail.ru
  • 33. TestBench для последовательного сумматора 1 module seq_adder_tb; // Декларации внутренних сигналов reg N, clk, reset; reg [3:0]X, Y; wire [4:0] result; reg [3:0] X_test [5:0], Y_test [5:0]; parameter period = 'd 20; wire ERROR; // Описание тестируемого модуля seq_adder UUT (.N(N), .clk(clk), .reset(reset), .X(X), .Y(Y), .result(result)); 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 33 hahanova@mail.ru
  • 34. TestBench для последовательного сумматора 2 initial begin X_test [0] = 4'b0000; X_test [1] = 4'b0001; X_test [2] = 4'b1000; X_test [3] = 4'b1111; X_test [4] = 4'b1010; X_test [5] = 4'b0101; Y_test [0] = 4'b0000; Y_test [1] = 4'b0001; Y_test [2] = 4'b1000; Y_test [3] = 4'b1111; Y_test [4] = 4'b1010; Y_test [5] = 4'b0101; end initial begin // генератор синхросигнала clk=1'b0; reset=1'b1; #5 reset<=1'b0; forever #(period/2) clk=~clk; end 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 34 hahanova@mail.ru
  • 35. TestBench для последовательного сумматора 3 integer i, j; reg [3:0]A,B; reg [4:0] SUM, Sum_etalon; always for (i=0; i<=5; i=i+1) begin X = X_test[i]; for (j=0; j<=5; j=j+1) begin N = 1'b1; Y = Y_test[j]; N = repeat (2) @(negedge clk) 1'b0; //чтение результатов операции #(5*period) A=X; B=Y; SUM=result; Sum_etalon={1'b0,X} + Y; end end 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 35 hahanova@mail.ru
  • 36. TestBench для последовательного сумматора 4 assign ERROR = (SUM!=Sum_etalon)? 1'b1: 1'b0; initial $monitor ($realtime, "ps %h %h %h %h %h %h ", N,clk,reset,X,Y,result); endmodule 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 36 hahanova@mail.ru
  • 37. Макрофайл для тестирования comp -include $DSNsrcregister.v comp -include $DSNsrcfsm.v comp -include $DSNsrcseq_adder.v comp -include "$DSNsrcTestBenchseq_adder_TB.v" asim seq_adder_tb close –list close –wave wave N clk reset X Y SUM wave UUT/U1/sh UUT/U1/load UUT/U1/state list -dec A B SUM Sum_etalon ERROR run 5000 ns 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 37 hahanova@mail.ru
  • 38. Результаты тестирования последовательного сумматора TIME A B SUM Sum_etalon ERROR 0.000 ? ? ? ? 0 140.000 ns 0 0 0 0 0 280.000 ns 0 1 1 1 0 420.000 ns 0 8 8 8 0 560.000 ns 0 15 15 15 0 700.000 ns 0 10 10 10 0 840.000 ns 0 5 5 5 0 980.000 ns 1 0 1 1 0 1.120 us 1 1 2 2 0 1.260 us 1 8 9 9 0 1.400 us 1 15 16 16 0 1.540 us 1 10 11 11 0 1.680 us 1 5 6 6 0 1.820 us 8 0 8 8 0 1.960 us 8 1 9 9 0 2.100 us 8 8 16 16 0 2.240 us 8 15 23 23 0 2.380 us 8 10 18 18 0 21.02.20112.520 us д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 38 8 5 13 13 0 hahanova@mail.ru 2.660 us 15 0 15 15 0
  • 39. Имплементация. Размер проекта  Размер проекта 270 эквивалентных вентилей. Использует 15 триггеров и 15 блоков LUT. Logic Utilization: Number of Slice Flip Flops: 15 out of 1,536 1% Number of 4 input LUTs: 14 out of 1,536 1% Total equivalent gate count for design: 204 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 39 hahanova@mail.ru
  • 40. Имплементация Оценка временных параметров.1 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 40 hahanova@mail.ru
  • 41. Имплементация Оценка временных параметров. 2 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 41 hahanova@mail.ru
  • 42. Имплементация Оценка временных параметров. 3 1,6 ns 0,6 ns N clk 10,3 ns result[0] 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 42 hahanova@mail.ru
  • 43. Командный файл для моделирования после имплементации  comp -include "$DSNsrcseq_adder_timesim.vhd" comp -include "$DSNsrcTestBenchseq_adder_TB.v" asim seq_adder_tb -sdftyp /UUT=$DSNSRCseq_adder_timesim.sdf close -list wave wave -noreg N clk reset X Y SUM wave UUT/U1/sh UUT/U1/load UUT/U1/state list -collapse -dec A B Sum Sum_etalon ERROR run 5000 ns 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 43 hahanova@mail.ru
  • 44. Приложение – Макро-язык. Asim Команда asim - Инициализирует моделирование. asim [ -help ] [ -file <filename> ] [ -i <iteration_limit> ] <configuration> | <entity> [ <architecture> ] Аргументы: -help – вывод короткого описания синтаксиса команды; -file <filename> – описывает необязательный командный файл, содержащий аргументы для команды asim. Эти аргументы можно использовать вместо того, чтобы непосредственно вводить их в команде; -i <iteration_limit> – устанавливает максимальное число дельта- итераций, которые могут быть выполнены в одно и то же время моделирования. Это позволяет избежать бесконечных циклов; <configuration> – задает имя конфигурации верхнего уровня для моделирования; <entity> – имя интерфейса верхнего уровня для моделирования; <architecture> – имя архитектуры для моделирования. Если имя не указано, будет использована последняя откомпилированная архитектура для данного интерфейса. Этот аргумент может использоваться только с интерфейсом. 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 44 hahanova@mail.ru
  • 45. Команда list  Открывает окно List и/или добавляет сигналы к существующему окну. list [ -collapse ] [ -<radix> ][ -width <n> <item_name> ... ] Аргументы: -collapse – переключатель между промежуточными и результирующими значениями, которые выводятся на экран. Результирующим считается значение последнего цикла моделирования в описанном времени моделирования. -<radix> – задает систему счисления для сигналов, описанных в команде. Доступные опции: binary (abbr. bin) – двоичная; octal (abbr. oct) – восьмеричная; decimal (abbr. dec) – десятичная; hex – шестнадцатеричная; -width <n> – параметр “n” задает ширину колонки; < item_name>– имя сигнала для размещения в окне List. 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 45 hahanova@mail.ru
  • 46. Команда wave Команда добавляет указанные сигналы в окно Wave. wave [-<radix>] [ -<format> ] [ -height <pixels> ] [ -color <red_value, green_value, blue_value> ] [ <item_name> ] ... ] ... Аргументы: -<format> – необязательный параметр, задающий один из следующих типов: literal (abbr. li) – символьный; logic (abbr. lo) – логический; Символьная waveform представляет собой прямоугольники, в которые вписаны значения. Логические сигналы могут быть либо 1, 0, X или Z. -height <pixels> – высота waveform в пикселах; -color <red_value, green_value, blue_value> – цвет waveform, описываемый тремя параметрами с диапазоном значений 0-255, соответствующими красной, зеленой и синей составляющей цвета (RGB-модель цвета); <item_name> – имя сигнала. 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 46 hahanova@mail.ru
  • 47. Команда run  Выполняет моделирование.  Синтаксис:  run [ <time_step> | @<time> | -all | -next ]  Аргументы:  <time_step> – промежуток времени для моделирования;  @<time> – абсолютное время, до которого будет осуществляться моделирование;  -all – выполняются все возможные шаги моделирования, пока не будет обработано последнее событие из очередей драйверов;  -next – выполнение до следующей записи в очередь драйвера. 21.02.2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ e-mail: 47 hahanova@mail.ru