SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
VERILOG




 3. Dataflow уровень описания моделей



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

                д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
2/9/2011                e-mail: hahanova@mail.ru                 1
Цель лекции и содержание
 Цель – изучить принципы построения
  моделей вентильного и dataflow
  уровней
 План
  1. Стандартные логические элементы
  2. Определенные пользователем примитивы
  3. Задержки


    2/9/2011   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   2
                    e-mail: hahanova@mail.ru
Dataflow-модели



                               out=ab+c

             a
                 #5
             b        e
                             #4         out
             c




  2/9/2011            д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   3
                           e-mail: hahanova@mail.ru
Оператор непрерывного назначения.1

Синтаксис:
 assign [drive_strength] [delay] net_value =
 expression {,net_value = expression};

Примеры:
 assign out=i1&i2;
 assign addr[15:0]=addr1[15:0]^addr2[15:0];
 assign {c_out, sum[3:0]}=a[3:0]+b[3:0]+c_in;

    2/9/2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   4
                       e-mail: hahanova@mail.ru
Оператор непрерывного назначения.2
     //Обычная форма
     wire out;
     assign out = i1 & i2;
     //Упрощенная формой
     wire out = i1 & i2;

 Задержки в операторе назначения
     wire out;
     assign #10 out = i1 & i2;                    //Обычная форма

     wire #10 out = i1 & i2;                      //Упрощенная форма

 Задержку линии можно также указать в момент ее декларации:.
     wire #10 out;                   //Описание задержки линии
     assign out = i1 & i2;           // значение линии out будет
                                     // присвоено через 10 единиц времени
       2/9/2011                д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ         5
                                    e-mail: hahanova@mail.ru
Приоритеты операторов
                 Оператор                  Описание
              + - ! ~                 Унарные
              * / %                   Арифметические
              + - (binary)            Бинарные
              << >> <<< >>>           Сдвига
              < <= > = >              Отношения
              == != === !==           Равенства
              & ~&                    and nand
              ^ ~^ ^~                 xor xnor
              | ~|                    or nor
              &&                      Логическое and
              ||                      Логическое or
              ?:                      Условный оператор
   2/9/2011           д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   6
                           e-mail: hahanova@mail.ru
Операторы Verilog
                                    Операторы Verilog
                  Арифметические                          Побитовые
             Оператор         Описание            Оператор         Описание
               a+b       a плюс b                    ~b              not
               a-b       a минус b                  a&b              and
               a*b       a умножить на b            a |b              or
               a/b       a разделить на b           a^b              xor
              a%b        a по модулю b
              a ** b     Степень                a ^~ b, a ~^ b            xnor

                     Отношения                                Равенства
             Оператор         Описание            Оператор             Описание
               a<b        меньше                    a == b         равно
               a>b        больше                    a != b         не равно
              a <= b      меньше или равно         a ===b          равно
              a => b      больше или равно         a !== b         не равно

                                        Логические
                              Оператор             Описание
                               a && b         a and b
                                 a || b       a or b
                                  !a          not a

  2/9/2011                      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ              7
                                     e-mail: hahanova@mail.ru
Арифметические операторы
 Если хотя бы один бит операнда равен x, то
  результат равен x
    in1 = 4'b110x;
    in2 = 4'b1010;
    sum = in1 + in2; // результат операции сложения – 4'bx
 Результат операции по модулю представляет собой
  остаток от деления двух чисел. Знак результата
  совпадает со знаком первого операнда.
    10 % 3 // результат 1, остаток от деления 10 на 3 равен 1
    17 % 3 // результат 2, остаток от деления 17 на 3 равен 2
    12 % 3 // результат 0, нет остатка от деления
    -7 % 3 // результат -1, знак первого операнда
    11 % -3 // результат 2
    -4’d12 % 3 // результат 1, т.к. -4’d12 = 4'b0100%3 = 1

      2/9/2011         д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ     8
                            e-mail: hahanova@mail.ru
