23
1 ! " #! $% & Morteza Shabanzadeh [email protected] !"# $ %& ’( ) ’*" + , -. "# / 01 2 34 5 / 6-%7 2 8 / ’*" 2 3(* + 9 3&" ’ : ’*" 3(* + ; <= ; > $ ? " ’@1( A@ " %4 7 A 34 1 * / "( A 2 ?" BC 0" ’* ’ A + DE www.IranMedar.com

VHDL Learninig Farsi

  • Upload
    peyman

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

vhdl learning

Citation preview

Page 1: VHDL Learninig Farsi

1

��������������������� �����

� �

�������������������������������� !�

"��������# �!��$����%�� �

���������������������� ���� ��������� ��������������� ��������������&� �

����������� �

����������� ���

Morteza Shabanzadeh

[email protected]��

��������������� ������������������������������ ��������� ��������������������� �!���"���#�������� �����$���

�������%&��'��(�)�����'*"���+,����-�������.�������"���#����� �����/� ���01���2��34��5���

�� � ��/�6-%7���2�����8����/��'*"����23(�*������+9���3&��"�'����:������'*"��3(�*���+;���

<�=�;�>$�����

�������?������"���'@1(�A���@�����"������������������ ����%4���7�A����� �34������������1���*/���"�(�A�2����?"� � ����B�C������0��"�'*�� �'�����A������+��

����DE����

www.IranMedar.com

Page 2: VHDL Learninig Farsi

2

'(��)��*+,�������������-�����)��.-�/��*���0�1�����).�������������2��'���%����������0 VHDL�3��������������)4-� ��������5����)������%*�VHDL%*+���)��6� ��

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

��

�������������� ������������������������������ �!�����"�� ����#� ���� �����#��$$$�%���&"���&"��'�������(&)�*��!

���+����,���,���� ��&"�����"��,+����-+��� &(������(���.��"����%/�'���0)�%"�1�&"��(��%(��)� � �2#�1�����&3��4+���%�

�5���� ��6��� �"�7�8��%��&9�&:��� ���.���&"�� ���������#�;��2�<���=+�#����)� ���� �>�%"�?�@�����A��"��0+&���B�� �C���#�

����0DE����F�&3�G�E��"� � �;D�H��C������� �%-��!�#�5���H+ ���E������� �!���&"�&�9�&��#� ����������+�2�1�"��=+

��&�&IJ�K��� , ����L�����&M+ ���8(�%"��+�#��(&)�%"���(&)��������H+ ���D�4���C��N3��5�/������&"�,��ODE�#P��%"�

���D!�����(&)�%��� , ���� ��������� , �������������5���� ���-+��-"�5���Q)��!� &R�������%�4��,�#��

� �)�%S&������"�%"�1.�7�)���+�!�#� ���������K��-+�%�4��1�DE��������L����-+�1.���-"�%�4��#�������5���� ����T�%"�

��F� � �,+��#�����%��&9� ��&��1�&"��(�7 �U���� ����%�4��,+�� �#&���%"� �!�1����1.����%(���.� ����"����0+�5�����V&E�%(��4

�1.�� ��W�2�C�FN �C�� � &�9���$� �� �

� ��� �F��*���&�4�)��'� �A����G���H0����"'&������������������������0 �'*��IJK*�L��

Context Clauses

Library Clause

Use Clause

� Library Units

Package Declaration (optional)

� Package Body (optional)

Entity Declaration

� Architecture Body

� �!���%4"�!���&M�N��O����������������'P���Q�RS�)�������������� ������ ������ ������ �����'��*.�������� ��������������������������������������� "��.��

������������ ������������ ������������������������������������� ������������������������������������������������ ��� �� ���������� �� ���������� �� ���������� �� �����������

������������������������������������ � ��� ��� ��� ������ ����������� ������ � �������������� ������ � �������������� ������ � �������������� ������ � ������������������������������������������������������� � �� ������� � ���� �� ������� � ���� �� ������� � ���� �� ������� � ������� !�����������!�����������!�����������!����������������� �������� �������� �������� ������

��� ������ � ������ ������ � ������ ������ � ������ ������ � ������� ������� ������������ ������������ ������������ ��������� "�������� �����"�������� �����"�������� �����"�������� ���������#���$��� �����#���$��� �����#���$��� �����#���$��� ��������� � �� ��� �������� �� ��� �������� �� ��� �������� �� ��� ����������� ��� �� ���� ����� �� ���� ����� �� ���� ����� �� ���� ������

%���%���%���%������� ���� &��&��&��&������ ���� � ��� ��� ��� ������ ����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

www.IranMedar.com Morteza Shabanzade

Page 3: VHDL Learninig Farsi

3

���������������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� Y_chartL�

��

������������ �����������������������������������������

����������������������������������������������������������������������������������������������������������������������������������������������������������������� �������

������������������������������������������������������������������������������������������� ����������������������������������������������������

���������

���������������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

���������������������

�� ���

%���������

�� �������

��������������� ��������� ������

������������������������������������������������������������������%���TS��

����������� ���

'������

�� !"�������#��

��'@��'S�%�H�"��%&�4�G��'J��U�BJ��*�'P��*���&�4���!���%*�A��7�T��� �34��'���1�����-��%���*�) �� ��"�'*� �1�L�����0 �V���3 �7�A��1���)��'@���"������������'S�%�H�"�N�0T�4�W)�"�#�A����7���)��A���O�B&��'J��U�N�X&*� ��%&��+�OY����

�� �7���� �'��*)�?"��R*����3(�4�A����0�.������(�'*����7���3��8��B��8�����%����"�7���)���"����'%&���� )��BP8 ���8� ��

3(�4 �0 �-�*Z�����I�"��*�A��"���� ������'*��7���-�������� ���0 �'4������(����+[�4���� �'J��U�����(((())))�� ���� ���� ���� �������"�'*� ��%���� ���'����=�\]4����O�)��'J��U�^�%�*�_�]4�"��7��%��%��%��%����\]4� �'M]0* ���+++ ��)����^�`��B��8��������������������

34��+

A��%���^�`��NY�����J�*��"� �� *��� � �� *��� � �� *��� � �� *��� ����A���a����"� �1������7���"�@��=�3YR`������'*� �����#����A)�4���P7�� 34�+��

��"�A"�@����-�0b�3�.*��"����A)�4���P7���'4����.���'J��U�_�]4����4��"� ���'*�����7���"�@��=� �34��-�� '* ������'���)�� '@�.���A)�4�?"��#�A��7���)��BM%&*����������� ������� ������� ������� �������"���H��+��

'*���"�@��=�'4����)��c#��A��%(�4�^�`��G��������_�U������������� ������� ������� ������� �����7���'�`��A���J���)��B@1%* ��0��*��������������������������������������������������������������"�+"�+"�+"�+�����B��P��d�����+A)�4���P7�G� �����T�"���_�U�� ��7�-X�]*� ���'*� A��%(�4��-������������������

���A���J������4� ��"�'*���H���'%4�"�������?���S"�!����=���?�7�e��%��+��"�7�"�H���!��d.O�)��'���%*�!�O�"���������'*�.���A��%(�4�^�`����0���'*�B@7��"�� ���]����+

���^�`��-�� `��G�������"� ��B��@���M��� ���'*�'@�.���^��� ������ ������� ������� ������� ���3�����"�� ���0 ����#�34"����!�C�1*����3(�4�������d����f���%4�� ��)����+��

��.���3�4�^�`�� ��)�G� ����BJ��*�-���'*�������������������A.����*�����A����.�����!�,"!�,"!�,"!�,"���@%1#�����`�J�����Y*��'�"�4��������34����g#� �@*����"��)+����

����

www.IranMedar.com Morteza Shabanzade

Page 4: VHDL Learninig Farsi

4

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ������% �G��A�����@����'���(����?�R�L��

LIBRARY library_name;

N�h*L����� ��� � ��������� � ��������� � ��������� � �������----

�� � ����� � ����� � ����� � ��� ���� ���� ���� ���� ----������ � ���.��$�� � ���.��$�� � ���.��$�� � ���.��$----������ � �������� � �������� � �������� � ������----������������������ � ��������� � ��������� � ��������� � �������//// ���� ���� ���� ���� ////.��$.��$.��$.��$////������������----��

������������������ ���������������� ���������������� ���������������� ���������������� ������������������������������

� �

� �G��A�����@����'���(����?�R�� �$ ��� �$ ��� �$ ��� �$ ��������% �B(�"�)�� W�L��USE library_name.package_name.ALL;

