Изучение базовых конструкций языка VHDL. Моделирование передаточных функций

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

Аврамов Р.А. ЭМ-51

Лабораторная работа №2

Изучение базовых конструкций языка VHDL. Моделирование передаточных функций.

Цель работы: изучение базовых конструкций языка VHDL. Моделирование передаточных функций.

Рисунок 1 – График, аппроксимация и уравнение, полученные в Excel

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

Исходный VHDL-текст программы

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

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use ieee.std_logic_arith.all;

entity pol is

             port(

                         in1 : in std_logic_vector (7 downto 0);

                         out1 : out std_logic_vector (15 downto 0)

                 );

end pol;

architecture pol of pol is

begin

            process (

            in1 )

            variable x : INTEGER;

            variable y : INTEGER;

            variable sum : real;

            variable cur : real;

            begin

                        x := conv_integer (unsigned (in1) );

                        cur := real (x);

                        sum := (cur**3) * (-0.0585) + (cur**2) * (-0.0886) + (cur) * (16.5) -10.227;

                        y := integer (sum);

                        out1 <= std_logic_vector (conv_unsigned (y, 16));

            end process;  

end pol;

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

Рисунок 2 – Скриншот Waveform

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

Сравнение значений, полученных с помощью Active HDL

11

11

19

18

28

27

51

51

65

63

83

83

81

81

88

88

76

76

89

89

86

86

Рисунок 3 – График, построенный по значениям из Active HDL

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

Исходный VHDL-текст синтезируемой программы

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

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use ieee.std_logic_arith.all;

entity pol is

             port(

                         in1 : in std_logic_vector (15 downto 0);

                         out1 : out std_logic_vector (31 downto 0)

                 );

end pol;

architecture pol of pol is

begin

            process (

            in1 )

            variable x : INTEGER;

            variable y : INTEGER;

            begin

                        x := conv_integer (unsigned (in1) );

            y := (x*x*x)*(-2)/(32*32*32) + (x*x)*(-3)/(32*32) + x*(528)/32 - 327;

            --         y := integer (sum);

                        out1 <= std_logic_vector (conv_unsigned (y, 32));

            end process;  

end pol;

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

Рисунок 3 – Waveform для синтезируемой программы

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

196

6,125

701

21,90625

1176

36,75

1609

50,28125

1988

62,125

2301

71,90625

2536

79,25

2681

83,78125

2724

85,125

2653

82,90625

2456

76,75

Рисунок 4 – График значений аппроксимирующей функции для синтезируемой программы

Рисунок 5 – Размещение на кристалле

Вывод:

1)  в работе в Excel реализована полиномиальная аппроксимация функциональной зависимости, найдено уравнение, описывающее данную зависимость;

2)  в Active HDL описан заданный процесс, получен Waveform и по значениям построен график аппроксимирующей функции;

3)  создана синтезируемая реализация аппроксимирующей функции и размещением её на кристалле.

Значения исходной функциональной зависимости и аппроксимирующей функции, полученные разными способами, практически совпадают. При размещении на кристалле программа заняла значительный объём (выбран был кристалл Spartan3).

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.