Операторы логические, отношения и равенства

   Логические операторы
    A=3; B=0;
    A&&B=0          A||B=1            !A=0                     !B=1
    A = 2'b0x; B = 2'b10; // Операнд с элементом x
    A && B = x            // эквивалентно (x && 1)

   Операторы отношения
    reg [3:0] a, b; a = 4’b1100; b = 4’b0110;
    a < b // равняется логическому 0          a > 8 // равняется логической 1
    a <= b // равняется логическому 0         a >= 10 // равняется логической 1
    a < 4’b1zzz // результат равен x a < 4’b1x01 // результат равен x

   Операторы равенства
          reg [3:0] a, b; a = 4’b1100; b = 4’b101x;
    a == 4’b1100 // истина – логическая 1 a != 4’b1100 // ложь – логический 0
    b == 4’b101x // результат равен x          b != 4’b101x // результат равен x
    b === 4’b101x // истина – логическая 1 b !== 4’b101x // ложь – логический 0



          2/9/2011             д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ          9
                                    e-mail: hahanova@mail.ru
Побитовые операторы
                                                                      ~^
& 0 1 x         z      ^ 0 1 x         z        |   0 1 x       z          0 1 x          z   ~ 0 1 x    z
                                                                      ^~
0   0   0   0   0      0   0   1   x   x       0    0   1   x   x      0   1      0   x   x     1 0 X X
1   0   1   x   x      1   1   0   x   x       1    1   1   1   1      1   0      1   x   x
x   0   x   x   x      x   x   x   x   x       x    x   1   x   x      x   x      x   x   x
z   0   x   x   x      z   x   x   x   x       z    x   1   x   x      z   x      x   x   x

    reg [7:0] a, b;       a = 8’b1010xzxz;    b = 8’b10010011;
    a&b        // поразрядное И, результат 8’b100000xx;
    a|b         // поразрядное ИЛИ, результат 8’b1011xx11;
    a^b         // поразрядное по модулю 2, результат 8’b0011xxxx;
    a ~^ b      // поразрядное по модулю 2 с инверсией выхода,
                // результат 8’b1100xxxx;
    ~a          // поразрядная инверсия, результат 8’b0101xxxx;


            2/9/2011                       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ                     10
                                                e-mail: hahanova@mail.ru
Операторы редукции
 Операторы редукции или свертки
 & (and), ~& (nand), | (or), ~| (nor), ^ (xor), ^~ или
  ~^ (xnor)

   Пример
     • &x         // 1&0&1&0=1'b0
     • |x         // 1|0|1|0=1'b1
     • ^x         // 1^0^1^0=1'b0.

      2/9/2011       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   11
                          e-mail: hahanova@mail.ru
Операторы сдвига
Операторы сдвига                            Операторы сдвига
     //x=4'b1100                  Оператор             Описание
     y=x>>1 //y=4'b0110             a << b      Сдвиг влево
     y=x<<1 // y=4'b1000            a >> b      Сдвиг вправо
     y=x<<2 //y=4'b0000            a <<< b      Знаковый сдвиг влево
                                    a >>> b      Знаковый сдвиг вправо
   reg [3:0] a; a = 4’b1111;
   a << 3 = 4’b1000          a >> 3 = 4’b0001
   a << 1’bz = 4’bxxxx       a >> 1’bx = 4’bxxxx

   reg [7:0] r8;
   r8 = a >>> b; // Сдвиг a вправо на b разрядов,
                 // старшие биты заполняются значением a[7]
       2/9/2011          д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ        12
                              e-mail: hahanova@mail.ru
Оператор конкатенации
 Синтаксис:
  {expression | multiplier{expression},
     expression | multiplier{expression}, . . .}
 Примеры.
   //A=1'b1, B=2'b00, C=2'b10, D3'b110
   Y={B, C}               //Y=4'b0010
   Y={A, B, C, D, 3'b001} //Y=11'b10010110001
   Y={2{B}, C}            //Y=6'b000010
   Y={3{A}, 2{B}, C}      //Y=9'b111000010
     2/9/2011       д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   13
                         e-mail: hahanova@mail.ru
Оператор условного назначение

                            Синтаксис:
 condition_expr ? true_expr: false_expr;
      mux_2to_1
In0
                   Out   module mux_2to_1 (out, In0, In1, Sel);
In1                             output Out;
                                input In0, In1, Sel;
        Sel
                         assign out = Sel ? In1 : In0;
                         endmodule




        2/9/2011             д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   14
                                  e-mail: hahanova@mail.ru
Две модели мультиплексора 4 в 1
 // Модель 1
 module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);
      output out;
      input i0, i1, i2, i3;
      input s1, s0;

    //Вложенный условный оператор
   assign out = s1 ? (s0 ? i3 : i2) : (s0 ? i1 : i0);
 endmodule

 // Модель 2
 module mux4_to_1 (out, i0, i1, i2, i3, s1, s0);
      output out;
      input i0, i1, i2, i3; // входы данных
      input s1, s0;        // управляющие входы
     assign out = (~s1 & ~s0 & i0) | (~s1 & s0 & i1) |
           (s1 & ~s0 & i2) | (s1 & s0 & i3);
 endmodule

      2/9/2011               д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   15
                                  e-mail: hahanova@mail.ru