�N�h*L����+�������+�������+�������+�������0000������������))))��������������������))))11231123112311230000 �� �� �� ��----����+�������+�������+�������+�������0000������������))))��������������������)))) ���� ���� ���� ����0000 �� �� �� ��----����+�������+�������+�������+�������0000������������))))��������������������))))��������������������0000 �� �� �� ��----����+�������+�������+�������+�������0000������������))))��������������������))))��������������������0000 ��������----����+��� ���� +��� ���� +��� ���� +��� ���� 0�0�0�0�� 4���� 4���� 4���� 4���55550000 �� �� �� ��----������������������������������������������������+���� ���� +���� ���� +���� ���� +���� ���� 0000� 4���� 4���� 4���� 4���55550000� 4� 4� 4� 45555�� ��� ��� ��� �/�/�/�/�����������������0000������������))))��������������������))))11231123112311230000 ��� ��� ��� ���----����

�����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �'�i ����6����6����6����6����L

� �

ENTITY entity_name IS

GENERIC( parameter_name : string := default_value;

parameter_name : integer := default_value);

PORT( input_name , input_name : IN STD_LOGIC;

input_vector_name : IN STD_LOGIC_VECTOR( high downto low);

bidir_name , bidir_name : INOUT STD_LOGIC;

output_name , output_name : OUT STD_LOGIC);

END entity_name;

����%4"���������������������'O��(���A"����A������#�j���Q�RS�)��_�U�����]8�A���k�B@7�'��*���I0*�����'�(�"�!l�C�����������?"��%4������������"�7�'*+���������m���*�!��P=������������������������6���*�)��������0���@���3&���'*�.S���n��1������'J��U�N�J��"�c�����*������"�7��%7��������'*�+���������)�A��S�h*��0�P�L

www.IranMedar.com Morteza Shabanzade

Page 5: VHDL Learninig Farsi

5

��

N�h*L �)��A�������entity�j���oK��p����G��D+�� �6�����6�����6�����6�������������))))������������������������������������������������

����������������������������������������������������������������7�7�7�7��������� � � � � ��������������������8�8�8�8���������������������))))��������������������))))*�����*�����*�����*�����77779999���.������.������.������.���::::;;;;----����������������������������������������������������������������������������������������������������������������$�$�$�$�����������������8�8�8�8���������������������))))��������������������----����

�����������������������6 �������������������6 �������������������6 �������������������6 ��� ��� ��� �����������8�8�8�8���������������������))))��������������������-��������������������-��������������������-��������������������-��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������"��������"��������"��������"�������������8������)�����-�8������)�����-�8������)�����-�8������)�����-��������������������������������������������������������������������������������"�����"�����"�����"�������������������������8������)�����8������)�����8������)�����8������)�����----������������������������<����������������������<����������������������<����������������������<����������������������������������8����8����8����8����������������))))��������������������))))*�����*�����*�����*�����77779999���.������.������.������.���::::;;;;;-;-;-;-����6�-6�-6�-6�-���� ���� �

�����)��?"��%4����������������������"�(������������������������������ �O��"�A����������� ����34��A���%(�+� � N�h*�L���

6����6����6����6��������������������������������))))�4 ��������4 ��������4 ��������4 ����������������,�����������,�����������,�����������,������7�7�7�7���� ����� ����� ����� ��8�8�8�8���������������������8=�8=�8=�8=�1:1:1:1:������������;;;;----���������������7�� �/� �8��������������7�� �/� �8��������������7�� �/� �8��������������7�� �/� �8��������������)������-���)������-���)������-���)������-�������� ���� ���8�������8�������8�������8�����������)������;-���)������;-���)������;-���)������;-����6�6�6�6�������������������������----�����

N�h*L��)��A�������entity�G��Multiplier����?�00 �e�a�+

6����6����6����6����������������������������������������������������������������������������7��"�8������)�����)*�����������������7��"�8������)�����)*�����������������7��"�8������)�����)*�����������������7��"�8������)�����)*������L����3333���.������.������.������.���::::;;;;----����������������������#�������������������#�������������������#�������������������#�8�8�8�8���������������������))))��������������������))))*������*������*������*������7�7�7�7�5555���.������.������.������.���::::;;;;----����������������������(�������������������(�������������������(�������������������(�8�8�8�8���������������������))))��������������������))))*������*������*������*������7�7�7�7�2222���.������.������.������.���::::;;;;;;;;----����6�����������-6�����������-6�����������-6�����������-����

��

��

N�h*L���)��A�������entity�G��Multiplexer+��� �������� �

����6����6����6����6���������4�4�4�4��������������������������������7�������������7�������������7�������������7�����������������������"�������������������"�������������������"�������������������"�8�8�8�8����������� ������������� ������������� ������������� ���::::����������������5>>5>>5>>5>>----����������������������#�������������������#�������������������#�������������������#�8�8�8�8����������� ������������� ������������� ������������� ���::::����������������5>>5>>5>>5>>----����������������������(�������������������(�������������������(�������������������(�8�8�8�8����������� ������������� ������������� ������������� ���::::����������������5>>5>>5>>5>>������������������������;-����������������;-����������������;-����������������;-����6�����������-6�����������-6�����������-6�����������-��������

�������������� ���������������� ���������������� ���������������� ���������������� �����������������������������

� ���S�0T�4�e�&%������n�C���M��U �*.���!��C��L�� signal <= expression; ������������������������������������� . "��"�����]8����#����N�C����4 ��@J �����������������"�N�0T�4��������������������

N�h*L

��������������������� �N�0T�4����M* '�����]���N�0T�4���� �7�'*�?"�"�"�.�������������������������������������������� ��� � � � � �????=�=�=�=� ;��

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

www.IranMedar.com Morteza Shabanzade

Page 6: VHDL Learninig Farsi

6

� �'�i ����"����������"����������"����������"����������L����

ARCHITECTURE arch_name OF entity_name IS SIGNAL signal_name : STD_LOGIC;

SIGNAL signal_name : STD_LOGIC;

BEGIN

-- Process Statement

-- Concurrent Procedure Call

-- Concurrent Signal Assignment

-- Conditional Signal Assignment �����O�� �*.�����]��"�O��!��`��"�!���P=�-���'*�������������������������������������7�'*�

-- Selected Signal Assignment

-- Component Instantiation Statement

-- Generate Statement

END arch_name;

N�h*L���

"����������"����������"����������"����������� ���� ���� ���� ���))))������������������������������������� ���� ���� ���� ���))))�4 ����������4 ����������4 ����������4 �����������������BR*'�(�"�!l�C��^������������ �������� �������� �������� ���1111�8��8��8��8�������������))))��������������������----����

�#����#����#����#�������������������������*�"�@��=� "�"�_�7������������������������������������1111�?�?�?�?=�=�=�=� � �� � � �� � � �� � � �� �----����

����������������������������������������������������������������????=�=�=�=�����1111������$�������$�������$�������$�----������������-��-��-��-������

�-%7�������� ���������� ���������� ���������� ���������� �A��O��"���������34��A���%(���� ��+� �����������������

����37�����)�B@7���� ���'*�������*�-���L��"����������� ���"����������� ���"����������� ���"����������� ���))))������������������������������������� ���� ���� ���� ���))))����4 ���������4 ���������4 ���������4 �������������

����BR*'�(�"�!l�C��^������������ �������� �������� �������� ���1111�8��8��8��8�������������))))��������������������----�����#����#����#����#�����

���*�"�@��=� "�"�_�7 ��������������������������������������������������????=�=�=�=�����1111������$�������$�������$�������$�----�������������������������������������������������������1111�?�?�?�?=�=�=�=� � �� � � �� � � �� � � �� �----����

������������������������-�-�-�-����������"��*�����m�](�-%7����H��O��"��*������"�-���A���k�qK%(�"��������"��������"��������"������������������34����� ��3r�=����0 �'���'8���s���� ��H�%���Y*�

������� �34��-��"����������"����������"����������"�����������B@7���� ������������������������������������0��*� ����*������T�"�qK(����'0���0 �'*�B�=�'��*.��� ����������� �� �� �� �� �� �� �� ����"���� ��"���� ��"���� ��"���� ������+++�����'*���#�����*�����t(����t(�� ���������������������"�������CR0*�'�u���-���A���"�������B(�"��"�� �34

"����������"����������"����������"�����������0 �B��R���'�"���M*��H@���� �*.�����]�����!���%4"���!���P=�'*��������'*�"�(����G�����3�8����"��%PS���(Z�Gb� ����&�����(Z�'� �A���"�B�=��"�.���'M]0*�A��%������)������� ���� ���� ���� �� ��07���'*+����

���������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

www.IranMedar.com Morteza Shabanzade

Page 7: VHDL Learninig Farsi

7

� ���%4"�'�i ����� ��� ��� ��� ��L��

CASE expression IS

WHEN constant_value =>

statement;

statement;

WHEN constant_value =>

statement;

statement;

