Upload
peyman
View
27
Download
0
Embed Size (px)
DESCRIPTION
vhdl learning
Citation preview
1
��������������������� �����
� �
�
�
�������������������������������� !�
"��������# �!��$����%�� �
���������������������� ���� ��������� ��������������� ��������������&� �
�
�
�
�
����������� �
����������� ���
Morteza Shabanzadeh
�
�
��������������� ������������������������������ ��������� ��������������������� �!���"���#�������� �����$���
�������%&��'��(�)�����'*"���+,����-�������.�������"���#����� �����/� ���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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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