Системные задачи и функции.1
 Системная задача $display служит для вывода
  информации на экран.
  $display | $displayb | $displayh | $displayo (p1, p2, p3, ...) ;
           Символ       Описание формата
           %d or %D     Десятичный формат
           %b or %B     Двоичный формат
           %h or %H     Шестнадцатиричный формат
           %o or %O     Восьмеричный формат
           %c or %C     Символы в формате ASCII
           %v or %V     Интенсивности сигнала класса net
           %m or %M     Иерархическое имя
           %s or %S     В виде строки
           %t or %T     Текущий формат времени
      2/9/2011            д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ       16
                               e-mail: hahanova@mail.ru
Системные задачи и функции.2
 Задача $monitor предлагает механизм для
  наблюдения за изменениями сигнала.
  $monitor | $monitorb | $monitorh | $monitoro (p1, p2, p3, ...) ;
  $monitoron;       // влючить мониторинг
  $monitoroff;      // выключить мониторинг .


 Пример
    initial  // блок инициализации
    begin
      $monitor($time, "clock = %b, reset = %b", clock, reset);
    end


      2/9/2011           д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ        17
                              e-mail: hahanova@mail.ru
Системные задачи и функции.3

           $stop [(n)];
            $finish [(n)];

 Режимы диагностических сообщений задач $stop и $finish

           n                    Сообщ ение
           0   Отсутствует
           1   Время моделирования
               Время моделированияи и работы CPU,
           2
               размер используемой памяти

    2/9/2011          д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   18
                           e-mail: hahanova@mail.ru