. �!���P=�-���'*��'P���!��C��t(����t(����7�'*���O��

.

.

WHEN OTHERS =>

statement;

statement;

END CASE;

� ��%4"� ��� ��� ��� ��� ��%4"�G�� �b������� ������� ������� ������� �3&����'*� v��%J� �gS����7�'*� ��O��t(����t(���F������ ��'�(�"�!���P=�'0��34�������������������������������������������B(�"����������������������������������"�7��%7���+� �

N�h*�L

� ��� ��� ��� �����������������������������������������������������������������������@�������������@�������������@�������������@::::A�A�A�A�====B���B���B���B�������????==== ----����

�����������������������������@�������������@�������������@�������������@1111A�A�A�A�====B���B���B���B�������????==== ----����6��� ��6��� ��6��� ��6��� ��----��

�����������������������.��.��.��.�� ������������������������!��P=�-@�*�A��%S�J�'*���3&����'*�!��C0����"�"�1���%7�������H0����"���������������������������"�7�� w+�� N�h*L

� ��� ��� ��� ���� ������ ������ ������ ��������������������������������������������������������::::�������=�������=�������=�������=B��B��B��B�� ????====CCCC----����

�����������������������������������T��=�����'0*���������7���'*+������������������������������������������������������������������������������������������������1111DDDD5555���=���=���=���=B��B��B��B�� ????====5555----����������������������������������������������������������������������������====B�B�B�B� ????====::::----����6��� ��6��� ��6��� ��6��� ��----����

N�h*L

� ��� ��� ��� ������������������������������������������������������������������������������������������::::����������������������������������������������������������������������������������������====B�B�B�B�����????====>>>>----����������������������������������������������������1111����������������19191919����������������������������������������������������====B�B�B�B�����????====9999----������������������������������������������������5C5C5C5C���.������.������.������.���1E1E1E1E������������====B�B�B�B�����????====5555----����������������������������������������������������������������������������������������������������������������������������������������====B�B�B�B�����????====::::----��������6��� ��6��� ��6��� ��6��� ��----��

������������������-@�*�A��%S�J�?"��R*�4��������4��������4��������4������� � �07����%7�"�'��7�x�����������P�+������

����

www.IranMedar.com Morteza Shabanzade

Page 8: VHDL Learninig Farsi

8

N�h*L

� ��� ��� ��� ��������������������������������������������������F������������F������������F������������F::::::::::::::::::::::::G���G���G���G���====B��B��B��B�� ????====GGGG::::::::::::GGGG----������������������������������������������������� ���������������������������������������������� ���������������������������������������������� ���������������������������������������������� �????====GGGG111111111111GGGG----��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������????====GGGG::1::1::1::1GGGG----�����������.����F�������.����F�������.����F�������.����F::111:::111:::111:::111:G�����G�����G�����G�����====B�B�B�B� ????====GGGG:11:11:11:11GGGG----�����������.�������������.�������������.�������������.��������������������������������������������������������������====B�B�B�B�����������������????====GGGG::1::1::1::1GGGG----�������� ������ ������ ������ ��----����

�-���'*���� ���7����%7�"��YO�� ��� ��� ��� ���B(�"���������������������������������������7�'*��%7���+

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �n�C����e�&%����'U�7�!��C����S�0T�4L ��

label:

signal <= expression WHEN boolean_expression ELSE

expression WHEN boolean_expression ELSE

expression;

N�h*L ��

������������������������ �� �� �� ��????=�=�=�=�������������.��.��.��.��������������1111====AAAA1111AAAA��������@HA���������@HA���������@HA���������@HA�----�����������������������������������������������������?�?�?�?=�=�=�=� ��.������� ��.������� ��.������� ��.�������====AAAA::::A��������� A��������� A��������� A��������� ----���������������I������������I������������I������������I�????=�=�=�=�"��.�������"��.�������"��.�������"��.�������====GGGG::::::::G���������G���������G���������G�����������������������������������#��.�����������������������������#��.�����������������������������#��.�����������������������������#��.�������====GGGG:1:1:1:1G�������G�������G�������G������������������������������������.��������������������������������.��������������������������������.��������������������������������.�������====GGGG1:1:1:1:G�������G�������G�������G�������������������������������������������������������������������������������������������������������----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ���SY���'�"���M*���^���'� �������� ����� ����� ����� �L�

CONSTANT constant_name : type_name := constant_value;

N�h*L� �

��������������������������������������������������������������������������������������������������������������� ������ ������ ������ ��������� ����� ����� ����� ��8�8�8�8���������������������8=�8=�8=�8=�>>>>��������----������������������������ ����� ����� ����� ��������� � � � �8�8�8�8� ))))��������������������8=8=8=8=GGGG1::11::11::11::1GGGG----������������������

���������������������������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

����

� '�(�"�N�0T�4�^���'� ����L��SIGNAL signal_name : type_name;

N�h*L� ���� ������� ������� ������� ����1111�8��8��8��8�������������))))��������������������----��������������������������

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ��y%*�^���'� ������ � �� ��� �� ��� �� ��� �� ������L��

VARIABLE variable_name : type_name;

N�h*L

* �� ��������* �� ��������* �� ��������* �� ��������/�/�/�/���������������������8�8�8�8�������������������������----����������������������

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

���%4"�B(�"����P�������%4"�-���.���������������������������������&��0��+

www.IranMedar.com Morteza Shabanzade

Page 9: VHDL Learninig Farsi

9

� �^���'� ���������������������������������L

��������������*���%(�4�����O�����vl��*��� ���'*)���"�)��'@��"����?"��%4����)������L����

I�+�����������������������������&J�3&�S����3Y�4��� ������*���������*���������*���������*��� ����������������L���process_label:

PROCESS ( signal_name , signal_name , signal_name ) VARIABLE variable_name : STD_LOGIC;

VARIABLE variable_name : STD_LOGIC;

BEGIN

-- Signal Assignment Statement

-- Variable Assignment Statement

-- Procedure Call Statement

-- If Statement

-- Case Statement

-- Loop Statement��

END PROCESS process_label;

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

II��������������������������������3Y�4�&J�3&�S� �������!���P=�G� ���. ��. ��. ��. ��,. ��. ��. ��. �� ������������,. ��. ��. ��. �� ������������,. ��. ��. ��. �� ����L�����

process_label: �

�PROCESS

VARIABLE variable_name : STD_LOGIC;

VARIABLE variable_name : STD_LOGIC;

BEGIN

WAIT UNTIL clk_signal = '1'; �������������� .%04�B��8��z

-- Signal Assignment Statement

-- Variable Assignment Statement

-- Procedure Call Statement

-- If Statement

-- Case Statement

-- Loop Statement

END PROCESS process_label; ��

