«…лишь недалекие люди боятся конкуренции, а люди подлинного творчества ценят общение с каждым талантом…» А. Бек, Талант.

Спец курс (Избранные главы VHDL)/Вспомним VHDL — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(VHDL-основные конструкции)
(Слайд:Работа с редактором EMACS)
 
(не показаны 38 промежуточных версий 2 участников)
Строка 1: Строка 1:
 +
{{ИГСАПР_TOC}}
 
<slideshow style="custis" headingmark="Слайд:" incmark=":step" scaled="true" >
 
<slideshow style="custis" headingmark="Слайд:" incmark=":step" scaled="true" >
 
;title: '''Вспомнить все...'''
 
;title: '''Вспомнить все...'''
Строка 25: Строка 26:
  
 
==VHDL ссылки и литература==
 
==VHDL ссылки и литература==
 +
 +
{{Кр|<big>'''Все примеры взяты  с сайта БГУИР'''</big>}}
  
 
[http://www.bsuir.by/vhdl/ Сайт БГУИР с материалами по VHDL]
 
[http://www.bsuir.by/vhdl/ Сайт БГУИР с материалами по VHDL]
 +
*[[File:Шпаргалка по VHDL.pdf]]
 +
*[[File:Шпаргалка по VHDL(типы данных).pdf]]
 
[[Файл: Заставка_для_БГУИР.jpg]]
 
[[Файл: Заставка_для_БГУИР.jpg]]
  
 
+
===Слайд: Entity ===
=== Entity ===
+
 
<source lang="vhdl">
 
<source lang="vhdl">
 
library ieee;
 
library ieee;
Строка 43: Строка 47:
 
end xc;
 
end xc;
 
</source>
 
</source>
=== Слайд: Entity ===
 
<slides split="-----" width="400">
 
 
<div class="tleft" style="clear:none">[[Файл:Пример_entity.jpg|600px|Entity]]</div>
 
<div class="tleft" style="clear:none">[[Файл:Пример_entity.jpg|600px|Entity]]</div>
-----
 
<div class="tleft" style="clear:none">[[Файл:Пример_entity_код.jpg|600px|Entity]]</div>
 
</slides>
 
 
<br clear="all" />
 
<br clear="all" />
  
===Architecture===
+
===Слайд: Architecture===
 
<source lang="vhdl">architecture beh of trig is
 
<source lang="vhdl">architecture beh of trig is
 
begin  -- beh
 
begin  -- beh
 
end beh;</source>
 
end beh;</source>
===Слайд:Architecture===
 
<slides split="-----" width="400">
 
 
<div class="tleft" style="clear:none">[[Файл:Пример_architecture.jpg|600px|architecture]]</div>
 
<div class="tleft" style="clear:none">[[Файл:Пример_architecture.jpg|600px|architecture]]</div>
-----
 
<div class="tleft" style="clear:none">[[Файл:Пример_architecture_код.jpg|600px|architecture]]</div>
 
 
</slides>
 
 
<br clear="all" />
 
<br clear="all" />
  
===Process===
+
===Слайд: Process===
<source lang="vhdl"> trig_process: process (clk, rst)
+
 
 +
{| width=800px
 +
|<source lang="vhdl">
 +
  trig_process: process (clk, rst)
 
   begin  -- process trig_process
 
   begin  -- process trig_process
     if rst = '0' then                   -- asynchronous reset (active low)
+
     if rst = '0' then     -- asynchronous reset (active low)
 
       data_out <= '0';
 
       data_out <= '0';
 
     elsif clk'event and clk = '1' then  -- rising clock edge
 
     elsif clk'event and clk = '1' then  -- rising clock edge
 
       data_out <= data_in;
 
       data_out <= data_in;
 
     end if;
 
     end if;
   end process trig_process;</source>
+
   end process trig_process;
 +
</source>
  
=== Слайд: Process ===
 
  
<div class="tleft" style="clear:none">[[Файл:Process code.jpg|architecture]]</div>
 
<br clear="all" />
 
  
=== When Else ===
+
{{Info| Далее подробнее}}
 +
|}
 +
 
 +
===Слайд: When Else ===
 
<source lang="vhdl">
 
<source lang="vhdl">
 
t1 <= not t1 when clk'event and clk = '1' else
 
t1 <= not t1 when clk'event and clk = '1' else
 
       t1;
 
       t1;
 
</source>
 
</source>
 +
{{SideBar40|Данная запись является компактным описанием счетного триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, {{Зел|'''Leonardo Spectrum'''}} синтезирует данную конструкцию, а в ранних версиях {{Кр|'''Synopsys`а'''}}  эта запись не поддерживалась.}}
 +
<br clear="all" />
  
=== Слайд:When Else ===
+
=== Примеры кода на VHDL ===
 +
'''Логическое ИЛИ'''
  
{{SideBar40|Данная запись является компактным описанием триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, {{Зел|'''Leonardo Spectrum'''}} синтезирует данную конструкцию, а в ранних версиях {{Кр|'''Synopsys`а'''}} эта запись не поддерживалась.}}
+
<slides split="-----" width="200">
 +
<source lang="vhdl">
 +
entity and2 is -- декларация имени объекта проекта
 +
  port (x1,x2: in BIT;    -- декларация входных портов
 +
            y: out BIT); -- декларация выходного порта
 +
end and2;
  
<div style="border: 2px solid #AEA; padding: 0.4em; border-bottom: none; border-right: none; background: HoneyDew">
+
architecture functional of and2 is -- декларация архитектуры
<div class="tleft" style="clear:none">[[Файл:When_else_code.jpg|when else code]]</div>
+
begin
<br clear="all" />
+
  y <= x1 and x2; -- описание функции объекта
</div>
+
end functional;</source>
 +
 
 +
-----
 +
'''Схема посложнее'''
 +
<source lang="vhdl">
 +
entity add1 is
 +
  port (b1,b2 : in  BIT;
 +
        c1,s1 : out BIT);
 +
end add1;
 +
 
 +
architecture struct_1 of add1 is
 +
begin
 +
  s1 <= ((b1 and (not b2)) or ((not b1) and b2));
 +
  c1 <= b1 and b2;
 +
end struct_1;</source>
 +
 
 +
-----
 +
'''Описание несколько схем в одном теле архитектуры'''
 +
<source lang="vhdl">
 +
entity add2 is
 +
  port (c1, a1, a2 : in  BIT;
 +
        c2, s2    : out BIT);
 +
end add2;
 +
 
 +
architecture struct_1 of add2 is
 +
begin
 +
  s2 <= ((not c1) and (not a1) and a2) or
 +
        ((not c1) and  a1 and (not a2)) or
 +
        ( c1 and (not a1)and (not a2) ) or
 +
        (a1 and a2 and c1);
 +
  c2 <= (a1 and c1) or (a2 and c1) or (a1 and a2);
 +
end struct_1;
 +
</source>
 +
 
 +
-----
 +
'''Использование компонент для выполнения повторяющихся частей кода'''
 +
<source lang="vhdl">entity mult_2 is
 +
port (s1,s0,r1,r0 : in BIT;
 +
        t3,t2,t1,t0 : out BIT);
 +
end mult_2;
 +
 
 +
architecture structure of mult_2 is
 +
component add1
 +
port (b1,b2: in BIT;
 +
      c1,s1: out BIT);
 +
end component;
 +
 
 +
signal p1,p2,p3,p4 : BIT;
 +
begin
 +
t0 <= r0 and s0; -- элемент el_1
 +
p2 <= r0 and s1; -- элемент el_3
 +
p1 <= r1 and s0; -- элемент el_2
 +
p4 <= r1 and s1; -- элемент el_4
 +
circ1: add1 port map (p1, p2, p3,t1);
 +
circ2: add1 port map (p3,p4,t3,t2);
 +
end structure;
 +
</source>
 +
 
 +
-----
 +
'''Подключение различных компонент'''
 +
<source lang="vhdl">
 +
entity adder_2 is
 +
port (a1, b1, a2,b2 : in BIT;
 +
      c2,s2,s1 : out BIT);
 +
end adder_2;
 +
 
 +
architecture structure of adder_2 is
 +
component add1
 +
port (b1,b2: in BIT;
 +
      c1,s1: out BIT);
 +
end component;
 +
 
 +
component add2
 +
port(c1, a1,a2:in BIT;
 +
      c2,s2:out BIT);
 +
end component;
 +
signal c1: BIT;
 +
begin
 +
 
 +
circ1: add1 port map (b1,b2, c1,s1);
 +
circ2: add2 port map (c1,a1,a2,c2,s2);
 +
end structure;
 +
</source>
 +
 
 +
-----
 +
'''Иерархия в структуре проета'''
 +
<source lang="vhdl">entity vlsi_1 is
 +
port (a2, a1, b2,b1,x:in BIT;
 +
      d4,d3,d2,d1: out BIT);
 +
end vlsi_1;
 +
architecture structure of vlsi_1 is
 +
 
 +
component adder_2 -- декларация компонента
 +
port (a1,b1,a2,b2: in BIT;
 +
      c2,s2,s1: out BIT);
 +
end component;
 +
component mult_2 -- декларация компонента
 +
port(s1,s0, r1,r0: in BIT;
 +
      t3,t2,t1,t0: out BIT);
 +
end component;
 +
component dd -- декларация компонента
 +
port (x1,x2,x3,x4,x5,x6 : in BIT;
 +
      y1,y2,y3 : out BIT);
 +
end component;
 +
component yy -- декларация компонента
 +
port(a2,a1,b2,b1,x : in BIT;
 +
      f6,f5,f4,f3,f2,f1 : out bit);
 +
end component;
 +
signal f1,f2,f3,f4,f5,f6,t4,t3,t2,t1,c2,s2,s1: BIT;  --  декларация внутренних сигналов
 +
 
 +
begin
 +
circ1: yy port map (a2,a1, b2,b1, x, f6,f5,f4,f3,f2,f1);
 +
circ2: mult_2 port map (f2,f1, b2,b1, d4,t3,t2,t1);
 +
circ3: adder_2 port map (f4,f3, f6,f5,c2,s2,s1);
 +
circ4: dd port map (s1,t1,s2,t2,c2,t3, d1,d2,d3);
 +
end structure;
 +
</source>
 +
 
 +
-----
 +
'''Схема без иерархии'''
 +
<source lang="vhdl">entity YY is
 +
port (a2,a1,b2,b1, x : in BIT;
 +
        f6,f5,f4,f3,f2,f1 : out BIT);
 +
end YY;
 +
architecture struct_1 of YY is
 +
begin
 +
f1<= x and a1;
 +
f2<= x and a2;
 +
f3<= not x and a1;
 +
f4 <= not x and a2;
 +
f5 <= not x and b1;
 +
f6 <= not x and b2;
 +
end struct_1;
 +
</source>
 +
-----
 +
'''Паралельные операторы'''
 +
<source lang="vhdl">entity dd is
 +
port (x1,x2,x3,x4,x5,x6 : in BIT;
 +
        y1, y2, y3  : out BIT);
 +
end dd;
 +
architecture struct_1 of dd is
 +
begin
 +
y1<= x1 or x2;
 +
y2<= x3 or x4;
 +
y3<= x5 or x6;
 +
end struct_1;</source>
 +
-----
 +
'''Последовательные операторы'''
 +
<source lang="vhdl">entity vlsi_1 is
 +
port (a, b : in integer range 0 to 3;
 +
      x : in BIT;
 +
      D : out integer  range 0 to 15);
 +
end vlsi_1;
 +
 
 +
architecture functional of vlsi_1 is
 +
signal e: integer range 0 to 15;
 +
begin
 +
p0: process(a, b, x)
 +
begin
 +
if (x='0') then
 +
e <= a + b;
 +
elsif (x = '1') then
 +
e <= a * b ;
 +
end if;
 +
end process;
 +
D <= e;
 +
end functional;</source>
 +
 
 +
-----
 +
'''Использование функций'''
 +
<source lang="vhdl">package multiplexer is
 +
  procedure MX(
 +
      signal SEL  : in  bit;
 +
      signal x0 : in  bit;
 +
      signal x1 : in  bit;
 +
      signal F : out bit);
 +
end multiplexer;
 +
package body multiplexer is
 +
  procedure MX(
 +
      signal SEL  : in  bit;
 +
      signal x0 : in  bit;
 +
      signal x1 : in  bit;
 +
      signal F : out bit) is
 +
  begin
 +
      case SEL is
 +
        when '0'    => F <= x0;
 +
        when others => F <= x1;
 +
      end case;
 +
  end MX;
 +
end multiplexer;
 +
</source>
 +
-----
 +
'''Несколько архитектур'''
 +
<source lang="vhdl">entity ANDOR is
 +
            port (x1, x2, x3 :     in bit;
 +
                  f      :       out bit);
 +
end ANDOR;
 +
architecture RTL1 of ANDOR is
 +
begin
 +
  f <= (x1 and x2) or x3;
 +
end RTL1;
 +
architecture RTL2 of ANDOR is
 +
  signal w : bit;
 +
begin
 +
  w <= x1 and x2;
 +
  p1 : process (w, x3)
 +
  begin
 +
      f <= w or x3;
 +
  end process p1;
 +
end RTL2;</source>
 +
 
 +
-----
 +
'''Понятие сигнала'''
 +
<source lang="vhdl">entity ANDOR is
 +
            port(      x1, x2, x3 :    in bit;
 +
                        f :  out bit);
 +
end ANDOR;
 +
architecture example of ANDOR is
 +
  signal w : bit;
 +
begin
 +
  p0 :  w <= x1 and x2 after 10 ns;
 +
  p1 : process (w, x3)
 +
  begin
 +
      f <= w or x3 after 20 ns;
 +
  end process p1;
 +
end example;</source>
 +
 
 +
-----
 +
''' Дельта-задержка '''
 +
 
 +
<source lang="vhdl">entity ANDOR is
 +
            port(      x1, x2, x3 :    in bit;
 +
                        f :  out bit);
 +
end ANDOR;
 +
architecture DELTA of ANDOR is
 +
            signal w:bit;
 +
begin
 +
p0: w<= x1 and x2; -- нет слова after
 +
p1: process(w, x3)
 +
      begin
 +
      f<=w or x3;      -- нет слова after
 +
      end process p1;
 +
end DELTA;</source>
 +
 
 +
-----
 +
'''Последовательные операторы'''
 +
<source lang="vhdl">    entity VAR is
 +
    end VAR;
 +
    architecture functional of VAR is
 +
    signal A, B, J  : bit_vector(1 downto 0);
 +
    signal E, F, G  : bit;
 +
    begin
 +
    p0 : process (A, B, E, F, G, J)
 +
    variable C, D, H, Y : bit_vector(1 downto 0);
 +
    variable W, Q      : bit_vector(3 downto 0);
 +
    variable Z          : bit_vector(0 to 7);
 +
    variable X          : bit;
 +
    variable DATA  : bit_vector(31 downto 0);
 +
    begin
 +
    C        := "11";
 +
    X        := E and F;
 +
    Y        := H nand J;
 +
    Z(0 to 3) := C & D;            --  конкатенация
 +
    Z(4 to 7) := (not A) & (A nor B);  -- конкатенация
 +
    D        := ('0', '0');            --  агрегат
 +
    W  := (2 downto 1 => G, 3 => '1', others => '0');  -- агрегат
 +
    DATA      := (others => '1');                -- агрегат
 +
    end process;
 +
    end functional;
 +
</source>
 +
-----
 +
'''Тригер и логика'''
 +
<source lang="vhdl">entity IFSTMT is
 +
  port (
 +
      RSTn, CLK, EN, PL : in  bit;
 +
      DATA              : in  integer range 0 to 31;
 +
      COUNT            : out integer range 0 to 31);
 +
end IFSTMT;
 +
architecture RTL of IFSTMT is
 +
  signal COUNT_VALUE : integer range 0 to 31;
 +
begin
 +
  p0 : process (RSTn, CLK)
 +
  begin
 +
      if (RSTn = '0') then
 +
        COUNT_VALUE <= 0;
 +
      elsif (CLK'event and CLK = '1') then
 +
        if (PL = '1') then
 +
            COUNT_VALUE <= DATA;
 +
        elsif (EN = '1') then
 +
            if (COUNT_VALUE = 31) then
 +
              COUNT_VALUE <= 0;
 +
            else
 +
              COUNT_VALUE <= COUNT_VALUE + 1;
 +
            end if;
 +
        end if;
 +
      end if;
 +
  end process;
 +
  COUNT <= COUNT_VALUE;
 +
end RTL;
 +
</source>
 +
-----
 +
''' Параллельные операторы'''
 +
 
 +
<source lang="vhdl">    entity call_parallel is
 +
        port (
 +
          data_inp  : in  bit_vector(5 downto 0);
 +
          data_out : out bit_vector(1 downto 0));
 +
    end call_parallel;
 +
    architecture RTL of call_parallel is
 +
        procedure N_XOR (
 +
          signal x1, x2, x3 : in  bit;
 +
          signal f          : out bit) is
 +
        begin
 +
          f <= x1 xor x2  xor x3;
 +
        end N_XOR;
 +
    begin
 +
        N_XOR (x1 => data_inp(5), x2 => data_inp(4), x3 => data_inp(3), f => data_out(1));
 +
        p0 : N_XOR (data_inp(2), data_inp(1), data_inp(0), data_out(0));
 +
    end RTL;</source>
 +
 
 +
-----
 +
'''оператор when else'''
 +
<source lang="vhdl">entity example_condition is
 +
  port (
 +
      x1, x2, x3, x4 : in bit;
 +
    condition          : in  bit_vector(1 downto 0);
 +
      F                : out bit);
 +
end example_condition;
 +
 
 +
architecture first of example_condition is
 +
begin
 +
  F <= x1 when condition = "00" else
 +
        x2 when condition = "01" else
 +
        x3 when condition = "10" else
 +
        x4;
 +
end first;
 +
 
 +
architecture second of example_condition is
 +
begin
 +
  process (x1, x2, x3, x4, condition )
 +
  begin
 +
      if (condition = "00") then
 +
        F <= x1;
 +
      elsif (condition = "01") then
 +
        F <= x2;
 +
      elsif (condition = "10") then
 +
        F <= x3;
 +
      else
 +
        F <= x4;
 +
      end if;
 +
  end process;
 +
end second;</source>
 +
-----
 +
'''оператор with vs case'''
 +
<source lang="vhdl">entity example_selection is
 +
  port (        x1, x2, x3, x4 : in  bit;
 +
                      selection : in bit_vector(1 downto 0);
 +
                              F : out bit);
 +
end example_selection;
 +
 
 +
architecture first of example_selection is
 +
begin
 +
  with selection select
 +
  F <= x1 when "00",
 +
        x2 when "01",
 +
        x3 when "10",
 +
        x4 when others;
 +
end first;
 +
 
 +
architecture second of example_selection is
 +
begin
 +
  process (x1, x2, x3, x4, selection)
 +
  begin
 +
      case selection is
 +
        when "00"  =>  F <= x1;
 +
        when "01"  =>  F <= x2;
 +
        when "10"  =>  F <= x3;
 +
        when others =>  F <= x4;
 +
      end case;
 +
  end process;
 +
end second;
 +
</source>
 +
-----
 +
'''Тригер со сбросом'''
 +
<source lang="vhdl">entity DFF is
 +
        port (
 +
          RSTn, CLK, D : in  bit;
 +
          Q            : out bit);
 +
    end DFF;
 +
architecture RTL of DFF is
 +
begin
 +
        process (RSTn, CLK)
 +
      begin
 +
          if (RSTn = '0') then
 +
              Q <= '0';
 +
          elsif (CLK'event and CLK = '1') then
 +
              Q <= D;
 +
          end if;
 +
        end process;
 +
    end RTL;</source>
 +
 
 +
-----
 +
'''Сдвиговый регистр на тригерах (структурное описание)'''
 +
<source lang="vhdl">    entity SHIFT is
 +
        port (
 +
          RSTn, CLK, SI : in  bit;
 +
          SO            : out bit);
 +
    end SHIFT;
 +
    architecture RTL1 of SHIFT is
 +
        component DFF
 +
        port (
 +
          RSTn, CLK, D : in  bit;
 +
          Q            : out bit);
 +
        end component;
 +
        signal T : bit_vector(6 downto 0);
 +
    begin
 +
        bit7 : DFF
 +
            port map (RSTn => RSTn, CLK => CLK, D => SI, Q => T(6));
 +
        bit6 : DFF
 +
            port map (RSTn, CLK, T(6), T(5));
 +
        bit5 : DFF
 +
            port map (RSTn, CLK, T(5), T(4));
 +
        bit4 : DFF
 +
            port map (CLK => CLK, RSTn => RSTn, D => T(4), Q => T(3));
 +
        bit3 : DFF
 +
            port map (RSTn, CLK, T(3), T(2));
 +
        bit2 : DFF
 +
          port map (RSTn, CLK, T(2), T(1));
 +
        bit1 : DFF
 +
          port map (RSTn, CLK, T(1), T(0));
 +
        bit0 : DFF
 +
          port map (RSTn, CLK, T(0), SO);
 +
    end RTL1;</source>
 +
 
 +
-----
 +
'''Сумматор на N-разрядов'''
 +
<source lang="vhdl">entity adder_N_comp is
 +
port (a, b : in bit_vector (0 to 6);
 +
        s : out bit_vector (0 to 6);
 +
        c  : out bit);
 +
end adder_N_comp;
 +
architecture structural of adder_N_comp is
 +
component add1
 +
port (b1,b2: in BIT;
 +
      c1,s1: out BIT);
 +
end component;
 +
component add2
 +
port(c1, a1,a2:in BIT;
 +
      c2,s2:out BIT);
 +
end component;
 +
signal c_in : bit_vector (0 to 5);
 +
begin
 +
p0: add1    port map (b1 => a(0), b2 => b(0), c1 => c_in(0), s1 => s(0));
 +
p1: add2    port map (c1=>c_in(0), a1=>a(1), a2=>b(1), c2=>c_in(1), s2=>s(1));
 +
p2: add2    port map (c1=>c_in(1), a1=>a(2), a2=>b(2), c2=>c_in(2), s2=>s(2));
 +
p3: add2    port map (c1=>c_in(2), a1=>a(3), a2=>b(3), c2=>c_in(3), s2=>s(3));
 +
p4: add2    port map (c1=>c_in(3), a1=>a(4), a2=>b(4), c2=>c_in(4), s2=>s(4));
 +
p5: add2    port map (c1=>c_in(4), a1=>a(5), a2=>b(5), c2=>c_in(5), s2=>s(5));
 +
p6: add2    port map (c1=>c_in(5), a1=>a(6), a2=>b(6), c2=>c, s2=>s(6));
 +
end structural;</source>
 +
 
 +
-----
 +
'''Оператор generate'''
 +
<source lang="vhdl">    entity SHIFT is
 +
        port (
 +
          RSTn, CLK, SI : in  bit;
 +
          SO            : out bit);
 +
    end SHIFT;
 +
architecture RTL2 of SHIFT is
 +
  component DFF
 +
  port (
 +
      RSTn, CLK, D : in  bit;
 +
      Q            : out bit);
 +
  end component;
 +
  signal T : bit_vector(6 downto 0);
 +
begin
 +
  g0 : for i in 7 downto 0 generate
 +
      g1 : if (i = 7) generate
 +
        bit7 : DFF
 +
      port map (RSTn => RSTn, CLK => CLK, D => SI, Q=> T(6));
 +
      end generate;
 +
      g2 : if (i > 0) and (i < 7) generate
 +
        bitm : DFF
 +
            port map (RSTn, CLK, T(i), T(i-1));
 +
      end generate;
 +
      g3 : if (i = 0) generate
 +
        bit0 : DFF
 +
            port map (RSTn, CLK, T(0), SO);
 +
      end generate;
 +
  end generate;
 +
end RTL2;</source>
 +
 
 +
</slides>
  
 
==Слайд:Работа с редактором EMACS==
 
==Слайд:Работа с редактором EMACS==
 
'''''{{Сн|Emacs }}(Ема́кс, Е́макс, также И́макс) — семейство многофункциональных расширяемых текстовых редакторов.'''''
 
'''''{{Сн|Emacs }}(Ема́кс, Е́макс, также И́макс) — семейство многофункциональных расширяемых текстовых редакторов.'''''
  
<slides split="-----" width="400">
+
{{Гол|'''''Слово «Emacs» берет начало в аббревиатуре «Editor MACroS», наборе макросов для редактора TECO, написанном Столлманом и другими в 1976 году'''''}}
[[Файл:Марк Цукерберг фото емакс]]
+
 
</slides>
+
<s>[http://simhard.com/ftp/files/emacs-22.3-bin-i386.zip Скачать emacs emacs-22.3-bin-i386.zip]</s> или [https://ftp.gnu.org/gnu/emacs/windows/emacs-24.3-bin-i386.zip emacs-24.3-bin-i386.zip]
 +
 
 +
Для запуска распакуйте zip архив и запустите
  
 +
.\emacs-23.1-bin-i386\emacs-23.1\bin\runemacs.exe
  
 +
<!-- [http://vidokq.byethost7.com/mediawiki4intranet/video/emacs_totorial.wmv Небольшая демонстрация возможностей emacs(видео)]-->
 
===Слайд: Первый запуск ===
 
===Слайд: Первый запуск ===
 
Команда для запуска
 
Команда для запуска
Строка 212: Строка 713:
 
* Возможность работы с <big>{{Сн|'''с несколькими окнами одновременно'''}}</big>
 
* Возможность работы с <big>{{Сн|'''с несколькими окнами одновременно'''}}</big>
 
* И многое, многое другое полезное.
 
* И многое, многое другое полезное.
 
  
 
==Слайд: Работа с системой моделирования QuestaSim от Mentor Graphics :step ==
 
==Слайд: Работа с системой моделирования QuestaSim от Mentor Graphics :step ==
Строка 228: Строка 728:
 
** Поддержка пакетов и стандарта '''верификации''' OVM
 
** Поддержка пакетов и стандарта '''верификации''' OVM
 
* Пакет моделирования подключается и в {{Сн|'''MentorGraphics'''}} и в {{Сн|'''Cadence'''}}
 
* Пакет моделирования подключается и в {{Сн|'''MentorGraphics'''}} и в {{Сн|'''Cadence'''}}
 
  
  
Строка 235: Строка 734:
  
 
<slides split="-----" width="500">
 
<slides split="-----" width="500">
[[Файл:Questa_adms_ex.jpg|700px|Окно программы QuestaSim]]
+
[[Файл:Questa_adms_ex.jpg|Окно программы QuestaSim]]
 
</slides>
 
</slides>
  
Строка 251: Строка 750:
 
* Запуск исполнения и просмотр результата
 
* Запуск исполнения и просмотр результата
 
** {{Сн|'''<big>run</big>'''}}
 
** {{Сн|'''<big>run</big>'''}}
 +
 +
===Слайд: Скрин каст===
 +
<!-- *[[File:Скрин_каст_по_работе_с_QuestaSim.flv]]-->
 +
*[[File:Руководство_по_работе_с_QuestaSim.pdf]]
 +
*[[File:Основные команды QuestaSim.pdf]]
 +
 +
===Слайд: Основные приемы работы ===
 +
<slides split="-----" width="400" >
 +
 +
''{{Ор|<big>'''Главное окно'''</big>}}''
 +
 +
[[Файл:Окно_моделсим_10_се.jpg]]
 +
-----
 +
''{{Ор|<big>'''Выбор рабочей дирретории '''</big>}}''
 +
 +
'''"File > Change Directory"'''
 +
 +
[[Файл:Окно_рабочая_дирректория_для_моделсима.jpg]]
 +
-----
 +
''{{Ор|<big>'''Создание библиотеки или выбор рабочей'''</big>}}''
 +
 +
'''"File > New > Library"'''
 +
 +
[[Файл:Окно_создания_бибилиотеки.jpg]]
 +
-----
 +
''{{Ор|<big>'''Компиляция проекта'''</big>}}''
 +
 +
'''"Compile > Compile"'''
 +
 +
[[Файл:Окно_компиляции_проекта.jpg]]
 +
-----
 +
''{{Ор|<big>'''Загрузка тестового окружения и запуск моделирования'''</big>}}''
 +
 +
'''"Simulate > Start Simulation"'''
 +
 +
[[Файл:Запуск_тест_бенча.jpg]]
 +
-----
 +
''{{Ор|<big>'''Добавление сигналов для отрисовки и наблюдения'''</big>}}''
 +
 +
'''"Add > To Wave > ..."'''
 +
 +
[[Файл:Окно_добавления_сигналов_для_отрисовки.jpg]]
 +
-----
 +
''{{Ор|<big>'''Запуск моделирования'''</big>}}''
 +
 +
'''"Simulate > Run > Run..."'''
 +
 +
[[Файл:Окно_моделирования_работа_с_сигнали_выделение.jpg]]
 +
 +
-----
 +
''{{Ор|<big>'''Перезапуск моделирования'''</big>}}''
 +
 +
'''"Simulate > Run > Restart "'''
 +
 +
[[Файл:Окно_перезапуска_моделирвоания.jpg]]
 +
 +
-----
 +
''{{Ор|<big>'''Работа с окном отображения сигналов'''</big>}}''
 +
 +
[[Файл:Работа_с_окном_моделирвоания.jpg]]
 +
-----
 +
''{{Ор|<big>'''Разные фичи в окне моделирования'''</big>}}''
 +
 +
[[Файл:Разные_фичи_в_окне_моделирования.jpg]]
 +
 +
</slides>
 +
[[Категория:Лекции]]

Текущая версия на 00:27, 29 сентября 2015

Лекции ИГСАПР

Лекции

Практические
Тесты

Лабораторные

Табель

Доп. материалы

Заголовок
Вспомнить все...
Автор
Зайцев В.С.
Нижний колонтитул
Спец курс (Избранные главы VHDL)/Вспомним VHDL
Дополнительный нижний колонтитул
Зайцев В.С., 00:27, 29 сентября 2015


Содержание

Total Recall

[на всё окно]

Слайд:Языки описания аппаратуры

  • С начала 70-х годов стала актуальна проблема создания стандартного средства документации схем и алгоритмов дискретных систем переработки информации, пригодных как для восприятия человеком, так и для обработки в ЭВМ.
  • Этим средством явились языки VHDL и Verilog
  • Стандартность (лучше плохой, чем никакого)
  • Многоаспектность и многоуровневость
    • Схемы
    • Тестовые окружения
    • Диапазон детализации
  • Человеко-машинность
    • Язык описания
    • Средство документирования
  • Было много предшественников
    • «МОДИС », «Автокод», «Модис-В78», «MPL», «OCC-2», «Форос», «Алгоритмы», «Пульс», «Симпатия»
    • CDL, DDL, ISPS, CONLAN, HILO

VHDL ссылки и литература

Все примеры взяты с сайта БГУИР

Сайт БГУИР с материалами по VHDL

Заставка для БГУИР.jpg

Слайд: Entity

library ieee;
use ieee.std_logic_1164.all;
 
entity xc is
 
  port (
    clk : in  std_logic;
    d   : out std_logic);
 
end xc;
Entity


Слайд: Architecture

architecture beh of trig is
begin  -- beh
end beh;
architecture


Слайд: Process

  trig_process: process (clk, rst)
  begin  -- process trig_process
    if rst = '0' then     -- asynchronous reset (active low)
      data_out <= '0';
    elsif clk'event and clk = '1' then  -- rising clock edge
      data_out <= data_in;
    end if;
  end process trig_process;


Информация

Далее подробнее

Слайд: When Else

t1 <= not t1 when clk'event and clk = '1' else
      t1;

Данная запись является компактным описанием счетного триггера, но она не соответствует стандарту синтезируемого подмножества. Поэтому не все системы синтеза её поддерживают. Например, Leonardo Spectrum синтезирует данную конструкцию, а в ранних версиях Synopsys`а эта запись не поддерживалась.


Примеры кода на VHDL

Логическое ИЛИ

entity and2 is -- декларация имени объекта проекта
  port (x1,x2: in BIT;    -- декларация входных портов
            y: out BIT);  -- декларация выходного порта
end and2;
 
architecture functional of and2 is -- декларация архитектуры
begin
  y <= x1 and x2; -- описание функции объекта
end functional;
Схема посложнее
entity add1 is
  port (b1,b2 : in  BIT;
        c1,s1 : out BIT);
end add1;
 
architecture struct_1 of add1 is
begin
  s1 <= ((b1 and (not b2)) or ((not b1) and b2));
  c1 <= b1 and b2;
end struct_1;
Описание несколько схем в одном теле архитектуры
entity add2 is
  port (c1, a1, a2 : in  BIT;
        c2, s2     : out BIT);
end add2;
 
architecture struct_1 of add2 is
begin
  s2 <= ((not c1) and (not a1) and a2) or
        ((not c1) and  a1 and (not a2)) or
        ( c1 and (not a1)and (not a2) ) or
        (a1 and a2 and c1);
  c2 <= (a1 and c1) or (a2 and c1) or (a1 and a2);
end struct_1;
Использование компонент для выполнения повторяющихся частей кода
entity mult_2 is
port (s1,s0,r1,r0 : in BIT;
        t3,t2,t1,t0 : out BIT);
end mult_2;
 
architecture structure of mult_2 is
component add1
port (b1,b2: in BIT;
      c1,s1: out BIT);
end component;
 
signal p1,p2,p3,p4 : BIT;
begin
t0 <= r0 and s0; -- элемент el_1
p2 <= r0 and s1; -- элемент el_3
p1 <= r1 and s0; -- элемент el_2
p4 <= r1 and s1; -- элемент el_4
circ1: add1 port map (p1, p2, p3,t1);
circ2: add1 port map (p3,p4,t3,t2);
end structure;
Подключение различных компонент
entity adder_2 is
port (a1, b1, a2,b2 : in BIT;
       c2,s2,s1 : out BIT);
end adder_2;
 
architecture structure of adder_2 is
component add1
 port (b1,b2: in BIT;
       c1,s1: out BIT);
end component;
 
component add2
 port(c1, a1,a2:in BIT;
      c2,s2:out BIT);
end component;
signal c1: BIT;
begin
 
circ1: add1 port map (b1,b2, c1,s1);
circ2: add2 port map (c1,a1,a2,c2,s2);
end structure;
Иерархия в структуре проета
entity vlsi_1 is
port (a2, a1, b2,b1,x:in BIT;
       d4,d3,d2,d1: out BIT);
end vlsi_1;
architecture structure of vlsi_1 is
 
component adder_2 -- декларация компонента
port (a1,b1,a2,b2: in BIT;
       c2,s2,s1: out BIT);
end component;
component mult_2 -- декларация компонента
port(s1,s0, r1,r0: in BIT;
      t3,t2,t1,t0: out BIT);
end component;
component dd -- декларация компонента
port (x1,x2,x3,x4,x5,x6 : in BIT;
      y1,y2,y3 : out BIT);
end component;
component yy -- декларация компонента
port(a2,a1,b2,b1,x : in BIT;
      f6,f5,f4,f3,f2,f1 : out bit);
end component;
signal f1,f2,f3,f4,f5,f6,t4,t3,t2,t1,c2,s2,s1: BIT;  --  декларация внутренних сигналов
 
begin
circ1: yy port map (a2,a1, b2,b1, x, f6,f5,f4,f3,f2,f1);
circ2: mult_2 port map (f2,f1, b2,b1, d4,t3,t2,t1);
circ3: adder_2 port map (f4,f3, f6,f5,c2,s2,s1);
circ4: dd port map (s1,t1,s2,t2,c2,t3, d1,d2,d3);
end structure;
Схема без иерархии
entity YY is
port (a2,a1,b2,b1, x : in BIT;
        f6,f5,f4,f3,f2,f1 : out BIT);
end YY;
architecture struct_1 of YY is
begin
f1<= x and a1;
f2<= x and a2;
f3<= not x and a1;
f4 <= not x and a2;
f5 <= not x and b1;
f6 <= not x and b2;
end struct_1;
Паралельные операторы
entity dd is
port (x1,x2,x3,x4,x5,x6 : in BIT;
        y1, y2, y3  : out BIT);
end dd;
architecture struct_1 of dd is
begin
y1<= x1 or x2;
y2<= x3 or x4;
y3<= x5 or x6;
end struct_1;
Последовательные операторы
entity vlsi_1 is
port (a, b : in integer range 0 to 3;
      x : in BIT;
      D : out integer  range 0 to 15);
end vlsi_1;
 
architecture functional of vlsi_1 is
signal e: integer range 0 to 15;
begin
p0: process(a, b, x)
begin
if (x='0') then
e <= a + b;
elsif (x = '1') then
e <= a * b ;
end if;
end process;
D <= e;
end functional;
Использование функций
package multiplexer is
   procedure MX(
      signal SEL  : in  bit;
      signal x0 : in  bit;
      signal x1 : in  bit;
      signal F : out bit);
end multiplexer;
package body multiplexer is
   procedure MX(
      signal SEL  : in  bit;
      signal x0 : in  bit;
      signal x1 : in  bit;
      signal F : out bit) is
   begin
      case SEL is
         when '0'    => F <= x0;
         when others => F <= x1;
      end case;
   end MX;
end multiplexer;
Несколько архитектур
entity ANDOR is
            port (x1, x2, x3 :     in bit;
                  f       :       out bit);
end ANDOR;
architecture RTL1 of ANDOR is
begin
   f <= (x1 and x2) or x3;
end RTL1;
architecture RTL2 of ANDOR is
   signal w : bit;
begin
   w <= x1 and x2;
   p1 : process (w, x3)
   begin
      f <= w or x3;
   end process p1;
end RTL2;
Понятие сигнала
entity ANDOR is
            port(      x1, x2, x3 :    in bit;
                         f :   out bit);
end ANDOR;
architecture example of ANDOR is
   signal w : bit;
begin
   p0 :  w <= x1 and x2 after 10 ns;
   p1 : process (w, x3)
   begin
      f <= w or x3 after 20 ns;
   end process p1;
end example;

Дельта-задержка

entity ANDOR is
            port(      x1, x2, x3 :    in bit;
                         f :   out bit);
end ANDOR;
architecture DELTA of ANDOR is
            signal w:bit;
begin
p0: w<= x1 and x2; -- нет слова after
p1: process(w, x3)
      begin
      f<=w or x3;      -- нет слова after
      end process p1;
end DELTA;
Последовательные операторы
     entity VAR is
     end VAR;
     architecture functional of VAR is
     signal A, B, J  : bit_vector(1 downto 0);
     signal E, F, G  : bit;
     begin
     p0 : process (A, B, E, F, G, J)
     variable C, D, H, Y : bit_vector(1 downto 0);
     variable W, Q       : bit_vector(3 downto 0);
     variable Z          : bit_vector(0 to 7);
     variable X          : bit;
     variable DATA   : bit_vector(31 downto 0);
     begin
     C         := "11";
     X         := E and F;
     Y         := H nand J;
     Z(0 to 3) := C & D;            --  конкатенация
     Z(4 to 7) := (not A) & (A nor B);   -- конкатенация
     D         := ('0', '0');             --  агрегат
     W  := (2 downto 1 => G, 3 => '1', others => '0');  -- агрегат
     DATA      := (others => '1');                -- агрегат
     end process;
     end functional;
Тригер и логика
entity IFSTMT is
   port (
      RSTn, CLK, EN, PL : in  bit;
      DATA              : in  integer range 0 to 31;
      COUNT             : out integer range 0 to 31);
end IFSTMT;
architecture RTL of IFSTMT is
   signal COUNT_VALUE : integer range 0 to 31;
begin
   p0 : process (RSTn, CLK)
   begin
      if (RSTn = '0') then
         COUNT_VALUE <= 0;
      elsif (CLK'event and CLK = '1') then
         if (PL = '1') then
            COUNT_VALUE <= DATA;
         elsif (EN = '1') then
            if (COUNT_VALUE = 31) then
               COUNT_VALUE <= 0;
            else
               COUNT_VALUE <= COUNT_VALUE + 1;
            end if;
         end if;
      end if;
   end process;
   COUNT <= COUNT_VALUE;
end RTL;

Параллельные операторы

     entity call_parallel is
        port (
           data_inp  : in  bit_vector(5 downto 0);
           data_out : out bit_vector(1 downto 0));
     end call_parallel;
     architecture RTL of call_parallel is
        procedure N_XOR (
           signal x1, x2, x3 : in  bit;
           signal f          : out bit) is
        begin
           f <= x1 xor x2  xor x3;
        end N_XOR;
     begin
        N_XOR (x1 => data_inp(5), x2 => data_inp(4), x3 => data_inp(3), f => data_out(1));
        p0 : N_XOR (data_inp(2), data_inp(1), data_inp(0), data_out(0));
     end RTL;
оператор when else
entity example_condition is
   port (
      x1, x2, x3, x4 : in bit;
    condition          : in  bit_vector(1 downto 0);
      F                : out bit);
end example_condition;
 
architecture first of example_condition is
begin
   F <= x1 when condition = "00" else
        x2 when condition = "01" else
        x3 when condition = "10" else
        x4;
end first;
 
architecture second of example_condition is
begin
   process (x1, x2, x3, x4, condition )
   begin
      if (condition = "00") then
         F <= x1;
      elsif (condition = "01") then
         F <= x2;
      elsif (condition = "10") then
         F <= x3;
      else
         F <= x4;
      end if;
   end process;
end second;
оператор with vs case
entity example_selection is
   port (         x1, x2, x3, x4 : in  bit;
                       selection : in bit_vector(1 downto 0);
                               F : out bit);
end example_selection;
 
architecture first of example_selection is
begin
   with selection select
   F <= x1 when "00",
        x2 when "01",
        x3 when "10",
        x4 when others;
end first;
 
architecture second of example_selection is
begin
   process (x1, x2, x3, x4, selection)
   begin
      case selection is
         when "00"   =>   F <= x1;
         when "01"   =>   F <= x2;
         when "10"   =>   F <= x3;
         when others =>   F <= x4;
      end case;
   end process;
end second;
Тригер со сбросом
entity DFF is
        port (
           RSTn, CLK, D : in  bit;
           Q            : out bit);
     end DFF;
architecture RTL of DFF is
begin
        process (RSTn, CLK)
       begin
           if (RSTn = '0') then
              Q <= '0';
           elsif (CLK'event and CLK = '1') then
              Q <= D;
           end if;
        end process;
     end RTL;
Сдвиговый регистр на тригерах (структурное описание)
    entity SHIFT is
        port (
           RSTn, CLK, SI : in  bit;
           SO            : out bit);
     end SHIFT;
     architecture RTL1 of SHIFT is
        component DFF
        port (
           RSTn, CLK, D : in  bit;
           Q            : out bit);
        end component;
        signal T : bit_vector(6 downto 0);
     begin
        bit7 : DFF
            port map (RSTn => RSTn, CLK => CLK, D => SI, Q => T(6));
        bit6 : DFF
            port map (RSTn, CLK, T(6), T(5));
        bit5 : DFF
            port map (RSTn, CLK, T(5), T(4));
        bit4 : DFF
            port map (CLK => CLK, RSTn => RSTn, D => T(4), Q => T(3));
        bit3 : DFF
            port map (RSTn, CLK, T(3), T(2));
        bit2 : DFF
           port map (RSTn, CLK, T(2), T(1));
        bit1 : DFF
           port map (RSTn, CLK, T(1), T(0));
        bit0 : DFF
           port map (RSTn, CLK, T(0), SO);
     end RTL1;
Сумматор на N-разрядов
entity adder_N_comp is
port (a, b : in bit_vector (0 to 6);
        s : out bit_vector (0 to 6);
        c  : out bit);
end adder_N_comp;
architecture structural of adder_N_comp is
component add1
port (b1,b2: in BIT;
      c1,s1: out BIT);
end component;
component add2
port(c1, a1,a2:in BIT;
      c2,s2:out BIT);
end component;
signal c_in : bit_vector (0 to 5);
begin
p0: add1    port map (b1 => a(0), b2 => b(0), c1 => c_in(0), s1 => s(0));
p1: add2    port map (c1=>c_in(0), a1=>a(1), a2=>b(1), c2=>c_in(1), s2=>s(1));
p2: add2    port map (c1=>c_in(1), a1=>a(2), a2=>b(2), c2=>c_in(2), s2=>s(2));
p3: add2    port map (c1=>c_in(2), a1=>a(3), a2=>b(3), c2=>c_in(3), s2=>s(3));
p4: add2    port map (c1=>c_in(3), a1=>a(4), a2=>b(4), c2=>c_in(4), s2=>s(4));
p5: add2    port map (c1=>c_in(4), a1=>a(5), a2=>b(5), c2=>c_in(5), s2=>s(5));
p6: add2    port map (c1=>c_in(5), a1=>a(6), a2=>b(6), c2=>c, s2=>s(6));
end structural;
Оператор generate
    entity SHIFT is
        port (
           RSTn, CLK, SI : in  bit;
           SO            : out bit);
     end SHIFT;
architecture RTL2 of SHIFT is
   component DFF
   port (
      RSTn, CLK, D : in  bit;
      Q            : out bit);
   end component;
   signal T : bit_vector(6 downto 0);
begin
   g0 : for i in 7 downto 0 generate
      g1 : if (i = 7) generate
         bit7 : DFF
       port map (RSTn => RSTn, CLK => CLK, D => SI, Q=> T(6));
      end generate;
      g2 : if (i > 0) and (i < 7) generate
         bitm : DFF
            port map (RSTn, CLK, T(i), T(i-1));
      end generate;
      g3 : if (i = 0) generate
         bit0 : DFF
            port map (RSTn, CLK, T(0), SO);
      end generate;
   end generate;
end RTL2;

Слайд:Работа с редактором EMACS

Emacs (Ема́кс, Е́макс, также И́макс) — семейство многофункциональных расширяемых текстовых редакторов.

Слово «Emacs» берет начало в аббревиатуре «Editor MACroS», наборе макросов для редактора TECO, написанном Столлманом и другими в 1976 году

Скачать emacs emacs-22.3-bin-i386.zip или emacs-24.3-bin-i386.zip

Для запуска распакуйте zip архив и запустите

.\emacs-23.1-bin-i386\emacs-23.1\bin\runemacs.exe

Слайд: Первый запуск

Команда для запуска

emacs 

Emacs view.jpg

Слайд: Горячие клавиши

  • Придется запомнить перечень горячих клавиш
  • В будущем облегчит жизнь

Рще лун цфктштп.jpg

Действие Hot key Действие Hot key
command mode Alt-X open file Ctrl-X Ctrl-F
insert file Ctrl-Xi save file Ctrl-X Ctrl-S
save as file Ctrl-X Ctrl-W name close file Ctrl-XK
change buffer Ctrl-XB undo Ctrl-XU, Ctrl-_
redo Ctrl-^ exit Ctrl-X Ctrl-C
word left Alt-B word right Alt-F
start of line Ctrl-A end of line Ctrl-E
page up Alt-V page down Ctrl-V
start of buffer Alt-< end of buffer Alt->
line n Alt-G n. word left Alt-DEL
word right Alt-D end of line Ctrl-K
line Ctrl-A Ctrl-K search Ctrl-S text
replace Alt-% start selection Ctrl-SPACE
cut Ctrl-W copy Alt-W
paste Ctrl-Y shell M-x shell


Слайд: Возможности :step

  • Знает и подскажет базовые конструкции
  • Подсветка синтаксиса
  • Анализ существующего кода и добавление уже написанных "слов"
  • Автоматическая генерация кода простейшего тестового окружения
  • Добавление декларации component
  • Добавление декларации instance
  • Добавление декларации signal
  • Возможность работы с консолью
  • Возможность работы с с несколькими окнами одновременно
  • И многое, многое другое полезное.

Слайд: Работа с системой моделирования QuestaSim от Mentor Graphics :step

  • Где моделировать?
  • QuestaSIM
  • Язык VHDL, Verilog, SystemC, SystemVerilog
  • Смешанное моделирование (все что выше + Spice)
  • Автоматизация (поддерживаются скрипты TCL)
  • Работа по сети (JobSpy сервер)
  • Мощнейший инструмент верификации
    • Покрытие кода
    • Покрытие переходов
    • Проверка значений
    • Поддержка пакетов и стандарта верификации OVM
  • Пакет моделирования подключается и в MentorGraphics и в Cadence


Слайд: Запуск QuestaSim

Так выглядит окно прогрмаммы QuestaSim

Окно программы QuestaSim

Слайд: Команды QuestaSim :step

  • Запуск
    • vsim
  • Создание библиотеки
    • vlib
  • Компиляция кода
    • vcom
  • Запуск моделирования
    • vsim name_run_project
  • Добавление сигналов
    • add wave
  • Запуск исполнения и просмотр результата
    • run

Слайд: Скрин каст

Слайд: Основные приемы работы

Главное окно

Окно моделсим 10 се.jpg

Выбор рабочей дирретории

"File > Change Directory"

Окно рабочая дирректория для моделсима.jpg

Создание библиотеки или выбор рабочей

"File > New > Library"

Окно создания бибилиотеки.jpg

Компиляция проекта

"Compile > Compile"

Окно компиляции проекта.jpg

Загрузка тестового окружения и запуск моделирования

"Simulate > Start Simulation"

Запуск тест бенча.jpg

Добавление сигналов для отрисовки и наблюдения

"Add > To Wave > ..."

Окно добавления сигналов для отрисовки.jpg

Запуск моделирования

"Simulate > Run > Run..."

Окно моделирования работа с сигнали выделение.jpg

Перезапуск моделирования

"Simulate > Run > Restart "

Окно перезапуска моделирвоания.jpg

Работа с окном отображения сигналов

Работа с окном моделирвоания.jpg

Разные фичи в окне моделирования

Разные фичи в окне моделирования.jpg