Системные задачи и функции.4
$printtimescale [ ( hierarchical_name ) ] ;
                                                         Пример:
      // функции
                                                         `timescale 1 ms / 1 us
integer $time                                            module a_dat;
integer $stime                                           initial
real $realtime                                                  $printtimescale;
                                                         endmodule
Задача $printtimescale – выводит единицы измерения и
точность вычисления времени для указанного модуля
hierarchical_name. Системные функции $time и $stime
возвращают текущее время моделирования в виде 64- и 32-
битового целого числа, а функция $realtime – в вещественном
формате.



     2/9/2011            д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ                  19
                              e-mail: hahanova@mail.ru
Работа с файлами
 $fopen и $fclose
   integer multi_channel_descriptor = $fopen ( " file_name " );
       | integer fd = $fopen ( " file_name ", type );
   $fclose ( multi_channel_descriptor );
                                                       Screen+Log      File Otput
       | $fclose (fd);
                                                            $display   $fdisplay
 Пример                                        $write                 $fwrite
   integer file1, file2;                        $strobe                $fstrobe
   initial begin                                $monitor               $fmonitor
         file1 = $fopen("file1");
         file2 = $fopen("file2");
         $display("The number used for file 1 is %0d", file1);
         ...
         $fclose(file1);$fclose(file2);
   end

          2/9/2011              д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ                20
                                     e-mail: hahanova@mail.ru
Функции работы с файлами
 Чтение символов (байта)
   c = $fgetc ( fd );
   code = $ungetc ( c, fd );
 Чтение строки str из файла fd
   integer code = $fgets ( str, fd );
 Чтение форматируемых данных
   integer code = $fscanf ( fd, format, args );
     • // чтение из файла, заданного fd
   integer code = $sscanf ( str, format, args );

     2/9/2011          д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   21
                            e-mail: hahanova@mail.ru
Чтение двоичных данных из файла

   integer code = $fread( myreg, fd);
   integer code = $fread( mem, fd);
   integer code = $fread( mem, fd, start);
   integer code = $fread( mem, fd, start, count);
   integer code = $fread( mem, fd, , count);




       2/9/2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   22
                          e-mail: hahanova@mail.ru
Загрузка памяти из файла
 $readmemb ( " file_name " , memory_name [ ,
  start_addr [ , finish_addr ] ] ) ;
 | $readmemh ( " file_name " , memory_name [ ,
  start_addr [ , finish_addr ] ] ) ;
 Примеры
   reg [7:0] mem[1:256];

   initial $readmemh("mem.data", mem);
   initial $readmemh("mem.data", mem, 16);
   initial $readmemh("mem.data", mem, 128, 1);

     2/9/2011        д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   23
                          e-mail: hahanova@mail.ru
$random()
 Размер возвращаемых значенй соответствует
  типу integer.

 Пример использования функции $random.
    parameter SEED = 33;
    reg [31:0] vector;
  always @(posedge clock)
     vector = $random (SEED);



     2/9/2011      д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   24
                        e-mail: hahanova@mail.ru
Контрольные вопросы и задания.1
1.  Что означает оператор a === b в Verilog?
2.  Что означает оператор a !== b в Verilog?
3.  Чему будет равен результат операции Y = {3{A}}, где A = 2’b1?
4.  Чему равен результат операции X|Y для переменных X =
    5’b10101, Y = 5’b00111?
5. Чему равен результат операции X&Y для переменных X =
    5’b10101, Y = 5’b00111?
6. Чему равен результат операции X^Y для переменных X =
    5’b10101, Y = 5’b00111?
7. Чему равен результат операции &X для X = 5’b10101?
8. Чему равен результат операции |X для X = 5’b10101?
9. Чему равен результат операции Y={A, B, C, D, 3’B101} для
    A=1’b1, B=1’b0, C=2’b11, D=2’b00?
10. Чему равен результат операции e = {2{1'b1,a,1'b0}} для
    a=4'b0110?
      2/9/2011          д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ   25
                             e-mail: hahanova@mail.ru
Контрольные вопросы и задания.2
   Синхронный счетчик может быть построен с использованием двухступенчатого
    JK-триггера. Ниже представлена вентильная схема JK-триггера. Если clear = 0,
    то триггер устанавливается в нулевое состояние. Первая ступень триггера
    сохраняет значения по положительному фронту сигнала clock, вторая – по
    отрицательному. Разработать ее Verilog-модели вентильного и dataflow-уровня.


                       a                                                     J   K   qn+1
        J                      y
                                                 c                           0   0   qn
                                                                      q      0   1    0
                                                                             1   0    1
    clear                                                                    1   1   q'n

                                                                      qbar
                                                 d
       K                       ybar
                       b

    clock
                               cbar
            2/9/2011           д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ                    26
                                      e-mail: hahanova@mail.ru
reset                            q
                   #1



                                 qbar
                   #1
 set                                               set         reset   qn+1
                                                     0          0      qn
                                                     0          1      0
                                                     1          0      1
                                                     1          1      ?
        2/9/2011        д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ             27
                             e-mail: hahanova@mail.ru

Contenu connexe

En vedette

How Can Tax Systems suport Banks in a Loss-Making Environment
How Can Tax Systems suport Banks in a Loss-Making EnvironmentHow Can Tax Systems suport Banks in a Loss-Making Environment
How Can Tax Systems suport Banks in a Loss-Making Environmentrafaruss
 
Hoa12 tai lieu on thi
Hoa12 tai lieu on thiHoa12 tai lieu on thi
Hoa12 tai lieu on thivjt_chjen
 
My Film Industry Questionnaire
My Film Industry QuestionnaireMy Film Industry Questionnaire
My Film Industry QuestionnaireColletteBatchelor
 
Adaptasjon bok film, film-bok
Adaptasjon bok film, film-bokAdaptasjon bok film, film-bok
Adaptasjon bok film, film-bokrikeng
 
Presentació centre
Presentació centrePresentació centre
Presentació centreiesMola
 
Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011
Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011
Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011adfiz
 
Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...
Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...
Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...Leif Embertson
 
методика обчислення основних показників діяльності лікувальних установ акушер...
методика обчислення основних показників діяльності лікувальних установ акушер...методика обчислення основних показників діяльності лікувальних установ акушер...
методика обчислення основних показників діяльності лікувальних установ акушер...Igor Nitsovych
 
Cau chuyen hoa hoc (phan 2)
Cau chuyen hoa hoc (phan 2)Cau chuyen hoa hoc (phan 2)
Cau chuyen hoa hoc (phan 2)vjt_chjen
 
Self publishing via blogging - updated
Self publishing via blogging - updatedSelf publishing via blogging - updated
Self publishing via blogging - updatedKounila Keo
 
Beyond Service With a Smile
Beyond Service With a SmileBeyond Service With a Smile
Beyond Service With a SmiletheGrapevine411
 
งานนำเสนอ1(pp)
งานนำเสนอ1(pp)งานนำเสนอ1(pp)
งานนำเสนอ1(pp)prapanee11
 
DI ITEK telemedicin erhvervsmuligheder 10apr14
DI ITEK telemedicin erhvervsmuligheder 10apr14DI ITEK telemedicin erhvervsmuligheder 10apr14
DI ITEK telemedicin erhvervsmuligheder 10apr14Christian Graversen
 
LTi news presentation
LTi news presentationLTi news presentation
LTi news presentationOsvaldo Glatt
 

En vedette (20)

How Can Tax Systems suport Banks in a Loss-Making Environment
How Can Tax Systems suport Banks in a Loss-Making EnvironmentHow Can Tax Systems suport Banks in a Loss-Making Environment
How Can Tax Systems suport Banks in a Loss-Making Environment
 
Hoa12 tai lieu on thi
Hoa12 tai lieu on thiHoa12 tai lieu on thi
Hoa12 tai lieu on thi
 
My Film Industry Questionnaire
My Film Industry QuestionnaireMy Film Industry Questionnaire
My Film Industry Questionnaire
 
Birth
BirthBirth
Birth
 
St matthew
St matthewSt matthew
St matthew
 
Adaptasjon bok film, film-bok
Adaptasjon bok film, film-bokAdaptasjon bok film, film-bok
Adaptasjon bok film, film-bok
 
Materi dasar-
Materi dasar-Materi dasar-
Materi dasar-
 
Birth
BirthBirth
Birth
 
Presentació centre
Presentació centrePresentació centre
Presentació centre
 
Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011
Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011
Kennissessie 'versterk positie van de klant' - Adfiz Nieuwjaarscongres 2011
 
Arev sirt
Arev sirtArev sirt
Arev sirt
 
Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...
Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...
Conceptual Model for Assessing Recreational Safety Related to Habitat Improve...
 
методика обчислення основних показників діяльності лікувальних установ акушер...
методика обчислення основних показників діяльності лікувальних установ акушер...методика обчислення основних показників діяльності лікувальних установ акушер...
методика обчислення основних показників діяльності лікувальних установ акушер...
 
Cau chuyen hoa hoc (phan 2)
Cau chuyen hoa hoc (phan 2)Cau chuyen hoa hoc (phan 2)
Cau chuyen hoa hoc (phan 2)
 
Self publishing via blogging - updated
Self publishing via blogging - updatedSelf publishing via blogging - updated
Self publishing via blogging - updated
 
Beyond Service With a Smile
Beyond Service With a SmileBeyond Service With a Smile
Beyond Service With a Smile
 
งานนำเสนอ1(pp)
งานนำเสนอ1(pp)งานนำเสนอ1(pp)
งานนำเสนอ1(pp)
 
DI ITEK telemedicin erhvervsmuligheder 10apr14
DI ITEK telemedicin erhvervsmuligheder 10apr14DI ITEK telemedicin erhvervsmuligheder 10apr14
DI ITEK telemedicin erhvervsmuligheder 10apr14
 
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
 
LTi news presentation
LTi news presentationLTi news presentation
LTi news presentation
 

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

  • 1. VERILOG 3. Dataflow уровень описания моделей Автоматизация проектирования компьютерных систем д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 2/9/2011 e-mail: hahanova@mail.ru 1
  • 2. Цель лекции и содержание  Цель – изучить принципы построения моделей вентильного и dataflow уровней  План 1. Стандартные логические элементы 2. Определенные пользователем примитивы 3. Задержки 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 2 e-mail: hahanova@mail.ru
  • 3. Dataflow-модели out=ab+c a #5 b e #4 out c 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 3 e-mail: hahanova@mail.ru
  • 4. Оператор непрерывного назначения.1 Синтаксис: assign [drive_strength] [delay] net_value = expression {,net_value = expression}; Примеры: assign out=i1&i2; assign addr[15:0]=addr1[15:0]^addr2[15:0]; assign {c_out, sum[3:0]}=a[3:0]+b[3:0]+c_in; 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 4 e-mail: hahanova@mail.ru
  • 5. Оператор непрерывного назначения.2 //Обычная форма wire out; assign out = i1 & i2; //Упрощенная формой wire out = i1 & i2;  Задержки в операторе назначения wire out; assign #10 out = i1 & i2; //Обычная форма wire #10 out = i1 & i2; //Упрощенная форма  Задержку линии можно также указать в момент ее декларации:. wire #10 out; //Описание задержки линии assign out = i1 & i2; // значение линии out будет // присвоено через 10 единиц времени 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 5 e-mail: hahanova@mail.ru
  • 6. Приоритеты операторов Оператор Описание + - ! ~ Унарные * / % Арифметические + - (binary) Бинарные << >> <<< >>> Сдвига < <= > = > Отношения == != === !== Равенства & ~& and nand ^ ~^ ^~ xor xnor | ~| or nor && Логическое and || Логическое or ?: Условный оператор 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 6 e-mail: hahanova@mail.ru
  • 7. Операторы Verilog Операторы Verilog Арифметические Побитовые Оператор Описание Оператор Описание a+b a плюс b ~b not a-b a минус b a&b and a*b a умножить на b a |b or a/b a разделить на b a^b xor a%b a по модулю b a ** b Степень a ^~ b, a ~^ b xnor Отношения Равенства Оператор Описание Оператор Описание a<b меньше a == b равно a>b больше a != b не равно a <= b меньше или равно a ===b равно a => b больше или равно a !== b не равно Логические Оператор Описание a && b a and b a || b a or b !a not a 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 7 e-mail: hahanova@mail.ru
  • 8. Арифметические операторы  Если хотя бы один бит операнда равен x, то результат равен x in1 = 4'b110x; in2 = 4'b1010; sum = in1 + in2; // результат операции сложения – 4'bx  Результат операции по модулю представляет собой остаток от деления двух чисел. Знак результата совпадает со знаком первого операнда. 10 % 3 // результат 1, остаток от деления 10 на 3 равен 1 17 % 3 // результат 2, остаток от деления 17 на 3 равен 2 12 % 3 // результат 0, нет остатка от деления -7 % 3 // результат -1, знак первого операнда 11 % -3 // результат 2 -4’d12 % 3 // результат 1, т.к. -4’d12 = 4'b0100%3 = 1 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 8 e-mail: hahanova@mail.ru
  • 9. Операторы логические, отношения и равенства  Логические операторы A=3; B=0; A&&B=0 A||B=1 !A=0 !B=1 A = 2'b0x; B = 2'b10; // Операнд с элементом x A && B = x // эквивалентно (x && 1)  Операторы отношения reg [3:0] a, b; a = 4’b1100; b = 4’b0110; a < b // равняется логическому 0 a > 8 // равняется логической 1 a <= b // равняется логическому 0 a >= 10 // равняется логической 1 a < 4’b1zzz // результат равен x a < 4’b1x01 // результат равен x  Операторы равенства reg [3:0] a, b; a = 4’b1100; b = 4’b101x; a == 4’b1100 // истина – логическая 1 a != 4’b1100 // ложь – логический 0 b == 4’b101x // результат равен x b != 4’b101x // результат равен x b === 4’b101x // истина – логическая 1 b !== 4’b101x // ложь – логический 0 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 9 e-mail: hahanova@mail.ru
  • 10. Побитовые операторы ~^ & 0 1 x z ^ 0 1 x z | 0 1 x z 0 1 x z ~ 0 1 x z ^~ 0 0 0 0 0 0 0 1 x x 0 0 1 x x 0 1 0 x x 1 0 X X 1 0 1 x x 1 1 0 x x 1 1 1 1 1 1 0 1 x x x 0 x x x x x x x x x x 1 x x x x x x x z 0 x x x z x x x x z x 1 x x z x x x x reg [7:0] a, b; a = 8’b1010xzxz; b = 8’b10010011; a&b // поразрядное И, результат 8’b100000xx; a|b // поразрядное ИЛИ, результат 8’b1011xx11; a^b // поразрядное по модулю 2, результат 8’b0011xxxx; a ~^ b // поразрядное по модулю 2 с инверсией выхода, // результат 8’b1100xxxx; ~a // поразрядная инверсия, результат 8’b0101xxxx; 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 10 e-mail: hahanova@mail.ru
  • 11. Операторы редукции  Операторы редукции или свертки  & (and), ~& (nand), | (or), ~| (nor), ^ (xor), ^~ или ~^ (xnor) Пример • &x // 1&0&1&0=1'b0 • |x // 1|0|1|0=1'b1 • ^x // 1^0^1^0=1'b0. 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 11 e-mail: hahanova@mail.ru
  • 12. Операторы сдвига Операторы сдвига Операторы сдвига  //x=4'b1100 Оператор Описание  y=x>>1 //y=4'b0110 a << b Сдвиг влево  y=x<<1 // y=4'b1000 a >> b Сдвиг вправо  y=x<<2 //y=4'b0000 a <<< b Знаковый сдвиг влево a >>> b Знаковый сдвиг вправо  reg [3:0] a; a = 4’b1111;  a << 3 = 4’b1000 a >> 3 = 4’b0001  a << 1’bz = 4’bxxxx a >> 1’bx = 4’bxxxx  reg [7:0] r8;  r8 = a >>> b; // Сдвиг a вправо на b разрядов,  // старшие биты заполняются значением a[7] 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 12 e-mail: hahanova@mail.ru
  • 13. Оператор конкатенации  Синтаксис: {expression | multiplier{expression}, expression | multiplier{expression}, . . .}  Примеры. //A=1'b1, B=2'b00, C=2'b10, D3'b110 Y={B, C} //Y=4'b0010 Y={A, B, C, D, 3'b001} //Y=11'b10010110001 Y={2{B}, C} //Y=6'b000010 Y={3{A}, 2{B}, C} //Y=9'b111000010 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 13 e-mail: hahanova@mail.ru
  • 14. Оператор условного назначение Синтаксис: condition_expr ? true_expr: false_expr; mux_2to_1 In0 Out module mux_2to_1 (out, In0, In1, Sel); In1 output Out; input In0, In1, Sel; Sel assign out = Sel ? In1 : In0; endmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 14 e-mail: hahanova@mail.ru
  • 15. Две модели мультиплексора 4 в 1 // Модель 1 module mux4_to_1 (out, i0, i1, i2, i3, s1, s0); output out; input i0, i1, i2, i3; input s1, s0; //Вложенный условный оператор assign out = s1 ? (s0 ? i3 : i2) : (s0 ? i1 : i0); endmodule // Модель 2 module mux4_to_1 (out, i0, i1, i2, i3, s1, s0); output out; input i0, i1, i2, i3; // входы данных input s1, s0; // управляющие входы assign out = (~s1 & ~s0 & i0) | (~s1 & s0 & i1) | (s1 & ~s0 & i2) | (s1 & s0 & i3); endmodule 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 15 e-mail: hahanova@mail.ru
  • 16. Системные задачи и функции.1  Системная задача $display служит для вывода информации на экран. $display | $displayb | $displayh | $displayo (p1, p2, p3, ...) ; Символ Описание формата %d or %D Десятичный формат %b or %B Двоичный формат %h or %H Шестнадцатиричный формат %o or %O Восьмеричный формат %c or %C Символы в формате ASCII %v or %V Интенсивности сигнала класса net %m or %M Иерархическое имя %s or %S В виде строки %t or %T Текущий формат времени 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 16 e-mail: hahanova@mail.ru
  • 17. Системные задачи и функции.2  Задача $monitor предлагает механизм для наблюдения за изменениями сигнала. $monitor | $monitorb | $monitorh | $monitoro (p1, p2, p3, ...) ; $monitoron; // влючить мониторинг $monitoroff; // выключить мониторинг .  Пример initial // блок инициализации begin $monitor($time, "clock = %b, reset = %b", clock, reset); end 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 17 e-mail: hahanova@mail.ru
  • 18. Системные задачи и функции.3  $stop [(n)]; $finish [(n)]; Режимы диагностических сообщений задач $stop и $finish n Сообщ ение 0 Отсутствует 1 Время моделирования Время моделированияи и работы CPU, 2 размер используемой памяти 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 18 e-mail: hahanova@mail.ru
  • 19. Системные задачи и функции.4 $printtimescale [ ( hierarchical_name ) ] ; Пример: // функции `timescale 1 ms / 1 us integer $time module a_dat; integer $stime initial real $realtime $printtimescale; endmodule Задача $printtimescale – выводит единицы измерения и точность вычисления времени для указанного модуля hierarchical_name. Системные функции $time и $stime возвращают текущее время моделирования в виде 64- и 32- битового целого числа, а функция $realtime – в вещественном формате. 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 19 e-mail: hahanova@mail.ru
  • 20. Работа с файлами  $fopen и $fclose  integer multi_channel_descriptor = $fopen ( " file_name " );  | integer fd = $fopen ( " file_name ", type );  $fclose ( multi_channel_descriptor ); Screen+Log File Otput  | $fclose (fd); $display $fdisplay  Пример $write $fwrite integer file1, file2; $strobe $fstrobe initial begin $monitor $fmonitor file1 = $fopen("file1"); file2 = $fopen("file2"); $display("The number used for file 1 is %0d", file1); ... $fclose(file1);$fclose(file2); end 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 20 e-mail: hahanova@mail.ru
  • 21. Функции работы с файлами  Чтение символов (байта)  c = $fgetc ( fd );  code = $ungetc ( c, fd );  Чтение строки str из файла fd  integer code = $fgets ( str, fd );  Чтение форматируемых данных  integer code = $fscanf ( fd, format, args ); • // чтение из файла, заданного fd  integer code = $sscanf ( str, format, args ); 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 21 e-mail: hahanova@mail.ru
  • 22. Чтение двоичных данных из файла  integer code = $fread( myreg, fd);  integer code = $fread( mem, fd);  integer code = $fread( mem, fd, start);  integer code = $fread( mem, fd, start, count);  integer code = $fread( mem, fd, , count); 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 22 e-mail: hahanova@mail.ru
  • 23. Загрузка памяти из файла  $readmemb ( " file_name " , memory_name [ , start_addr [ , finish_addr ] ] ) ;  | $readmemh ( " file_name " , memory_name [ , start_addr [ , finish_addr ] ] ) ;  Примеры  reg [7:0] mem[1:256];  initial $readmemh("mem.data", mem);  initial $readmemh("mem.data", mem, 16);  initial $readmemh("mem.data", mem, 128, 1); 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 23 e-mail: hahanova@mail.ru
  • 24. $random()  Размер возвращаемых значенй соответствует типу integer.  Пример использования функции $random. parameter SEED = 33; reg [31:0] vector; always @(posedge clock) vector = $random (SEED); 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 24 e-mail: hahanova@mail.ru
  • 25. Контрольные вопросы и задания.1 1. Что означает оператор a === b в Verilog? 2. Что означает оператор a !== b в Verilog? 3. Чему будет равен результат операции Y = {3{A}}, где A = 2’b1? 4. Чему равен результат операции X|Y для переменных X = 5’b10101, Y = 5’b00111? 5. Чему равен результат операции X&Y для переменных X = 5’b10101, Y = 5’b00111? 6. Чему равен результат операции X^Y для переменных X = 5’b10101, Y = 5’b00111? 7. Чему равен результат операции &X для X = 5’b10101? 8. Чему равен результат операции |X для X = 5’b10101? 9. Чему равен результат операции Y={A, B, C, D, 3’B101} для A=1’b1, B=1’b0, C=2’b11, D=2’b00? 10. Чему равен результат операции e = {2{1'b1,a,1'b0}} для a=4'b0110? 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 25 e-mail: hahanova@mail.ru
  • 26. Контрольные вопросы и задания.2  Синхронный счетчик может быть построен с использованием двухступенчатого JK-триггера. Ниже представлена вентильная схема JK-триггера. Если clear = 0, то триггер устанавливается в нулевое состояние. Первая ступень триггера сохраняет значения по положительному фронту сигнала clock, вторая – по отрицательному. Разработать ее Verilog-модели вентильного и dataflow-уровня. a J K qn+1 J y c 0 0 qn q 0 1 0 1 0 1 clear 1 1 q'n qbar d K ybar b clock cbar 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 26 e-mail: hahanova@mail.ru
  • 27. reset q #1 qbar #1 set set reset qn+1 0 0 qn 0 1 0 1 0 1 1 1 ? 2/9/2011 д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 27 e-mail: hahanova@mail.ru