�� �3���!{�O���� ���'*D|�'&���� ��`�"������������������N�%�H�"�A��.���3�4�!����*�A�������%4"�t4�������������������������������7�'*��%7������"���@0���'0��-�������������������������������!���%4"�-��%��*���-��"���� �}#�)��'@�������������������7���'*�+��

���%4"�"�(����������������������������� ������������������������������� �34�� ���� �������B(�"�'0� ���������� ���������� ���������� ����������"�7�'*��%7������

�c@=���W�� �����B(�"� �Y*����� ���������� ���������� ���������� ���������� ����!��C������� ������� ������� ������� ��0 �'*��� �+��

�����(Z���~J��%PS���"���� �"���������

� ��%4"� "�(����������������������������� �������������������������������34�� ����� �������B(�"�'0� ���������� ���������� ���������� �����������"�7�'*��%7�����

�c@=���W�� �����B(�"� �Y*����� ���������� ���������� ���������� ���������� ����!��C������������������� ��� ��� ��� ��0 �'*��� �+��

�����(Z���~J��%PS���"���� �"������

www.IranMedar.com Morteza Shabanzade

Page 10: VHDL Learninig Farsi

10

N�h*L�����%4"process�'P� ��A�����*�A���� ���'*�����Combinational �������������3&�S�B(�"��"���� ��A���"����� �!��`�-������"������O�

� ������y�-��%@b� ������"�"����8�3�4�&J����������3�aprocess�0 ���S������I�"��*�'O��(���?"� �cJ�������y�-���+�����������

����������������������������7�7�7�7�"�"�"�"�/�/�/�/�#�#�#�#�/�/�/�/���������;;;;������������������������ ��������������������������������������������������������������������????=�7�=�7�=�7�=�7�"� ��#�"� ��#�"� ��#�"� ��#�;�;�;�;���������������������----��������������������������������������������----����

N�h*�L���%4"process�'P���A�����*�A���� ���'*������Sequential���"����� �!��`�-������37���Aclock��8��*�'(����"������A���"���������������������������enable���reset���preset�3�4�&J�3&�S�B(�"��"����process �"�"����8���P@���������)��'@��3�a�����y��R*�������� � process��� ���O�������(�"�'P���!���P=�-���#���l����)����S������I�"��*�'O��(����0 �����+��

� ������������������������������7��7��7��7�����$�����$�����$�����$�/�/�/�/� ���� ���� ���� ����;;;;�������� ������� ������� ������� �������������������������������������������������������������������� ���� ���� ���� ���====AAAA1111A����A����A����A������������������������������������������������������������������������������������????=�7�=�7�=�7�=�7�������������������������====BBBBAAAA::::AAAA;;;;----����������������������������������������������������������������������������������������7777����$A�*��� ������$����$A�*��� ������$����$A�*��� ������$����$A�*��� ������$====AAAA1111AAAA;�;�;�;�������������������������������������������������������������������������������������������������������������������������????====����JJJJ1111----������������������������������������������������������������������������----��������������������������������������������----����

�!��P=������������������������====BBBBAAAA::::AAAA� �34��'0*�-��������A��%���'*��������� �'�"�4�A������- ���`�������������?�7�?"��%4��-%7�������-���)��� � ���'*���'�l�U�v�%P&������)�� ��A�H�����????====GGGG::::::::::::::::::::::::::::::::GGGG----�����"����?"��%4��.��+��

�!��P=������������$A�*��� ������$����$A�*��� ������$����$A�*��� ������$����$A�*��� ������$====AAAA1111AAAA��'0*��� "���?�����l���PS� cS�#������$����$����$����$��7���'*+���O��8����"�����$A�*�������$A�*�������$A�*�������$A�*��������������������������������cS�#��PS��"����y�����*�������$����$����$����$��������O����7���'*����$����$����$����$====AAAA1111A�A�A�A���?����l�������*�����PS� "���7���'*�3=�4�cS�#+��

���%4"�'� �����������������������d�����IJK*�F�]*�-����*�"���"�������'*����+

���������������� ���������������� ���������������� ���������������� ���������������� �����������������������������

��

� �'� �������%4"KKKK��������K����K����K����K�������������������������������L

��IF expression THEN

statement;

statement;

ELSIF expression THEN

statement;

statement;

ELSE

statement;

statement;

END IF;

������������������ ����'0��?"�4�������������������!��`�"���'���)������!��P=�G��tM���7���������������)�����0 �'*���O�� "���������������*�"���*�������"�7�'*�f��(�������������������������� *����'S�������'��K������K������K������K������%7�"����7���0 �'*�e��%������'@��!��P=��"�-��+��

�!���P=��������'P���!��C�����t(����t(�����7�'*���O���

www.IranMedar.com Morteza Shabanzade

Page 11: VHDL Learninig Farsi

11

N�h*L�

������������������������====AAAA1111A����A����A����A����������������������������������������????=�=�=�=� ----��������������������������������������������������������������������????=�=�=�=� ----������������������������-�-�-�-�����

�����������%4"��������������%4"� ��� ��� ��� �������"��Y*��"�@��=�3��P7�"�O���������������������4���7����%7�"��I��*��������34���%���� �����"�'4�4������L� ��������������$+�!��P=�� � � � ������������1*����������B@7����m�7��H�%��'S��34��'U�7�e�1����A�������C�A����A�����4�����7���'*�#���� #���� #���� #���� ������������������������������������������������������������7���'*����'0����������������� ���� ���� ���� �������"��*��"��@�S�J��"� ��� ��� ��� ��������'*�m�7��H�%����������������������O�)��'��%�*�A������������������������������

���� ������������������� ������������������� ������������������� ������������������ �� �� �� ��))))*�����*�����*�����*������������������������))))��������������������))))*�����*�����*�����*���������+++�7��+���������������,+�� �'8�*�� ��� ��� ��� �����"��@�S�J��"��0%&��A��&*�3��S���A���"�����1���'*�����"�7�'*�?"�����@����������3&�����]0���+���������������5�+��"� ��� ��� ��� ����%4"��"�'S��"�7�'*�e��%�������1���)��'@��v���M%&*���""���'*�3&�m�7������������1����0b����F������� �34��e�����

���������������������������������������������������������������7�'*�3&����4�31#���3��S��+����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

������ e�&%���'� ������S�0T�4��"�L��

signal_name <= expression;

N�h*L

����������������????=�=�=�=� � � � �----��������������������????=�=�=�=�������������J�J�J�J�1111����----���� � � � �????=�=�=�=�F�F�F�F�:::11:1::::11:1::::11:1::::11:1:GGGG����----����������������????=�=�=�=�"�"�"�"��4����4����4����4�������#�#�#�#��4����4����4����4������������-�-�-�-����������������????=�=�=�=�15C15C15C15C----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

��

� ����y%*��"�e�&%���'� ����L��variable_name := expression ;

N�h*L

* �* �* �* �1111�8=��8=��8=��8=�* �* �* �* �5555----����* �* �* �* �5555�8=��8=��8=��8=�������������5555�-�-�-�-���� � � � �8=�8=�8=�8=�12121212�-�-�-�-����������������8=�8=�8=�8=�������������JJJJ1111�-�-�-�-����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ��%4"����� �� �� �� ��� ��j������L��������������� ���]�����3�&8��"���������������������������� �34��3�4�&J�3&�S� ����j�������%4"�-���)��?"��%4���T�"�j����7� ���� ��A�H�����

���%4"�j�����)��'@��)��3&����'*�����������. ��. ��. ��. �������T��?����+��34��.%04�B��8���z���%4"�-����%PS������������� ���

WAIT UNTIL clk_name = '1';

WAIT ON clk_name = ‘1’;

WAIT FOR time_value ns ;

WAIT;

www.IranMedar.com Morteza Shabanzade

Page 12: VHDL Learninig Farsi

12

N�h*L��������"���%4"�-��sequential"�7�'*��%7���+

. ���������$. ���������$. ���������$. ���������$====AAAA1111AAAA-��-��-��-�������������������. ��������. ��������. ��������. ��������7�7�7�7���$A�*��� ����$��$A�*��� ����$��$A�*��� ����$��$A�*��� ����$====AAAA1111A�A�A�A�;;;;----�����������. �������$��. �������$��. �������$��. �������$====AAAA1111AAAA----��

������������-���4�I%0*���M���� ��07���'*�'0*�-���������0%&�����N"�*���%4"����0��*�'*��A����?����l����PS�G����$��$��$��$������+���������������������������������������#��������#��������#��������#������������������������������������������������������� �� �� �� ���������$�������$�������$�������$====AAAA1111AAAA----������������������������������������������������������������????=�=�=�=� ���� � ���� � ���� � ���� �----����6���������6���������6���������6���������----����������

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �'� ������%4"������K������������K������������K������������K�������L���label:

WITH expression SELECT

signal <= expression WHEN � constant_value,

expression �WHEN constant_value,

expression �WHEN constant_value,

expression �WHEN constant_value;

N�h*L�

.�����������������.�����������������.�����������������.�����������������������������������I���������������I���������������I���������������I�????=�=�=�=� ��.����F ��.����F ��.����F ��.����F::::::::G��G��G��G��////������������������������������������������������������������������������������������������������ �.����F �.����F �.����F �.����F:1:1:1:1G��G��G��G��////������������������������������.����F��������������������������.����F��������������������������.����F��������������������������.����F1:1:1:1:G��G��G��G��/��/��/��/��������������������������������.����F��������������������������.����F��������������������������.����F��������������������������.����F11111111G�G�G�G�----����

�-@�*�A��%S�J�'*������������������"�7�?"�"��7�#�3&����'*��)�� ���'*��7����)l�����'r%J�������������������������"� �?"��%4��.���+��� �

N�h*L

.��������������.��������������.��������������.������������������������������� ������������������ ������������������ ������������������ �����????=�=�=�=�* ��* ��* ��* ��1111������������.���F.���F.���F.���F::::::::::::G�@G�@G�@G�@�����������������������������������* ���������������������������������* ���������������������������������* ���������������������������������* ��5555��.���F��.���F��.���F��.���F::1::1::1::1G�G�G�G�D�D�D�D�FFFF11:11:11:11:G�G�G�G�D�D�D�D�FFFF:11:11:11:11G�G�G�G�////�����������������������������������* ���������������������������������* ���������������������������������* ���������������������������������* ��CCCC��.������������.������������.������������.����������----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ���%4"�'� ����!���K�����!���K�����!���K�����!���K�����L���loop_label:

FOR index_variable IN discrete_range LOOP

statement;

statement;

END LOOP loop_label; N�h*L�

��������������������������������������������::::����������������3333������������������������������������������� ��������������� ��������������� ��������������� 7777����;=;=;=;=AAAA1111A�����A�����A�����A���������

����������������������������������������������������������������������������������������������������7777����;�;�;�;�????=�=�=�=� 7777����;;;;----������������������������������������������������������������������������----��������������������������������----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

