Проектирование таймера-счетчика. Тестирование таймера-счетчика на языке VHDL в среде ActiveHDL, страница 2

          signal current_value : std_logic_vector(3 downto 0);

begin

          -- Unit Under Test port map

          UUT : timer

                             port map (

                                                 reset => reset,

                                                 count_value => count_value,

                                                 div_value => div_value,

                                                 out1 => out1,

                                                 current_value => current_value,

                                                 clk => clk

                             );                   

--Процесс генерации синхроимпульсов

process

begin

    loop

        clk <= '1';

        wait for 5ns;

        clk <= '0';

        wait for 5ns;

    end loop;

end process;

process

begin

        reset <= '1';

        count_value <= "1111";                

          div_value <= "0100";

        wait for 50ns;

        wait for 50ns;

        reset <= '0';

        wait for 270ns;

        assert out1 = '1'

        report "Не выполняется первый такт"

        severity failure;

        wait for 90ns;

        assert out1 = '1'

        report "Не выполняется второй такт"

        severity failure;

        wait for 90ns;

        assert out1 = '1'

        report "Не выполняется третий такт"

        severity failure;

        report "Поздравляем! Таймер-счетчик прошел автоматическое тестирование!";

        wait;

end process;

end TB_ARCHITECTURE;

configuration TESTBENCH_FOR_timer of timer_tb is

          for TB_ARCHITECTURE

                             for UUT : timer

                                                 use entity work.timer(behaviour);

                             end for;

          end for;

end TESTBENCH_FOR_timer;

Результаты работы программы.

Размещение полученного решения на кристалле

XC3S200ft256

Design Statistics

# IOs                              : 56

Macro Statistics :

# Registers                        : 3

#      1-bit register              : 2

#      32-bit register             : 1

# Tristates                        : 1

#      1-bit tristate buffer       : 1

# Adders/Subtractors               : 1

#      32-bit subtractor           : 1

# Comparators                      : 2

#      32-bit comparator greater   : 1

#      32-bit comparator lessequal : 1

Cell Usage :

# BELS                             : 114

#      GND                         : 1

#      LUT1                        : 32

#      LUT2                        : 1                   --таблицы преобразования

#      LUT2_D                      : 1

#      LUT3                        : 2

#      LUT3_L                      : 1

#      LUT4                        : 9

#      LUT4_D                      : 2

#      LUT4_L                      : 1

#      MUXCY                       : 31             -- мультиплексоры

#      VCC                         : 1

#      XORCY                       : 32

# FlipFlops/Latches                : 33                      --триггеры/защелки

#      FDE                         : 32

#      FDPE                        : 1

# Clock Buffers                    : 1

#      BUFGP                       : 1

# IO Buffers                       : 21               --буферы ввода-вывода

#      IBUF                        : 2

#      OBUF                        : 18

#      OBUFT                       : 1

=========================================================================

Device utilization summary:

---------------------------

Selected Device : 2s15cs144-6

 Number of Slices:                      39  out of    192    20% 

 Number of Slice Flip Flops:            33  out of    384     8% 

 Number of 4 input LUTs:                49  out of    384    12% 

 Number of bonded IOBs:                 21  out of     90    23% 

 Number of GCLKs:                        1  out of      4    25% 

Вывод: в ходе выполнения работы научились проектировать таймер-счётчик. Установили, что данный счётчик при размещении его на кристалле требует значительного количества аппаратных ресурсов, что объясняется необходимостью использования в его составе значительного количества триггеров. Кроме того, счётчик использует значительное количество мультиплексоров и буферов ввода/вывода.