!���P=��B(�"����K� ��������K� ��������K� ��������K� ����t(� ��� t(�!��`� ����!���P=�c@=������7�'*���O������K����� ������K����� ������K����� ������K����� ���

���7�'*���O�� �*.���!��C��� +��

� ��%4". ��. ��. ��. ���!���P=�A��%��� �"� vl��*�'���0� ����������������������������������� �� "�7�'*� ?"��%4��Y������*��*�����A��O��B*� �^8��8����"�34�. ��. ��. ��. ����� ���#�'����I%���'0��'���0�+��

�T��=�����'0*���������7���'*+������

www.IranMedar.com Morteza Shabanzade

Page 13: VHDL Learninig Farsi

13

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ���%4"�'� ����������K�����������K�����������K�����������K�����L���loop_label:

WHILE boolean_expression LOOP

statement;

statement;

END LOOP loop_label;

N�h*L�

��������))))��������������������8888���������������������.���������������������.���������������������.���������������������.���������L��L��L��L�?�?�?�?�C1C1C1C1����������������������������������������������������L�������������������������L�������������������������L�������������������������L�����????=�=�=�=�LLLLJJJJ1111�-�-�-�-����������������������������������������������������������������������������������������7777LLLLJJJJ1111;�;�;�;�????=�=�=�=� 7777LLLL;J;J;J;J 7777LLLL;;;;----��������������������������������������������������������������������������������������������������������----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

��� ���%4"�'� ����!���K����� ��!���K����� ��!���K����� ��!���K����� ���L��

generate_label: FOR index_variable IN discrete_range GENERATE

statement;

statement;

END GENERATE;

N�h*L

,�,�,�,�))))����������������1111�8��8��8��8���������������������������������::::����������������9999����� ������� ������� ������� ����������������������������������������������������������������������������������7777����;�;�;�;�????=�=�=�=� 7777����;�;�;�;�4��� 4��� 4��� 4��� 7777����;�;�;�;�4����4����4����4����7777����;;;;----���������������������������������������������������������������������������� ���������� ���������� ���������� ��----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �%4"�'� ���������K����� �����K����� �����K����� �����K����� ���L��generate_label:

IF expression GENERATE

statement;

statement;

END GENERATE;

N�h*L�

,�,�,�,�))))����������������5555�8��8��8��8�������������������������?�?�?�?�EEEE����� ������� ������� ������� ��������������������������������������������������������������������������������������������������������������7777����;�;�;�;�????=�=�=�=� 7777����;�;�;�;�4��� 4��� 4��� 4��� 7777����;�;�;�;�4����4����4����4����7777����;�;�;�;�----������������������������6������ ����������������������6������ ����������������������6������ ����������������������6������ ��----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ����A�}��G��������^���'� �����0bA�}��L

TYPE type_name IS ARRAY <index_value> OF element_type;

STD_LOGIC_VECTOR( high DOWNTO low );

BIT_VECTOR( high DOWNTO low ) ;

INTEGER RANGE low TO high ;

!���P=�����K����� ������K����� ������K����� ������K����� ������O�� �*.���!��C����7�'*c@=���!���P=��B(�"����K���������K���������K���������K�������� ���

t(����t(�!��`��O������7�'*�������+��

���%4"�B(�"�!���P=���K����� �����K����� �����K����� �����K����� ���!��C������������������������������������ �*.�������7�'*���O�+��

���%4"�B(�"�!���P=.�����K�����.�����K�����.�����K�����.�����K������!��C���������� ������� ������� ������� ����t(����t(������7�'*���O�+��

I�+}��G��A���������j����A� �� '* � ���j���-���)�������%����'%J�������y%*�����S�0T�4

"����e��%��+��

www.IranMedar.com Morteza Shabanzade

Page 14: VHDL Learninig Farsi

14

N�h*L

��� ��� ���� ��� ���� ��� ���� ��� �8�8�8�8�������������))))��������������������))))*�����*�����*�����*�����7�7�7�7�9999���.������.������.������.���::::;;;;-�-�-�-������������34��N"�*L����� � � � 77779999;�;�;�;�/�/�/�/� 77772222;�;�;�;�////� � � � 7777>>>>;�;�;�;�/�/�/�/� 77773333;�;�;�;�/�/�/�/� 7777CCCC;�;�;�;�/�/�/�/� 77775555;�;�;�;�/�/�/�/� 77771111;�;�;�;�/�/�/�/� 7777::::;�;�;�;�����������������������������������������������������������

N�h*L

�����"�����"�����"�����"))))��������� �� ����������� �� ����������� �� ����������� �� ��7�7�7�7�CCCC���.������.������.������.���::::�;��;��;��;�������������������������))))��������������������----��������������������������������))))�������������������������������� ����������� ����������� ����������� ���::::����������������1>1>1>1>----����

����������������������������������������������������������������������� ������ ������ ������ ���8�8�8�8�""""))))����������������----����� �� ���� �� ���� �� ���� �� �����������8�8�8�8���������))))��������----�������������������������������������������������������������������

N�h*L�

�������������* ����� �� �������* ����� �� �������* ����� �� �������* ����� �� ��7�7�7�7�::::����������������9999�;��;��;��;�������������������������������������----�������� �� �������� �� �������� �� �������� �� ����8�8�8�8�* ��* ��* ��* ��8=�7�8=�7�8=�7�8=�7�>/1:/5/3/2/15/9/13>/1:/5/3/2/15/9/13>/1:/5/3/2/15/9/13>/1:/5/3/2/15/9/13�;�;�;�;----������������������������������������������������������������������

����

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM������

TYPE array_type_name IS ARRAY (�high DOWNTO low�) OF type_name;

TYPE array_type_name IS ARRAY ( integer RANGE <>) OF type_name;

N�h*L�

����������������������������))))���������� �� ����������� �� ����������� �� ����������� �� �7�7�7�7�3333���.������.������.������.���::::�;��;��;��;�����������������������������))))��������������������))))*�����*�����*�����*�����7�7�7�7�5555���.���.���.���.������������::::�;�;�;�;----��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2 1 0���� 4

��� ���%��� ���%��� ���%��� ���%""""'�8���)������-'�8���)������-'�8���)������-'�8���)������-��������������������������������������������������������������������������������������������������������������������������������������������������������������������3

2

1

0

N�h*L���0 �'*�?"��%4���Y�"�A�TS��)����@0���A������0@��n�1*����������"������������j���^����8�*��"�� �34���%��4���8��*�'~��+

������ ���4�������� ���4�������� ���4�������� ���4���� �� ��7��������� ���?B�;������ �� ��7��������� ���?B�;������ �� ��7��������� ���?B�;������ �� ��7��������� ���?B�;���������������-�������-�������-�������-���� ������������������������� �� ���� ��� �� ���� ��� �� ���� ��� �� ���� ��8�8�8�8�� ���4�� ���4�� ���4�� ���4�7�7�7�7�5555���.������.������.������.���MMMMEEEE�;�8=�7��;�8=�7��;�8=�7��;�8=�7�C/>/1/3/9/N/15/13/5:/1EC/>/1/3/9/N/15/13/5:/1EC/>/1/3/9/N/15/13/5:/1EC/>/1/3/9/N/15/13/5:/1E�;�;�;�;----����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� '� �����j����'7���76��� ���6��� ���6��� ���6��� ���L���TYPE enumerated_type_name IS ( name , name , name );

�����*���)��'%&�S�B*�7�'7���7�j��������������� �34�����% ��� �0�"�'*���H���� �'����=����F4�0%*����N�%�H�"�A�����*� ���'*� ���������� �'O��(���"�M*�j�����������������������"�B����c�����*�����)��������YO�����������T��"����A)�&S�*��+��

�-�����������������������������3S�J�-�7�*�'J��U��"��%1�������� ���� ������ ���� ������ ���� ������ ���� �������"�7�'*�?"��%4�+�� N�h*L

�����������I �����������I �����������I �����������I ))))������������������������������������7�7�7�7�@@@@::::A�A�A�A�/�/�/�/�@@@@1111A�A�A�A�/�/�/�/�@HA�@HA�@HA�@HA�;;;;----�������������������������� ���� ���� ���� ��))))��������������������������������7�7�7�7�����::::�/��/��/��/�����1111�/��/��/��/�����5555�/��/��/��/�����CCCC�;�;�;�;----���������' �)������7������' �)������7������' �)������7������' �)������7� ���/�� �/��������/��������/�����/���*�/����/��� ��/�������;- ���/�� �/��������/��������/�����/���*�/����/��� ��/�������;- ���/�� �/��������/��������/�����/���*�/����/��� ��/�������;- ���/�� �/��������/��������/�����/���*�/����/��� ��/�������;-�����������)�� ������7��� ���/������/�. �����/���;-�������)�� ������7��� ���/������/�. �����/���;-�������)�� ������7��� ���/������/�. �����/���;-�������)�� ������7��� ���/������/�. �����/���;-�������� ���� ��� ������8������I -��� ������8������I -��� ������8������I -��� ������8������I -��������������������������� ���� ������������������������� ���� ������������������������� ���� ������������������������� ���� ������8�8�8�8��� ���� ���� ���� ��))))��������������������8=�8=�8=�8=�����1111�-�-�-�-�������� ���� � �� ���"�+)�����8�' �)���-� �� ���"�+)�����8�' �)���-� �� ���"�+)�����8�' �)���-� �� ���"�+)�����8�' �)���-���������

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

II+A�}���"�������^����

www.IranMedar.comwww.IranMedar.com Morteza Shabanzade

Page 15: VHDL Learninig Farsi

15

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �^���'� �������� ���� ���� ���� ����L���SUBTYPE subtype_name IS type_name RANGE low_value TO high_value;

SUBTYPE array_subtype_name IS array_type_name( high_index DOWNTO low_index );

���������� ����� ����� ����� �������"�)��A���=��H*��)��8�������������������%� ��`�0=�"���A���"���?�7�"��R*�j���'0��34����������������������7���'*+�����

N�h*L

� ��������� ��������� ��������� ��������))))��������������� ������������������ ������������������ ������������������ ���::::����������������>11>11>11>11�-�-�-�-����� ������#������� ��� ������#������� ��� ������#������� ��� ������#������� ��))))*�����*�����*�����*�����7�7�7�7�9999���.������.������.������.���::::�;�;�;�;----�������� ��� �� �8���)��-��� �� �8���)��-��� �� �8���)��-��� �� �8���)��-������������������������������ �� �8�#���-�������������������������� �� �8�#���-�������������������������� �� �8�#���-�������������������������� �� �8�#���-����

������������7����%7�"��OY��� �������������������� ����� ����� ����� �����!��K=��3�&8��"� ���������� ���������� ���������� �����������BP8�'0���)� ��� ��� ��� ������7�'*�^���+����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �'� �����A�����@����^������������������������������L

COMPONENT component_name

GENERIC( parameter_name : string := default_value; � �"��"�c�����*�����e��%������'T%&�

parameter_name : integer := default_value ); � ��A���%(����

PORT( input_name , input_name : IN STD_LOGIC;

bidir_name , bidir_name : INOUT STD_LOGIC;

output_name , output_name : OUT STD_LOGIC);

END COMPONENT;

�'O��(���A"����A��*��������������������������������'O��(���A"����A��*������1*��������M�8"�������������������������7����I�"��*��]8�+�������� ��������]8�^���-�a��"������������������������������!��K=��3�&8��"������ ���������� ���������� ���������� �����������`�"��T��!�+��

�� N�h*�L

��������������) ���������������) ���������������) ���������������) ���������������������������������������������������7� �/� �/���8������)������-������������������������������������������7� �/� �/���8������)������-������������������������������������������7� �/� �/���8������)������-������������������������������������������7� �/� �/���8������)������-�������������������������������������������������������/�� ����8�������)������;-���������������������������������������������������/�� ����8�������)������;-���������������������������������������������������/�� ����8�������)������;-���������������������������������������������������/�� ����8�������)������;-�����������������-���������-���������-���������-��������

N�h*L

����������O%��������O%��������O%��������O%5555����������������������������������������������������������������������������������������������������������������������������������������������������7�7�7�7�����1111�/��/��/��/�����5555�8��8��8��8���������������������))))������������������������----���������������������������������������������O������������������������������������������O������������������������������������������O������������������������������������������O�1111�8��8��8��8�������������������������))))������������������������;�;�;�;�----����6���������-6���������-6���������-6���������-��������������������������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

www.IranMedar.com Morteza Shabanzade

Page 16: VHDL Learninig Farsi

16

� ��]8�G��)��A����������'� ��������� ����� ����� ����� �������������������������������L����� instance_name: component_name PORT MAP ( component_port => connect_port ,

component_port => connect_port );

instance_name: component_name

PORT MAP ( connect_port , connect_port );

��

��]8�G��)��34���)l��8��*�'������������!���%*��]8�-���0b���_�U��"��T�"���%4"��8��*�-����"��gS���0 �?"��%4��"�(����������������������������������������0 �'��*�"�(�'�`�����*�������!�]8�-��������%�����*������(��*�G� ������������%4"�G� ����3������"����������� ������������� ������������� ������������� ����������������������������������������������������������������������

���0 �?"��%4��!�]8�-���)����������+���j�����������$"���0@��?"��%4��?�7��%�����������]8�A������#�'(���)��������'*� ��G� �������)�34��A��B*� �^����j����"��@�S�J��,�����

�����4�N�C��W����@0���"�O���������������S�0T�4���-����"��Y*��34���%��4��?�7��%�����������]8�A������#����?"��%4��������#�����)�������W�����������������"�7"�����"�O�������^���F���Q�RS�)��������#�-%7����H��O� �@*��-�0:���+�����������������������������a��"����-����������� ������������� ������������� ������������� ���������"� ���������� ���������� ���������� ����������"�7�'*��%7���+��

N�h*L����

���++++1111�8��8��8��8�������������)))) ���� ���� ���� ����������������������� ��������������� ��������������� ��������������� ��7�7�7�7�""""7777::::;=;=;=;=BBBB � � � �/�/�/�/�####7777::::;=;=;=;=BBBB � � � �////����������������������������=B���/���������������������������=B���/���������������������������=B���/���������������������������=B���/���� ������������������������������+'��������������������������+'��������������������������+'��������������������������+'7777::::;=;=;=;=BBBB��������////���������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(7777::::;;;;=B����;-=B����;-=B����;-=B����;-�++++5555�8��8��8��8����) �����) �����) �����) ����������������������������� ��������������� ��������������� ��������������� ��7�7�7�7�""""77771111;=;=;=;=BBBB � � � �/�/�/�/�####77771111;=;=;=;=BBBB � � � �////������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(7777::::;;;;=B���/=B���/=B���/=B���/���� ������������������������������+'7��������������������������+'7��������������������������+'7��������������������������+'71111;=B��/;=B��/;=B��/;=B��/���������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(77771111;;;;=B����;-=B����;-=B����;-=B����;-�++++CCCC�8��8��8��8����) �������) �������) �������) ����������������������� ��������������� ��������������� ��������������� ��7�7�7�7�""""77775555;=;=;=;=BBBB � � � �/�/�/�/�####77775555;=;=;=;=BBBB � � � �////������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(77771111;;;;=B=B=B=B���/���/���/���/���� ������������������������������+'7��������������������������+'7��������������������������+'7��������������������������+'75555;=B��/;=B��/;=B��/;=B��/���������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(77775555;;;;=B����;-=B����;-=B����;-=B����;-�++++3333�8��8��8��8����) �������) �������) �������) ����������������������� ��������������� ��������������� ��������������� ��7�7�7�7�""""7777CCCC;=;=;=;=BBBB � � � �/�/�/�/�####7777CCCC;=;=;=;=BBBB � � � �////������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(77775555;;;;=B���/=B���/=B���/=B���/���� ������������������������������+'7��������������������������+'7��������������������������+'7��������������������������+'7CCCC;=B��/;=B��/;=B��/;=B��/���������������������������������������������������������������������������������������������������������"%%(�"%%(�"%%(�"%%(7777CCCC;;;;====B����;-B����;-B����;-B����;-����

� ��0�����N�h*�)��A��"���������A������������++++CCCCj���)��,���%4"������� ������� ������� ������� �"� �B�=������B@7�-��������0 �?"��%4��L������

++++CCCC�8��8��8��8����) �������) �������) �������) ��������������� �������� �������� �������� ��7�7�7�7�""""77775555;�;�;�;�/�/�/�/�####77775555;�;�;�;�/�/�/�/��"%%(�"%%(�"%%(�"%%(77771111;�;�;�;�/�/�/�/��+'�+'�+'�+'77775555;�;�;�;�/�/�/�/��"%%(�"%%(�"%%(�"%%(77775555;�;;�;;�;;�;----��

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

�j��$��

�j��,��

www.IranMedar.com Morteza Shabanzade

Page 17: VHDL Learninig Farsi

17

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �'� �����A�����@����^��� �$ ��� �$ ��� �$ ��� �$ ��L�

PACKAGE pack_name IS

.

Pack_declarations

.

END pack_name ;

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

PACKAGE BODY pack_name IS

.

Pack_declarations

.

END PACKAGE BODY pack_name ;

N�h*L�

���� �$ ������)������� �$ ������)������� �$ ������)������� �$ ������)����������������������������������������������������� ���� ���� ���� ��))))���������������� ������������������� ������������������� ������������������� ���::::����������������1>1>1>1>�-�-�-�-�������� �$ ��-���� �$ ��-���� �$ ��-���� �$ ��-����

�-���)�������(�'*�N�J�����������������B(�"��"�� �� �$ ��� �$ ��� �$ ��� �$ ���4�����A����������))))�������������34���-����� �$ ��� �$ ��� �$ ��� �$ ������B(�"��"�G��*�����]���������% .��$.��$.��$.��$���������% �.��$.��$.��$.��$��7���'*����� �A����*�����'*���G��*���A������8�A����V�����#�������% �G������"��%�������8

��4�����A�T�"��*������ ������ ������ ������ ����)))) ���� ���� ���� �������&����'*���]0���c#���0 �?"��%4��L��+���.��$+���.��$+���.��$+���.��$0��)��0 ��-0��)��0 ��-0��)��0 ��-0��)��0 ��-������������ ����) ��������������� ����) ��������������� ����) ��������������� ����) ���������������7� �/� �8����� ��)���-����7� �/� �8����� ��)���-����7� �/� �8����� ��)���-����7� �/� �8����� ��)���-����

���������8�����8�����8�����8������� ��)���;-������ ��)���;-������ ��)���;-������ ��)���;-������-��-��-��-����

N�h*L�'M]0*������"�����"��C8��H0����"�NAND���XOR�G��B(�"��"����A"�����"�package��������logical_pack���"����8�L

�� � �������-�� � �������-�� � �������-�� � �������-����+�������+�������+�������+�������0000������������))))��������������������))))11231123112311230000 �� �� �� ��----����� �$ �������� �)� �$���� �$ �������� �)� �$���� �$ �������� �)� �$���� �$ �������� �)� �$������������������&"&������������&"&������������&"&������������&"&�5555������������������������������������������������������������7�7�7�7�����1111�/��/��/��/�����5555�8��8��8��8���������������������))))�����-�����-�����-�����-��������������������������������������������������������������������������������������������������������������������1111�8��8��8��8�������������������������))))������������������������;;;;----�����������������-�������������-�������������-�������������-���������������PO%�����������PO%�����������PO%�����������PO%5555������������������������������������������������������������7�7�7�7�����1111�/��/��/��/�����5555�8��8��8��8���������������������))))��������������������----��������������������������������������������������������������������������������������������������������������������1111�8��8��8��8�������������������������))))������������������������;;;;----�����������������-�������������-�������������-�������������-�������� �$ ��-���� �$ ��-���� �$ ��-���� �$ ��-����------------------------------------------------------

�� � �������-�� � �������-�� � �������-�� � �������-����+�������+�������+�������+�������0000������������))))��������������������))))11231123112311230000 �� �� �� ��----����� �$ ��� ����� �$ ��� ����� �$ ��� ����� �$ ��� ��������� �)� �$����� �)� �$����� �)� �$����� �)� �$����������������������������������������6�����&"&6�����&"&6�����&"&6�����&"&5555������������������������������������������������������������7�7�7�7�����1111�/��/��/��/�����5555�8��8��8��8���������������������))))��������������������----����

��"����� �$ ��� �$ ��� �$ ��� �$ ���tM������������������������� ����� ����� ����� �����%7�"�-%7������A)�����T�"� �$ ��� ���� �$ ��� ���� �$ ��� ���� �$ ��� ���3&���+��

������'*�^���B*�7����������������������� ����� ����� ����� �������������������������������������������������� ��� ��� ��� ����������� ����� ����� ����� �����7���'*���

www.IranMedar.com Morteza Shabanzade

Page 18: VHDL Learninig Farsi

18

������������������������������������������������������������������������������������������������������������1111�8��8��8��8�������������������������))))������������������������;;;;----�������������������������������&"&����&"&����&"&����&"&�5555�-�-�-�-������������������������"������������ �"������������ �"������������ �"������������ �5555 ��� ��� ��� ���������������������������&"&�&"&�&"&�&"&�5555������������������������������������������������ ���� ���� ���� ��������������������������������������������������������������������1111�?�?�?�?=�=�=�=�����1111� ���� ���� ���� ���5555�-�-�-�-��������������������������� ���� ���� ���� �5555 ���� ���� ���� ����----������������������������6�����PO%6�����PO%6�����PO%6�����PO%5555������������������������������������������������������������7�7�7�7�����1111�/��/��/��/�����5555�8��8��8��8���������������������))))��������������������----��������������������������������������������������������������������������������������������������������������������1111�8��8��8��8�������������������������))))������������������������;;;;----�������������������������������������PO%�PO%�PO%�PO%5555----������������������������"�����������4��"�����������4��"�����������4��"�����������4��5555 ���������PO% ���������PO% ���������PO% ���������PO%5555��������������������������������������������� ���� ���� ���� �������������������������������������������������������������������1111�?�?�?�?=�=�=�=�����1111�4�����4�����4�����4����5555�-�-�-�-���������������������������4�����4�����4�����4��5555 ���� ���� ���� ����----�������� �$ ��� ����-���� �$ ��� ����-���� �$ ��� ����-���� �$ ��� ����-����

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �����'���(������^���'� ������!����!����!����!����L��

FUNCTION func_name ( func_inputs : in inputs_type ) RETURN output_var_type IS

VARIABLE var_name : var_type ; .

.

.

BEGIN

.

.

.

Output_var := statement ;

RETURN output ;

END func_name ;

N�h*L� �������������������������� ������7�� ������7�� ������7�� ������7�* ���/�� 4�/����8��������;�������������������* ���/�� 4�/����8��������;�������������������* ���/�� 4�/����8��������;�������������������* ���/�� 4�/����8��������;������������������������������������������� ���� ���� ���� �����������������������* ���B�� 4�������������� 4�-���������������* ���B�� 4�������������� 4�-���������������* ���B�� 4�������������� 4�-���������������* ���B�� 4�������������� 4�-���������������������������* ���?������������������������������������* ���?������������������������������������* ���?������������������������������������* ���?������������������-�����-�����-�����-�������������������������������������* ���-���������������������������������* ���-���������������������������������* ���-���������������������������������* ���-���������������������-�����������������-�����������������-�����������������-�������������-���������-���������-���������-����

�n�C��!K�O��"������'*�����'���(������������e�&%������y%*N�0T�4�����0��*�"��T��!��`�.���L��� �� �� �� �1111�8=��8=��8=��8=� ������ ������ ������ ������7�7�7�7���������������������))))������ ��������� ��������� ��������� ���JJJJ��������������������������������/�/�/�/�1:1:1:1:�/��/��/��/�1::1::1::1::�;��;��;��;�----��������?=�� ������?=�� ������?=�� ������?=�� ����7� �/� �/���;�-��7� �/� �/���;�-��7� �/� �/���;�-��7� �/� �/���;�-����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

� �b��?�T:�������������@�����"�'���N�0T�4�'O��(� ��0��"�(�B(�"�?�7�^�����y%*�G��)��v��%J

�0 �?"��%4��'%1����'O��(+��

� -��� �$ ��� �$ ��� �$ ��� �$ �������� ��� ���� ?"���� ^��� � � A������������������������������� �� ?"� ����� ��� �*"�(��I��"��*�������% ��"

� vKh*� ����"� 34�"� � � '*�������������I ���I ���I ���I ))))�� �� �� �� �����8�)���� ������ �A�T�"��*���������"����8�*���������"

�'���(����!���%4"�G� ������"� ����#�� � ����� � ����� � ����� � ����������������0 �?"��%4�������)��+���0��*�L��

�� � �������/�����I )�� �-�� � �������/�����I )�� �-�� � �������/�����I )�� �-�� � �������/�����I )�� �-����+�������+�������+�������+�������0000������������))))��������������������))))11231123112311230000 �� �� �� ��----����+��������I )�� 0����� �)� �$0 ��-+��������I )�� 0����� �)� �$0 ��-+��������I )�� 0����� �)� �$0 ��-+��������I )�� 0����� �)� �$0 ��-����

�c@=������������������������������������������������"��"�'O��(�G��tM����tM�+��

�����"� ���������� ���������� ���������� ������������������ �$ ��� �$ ��� �$ ��� �$ ��"�7�'*� K=���+��

www.IranMedar.com Morteza Shabanzade

Page 19: VHDL Learninig Farsi

19

N�h*L��������������������������������� ������ ������ ������ ����7�7�7�7� �� �� �� ��1111�/��/��/��/� �� �� �� ��5555�/��/��/��/� �� �� �� ��CCCC�8��8��8��8���������������������))))������������������������;�;�;�;�������������������������������������))))�������������������������������������������������������������* �� ����������8����)������-���������* �� ����������8����)������-���������* �� ����������8����)������-���������* �� ����������8����)������-��������� ��������� ��������� ��������� ������������������������������������������������������������������������8=�7�8=�7�8=�7�8=�7� �� �� �� ��1111� �� ��� �� ��� �� ��� �� ��5555�;��;��;��;�������7���7���7���7� �� �� �� ��1111� �� ��� �� ��� �� ��� �� ��CCCC�;��;��;��;�������������7�7�7�7� �� �� �� ��5555� �� ��� �� ��� �� ��� �� ��CCCC�;��;��;��;�----�������������������������-���������������������-���������������������-���������������������-��������������������� ����-� ����-� ����-� ����-��������������������������������������������������������

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

��

� �'���(������^���'� ������������������������������������L��� PROCEDURE procedure_name ( procedure_inputs : in inputs_type ;

procedure_outputs : out outputs_type ) IS

VARIABLE var_name : var_type ;

VARIABLE var_name : var_type ; . .

.

BEGIN . . .

Output_var := statement ;

Output_var := statement ;

END PROCEDURE procedure_name ;

����������������������������������0����������������������������!�P4�R*���H���A����'=����*�����G������������������"���'*��� ����A���@�A���+���������������������������������������������������������������� �34��-����"����������������������������������)�H*�tM�������@�S�J��"��7����%7�"���������� �'O��(�"�����������'*�

�-�0:����7���'*�'O��(�G�� ���"����������������������������������������j���)��'����?"�"��������������"����!�=KrU��'0���7����%7�"�.������������������������������������"�7�"�7�?"�%4���'O��(����3������"���""�����H��� ��A���'����=�cx4+��

����

N�h*L

�������������������������������������������) �������) �������) �������) ����3333�7��7��7��7� � � � �/�/�/�/� ��� ��� ��� ���8�8�8�8�������������������������))))��������������������))))*�����*�����*�����*�����7�7�7�7�CCCC���.������.������.������.���::::�;�;�;�;----��������������������������������������������������8���������)�������������������������������������������������8���������)�������������������������������������������������8���������)�������������������������������������������������8���������)�����������))))*�����*�����*�����*�����7�7�7�7�CCCC���.������.������.������.���::::�;�;�;�;----���������������������������������������������*�����.�8����� ���� �;��������������������������������������������������*�����.�8����� ���� �;��������������������������������������������������*�����.�8����� ���� �;��������������������������������������������������*�����.�8����� ���� �;���������������������* �� ��������������* �� ��������������* �� ��������������* �� ������8��8��8��8��������������))))��������������������))))*�����*�����*�����*�����7�7�7�7�CCCC���.������.������.������.���::::�;�;�;�;----������������* �� ���� ������������* �� ���� ������������* �� ���� ������������* �� ���� ����8�8�8�8� ��� ��� ��� ���8=8=8=8=AAAA::::A�A�A�A�----��������� �������� �������� �������� �������������������������������������������������������������������������������::::����������������CCCC����������������������������������������7�;8����������������7�;8����������������7�;8����������������7�;8=� 7�;�4��� 7�;�4���� ����-=� 7�;�4��� 7�;�4���� ����-=� 7�;�4��� 7�;�4���� ����-=� 7�;�4��� 7�;�4���� ����-�������������������� ����8=�7� 7�;� �� 7�;�;����7�� �������������������� ����8=�7� 7�;� �� 7�;�;����7�� �������������������� ����8=�7� 7�;� �� 7�;�;����7�� �������������������� ����8=�7� 7�;� �� 7�;�;����7�� �������� � � � ������7� 7�;���� 7�;�;�-�7� 7�;���� 7�;�;�-�7� 7�;���� 7�;�;�-�7� 7�;���� 7�;�;�-���������������������-�����������������-�����������������-�����������������-��������������������8=����-����������������8=����-����������������8=����-����������������8=����-���������������*�����.������������*�����.������������*�����.������������*�����.�8=�8=�8=�8=�� ����� ����� ����� ����=�=�=�=�@�@�@�@�1111A�A�A�A�----����������������-������������-������������-������������-��

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

www.IranMedar.com Morteza Shabanzade

Page 20: VHDL Learninig Farsi

20

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� ?�����7�G��'&����� �'�i ������H0����" � �������������������������0 �'*��IJK*���L

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY entity_name IS

PORT

( data_input_name : IN INTEGER RANGE 0 TO count_value;

clk_input_name : IN STD_LOGIC;

clrn_input_name : IN STD_LOGIC;

ena_input_name : IN STD_LOGIC;

ld_input_name : IN STD_LOGIC;

count_output_name : OUT INTEGER RANGE 0 TO count_value

);

END entity_name;

ARCHITECTURE arch_name OF entity_name IS SIGNAL count_signal_name : INTEGER RANGE 0 TO count_value;

����BEGIN

PROCESS ( clk_input_name , clrn_input_name )

BEGIN ������IF clrn_input_name = '0' THEN���

count_signal_name <= 0;

ELSIF ( clk_input_name'EVENT AND clk_input_name = '1'�) THEN

IF ld_input_name = '1' THEN

count_signal_name <=data_input_name;

��ELSE

IF ena_input_name = '1' THEN

count_signal_name <= count_signal_name + 1;

� �ELSE

count_signal_name <= count_signal_name;

END IF;

END IF;

END IF;

END PROCESS;

count_output_name <= count_signal_name;

END arch_name;

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

����q��*���������������������"��������"��������"��������"��������������PS� "� �'4������%4"�)��BP8� �b��$��$��$��$���?�7��%7��

�*��)��BM%&*�'0��34���$��$��$��$������*��������������������������0 �'*�+��

www.IranMedar.com Morteza Shabanzade

Page 21: VHDL Learninig Farsi

21

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �G��'&����� �'�i ������H0����"!���!���!���!��� !���!���!���!������0 �'*��IJK*�����L����

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY entity_name IS

PORT

( d_input_name : IN STD_LOGIC;

clk_input_name : IN STD_LOGIC;

clrn_input_name : IN STD_LOGIC;

ena_input_name : IN STD_LOGIC;

q_output_name : OUT STD_LOGIC

);

END entity_name;

ARCHITECTURE arch_name OF entity_name IS

SIGNAL q_signal_name : STD_LOGIC;

���BEGIN

PROCESS ( clk_input_name , clrn_input_name )

BEGIN

IF clrn_input_name = '0' THEN

q_signal_name <= '0';

ELSIF ( clk_input_name'EVENT AND clk_input_name = '1' ) THEN

IF ena_input_name = '1' THEN

q_signal_name <= d_input_name;

ELSE

q_signal_name <= q_signal_name;

END IF;

END IF;

END PROCESS;

q_output_name <= q_signal_name;

END arch_name;

����������������������������� ���������������� ���������������� ���������������� ���������������� ����������������������������������������

����q��*���������������������"��������"��������"��������"��������������PS� "� �'4������%4"�)��BP8� �b��$��$��$��$�?�7��%7����

�*��)��BM%&*�'0��34���$��$��$��$������*��������������������������0 �'*�+��

www.IranMedar.com Morteza Shabanzade

Page 22: VHDL Learninig Farsi

22

��������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �'� �����3S�J�-�7�*�'&���� ���"���������%����"���������%����"���������%����"���������%����L���ENTITY machine_name IS

PORT( clk : IN STD_LOGIC;

reset : IN STD_LOGIC;

input_name , input_name : IN STD_LOGIC;

output_name , output_name : OUT STD_LOGIC);

END machine_name;

ARCHITECTURE arch_name OF machine_name IS TYPE STATE_TYPE IS ( state_name , state_name , state_name );

SIGNAL state : STATE_TYPE;

BEGIN PROCESS (clk)

BEGIN

IF reset = '1' THEN

state <= state_name;

ELSIF clk'EVENT AND clk = '1' THEN

CASE state IS

WHEN state_name =>

IF condition THEN

state <= state_name;

END IF;

WHEN state_name =>

IF condition THEN

state <=state_name;

END IF;

WHEN state_name =>

IF condition THEN

state <= state_name;

END IF;

END CASE;

END IF;

END PROCESS;

WITH state SELECT

output_name <= output_value WHEN state_name,

output_value WHEN state_name,

output_value WHEN state_name;

END arch_name;

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

����q��*���������������������"��������"��������"��������"��������������� ��%4"� )�� BP8� �b� �PS� "� � '4���$��$��$��$�?�7� �%7����

�*��)��BM%&*�'0��34���$��$��$��$������*��������������������������0 �'*�+������PS� �*����%4"�)�����������%4"�-��������$��$��$��$��"���&��0��

� "�7� '*� �%��� 3S�J� -����������� �������������� �������������� �������������� ������� ����� ���)@@@@1111AAAA� �7���������������������� �PS� �*�� �����$��$��$��$� �*.���

"��T��!��`+��

www.IranMedar.com Morteza Shabanzade

Page 23: VHDL Learninig Farsi

23

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

� �G��'&����� �'�i ������H0����"������������ �� ���� ���� ���� �� #����#����#����#�����������0 �'*��IJK*�L��

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY entity_name IS

PORT

( oe_input_name : IN STD_LOGIC;

data_input_name : IN STD_LOGIC;

tri_output_name : OUT STD_LOGIC

);

END entity_name;

ARCHITECTURE arch_name OF entity_name IS

BEGIN

PROCESS ( oe_input_name , data_input_name )

BEGIN

IF oe_input_name = '0' THEN

tri_output_name <= 'Z';

ELSE

tri_output_name <= data_input_name;

END IF;

END PROCESS;

END arch_name;

�������������� ���������������� ���������������� ���������������� ���������������� ������������������������������

'P� ��A�����*�A�������� ���� ���� ���� � ��� � ��� � ��� � ��� �����.����%4"�)�� ���'*����������������������������"����?"��%4�����)���-������

�[�Y&J����"����!����y�-��%@b� ����3P&��������*��� ��0 �'*+��

��������"�"���7������%4��(��b����)���/��������2"� ������%�����7���� �������1�������(�3���----����34��[�x4������T�%4�'*"��'%4�����+��

��������59����

www.IranMedar.com Morteza Shabanzade