emulador de un microcontrolador pic 16f84 basado en una fpga

100

Upload: dinhdan

Post on 20-Dec-2016

227 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Emulador de un microcontrolador PIC 16F84 basado en una fpga

���

��

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

������

������

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

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

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

��

Page 2: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

���

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

���� ��������������������������������������������������������������������������������������������������������� ������ � ��� ������� ������������������������������������������������������������������� ������ ��� ��������� ��������������������������������� ����������������� !����� ������������ ���������"������������������ ���� � ����� ��������� ��������������� ������������� ������������������������������������������ ��������� � �������"�� ���� � ������������������������������������������������������������� ��������� ������ ����������������� � ��������������������������������������������������� ���

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

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

���� %��������"������������������������������������������������������������������������������������ ������� �� ����� ��������&��������������������������������������������������������������������� ��������� �������������������������������������������������������������������������������������������������� ��������� � ���� ������������������������������������������������������������������������������������������� ��������� ������������������������������������������������������������������������������������������ ����������� '()*(+(�,-�.(/0/�,-�1/0 ��������������������������������������������������������������������������������������������������� 0.1+-23(.'42�3-531(6�,-�60/�.(/0/�,-�1/0�������������������������������������������������������������������

������ �����%� ����7%� ����������� � ����� ��&�� ���������������������������� ��������� ����������� ��� ������������������������������������������������������������������ �������#� ������������������%�� �������������������� � ��� ��� ���

���� ��7����8���"� ���������������������������������������������������������������������������������� ��������� ���������� ��������������������������������������������������������������������������� ��������� �����%� � ���������� ��������������7��������� �������������������������������������������������������������������������������������������������������������� �#��������� 6(/-��'2-( ���������������������������������������������������������������������������������������������������������������#��������� 6(/-��*0)*(+( ���������������������������������������������������������������������������������������������������������9��������� 6(/-��0/�-+0*'( ��������������������������������������������������������������������������������������������������������������� 6(/-��-+0*'(�������������������������������������������������������������������������������������������������������������

������ ������ ������ ������������������������������������������������������������������������� ����������� 6(/-�:*'2.':(6�,-�6(�(:6'.(.'42�� 6(/-� �+16�'.�:: ��������������������������������������������������������������� �-/3'42�,-�6(/�.0+12'.(.'02-/�/-*'-�� 6(/-� 0+ 3*6�����������������������������������������������������

������ �����%� ����7%� ����������� � �������7��������� ����%������� ����������������������������������������������������������������������������������������������������� ����������� �-2-*(6',(,-/ ��������������������������������������������������������������������������������������������������������������������� 6(/-� �('2%*(+- �����������������������������������������������������������������������������������������������������9��������� 6(/-�%*+�����������������������������������������������������������������������������������������������������������������#���������� 6(/-�%*+�-+0*'( ����������������������������������������������������������������������������������������������������#���������� 6(/-�%*+�-)'/3*0/ ���������������������������������������������������������������������������������������������������#9�������#� �*;1'3-.31*(�,0.1+-230�<'/3(������������������������������������������������������������������������������������#!�

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

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

���� ��������� ����� � ����������������������8����� ������������������� 9������ ���&����� ����������������� ������������������������������������������������������ 99������� (30/ ������������������������������������������������������������������������������������������������� 99������� 0+(2,0/ ������������������������������������������������������������������������������������������ 99�

���� ���&���������� ��������� �� ������������ ��#%9� ������������������ !��

Page 3: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

���

�� ��������������������������������������������������������������������������������������������������� "��

���� ����� ��������&����������������������������������������%������ ��������������������������������������������������������������������������������������������������� !������ ������ ������ ����� �������������������������������������������������������������� !��

#� ���������� ���������������������������������������������������������������������������������������� ""�

Page 4: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

���

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

���� ����������0/� :*0)*(+(,0*-/� ,-� � � ,'/:02-2� ,-� :03-23-/� -230*20/� ,-� :*0)*(+(.'42� ;1-� 6-/�:-*+'3-2� :*0)*(+(*� =� ,-:1*(*� /1/� (:6'.(.'02-/� -2� -6� +'/+0� /'/3-+(� -2� ;1-� /-�->-.13(*?2���23*-�6(/�.(*(.3-*@/3'.(/�;1-�-/30/�-230*20/�,-�:*0)*(+(.'42�0A*-.-2�(�60/�,-/(**066(,0*-/� ,-� /0A3B(*-� -2.023*(+0/� 6(� :0/'C'6',(,� ,-� /'31(*� :1230/� ,-�'23-**1:.'42D�6(�->-.1.'42�:(/0�(�:(/0�=�6(�.02/163(�,-�60/�<(60*-/�,-�6(/�<(*'(C6-/D�,-�60/�*-)'/3*0/�,-6�:*0.-/(,0*D�,-�6(�+-+0*'(D�-3.���/3(/�E-**(+'-23(/�/02�,-�12(�)*(2�(=1,(� :(*(� -6� :*0)*(+(,0*� =� 6-/� :-*+'3-� ,-:1*(*� /1/� (:6'.(.'02-/� =� (1+-23(*� /1�:*0,1.3'<',(,�����2� .(+C'0� 60/� :*0)*(+(,0*-/� ,-� +'.*0.023*06(,0*-/� ,-� /'/3-+(/� -6-.3*42'.0/�-+:03*(,0/� /-� -2.1-23*(2� .02� +?/� '2.02<-2'-23-/� (� 6(� E0*(� ,-� ,-:1*(*� /1/�(:6'.(.'02-/���/30�-/�,-C',0�:*'2.':(6+-23-�(�,0/�.(*(.3-*@/3'.(/�,-�6(�:*0)*(+(.'42�,-�+'.*0.023*06(,0*-/���

�� 6(�+(=0*@(�,-�60/�+'.*0.023*06(,0*-/�20�,'/:02-2�,-�6(�(*;1'3-.31*(�2-.-/(*'(�:(*(�;1-�-6�+'.*0.023*06(,0*�3*(C(>-�-2�+0,0�,-�,-:1*(.'42��

��� �(� :*0)*(+(.'42� ,-6� /0A3B(*-� /-� E(.-� -2� 12� /'/3-+(� 303(6+-23-� ,'A-*-23-� (�

(;1-6�-2�-6�;1-�/-*?�->-.13(,0�F)-2-*(6+-23-�12�� G����(*(�A(.'6'3(*�/1�6(C0*�,-�,-/(**0660�60/�:*0)*(+(,0*-/�,-�+'.*0.023*06(,0*-/�3'-2-2�6(/�/')1'-23-/�E-**(+'-23(/���

�� /'+16(,0*-/�� 02� :*0)*(+(/� :(*(� � � ;1-� /'+16(2� -6� A12.'02(+'-230� ,-� 12�+'.*0.023*06(,0*���'-2-2�-6�'2.02<-2'-23-�,-�;1-�20�3*(C(>(2�-2�3'-+:0�*-(6�2'�.02�6(/�/-H(6-/�A@/'.(/�*-(6-/�;1-�.02,'.'02(*?2�/1�A12.'02(+'-230��

��� �+16(,0*-/��02�/'/3-+(/�-6-.3*42'.0/�,'/-H(,0/�,-� 3(6� A0*+(�;1-�/'+16(2�-6�

A12.'02(+'-230� ,-� 12� +'.*0.023*06(,0*� =� ;1-� '2.0*:0*(2� 6(� :0/'C'6',(,� ,-�*-(6'I(*� 6(� ,-:1*(.'42� ,-6� /0A3B(*-� -2� 12(/� .02,'.'02-/�+?/� :(*-.',(/� (� 6(/�*-(6-/�;1-�6(/�;1-�:0,-+0/�-2.023*(*�-2�12�/'+16(,0*�,-�� ��

��6�0C>-3'<0�,-�-/3-�:*0=-.30�-/�'2<-/3')(*�6(�<'(C'6',(,�,-�*-(6'I(.'42�,-�-+16(,0*-/�,-�+'.*0.023*06(,0*-/�C(/(,0/�-2�.'*.1'30/�-6-.3*42'.0/�,-� 64)'.(�:*0)*(+(C6-�+-,'(23-�12�(23-:*0=-.30�;1-�(2(6'.-�6(/�3J.2'.(/�=�E-**(+'-23(/�2-.-/(*'(/����2�6(�'61/3*(.'42���:0,-+0/�0C/-*<(*�12�-/;1-+(�,-�C60;1-/�60/�,'A-*-23-/�-6-+-230/�;1-�:(*3'.':(*?2�-2�6(�*-(6'I(.'42�,-�-/3-�-+16(,0*���2�<-*,-�-/3?2�60/�.0+:02-23-/�(�,-/(**066(*���

Page 5: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

���

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

���

�$%&'()*+,-�����&.%/0)�1/$�/0%$)12(���2�-6�:*0=-.30�:0,-+0/�,'/3'2)1'*�60/�/')1'-23-/�.0+:02-23-/���

�� ��6(C�� �/� 12� .0+:'6(,0*� ,-/(**066(,0� :0*� �'.*0.E':� :(*(� /1� A(+'6'(� ,-�+'.*0.023*06(,0*-/�� �:6(C� -/� 12� :*0)*(+(� ,-6� A(C*'.(23-� ,-�+'.*0.023*06(,0*-/��� ��'.*0.E':��

��� �+16:'.���*0)*(+(�:(*(�-6�� �;1-�/-�,-C-*?�,-/(**066(*�-2�-6�:*0=-.30���+16:'.�

-/�-6�/0A3B(*-�;1-�,-/(**066(*J�:(*(�.0+12'.(*�-6�� �.02�-6�-+16(,0*����� $'3�,-�,-/(**0660�,-�������/3(�3(*>-3(�,-�,-/(**0660�,'/:02-�,-�12(�%�����63-*(�

3*(3'5� /0C*-� 6(� ;1-� /-� :*0)*(+(*?� -6� -+16(,0*� ,-6� +'.*0.023*06(,0*� =� 6(�.'*.1'3-*@(�(15'6'(*�2-.-/(*'(�FC60;1-�,-�.0+12'.(.'02-/�=�)-/30*�,-6�-+16(,0*G���(� %���� ,-6� K'3� ,-� ,-/(**0660� 6(� :*0)*(+(*J� .02� -6� -+16(,0*� ,-6�+'.*0.023*06(,0*�;1-�,-/(**066(*J��

��(�A12.'42�,-�.(,(�120�,-�-/30/�.0+:02-23-/�-/���

�� ���(C�� 02� -/3-� :*0)*(+(� -/.*'C'*J� =� .0+:'6(*J� 60/� :*0)*(+(/� ;1-� +?/�(,-6(23-�,-:1*(*J�.02�-6�-+16(,0*���0/�:*0)*(+(/�,-�:*1-C(/�60/�*-(6'I(*J�-2�-6�6-2)1(>-�-2/(+C6(,0*�,-6��'.*0.023*06(,0*��

��� �*0)*(+(�,-:1*(,0*��+16:'.��1�A12.'42�/-*?�6--*�60/�:*0)*(+(/�*-(6'I(,0/�.02�

-6�.0+:'6(,0*����(C�=�:*-/-23(*60/�(6�1/1(*'0��-/,-��+16:'.�/-�:0,*?2�:02-*�:1230/�,-�'23-**1:.'42D�*-(6'I(*�->-.1.'02-/�:(/0�(�:(/0D�.02/163(*�-6�-/3(,0�,-�6(�+-+0*'(�=�,-�60/�*-)'/3*0/�,-6�-+16(,0*D�-3.���/3-�:*0)*(+(�/-�,-/(**066(*?�.02�-6�-230*20�,-�,-/(**0660��'.*0/0A3� LL�������

���

��0%$)12(�+03$/0/-')12�/-�/$�4+'�1/�1/&)((2$$2�1/��5��3)()�$)�637)�

�'()'+8�1/�$'/()�

�������

����

����������

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

�� �����

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

������

����������

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

������

�� ����

���������

�� �����

Page 6: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#�

��� �2� 6(� A:)(� 3*(3'5� -2� 6(� ;1-� /-� :*0)*(+(*?� -6� -+16(,0*� /-� ,'/3'2)1-2� 3*-/�

)*(2,-/�C60;1-/���

�� �-/3'42�,-�.0+12'.(.'02-/���/3-�C60;1-�A12.'02(6�/-*?�-6�-2.(*)(,0�,-�*-.'C'*�60/�,(30/�,-6�� �=�3*(2/+'3'*60/�(6�)-/30*�,-6�-+16(,0*���(+C'J2�-2<'(*?� (6� � � 60/� ,(30/� ;1-� 6-� /-(2� 3*(2/+'3',0/� :0*� -6� )-/30*� ,-6�-+16(,0*��

��� �-/30*� ,-6� -+16(,0*�� �� :(*3'*� ,-� 60/� .0+(2,0/� *-.'C',0/� :0*� -6� � � /-�

-2.(*)(*?� ,-� *-(6'I(*� 6(/� (..'02-/� :-*3'2-23-/� :(*(� )-/3'02(*� -6�A12.'02(+'-230�,-6�-+16(,0*��

��� �+16(,0*�� 1� ,'/-H0� -/3(*?� *-(6'I(,0� :(*(� 0C3-2-*� 12� A12.'02(+'-230�

',J23'.0�(6�+'.*0.023*06(,0*��� ��#%9����

�(� :*0)*(+(.'42� ,-� 6(� %���� /-� *-(6'I(*?� .02� -6� 6-2)1(>-� � �� F� � � (*,B(*-�-/.*':3'02��(2)1()-G�=� /-�:*0)*(+(*?�-2�-6�-230*20�,-�,-/(**0660��0,-6'+�����

��

��$%&'()*+,-�����2'27()69)�1/$�4+'�1/�1/&)((2$$2�1/��5��3)()�$)�����$'/()�

�'()'+8��

Page 7: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

���

���� ��������� ��������� ����������������6� -230*20� ,-� ,-/(**0660� �:6(C� ��� :(*(� /'/3-+(/� 0:-*(3'<0/� ,-� �'.*0/0A3� -/� 12(�E-**(+'-23(� ,-� �'.*0.E':� ;1-� :-*+'3-� -6� ,-/(**0660� ,-� /0A3B(*-� :(*(� 60/�+'.*0.023*06(,0*-/��� ���1/�.(*(.3-*@/3'.(/�/02���

�� /0:0*3-�:(*(�60/�,'A-*-23-/�:*0.-/(,0*-/�,-��'.*0.E':����6(�E0*(�,-�,-/(**066(*�12(�(:6'.(.'42�-6�:*0)*(+(,0*�,-C-�/-6-..'02(*�-6�,'/:0/'3'<0�,-�,-/3'20���(*(�*-(6'I(*�-6�:*0=-.30�/-6-..'02(*-+0/�-6�+'.*0.023*06(,0*��� �#%9���

��� �0/'C'6',(,� ,-� ,-/(**0660� ,-� (:6'.(.'02-/� -2� 6-2)1(>-� � =� -2� 6-2)1(>-�

-2/(+C6(,0*�� �6� :*0=-.30� -/3(*?� 6'+'3(,0� (� (:6'.(.'02-/� -/.*'3(/� -2� 6-2)1(>-�-2/(+C6(,0*��

��� �0/'C'6',(,� ,-� 13'6'I(.'42� ,-� ,'A-*-23-/� .0+:'6(,0*-/� =� -2/(+C6(,0*-/�� �2�

A12.'42� ,-6� 6-2)1(>-� 13'6'I(,0D� ,-6� +'.*0.023*06(,0*� -/.0)',0� =� ,-� � 60/�.0+:'6(,0*-/� '2/3(6(,0/D� -6� ,-/(**066(,0*� :0,*?� -/.0)-*� -6� .0+:'6(,0*� ;1-�,-/-(�0�,-C-�13'6'I(*��

��

��

�$%&'()*+,-�������):�3/(0+'/�/&*27/(�/$�*203+$)12(�.%/�&/�1/&/)�%'+$+;)(����

�� '+16(,0*���6�-230*20�,-�,-/(**0660�:-*+'3-�*-(6'I(*�12(�/'+16(.'42�-2�-6�� �,-6�/0A3B(*-� ,-/(**066(,0�� �2� A12.'42� ,-� 6(/� E-**(+'-23(/� '2/3(6(,(/� -6�:*0)*(+(,0*� :1-,-� /-6-..'02(*� -6� ,-:1*(,0*� ;1-� ,-/-(� 13'6'I(*�� �-,'(23-�:1230/� ,-� '23-**1:.'42� =� ->-.1.'42� :(/0� (� :(/0� -6� ,-/(**066(,0*� :1-,-� '*�(<(2I(2,0� :0*� 6(/� ,'A-*-23-/� 6@2-(/� ,-6� :*0)*(+(� =� :1-,-� '*� 0C/-*<(2,0� -6�

Page 8: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9�

-/3(,0�,-�6(�+-+0*'(D�,-�60/�*-)'/3*0/�,-6�+'.*0.023*06(,0*D�,-�6(�:'6(D�-3.���/3(�/'+16(.'42� 20� /-� E(.-� -2� 3'-+:0� *-(6D� :0*� 60� ;1-� /460� -/� 12(� (=1,(� :(*(� -6�,-/(**0660� ,-6� :*0)*(+(D� � 20� (/-)1*(� /1� .0**-.30� A12.'02(+'-230� -2� -6�+'.*0.023*06(,0*�C(>0�.02,'.'02-/�*-(6-/��

��

��

�$%&'()*+,-�����-'2(-2�1/�1/&)((2$$2����):����6�:*0)*(+(��+16:'.�6--*?�60/�(*.E'<0/�,-�60/�:*0=-.30/�,-����(C����� -6�(*.E'<0�,-�.4,')0�A1-23-�60�:*-/-23(*?�(6�1/1(*'0�-2�:(23(66(����� -6�(*.E'<0�-2/(+C6(,0�60�-2<'(*?�(6�-+16(,0*�:(*(�;1-�60�->-.13-��

��� 02� 60/� (*.E'<0/� )-2-*(,0/� :0*� -6� .0+:'6(,0*� ,-� �:6(C� =� 60/� :1230/� ,-�

'23-**1:.'42�;1-�/'3M-�-6�1/1(*'0D�-6�:*0)*(+(��+16:'.�)-2-*(*?�6(�'2A0*+(.'42�2-.-/(*'(�:(*(�;1-�-6�-+16(,0*�:1-,(�*-(6'I(*�(,-.1(,(+-23-�6(�)-/3'42�,-�60/�:1230/�,-�'23-**1:.'42�=�6(�->-.1.'42�:(/0�(�:(/0��

��

Page 9: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!�

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

�-C',0�(�6(�.0+:6->',(,�,-6�:*0=-.30�E(C@(�.02/',-*(,0�2-.-/(*'0�+'2'+'I(*�-6�3'-+:0�2-.-/(*'0� :(*(� ,-/(**066(*� �+16�'.�� �0*� -/3-� +03'<0� E(C@(� -/.0)',0� '2'.'(6+-23-���'.*0/0A3� �'/1(6� �(/'.� #��� .0+0� E-**(+'-23(� ,-� ,-/(**0660D� =(� ;1-� ,-� 30,0/� 60/�-230*20/�,-�,-/(**0660�;1-�.020I.0�-*(�-6�;1-�+-�0A*-.@(�12(�+(=0*�*(:',-I�(�6(�E0*(�,-�*-(6'I(*�-/3(�(:6'.(.'42����(/�<-23(>(/�;1-�+-�0A*-.@(��'/1(6��(/'.�#���-*(���

�� 12�,-/(**0660�*?:',0�,-6�'23-*A(.-�)*?A'.0�,-�6(�(:6'.(.'42����� �6� .023*06� � 0++� ,-� �'/1(6� �(/'.� #��� -/� 12(� E-**(+'-23(� ;1-� :-*+'3-� 6(�

'+:6-+-23(.'42� ,-� 6(/� .0+12'.(.'02-/� /-*'-� .02� -6� -+16(,0*� ,-� +(2-*(�/-2.'66(��

��� �-2)0�12(�(+:6'(�-5:-*'-2.'(�-2�-6�,-/(**0660�,-�(:6'.(.'02-/�.02������

�*(/� 12� :*'+-*� :*0303':0� ,-� 6(� (:6'.(.'42� 60/� *-/163(,0/� 0C3-2',0/� 20� -*(2� 60/�,-/-(,0/���'�'23-2.'42�-*(�*-(6'I(*�12(�(:6'.(.'42�.02�12(�(:(*'-2.'(�:*0A-/'02(6�')1(6�;1-�6(�,-�60/�:*0)*(+(/�,-��'.*0/0A3D�;1-�'2.61=-*(�C(**(/�,-�E-**(+'-23(/�A603(23-/D�+-2M/� =� C(**(/� ,-� E-**(+'-23(/� .02� (/:-.30� ,-� N'2,0B/� O�D� -3.�� �(*(� .02/-)1'*�-/3(/�.(*(.3-*@/3'.(/�+-�<-*@(�0C6')(,0�(�13'6'I(*�.0+:02-23-/�:(*(��'/1(6��(/'.�,-�60/�;1-�20�,'/:02)0D�*-(6'I(*�.0+:6->(/�*13'2(/�13'6'I(2,0�66(+(,(/�(�6(�����,-�N'2,0B/�0�:*0)*(+(/�+'/�:*0:'0/�.023*06-/�;1-�+-�,'-*(2�-6�(/:-.30�,-/-(,0���0*�-/3-�+03'<0�=�(12;1-� (� :*'0*'� :(*-.@(� ;1-� �'/1(6� �(/'.� � #��� � A1-*(� 6(� E-**(+'-23(� ,-� ,-/(**0660�(,-.1(,(� 6(� E-� ,-/.(*3(,0� =� E-� 13'6'I(,0��+*(2&26'� �<<� ���� .02� 6(/� 6'C*-*@(� ,-�.6(/-/����� ,-� �'.*0/0A3� ;1-� :-*+'3-2� .02/-)1'*� 6(/� .(*(.3-*@/3'.(/� ,-/-(,(/� :(*(��+16:'.���

Page 10: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

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

�� ��� ������������������������������������23*-� 60/� ,'/:0/'3'<0/� ,-� ;1-� ,'/:02-2� (.31(6+-23-� 60/� ,'/-H(,0*-/� ,-� /'/3-+(/�-6-.3*42'.0/�,')'3(6-/�-2.023*(+0/��

��� �'.*0:0.-/(,0*-/D�+'.*0.023*06(,0*-/D�:*0.-/(,0*-/�,')'3(6-/�,-�/-H(6������ %����F%'-6,��*0)*(++(C6-��(3-��**(=G���

��� �� �F�::6'.(3'02�:-.'A'.��23-)*(3-,� '*.1'3G���

��� � �F=/3-+��2� E':G�

��0/� +'.*0:*0.-/(,0*-/� 0A*-.-2� 12(� -6-<(,(� A6-5'C'6',(,� =(� ;1-� /1� (*;1'3-.31*(� =� 6(�:0/'C'6',(,�,-�:*0)*(+(.'42�6-/�E(.-�+1=�<-*/?3'6-/�(�6(�E0*(�,-�(A*023(*�-6�,'/-H0�,-�.(/'� .1(6;1'-*� (:6'.(.'42�� �0� 0C/3(23-D� (� :-/(*� ,-� ;1-� /-(2� A?.'6-/� ,-� :*0)*(+(*� =�3-2)(2�12(�<-60.',(,�+-,'(�(63(D�6(�*-(6'I(.'42�,-�,-3-*+'2(,(/�3(*-(/�:1-,-�*-;1-*'*�:*0)*(+(/�.0+:6->0/�;1-�*-;1'-*-2�->-.13(*�12�)*(2�2M+-*0�,-�'2/3*1..'02-/�;1-�6-/�E(.-�:-*,-*�:*-/3(.'02-/����(� :0/'C'6',(,� ;1-� 3'-2-2� 6(/� %���� ,-� /-*� .02A')1*(,(/� .02� /'/3-+(/� /-.1-2.'(6-/�/@2.*020/�,'/-H(,0/�-/:-.@A'.(+-23-�:(*(�*-/06<-*�12�,-3-*+'2(,0�:*0C6-+(�6(/�E(.-�3-2-*�+?/�:*-/3(.'02-/�;1-� 60/�+'.*0.023*06(,0*-/�:-*0�20� 3'-2-2� 6(� A6-5'C'6',(,�;1-�0A*-.-�-6�+'.*0.023*06(,0*����0/��� �/02� 60/�.'*.1'30/� '23-)*(,0/�;1-�0A*-.-2�+(=0*-/�:*-/3(.'02-/�,-�<-60.',(,�:-*0�:0*�6(�-6-<(,(�.0+:6->',(,�,-�/1�,'/-H0�/460�/02�*-23(C6-/�:(*(�)*(2,-/�603-/�,-�:*0,1..'42����0/�� /�F=/3-+��2� E':G�/02�120/�.'*.1'30/�'23-)*(,0/�E@C*',0/�;1-�,'/:02-2�,-�12�+'.*0.023*06(,0*D� 12(� %���D�+-+0*'(� '23-*2(� -� '2.61/0� /'/3-+(/�:(*(� -6� 3*(3(+'-230�(2(64)'.0�,-�6(�/-H(6����/30/�.'*.1'30/�'23-)*(,0/�.0+C'2(2�6(/�<-23(>(/�,-�6(/�%����=�60/�+'.*0.023*06(,0*-/����6� -+16(,0*� ,-6�+'.*0.023*06(,0*� �� � �#%9�� /-� *-(6'I(*?� -2� 12(� %����� �-(+0/� .02�+?/�,-3(66-�6(/�.(*(.3-*@/3'.(/�,-�-/30/�.'*.1'30/�'23-)*(,0/����6�,'/-H0�'23-*20�,-�6(/�%����-/�,'A-*-23-�/-)M2�-6�+0,-60�=�-6�A(C*'.(23-D�:-*0�30,(/�3'-2-2�12(�-/3*1.31*(�/'+'6(*�;1-�/-�:1-,-�'61/3*(*�.02�-6�-/;1-+(�/')1'-23-���

Page 11: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��

�$%&'()*+,-�#���&.%/0)�1/�%-)�������2�6(�'61/3*(.'42���:0,-+0/�<-*�.0+0�12(�%����-/3?�.0+:1-/3(�,-�12(�/-*'-�,-�.-6,(/�'23-*.02-.3(,(/�� �(/� .-6,(/� � /02� *-.1*/0/� .0+:1-/30/�,-� -6-+-230/� /-.1-2.'(6-/� =�-6-+-230/�.0+C'2(.'02(6-/���

��

�$%&'()*+,-�����&.%/0)�1/�%-)�*=$1)�����0/�-6-+-230/� /-.1-2.'(6-/�,-� 6(/� .-6,(/� � /02� *-)'/3*0/� .1=0�-/3(,0�.(+C'(� .02� 6(�/-H(6� ,-� *-60>�� 0+0� -6-+-230/� .0+C'2(.'02(6-/� :0,-+0/� -2.023*(*� :-;1-H(/�

� � � � � �

� �� � �� � ��

� � � � � �

�'/3-+(�.0+C'2(.'02(6�

��������&�

�(+��#5��C'3�

Page 12: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

+-+0*'(/�:*0)*(+(,(/�:(*(�,(*�12(�/(6',(�,-3-*+'2(,(� A*-23-�(�12(/�,-3-*+'2(,(/�-23*(,(/�� 02� -/3(/� +-+0*'(/� :0,*@(+0/� /'+16(*D� :0*� ->-+:60D� .0+C'2(.'02-/� ,-�:1-*3(/� 64)'.(/�� �,-+?/� ,-� 60/� -6-+-230/� .0+C'2(.'02(6-/� /'+16(,0/� .02�+-+0*'(/�:0,-+0/�-2.023*(*�03*0/�-6-+-230/�.0+C'2(.'02(6-/�;1-�-2�6(�'61/3*(.'42�/-�:*-/-23(�.0+0�12�+163':6-50*����(/�.-6,(/��=� �/02�*-.1*/0/�,-�'23-*.02-5'42�;1-�:-*+'3-2�.0+12'.(*/-�(�6(/�.-6,(/�����

��

�$%&'()*+,-�>���/$1)&���?������(� '23-*.02-5'42� ,-� 60/� *-.1*/0/� '23-*20/� ,-� 6(/� .-6,(/� �D� 6(� :*0)*(+(.'42� ,-� 6(/�+-+0*'(/�=�6(�'23-*.02-5'42�,-�60/�*-.1*/0/� �=��/-�:1-,-�:*0)*(+(*�:(*(�0C3-2-*�-6�,'/-H0�,-/-(,0���/3(�:*0)*(+(.'42�:1-,-�/-*�M2'.(�.02�3J.2'.(/�,-�A1/'C6-P(23'A1/'C6-�0�:1-,-�/-*�*-:*0)*(+(C6-D�)1(*,(2,0�6(�.02A')1*(.'42�-2�+-+0*'(/�=�.(*)?2,06(�(6�'2'.'(6'I(*/-�-6�/'/3-+(�������������

� �

Page 13: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��

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

� �� /02� 6(/� /')6(/� ,-� � � � F�-*=� ')E� :--,� �23-)*(3-,� '*.1'3G� (*,B(*-�-/.*':3'02� �(2)1()-�� �/� 12� 6-2)1(>-� ;1-� :-*+'3-� ,-/.*'C'*� -6� .0+:0*3(+'-230D�-/3*1.31*(�-�'+:6-+-23(.'42�,-�.'*.1'30/�-6-.3*42'.0/��

��2� -6� :*0.-/0� ,-� ,'/-H0� ,-� 12� .0+:02-23-� -6-.3*42'.0� .02� � �� :0,-+0/�,'/3'2)1'*�6(/�/')1'-23-/�A(/-/��

��

��

�$%&'()*+,-�����+*$2�1/�1+&/@2�*2-��A ���

�� �*0)*(+(.'42��-/,-�60/�-230*20/�,-�,-/(**0660�:(*(�� ��:0,-+0/�*-(6'I(*�-6�:*0)*(+(�-2�� ��=�.0+:'6(*60���

��� '+16(.'42� 64)'.(�� �0/� /'+16(,0*-/� ,-� 60/� -230*20/� ,-� ,-/(**0660� :-*+'3-2�

/'+16(*�-6�,'/-H0�*-(6'I(,0���6�,'/-H(,0*�,-6�.'*.1'30�:1-,-�,-A'2'*� 60/�(*.E'<0/�,-� -/3@+160/� F/-H(6-/� ,-� -23*(,(� (6� ,'/:0/'3'<0G� =� <'/1(6'I(*� 6(� -<061.'42�3-+:0*(6�,-6�/'/3-+(�:(*(�.0+:*0C(*�/'�-6�A12.'02(+'-230�/-�(>1/3(�(6�,-/-(,0���2�-/3(�/'+16(.'42�20�/-�3'-2-2�-2�.1-23(�60/�*-3(*,0/�A@/'.0/�;1-�:1-,-�3-2-*�6(� /-H(6� -6J.3*'.(� -23*-� 60/� ,'A-*-23-/� .0+:02-23-/� ,-6� /'/3-+(�� �/3-� *-3(*,0�:1-,-� /-*� .*@3'.0� :(*(� -6� .0**-.30� A12.'02(+'-230� ,-6� /'/3-+(� =� ,-C-*?� /-*�.0+:*0C(,0�-2�12(�A(/-�:0/3-*'0*��'�60/�*-/163(,0/�0C3-2',0/�-2�6(�/'+16(.'42�20�/-�(>1/3(2�(�6(/�-/:-.'A'.(.'02-/�/-�,-C-�+0,'A'.(*�-6�,'/-H0��

��� @23-/'/�� �2(� <-I� ;1-� -6� ,'/-H0� ,-6� /'/3-+(� A12.'02(� .0**-.3(+-23-� (� 2'<-6�

64)'.0� /-� :*0.-,-� (� *-(6'I(*� 6(� -3(:(� ,-� /@23-/'/� ;1-� .02/'/3-� -2� 3*(,1.'*� -6�,'/-H0� (23-*'0*� :(*(� (,(:3(*60� (� 6(� (*;1'3-.31*(� ,-6� .'*.1'30� ,-� 64)'.(�:*0)*(+(C6-�;1-�/-�,-/-(�13'6'I(*���2�-/3(�A(/-�6-�'2,'.(*-+0/�(6�:*0)*(+(�;1-�

�*0)*(+(.'42�-2�� ��

@23-/'/�

�'+16(.'42�64)'.(�

�*.E'<0/�.02�60/�-/3@+160/�,-�:*1-C(�

�-.2060)@(�,-�,-/3'20�

060.(.'42�=�-2*13(,0�

��-3(*,0/�0KQ�

�0�

'�

�*0)*(+(.'42�,-6�,'/:0/'3'<0�

Page 14: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

*-(6'I(� 6(� /@23-/'/� � -6� �� '23-)*(,0� ;1-� ,-/-(+0/� 13'6'I(*�� 0+0� *-/163(,0� /-�0C3'-2-� 12(� 6'/3(� ,-� 60/� *-.1*/0/� ;1-� /-� 1/(*(2� -2� -6� .'*.1'30� '23-)*(,0�F:1-*3(/D�*-)'/3*0/D�-3.�G�=�.0+0�/-�,-C-*?2�.02-.3(*�-/30/�.0+:02-23-/�-23*-�/@��

��� 060.(.'42�=�-2*13(,0���,-+?/�,-�,(*�12�6'/3(,0�,-�60/�*-.1*/0/�;1-�/-�E(2�,-�

1/(*D�-6�:*0.-/0�,-�/@23-/'/�0A*-.-�12(�:0/'C6-�1C'.(.'42�=�.02-5'02(,0�,-�60/�,'A-*-23-/�.0+:02-23-/�,-23*0�,-6�.'*.1'30�'23-)*(,0���/3(�1C'.(.'42�/-�:1-,-�0:3'+'I(*�:(*(�0C3-2-*�12(�+(=0*�<-60.',(,D�:(*(�0.1:(*�12�?*-(�+-20*�-2�-6�.'*.1'30� '23-)*(,0D� -3.�� �6� ,'/-H(,0*� :1-,-� +0,'A'.(*� 6(� 1C'.(.'42� ,-� 60/�,'A-*-23-/�.0+:02-23-/�-2�A12.'42�,-�/1/�2-.-/',(,-/�-/:-.@A'.(/��

��� 0+:*0C(.'42�,-� 60/� *-3(*,0/���2(� <-I�;1-� /-�,'/:02-�,-� 6(� 1C'.(.'42� A@/'.(�

*-(6� ,-� 60/� .0+:02-23-/� ,-23*0� ,-6� .'*.1'30� ,-� 64)'.(� :*0)*(+(C6-� /-� :1-,-�:*0.-,-*�(�0C3-2-*� 60/�*-3(*,0/�,-� 6(�/-H(6�-23*-� 60/�,'A-*-23-/�.0+:02-23-/�� 02� -/30/� *-3(*,0/� :0,-+0/� .0+:*0C(*� /'� -6� � .0+:0*3(+'-230� ;1-� E-+0/�/'+16(,0�(�2'<-6�64)'.0�A12.'02(*?�3(+C'J2�-2�6(�'+:6(23(.'42�A@/'.(�,-6�/'/3-+(�-2�-6� .'*.1'30� '23-)*(,0��1:02)(+0/�:0*�->-+:60�;1-�;1-*-+0/�;1-�21-/3*0�,'/-H0�A12.'02-�(����� I���2�6(�6'/3(�,-�*-3(*,0/�E-+0/�<'/30�;1-�3-2-+0/�12�*-3(*,0� +?5'+0� ,-� ��2/�� �/30� ;1'-*-� ,-.'*� ;1-� -23*-� ,0/� .0+:02-23-/� ,-6�.'*.1'30� 6(� /-H(6� 3(*,(�-2� 66-)(*���2/� 60�;1-�/')2'A'.(*@(�;1-�-6� /'/3-+(�:0,*@(�3*(C(>(*�.0+0�+?5'+0�(�12(�A*-.1-2.'(�,-��PF��R���!/GS��� I���2�.02.61/'42D�-6�,'/-H0�;1-�E(C@(+0/�*-(6'I(,0�=�.0+:*0C(,0�.02�12(�/'+16(.'42� 64)'.(�20�:1-,-� 66-)(*� (� A12.'02(*� (� 6(� A*-.1-2.'(� ,(,(� -2� 6(/� -/:-.'A'.(.'02-/�� �(*(�/061.'02(*�-/3-�:*0C6-+(�/-�:1-,-�+0,'A'.(*�6(�.060.(.'42�=�-2*13(,0�,-�-/30/�,0/�.0+:02-23-/�:(*(�E(.-*�;1-�;1-,-2�+?/�:*45'+0/�0�<06<-*�(�6(�-3(:(�,-�:*0)*(+(.'42�=�+0,'A'.(*�-6�,'/-H0��

Page 15: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�� ��� �����������������������������(*(�*-(6'I(*�-2�:0.(/�6@2-(/�12(�,-/.*':.'42�,-6�6-2)1(>-�� ��<-*-+0/�-6�->-+:60�,-�.4+0�/-�,-A'2-�12�+163':6-50*�,-���-23*(,(/�.02�� ������

��

�$%&'()*+,-�"���%$'+3$/82(�1/�*%)'(2�/-'()1)&���� 6(� E0*(� ,-� ,-A'2'*� 12� .0+:02-23-� -2� � �� :*'+-*0� ,-C-+0/� ,-/.*'C'*� .0+0� /-�*-6(.'02(� ,'.E0� .0+:02-23-� .02� 03*0/� .0+:02-23-/D� -/� ,-.'*� ,-C-+0/� ,-A'2'*� /1�'23-*A(.-D�;1-� 6@2-(/�,-�-23*(,(�=�/(6',(�3'-2-���2�� ��(�-/3(�,-A'2'.'42�/-� 6-� 66(+(������8���������0%8���������B�)C�:C�*C�1�D������E�&!C�&��D������E�8C�D������FE��� �0%8E��

0+0�/-�:1-,-�<-*�-2�-6�.4,')0�� ��E-+0/�,-A'2',0� 6(�-23',(,�+15��;1-�/-*?�12�+163':6-50*� ,-� �� -23*(,(/���-,'(23-� -6� .0+(2,0������ E-+0/� ,-A'2',0� 6(/� 6@2-(/� ,-�-23*(,(�=�/(6',(�;1-�:0/--�-6�+163':6-50*���(/�/-H(6-/�(D�CD�.D�,D�/��=�/��/02�/-H(6-/�,-�-23*(,(�,-�12�C'3�=�6(�/-H(6�5�-/�12(�/-H(6�,-�/(6',(�,-���C'3����2(� <-I� ,-A'2',(� 6(� '23-*A(.-� ,-6� .0+:02-23-� /-� :*0.-,-� (� ,-A'2'*� /1� -/3*1.31*(�'23-*2(D� 0� 60� ;1-� -/� 60�+'/+0D� /1� .0+:0*3(+'-230�� �� -/3(� ,-A'2'.'42� -2� � �� /-� 6-�66(+(� �� ��� ������ �5'/3-2� <(*'(/� A0*+(/� ,-� ,-A'2'*� 6(� (*;1'3-.31*(� ,-� 12�.0+:02-23-����.023'21(.'42�/-�-5:02,*?2�.(,(�12(�,-�-66(/�:(*(�'61/3*(*�60/�,'/3'230/�+0,0/� ,-� 3*(C(>0� ;1-� :0,-+0/� 13'6'I(*� :(*(� � ��� �0,(/� 6(/� (*;1'3-.31*(/� ;1-� /-�,-A'2-2�(�.023'21(.'42�.1+:6-2�6(�/')1'-23-�3(C6(�,-�6(�<-*,(,���

Page 16: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��#�

�/�� /�� O��� �� (��� �� C��� �� .��� �� ,���

(.%+'/*'%()�1/�6$%G2�1/�1)'2&�����A�������0%8�)����0%8�����������&/$D�������E�������H�A�&/$�������.�IJ�)������!�-&�HA���!C�.�IJ�:������!�-&�HA����C�.�IJ�*������!�-&�HA����C�.�IJ�1������!�-&�HA����C�.�IJ�KLM������!�-&�HA����A���E�&/$�IJ�!�HA���&!�J�K!M�� �&��J�K!M��������HA���&!�J�K�M�� �&��J�K!M��������HA���&!�J�K!M�� �&��J�K�M��������HA���&!�J�K�M�� �&��J�K�M��������E��� �0%8�E���2�-/3-�+0,0�,-�,-A'2'.'42�,-�6(�(*;1'3-.31*(�/-�E(�,-A'2',0�12(�/-H(6�'23-*2(D�/-6D�;1-�:0,*?�30+(*�<(60*-/�-23-*0/���(/�/-H(6-/�,-�� ��/-�,'A-*-2.'(2�,-� 6(/�<(*'(C6-/�-2�;1-� 3'-2-2� (/0.'(,(� 12(� 6'/3(� .02� 60/� <(60*-/� ;1-� E(2� 30+(,0� 0� 30+(*?2� -2� -6�3*(2/.1*/0�,-6�3'-+:0����2�A12.'42�,-6�<(60*�;1-�30+-�/-6�/-�(/')2(*?�(�6(�/(6',(�;�-6�<(60*�,-�6(�-23*(,(�;1-�.0**-/:02,(�F'�D�'�D�'�D�'�G�����6(�/(6',(�;�/-�6-�(H(,-�12�*-3(*,0�,-����2/�*-/:-.30�(�6(�/-H(6�/-6���6�/@+C060�TS��-2�� ��20�-/�+-20*�0�')1(6D�/')2'A'.(�(/')2(*�12(�/-H(6�(�03*(����(�/-H(6�/-6�30+(*?�12�<(60*�1�03*0�-2�A12.'42�,-�60/�<(60*-/�;1-�3-2)(+0/�-2�/��=�/���'�/��<(6-���=�/��<(6-���/-6�<(6,*?��D�/'�/��<(6-���=�/��<(6-���/-6�<(6,*?�D�-3.����2(�.(*(.3-*@/3'.(�+1=�'+:0*3(23-�,-�� ��-/�;1-�30,(/�6(/�/-23-2.'(/�(23-*'0*-/�/-�->-.13(2�-2�:(*(6-60D�0�/-(D�/'+163?2-(+-23-D�=(�;1-�-/3(�-/�6(�+(2-*(�.0+0�A12.'02(�12�.'*.1'30�-6-.3*42'.0�F/'�20�3-2-+0/�-2�.1-23(�60/�*-3(*,0/�,-�6(�/-H(6G����(.%+'/*'%()�/&'(%*'%()$�����A�������0%8�:����0%8��������������)-17)'/����B)C�:C�*�D����:+'E�*�D������FE��� ���������E�

Page 17: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

���������+-N/('/(����B+-��D������E�8�D������FE��� ���������E����������2(7)'/����B)C�:C�*C�1�D����:+'E�8�D������FE��� ���������E�������&!O+-NC�&�O+-NC�8�C�8�C�8�C�8��D���E����������D�+-N/('/(B&!C�&!O+-NFE����D�+-N/('/(B&�C�&�O+-NFE����D�)-17)'/B)C�&!O+-NC�&�O+-NC�8�FE����D�)-17)'/B:C�&!C�&�O+-NC�8�FE��#�D�)-17)'/B*C�&!O+-NC�&�C�8�FE����D�)-17)'/B1C�&!C�&�C�8�FE��>�D�2(7)'/B8��JP�:C�8��JP�)C�8��JP�1C�8��JP�*C�8�JP�8FE��� �-/'$+&'E���/3-�+0,0� ,-� ,-A'2'.'42� *-.1**-� (� ,-/.*'C'*� -6� .0+:0*3(+'-230� ,-� 12� .0+:02-23-� (�:(*3'*� ,-� 6(� 13'6'I(.'42� ,-� 03*0/� .0+:02-23-/� =(� ,-A'2',0/�� �0/� .0+:02-23-/� ;1-� /-�1/(2�-2�-/3(�,-A'2'.'42�/02���

�� :1-*3(/�(2,�,-�3*-/�-23*(,(/�,-���C'3��� '2<-*/0*-/���� :1-*3(/�0*�,-���-23*(,(/�

��(�,-A'2'.'42�,-�-/30/�.0+:02-23-/�/-�*-(6'I(�.02�6(�'2/3*1..'42� �����������2(�<-I�,-.6(*(,0/� 60/� .0+:02-23-/� ;1-� /-� <(2� (� 13'6'I(*� /-� :*0.-,-� (� ,-A'2'*� .1(230/�.0+:02-23-/�,-� 60/�;1-�E-+0/�,-A'2',0�/-�<(2�(�1/(*�=�.0+0�/-�<(2�(�.02-.3(*���6�,'/-H0�,-�:1-*3(/�64)'.(/�;1-�/-�E(�*-(6'I(,0�.02�-/3(�-/:-.'A'.(.'42�� ��-/���

��

�$%&'()*+,-��!��%$'+3$/82(�1/���/-'()1)&�(/)$+;)12�*2-�3%/(')&�$,7+*)&��

Page 18: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��9�

�6�')1(6�;1-�-2�-6�->-+:60�(23-*'0*�30,(/�6(/�/-23-2.'(/�,-�-/3-�->-+:60�/-�->-.13(2�,-�+(2-*(�.02.1**-23-����(.%+'/*'%()�*2032(')0+/-'2�����A�������0%8�*����0%8�����B)C�:C�*C�1C�&!C�&��F��������&/$�D�������E����������&!�J�K!M�)-1�&��J�K!M�A���&/$�DJ�!E�������&!�J�K�M�)-1�&��J�K!M�A���&/$�DJ��E�������&!�J�K!M�)-1�&��J�K!M�A���&/$�DJ��E������&/$�DJ��E��� ���E�����&/$����HA���!�JP�8�IJ�)E�HA�����JP�8�IJ�:E�HA�����JP�8�IJ�*E�HA����A����JP�8�IJ�1E��� ����E��� ��������E��� �&/.%/-'+)$E���%'2(6+-23-� :0,-+0/� ,-A'2'*� 6(� (*;1'3-.31*(� ,-6�+163':6-50*� � .02� 12(� (*;1'3-.31*(� ,-�.0+:0*3(+'-230���/3-�/'/3-+(�-/�-6�+?/�:(*-.',0�(�6(�:*0)*(+(.'42�.6?/'.(���/3-�.(/0�/-�.0+:0*3(�,-�+(2-*(�6')-*(+-23-�,'A-*-23-�(�60/�(23-*'0*-/�-2�60�;1-�*-/:-.3(�(�6(�/'+163(2-',(,�,-�->-.1.'42�,-� 6(/� /-23-2.'(/���0,0�-6� .02>1230�,-� '2/3*1..'02-/�;1-�-5'/3-2� -23*-� ������ =� ��� ��� �� /-� -<(6M(2� ,-� A0*+(� /-.1-2.'(6� 3(6� =� .0+0�-/3(+0/�(.0/31+C*(,0/���2(�<-I�;1-�/-�E(2�-<(61(,0�30,(/�6(/�6@2-(/�,-�-/3-�:*0.-/0�=� ,-� 03*0/� ;1-� :1-,(2� -5'/3'*� /-� ->-.13(2� /'+163?2-(+-23-� 30,0/� 60/� :*0.-/0/� =�/-23-2.'(/� .023-2',(/� -2� 6(� ,-A'2'.'42� ,-� -/3(� -23',(,� =� ,-� 30,(/� 6(/� ,-+?/� ;1-�-5'/3(2�-2�-6�:*0=-.30���

Page 19: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��!�

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

��0,-6'+� -/� 12� -230*20� ,-� ,-/(**0660� ,-� �-230*� �*(:E'./� :(*(� ,'/-H0� ,-�.0+:02-23-/�.02�� ��0��-*'60)���6�-230*20�,-�,-/(**0660�,'/:02-�,-���

�� �'C*-*@(/�,-�.0+:02-23-/��02�6'C*-*@(/�,-�.0+:02-23-/�-/3?2,(*�;1-�:0,-+0/�'2.61'*�-2�21-/3*0�,'/-H0��

��� �,'30*�,-�.4,')0�A1-23-��

��� -:1*(,0*�,-�.4,')0�A1-23-��

��� '+16(,0*���-*+'3-�E(.-*�12(�/'+16(.'42�64)'.(�,-�21-/3*0�,'/-H0��

���� ��������� ��� �� �� ���������� ��������6� K'3� ,-� ,-/(**0660� ,-� ���� :(*(� 6(� %���� 3*(3'5� ���� ,-� �63-*(� E(.-� :0/'C6-� 6(�*-(6'I(.'42� ,-6� :*0=-.30� /'2� 6(� 2-.-/',(,� ,-� *-(6'I(*� -6� ,'/-H0� ,-� 12� E(*,B(*-�-/:-.'A'.0����2�6(�/')1'-23-�'61/3*(.'42�:0,-+0/�0C/-*<(*�60/�-6-+-230/�;1-�.0+:02-2�6(�3(*>-3(�,-�,-/(**0660�,-�������

Page 20: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��

�$%&'()*+,-������$/0/-'2&�1/$�4+'�1/�1/&)((2$$2�1/��5����

�� %�����63-*(�3*(3'5�������/�-6�.0*(I42�,-6�K'3�,-�,-/(**0660��1/�.(*(.3-*@/3'.(/�:*'2.':(6-/�/02��

� (*(.3-*@/3'.(/�3*(3'5�����

�1-*3(/�64)'.(/� #��D��������C'3/� �D!��D��#�����:'2/�,-�1/1(*'0� �#!�

��� ��.E':�,-����=3-�,-�+-+0*'(�A6(/E�� 02�:0/'C'6',(,�,-�(+:6'(.'42�E(/3(��#�

�C=3-����� ��.E':/�����,-���#$C=3-�F��9$�5��#�C'3G�.02A')1*(C6-/�.0+0�12(�+-+0*'(�,-�����

��#$�5����C'3��

�� ��.E':�,-�#��C'3�,-�+-+0*'(������ 02�:0/'C'6',(,�,-�(+:6'(.'42�E(/3(���#�C'3��

��� ��:1-*30/�P���

Page 21: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�� ��:1-*30������

�� �2�:1-*30��P���

�� �2�.02<-*3',0*�(2(64)'.0�,')'3(6�P�,')'3(6�(2(64)'.0�,-��#�C'3/��

�� �2�:1-*30��3E-*2-3����(/-����

�� �2�:1-*30��������

�� �1-*30/�,-�-5:(2/'42��

�� �16/(,0*-/D�6-,/�=�,'/:6(=/���/-)+-230/���

�-�30,(/�-/3(/�.(*(.3-*@/3'.(/�/460�/-*?�2-.-/(*'0�13'6'I(*�6(�%����=�-6�:1-*30�/-*'-���(�+-+0*'(�'23-*2(�,-�6(�%����,-C-*@(�/-*�/1A'.'-23-�:(*(�-+16(*�6(�+-+0*'(�,-6�+'.*0.023*06(,0*� :0*� 60� ;1-� 20� -/3?� :*-<'/30� 13'6'I(*� 6(� +-+0*'(� -53-*2(�F���D����0�%�� G�������

Page 22: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�� �����������������(6� =� .0+0� /-� E(� '23*0,1.',0� (23-*'0*+-23-� 12(� ,-� 6(/� :(*3-/� ,-6� :*0=-.30� -/� 6(�*-(6'I(.'42� ,-� 12� :*0)*(+(� ;1-� .0+12';1-� -6� � � .02� -6� -+16(,0*�� �/3-� :*0)*(+(�/-*<'*?�:(*(���

�� �C*'*� :*0)*(+(/� *-(6'I(,0/� :(*(� -6�+'.*0.023*06(,0*� �� � �#%9�� =� -2<'(*60/� (6�-+16(,0*�� �0/� :*0)*(+(/� /-� 0C3-2,*?2� ,-� 60/� (*.E'<0/� U�6/3� ;1-� )-2-*(� (6�.0+:'6(*� -6� -230*20� ,-� ,-/(**0660� ���(C� ,-� �'.*0.E':�� �+16:'.� /-� 6'+'3(*?� (�(C*'*� :*0)*(+(/� ;1-� .02/3-2� ,-� 12� M2'.0� (*.E'<0� *-(6'I(,0� -2� 6-2)1(>-�-2/(+C6(,0*�=�/'2�+(.*0/��

��� �2(� <-I� E(=(+0/� .(*)(,0� 12� � :*0)*(+(� -2� �+16:'.� -6� 1/1(*'0� :0,*?� /'31(*�

:1230/�,-�'23-**1:.'42�:(*(�,-:1*(*�-6�:*0)*(+(���

�� 02�60/�:1230/�,-�'23-**1:.'42�/'31(,0/�-6�1/1(*'0�:0,*?�-2<'(*�-6�:*0)*(+(�(6�-+16(,0*�(�3*(<J/�,-�6(������

��� 1(2,0� -6� -+16(,0*� 66-)1-� (� 12� :1230� ,-� '23-**1:.'42� 0� -6� 1/1(*'0� ,-/--�

:(1/(*�6(�->-.1.'42��+16:'.�6--*?�-6�.023-2',0�,-�60/�*-)'/3*0/�=�6(�+-+0*'(�,-6�-+16(,0*�:(*(�:0,-*�.0+:*0C(*�-6�A12.'02(+'-230�,-6�:*0)*(+(�,-6��� ��

��(*(�0A*-.-*�(� 6(�(:6'.(.'42�,-�12(/�.(*(.3-*@/3'.(/� 303(6+-23-�:*0A-/'02(6-/� *-(6'I(*J��+16:'.�.02�-6�-230*20�,-�,-/(**0660��'/1(6�31,'0� LL������=�13'6'I(*J� 6(� 6'C*-*@(�,-�.6(/-/� �% � ,-� �'.*0/0A3�� -� -/3(� +(2-*(D� 3(6� .0+0� ,-3(66(*J� -2� -6� (:(*3(,0� �����D�'23-*A(.-� )*?A'.0� ,-� 6(� (:6'.(.'42D� �+16:'.� 3-2,*?� 12� (/:-.30� .0+0� -6� ,-� 6(/�(:6'.(.'02-/�,-�N'2,0B/������(*(� *-(6'I(*�-/3-�:*0)*(+(�E-�2-.-/'3(,0�-/31,'(*�-6� A12.'02(+'-230�,-� 6(/� 6'C*-*@(/�,-�.6(/-/��% ��

Page 23: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

���� !����� ��� �������(/�A(/-/�;1-�/-�E(2�*-(6'I(,0�-2�-6�,'/-H0�,-�6(�(:6'.(.'42�/02�6(/�/')1'-23-/����

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

�������

�����

�����������

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

��������

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

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

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

�������

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

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

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

������

��

�$%&'()*+,-������)&/&�1/$�1+&/@2��-23*0� ,-� 6(� -3(:(� ,-� *-.0:'6(.'42� ,-� *-;1'/'30/�+-� E-� C(/(,0� -2� 6(� *-(6'I(.'42� ,-�)1'02-/D�6(�60.(6'I(.'42�,-�(.30*-/�=�,-�.(/0/�,-�1/0D�E-�*-.0:'6(,0�'2A0*+(.'42�/0C*-�-6� '23-*A(.-� )*?A'.0� ,-� 6(� (:6'.(.'42� =� E-� *-(6'I(,0� ,'()*(+(/� ,-� /-.1-2.'(� =� 12�,'()*(+(�,-�-/3(,0/�,-6�A12.'02(+'-230�)-2-*(6�;1-�,-C-*@(�3-2-*�6(�(:6'.(.'42���-23*0� ,-� 6(� -3(:(� ,-� (2?6'/'/� =� ,'/-H0� E-� E-.E0� -6� (2?6'/'/� =� ,'/-H0� ,-6� '23-*A(.-�)*?A'.0�F.6(/-/�,-�A*023-*(GD�E-�',-23'A'.(,0�-/3*1.31*(/�,-�,(30/�=�E-�E-.E0�/1�(2?6'/'/�=�,'/-H0�F.6(/-/�,-�-23',(,GD�E-�E-.E0�-6�(2?6'/'/�=�,'/-H0�,-�6(/�.6(/-/�,-�.023*06�=�-6�,'()*(+(�,-�.6(/-/��

Page 24: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

���� ����������� ����"������

������ ���������032(')(�)(*Q+N2&�1/����):���6�:*0)*(+(��+16:'.�6--*?�60/�(*.E'<0/�U�6/3�;1-�/-�)-2-*(*?2�.02�-6�.0+:'6(,0*����(C�,-��'.*0.E':�=�+0/3*(*?�-6�.4,')0�A1-23-�(6�1/1(*'0�:(*(�;1-�:1-,(�/'31(*�:1230/�,-�'23-**1:.'42�� �(*(� ;1-� /-(� A(.3'C6-� 6(� *-(6'I(.'42� ,-6� :*0=-.30� -2� 12� .1(3*'+-/3*-� -6�:*0)*(+(� /-� 6'+'3(*?� (� 6--*� :*0)*(+(/� *-(6'I(,0/� -2� -2/(+C6(,0*� =� .02� 12� M2'.0�(*.E'<0�,-�.4,')0�A1-23-����6�/')1'-23-�->-+:60�-/�12�/-2.'660�:*0)*(+(�-/.*'30�-2�6-2)1(>-�-2/(+C6(,0*�:(*(�-6��� �#%9����V�V� %'6-���5(+:6-�(/+�V� ->-+:60�;1-�/(.(�:0*�-6�:1-*30���6(�/-.1-2.'(��D�D#D!D��D����V��� 6'/3� �� :S�#A9�(�� W'2.61,-�� :�#A9�(�'2.����+('2� � � � � V��('2�� 02N$R�� ��� )11$R� � �� �� 72'2� � /1C*13'2(� V�/(63(�(�12(�/1C*13'2(�,-�->-+:60�� 72'2�� � +('2� � V�E(.-�12�C1.6-�'2A'2'30��/1C*13'2(� � � � V�/1C*13'2(�;1-�-/.*'C-�-2�-6�:1-*30��� 02NR6�� ������� (/'%(-���� -2,�����6�(*.E'<0��5(+:6-�6/3�;1-�.0**-/:02,-�(6�(*.E'<0�(23-*'0*�-/�-6�/')1'-23-������������!���-6-(/-,�������������������������������O����������������������#��������������������������� ������ �� ��������������� ����O��

Page 25: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�������������������������������������������V�����������������������������������V�������%'6-���5(+:6-�(/+�����������������������������������V�������->-+:60�;1-�/(.(�:0*�-6�:1-*30���6(�/-.1-2.'(��D#D!D��D��������������������������������������V������������������������������������N(*2'2)X���Y���*0.-//0*�/1:-*/-,-,�C=�.0++(2,�6'2-����-*'A=�:*0.-//0*�/=+C06����������������������������������#���������6'/3�����:S�#A9�(�������������������������������������������W'2.61,-�:�#A9�(�'2.���������������������������������������������������������������������������������V���#%9����� ��3(2,(*,� -(,-*�%'6-D��-*/'02����������'.*0.E':��-.E2060)=D��2.���-//()-X���Y���������F�*0.-//0*�E-(,-*�A'6-�+'/+(3.E����-*'A=�/-6-.3-,�:*0.-//0*�G�������������������������������������������������������������������������������9����������������������������������!��������������������������������������������������������������������+('2����������������������������V��('2�������������������������������������02N$R�����������������������������������������)11$R��������������������9���������������������������72'2����/1C*13'2(����V�/(63(�(�12(�/1C*13'2(�,-�->-+:60���������9���������������������������72'2����+('2����������V�E(.-�12�C1.6-�'2A'2'30���������������������������������#���������������������������������/1C*13'2(����������������������V�/1C*13'2(�;1-�-/.*'C-�-2�-6�:1-*30���������������������������������9�����������9����������������!���������02NR6�������������������9�������������������������(/'%(-�����������������������������������������������������������������������������������������������������������������/-1�����������!���-6-(/-,�������������������������������O����������������������#�������������������������8������������������������������������������������������� ����������������������������������������� ��������������������������������������������������������������������������!��� �������������������������������99��� �������������������������������9!�����������������������������������9���������������������������������������#����%������������������������������������%�����������������������������������������%��������������������������������������������������������������������������������%�������������������������������������� �������������������������������������������������������������������������

Page 26: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��#�

����������������������������������#����%��������������������������������������������������������������������������������Z�����������������������������������Z����������������������������������Z���������������������������������������Z������������������������9��� ���������������������������������������� ��� ������������������������������������������������������������������������������������������������������������#������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%�������������������������������������������������������������������������������������������������������������������������������������������������������������#��������������������������������������� ��������������������������������������������������������������������������������%����������������������������������������������������������������������������������������������������������������������������������������������������������9��������������������������������������9#�N�����������������������������������������N����������������������������������������N��������������������������������������N�������������������������������������[������������������������������������������Z �Z�%%���������������������������%%%�Z �Z��������������������������������%�Z Z� ��������������������������%%��Z��Z� ���������������������������%% �Z�N���Z�%%��������������������%%%�Z�N���Z�����������������������%%�����������!���-6-(/-,�������������������������������O����������������������#�������������������������8�������������������������������������������������������Z� Z� ���������������������������%%%�ZN�Z�%%�������������������������%%��ZN�Z����������������������������%%%�ZO�Z� ����������������������������%%�ZZ�#%9����������������������������������+('2��������������������������������������/1C*13'2(��������������������������������

Page 27: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�������8����������F\O\�S��/-,D��\�\�S��21/-,G���������OOOOOO����������������������������������������������������������������66�03E-*�+-+0*=�C60.K/�121/-,����*0)*(+��-+0*=�N0*,/��/-,������#��*0)*(+��-+0*=�N0*,/�%*--������9����**0*/�����������N(*2'2)/���������*-:0*3-,D�������/1::*-//-,��-//()-/���������*-:0*3-,D�������/1::*-//-,�����0�:*'+-*0�;1-�E(*?�-6�:*0)*(+(�/-*?�-6'+'2(*�6(/�6@2-(/�,-6�A'.E-*0�U�6/3�;1-�20�.0**-/:02,(2� (6� :*0)*(+(�� �6� (*.E'<0� ,-� ->-+:60� ;1-,(*@(� ,-� 6(� /')1'-23-�+(2-*(�������������������������������������V�����������������������������������V�������%'6-���5(+:6-�(/+�����������������������������������V�������->-+:60�;1-�/(.(�:0*�-6�:1-*30���6(�/-.1-2.'(��D#D!D��D��������������������������������������V��������������������������������������������������������������������#���������6'/3�����:S�#A9�(�������������������������������������������W'2.61,-�:�#A9�(�'2.���������������������������������������������������������������������������������V���#%9����� ��3(2,(*,� -(,-*�%'6-D��-*/'02����������'.*0.E':��-.E2060)=D��2.��������������������������������������������������������������������������������9����������������������������������!��������������������������������������������������������������������+('2����������������������������V��('2�������������������������������������02N$R�����������������������������������������)11$R��������������������9���������������������������72'2����/1C*13'2(����V�/(63(�(�12(�/1C*13'2(�,-�->-+:60���������9���������������������������72'2����+('2����������V�E(.-�12�C1.6-�'2A'2'30���������������������������������#���������������������������������/1C*13'2(����������������������V�/1C*13'2(�;1-�-/.*'C-�-2�-6�:1-*30���������������������������������9�����������9����������������!���������02NR6�������������������9�������������������������(/'%(-�����������������������������������������������������������������������������������������������������������������/-1����(� '2A0*+(.'42� ,-� ;1-� /-� ,'/:02-� -2� -/3-� :(/0� /-� :1-,-� ,'<','*� -2� .1(3*0�.061+2(/D�:0/'.'42�,-�+-+0*'(D�.4,')0�,-�'2/3*1..'42D�2M+-*0�,-�6@2-(�=�6@2-(��

Page 28: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��9�

�(�.061+2(�6@2-(�/-*?�6(�;1-�/-�+0/3*(*?�(6�1/1(*'0�:(*(�;1-�:1-,(�/(C-*�-2�;1-�6@2-(/�/'3M(�60/�:1230/�,-�'23-**1:.'42�����0/'.'42�,-�+-+0*'(�

4,')0�,-�'2/3*1..'42�

���,-�6@2-(�

�@2-(�

� � ������ V�� � ������ V�������%'6-���5(+:6-�(/+�� � ������ V�������->-+:60�;1-�/(.(�:0*�-6�:1-*30���6(�/-.1-2.'(��D#D!D��D����� � ������ V�� � ������ �� � ����#� �� � ������ W'2.61,-�:�#A9�(�'2.�� � ������ ����� � ������ V���#%9����� ��3(2,(*,� -(,-*�%'6-D��-*/'02����������'.*0.E':�

�-.E2060)=D��2.��� � ������ ����� � ����9� �� � ����!� �� � ������ ������ � ������ +('2����������������������������V��('2������ ����� ������ 02N$R���������� ����� ������ )11$R����������������� �9��� ������ 72'2����/1C*13'2(���V�/(63(�(�12(�/1C*13'2(�,-�->-+:60������ �9��� ������ 72'2����+('2����������V�E(.-�12�C1.6-�'2A'2'30�� � ����#� ������ � ������ /1C*13'2(���������������V�/1C*13'2(�;1-�-/.*'C-�-2�-6�:1-*30�� � ����9� ������ ��9�� ����!� 02NR6�������������� ���9� ������ (/'%(-�� � ������ �� � ������ �� � ������ /-1� �

�):$)�����2-'/-+12�1/�$2&�)(*Q+N2&�S�$&'�1/����):�

��2�A12.'42�,-�60/�,(30/�;1-�E(=�-2�6(/�.061+2(/�:0,-+0/�0C/-*<(*�,'A-*-23-/�3':0/�,-�6@2-(/���

�� �@2-(/�-2�C6(2.0���/3(/�6@2-(/�3'-2-2�/460�.0+-23(*'0/D�+(.*0/�,-6�.0+:'6(,0*D�-3.�� �'2)12(� ,-� -/3(/� 6@2-(/� .0**-/:02,-� (� .4,')0� ->-.13(C6-� :0*� -6�+'.*0.023*06(,0*���6�.0+:'6(,0*�20�6-/�(/')2(�2'�:0/'.'42�,-�+-+0*'(�2'�.4,')0�,-�'2/3*1..'42���2�-/3(/�6@2-(/�20�/-�:0,*?2�:02-*�:1230/�,-�'23-**1:.'42�

��� �3';1-3(/�� �2� -6� ->-+:60� 3-2-+0/� 6(/� -3';1-3(/�+('2� =� /1C*13'2(�� �(*(� -/3(/�

6@2-(/�-6�.0+:'6(,0*�(/')2(�12(�:0/'.'42�,-�+-+0*'(�:-*0�20�6-/�(/')2(�2'2)M2�.4,')0�,-� '2/3*1..'42���2� 6(�:*'+-*(� 6@2-(�.02�.4,')0�->-.13(C6-�;1-�(:(*-I.(�,-/:1J/�,-�6(�-3';1-3(�:0,-+0/�.0+:*0C(*�;1-�(:(*-.-�6(�+'/+(�:0/'.'42�,-�+-+0*'(�;1-�6(�;1-�/-�E(�(/')2(,0�(�6(�-3';1-3(���0*�->-+:60�/1C*13'2(�3'-2-�6(�:0/'.'42�,-�+-+0*'(����� D�=�-2�6(�:0/'.'42�,-�+-+0*'(����� �3-2,*-+0/�

Page 29: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��!�

6(�'2/3*1..'42���9��F+0<BA������G���2�-/3(/�6@2-(/�20�/-�:0,*?2�:02-*�:1230/�,-�'23-**1:.'42��

��� �2/3*1..'02-/���6�.0+:'6(,0*�6-/�(/')2(�12(�:0/'.'42�,-�+-+0*'(�=�12�.4,')0�,-�

'2/3*1..'42���2�-/3(/�6@2-(/�/-�:0,*?2�:02-*�:1230/�,-�'23-**1:.'42���

�2(� <-I� ;1-� -6� 1/1(*'0� E(=(� (C'-*30� -6� (*.E'<0� U�6/3� =� 60� 3-2)(� <'/'C6-� -2� :(23(66(�,-C-*?�3-2-*�6(�:0/'C'6',(,�,-�*-(6'I(*�6(/�(..'02-/�;1-�/-�,-3(66(*?2�(�.023'21(.'42����2-/(�?�.%+')(�3%-'2&�1/�+-'/((%3*+,-���6�:*0)*(+(�;1-�/-�E(�6-@,0�,-����(C�/-�+0/3*(*?�-2�:(23(66(�=�E(.'-2,0�.6'.�-2�6(/�6@2-(/�,-/-(,(/�/-�:0,*?�:02-*�=�;1'3(*�:1230/�,-�'23-**1:.'42���%)(1)(�/$�12*%0/-'2��-/,-�-6�+-2M�0�6(�C(**(�,-�E-**(+'-23(/�/-�:0,*?�)1(*,(*�-6�:*0)*(+(�-2�-6�A0*+(30�,-� �+16:'.� F-53-2/'42� -+:G� ;1-� .023-2,*?� (,-+?/� ,-6� .4,')0� 60/� :1230/� ,-�'23-**1:.'42�/'31(,0/�:0*�-6�1/1(*'0����-N+)(�/$�3(27()0)�)$�/0%$)12(���(/�.0+12'.(.'02-/�/-�*-(6'I(*?2�(�3*(<J/�,-6�:1-*30�/-*'-�.02A')1*(,0�(�!#���C(1,'0/D�:*030.060���� �D��9�C'3/�,-�,(30/D���C'3�,-�/3(*3�=���C'3�,-�/30:����-+*+)(�$)�/G/*%*+,-�1/$�3(27()0)��-/,-��+16:'.�/-�:0,*?�/06'.'3(*�(6�-+16(,0*�;1-�'2'.'-�6(�->-.1.'42�,-6�:*0)*(+(�;1-�/-�E(�-2<'(,0�:*-<'(+-23-��� /'/-/(�$)�/G/*%*+,-�1/$�3(27()0)���2�30,0�+0+-230�/-�:0,*?�,-3-2-*�6(�->-.1.'42�,-6�:*0)*(+(�-2�-6�-+16(,0*����)%&)(�$)�/G/*%*+,-�1/$�3(27()0)��-�:0,*?�:(1/(*� 6(�->-.1.'42�,-6�:*0)*(+(�:(*(�:0,-*�<-*�-6�.023-2',0�,-6�-+16(,0*�F+-+0*'(D�*-)'/3*0/D���G��N)-;)(�%-)�+-&'(%**+,-��-*+'3-�(<(2I(*�6(�->-.1.'42�,-�12(�'2/3*1..'42�-2�-6�-+16(,0*�=�:(1/(*�/1�->-.1.'42����+&%)$+;)(�/$�*2-'/-+12�1/�$)�0/02(+)�1/$�/0%$)12(���2(�<-I�/-�E(� 6-@,0�-6�.023-2',0�,-6�-+16(,0*�/-�:1-,-�<'/1(6'I(*�-6�.023-2',0�,-� 6(�+-+0*'(����

Page 30: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�+&%)$+;)(�/$�*2-'/-+12�1/�$2&�(/7+&'(2&�1/$�/0%$)12(�� 1(2,0� =(� /-� ,'/:02-� ,-6� .023-2',0� (.31(6'I(,0� ,-6� -+16(,0*� -2� �+16:'.� /-� :1-,-�<'/1(6'I(*�-6�.023-2',0�,-�60/�*-)'/3*0/����0*�+03'<0/�,-�6'+'3(.'42�,-�3'-+:0�20�/-�'2.61'*?2�6(/�/')1'-23-/�0:.'02-/��

��� +0,'A'.(*�-6�.023-2',0�,-�60/�*-)'/3*0/��� +0,'A'.(*�-6�.023-2',0�,-�6(�+-+0*'(��� +0,'A'.(*�-6�.023(,0*�,-�:*0)*(+(�

������ ���������0/�(.30*-/�;1-�/-�E(2�',-23'A'.(,0�/02���

�� 1/1(*'0���-*3-2-.'-23-�(6�)*1:0�,-�(.30*-/�;1-�/-�()*1:(2�C(>0�-6�.02.-:30�,-�1/1(*'0�A'2(6D�0�/-(D�:-*/02(/�;1-�'23-*(.3M(2�,'*-.3(+-23-�.02�-6�/'/3-+(��

���� �+16(,0*���-*3-2-.'-23-�(�-230*20�'2A0*+?3'.0�,-�6(�(:6'.(.'42���

Page 31: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

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

��������'()*(+(�,-�.(/0/�,-�1/0��

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

�����

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

�����

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

�����������

������!!

������!!

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

�����

�������

�����������

"������

�����������

����������

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

���������#���������

��������

���������

�#����������

��������

����������

�#����������

��������

����$�������

�%���

���������

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

��������

�������

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

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

��������

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

����������

��������

������!!

������!!

������!!

������!!

������!!

��

�$%&'()*+,-����� +)7()0)�1/�*)&2&�1/�%&2��

��������0.1+-23(.'42�3-531(6�,-�60/�.(/0/�,-�1/0��:(+(�)(*Q+N2�S�$&'���-/1+-2�,-�6(�A12.'02(6',(,��(C*-�60/�(*.E'<0/�6/3�;1-�)-2-*(�-6�.0+:'6(,0*�,-��:6(C����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� :(*(� -+:-I(*� (� 3*(C(>(*� .02� -6� -+16(,0*� -6�1/1(*'0�,-C-�(C*'*�-6�(*.E'<0�)-2-*(,0�.02�-6����(C���

Page 32: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�.30*-/���/1(*'0���*-.02,'.'42�� -� E(� .*-(,0� 12� :*0)*(+(� -2� -2/(+C6(,0*� .02� -6� ���(C� =� /-� E(�.0+:'6(,0�:(*(�0C3-2-*�-6�(*.E'<0�U�6/3����0/3.02,'.'42�� �6� :*0)*(+(� /-� E(� 6-@,0� =� )1(*,(,0� -2� 6(/� -/3*1.31*(/� ,-� ,(30/�.0**-/:02,'-23-/�=�-/3?�6'/30�:(*(�/-*�+0/3*(,0�-2�6(�:(23(66(���:(+(�)(*Q+N2�S�/03���-/1+-2� ,-� 6(� A12.'02(6',(,�� �C*-� (*.E'<0/� ,-� :*0=-.30/� .*-(,0/� =� )1(*,(,0/�(23-*'0*+-23-�.02�-6�-+16(,0*����(:-6�,-23*0�,-6� 3*(C(>0�,-6�1/1(*'0���-*+'3-�(6�1/1(*'0� *-.1:-*(*�:*0=-.30/� .*-(,0/�(23-*'0*+-23-����.30*-/���/1(*'0���*-.02,'.'42��/-�E(�(C'-*30�(23-*'0*+-23-�12�21-<0�:*0=-.30D�/-�E(2�:1-/30�:1230/�,-�'23-**1:.'42�=�/-�E(�)1(*,(,0�-2�-6�A0*+(30�,-��+16:'.����0/3.02,'.'42��/-�E(�.(*)(,0�-6�:*0)*(+(�-2�6(/�-/3*1.31*(/�,-�,(30/D� '2.61=-2,0�60/�:1230/�,-�'23-**1:.'42D�=�-/3?�6'/30�:(*(�/-*�+0/3*(,0�-2�:(23(66(����2&'()(�3(27()0)�/-�3)-')$$)���-/1+-2� ,-� 6(� A12.'02(6',(,�� +1-/3*(� -6� :*0)*(+(� -2� -6� '23-*A(.-� )*?A'.0� ,-� 6(�(:6'.(.'42� :(*(� ;1-� -6� 1/1(*'0� :1-,(� <-*� -2� ;1-� 6@2-(/� :02-*� 60/� :1230/� ,-�'23-**1:.'42����(:-6�,-23*0�,-6�3*(C(>0�,-6�1/1(*'0��-/3-�.(/0�,-�1/0�-/3?� '2.61',0�,-23*0�,-�03*0/�.(/0/�,-�1/0�=�:0*�60�3(230�/-�->-.13(�.(,(�<-I�;1-�-6�1/1(*'0�6(2I(�120�,-�60/�.(/0/�'2,'.(,0/�-2�-6�,'()*(+(�-2�60/�;1-�-/3-�.(/0�-/3?�'2.61',0����.30*-/�� 20� 3'-2-� (.30*� :*'+(*'0�� �/� 12� .(/0� ,-� 1/0� '2.61',0� ,-23*0� ,-� 03*0/�.(/0/�,-�1/0�3(6�.0+0�/-�+1-/3*(�-2�-6�,'()*(+(����*-.02,'.'42��/-�E(�.(*)(,0�-6�(*.E'<0�U�6/3�0�U�-+:�-2�6(/�-/3*1.31*(/�,-�,(30/���0/3.02,'.'42��-6�:*0)*(+(�-/3?�<'/'C6-�-2�-6�'23-*A(.-�)*?A'.0�,-6�1/1(*'0����%)(1)(�)(*Q+N2�S�/03���-/1+-2� ,-� 6(� A12.'02(6',(,�� )1(*,(� -6� :*0)*(+(� 6-@,0� ,-����(C� -2� -6� A0*+(30� ,-��+16:'.D�;1-�'2.61=-�60/�:1230/�,-�'23-**1:.'42���

Page 33: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�(:-6�,-23*0�,-6�3*(C(>0�,-6�1/1(*'0��.1(2,0�-6�1/1(*'0�E(�(C'-*30�12�(*.E'<0�6/3�=�E(�3*(C(>(,0� .02� -6� :02'-2,0� :1230/� ,-� '23-**1:.'42� =� ->-.13?2,060� -2� -6� -+16(,0*D�:1-,-�)1(*,(*�-6�:*0)*(+(�>1230�.02�60/�:1230/�,-�'23-**1:.'42����.30*-/���/1(*'0���*-.02,'.'42��/-�-/3?�3*(C(>(2,0�-2��+16:'.�.02�12�:*0)*(+(�'+:0*3(,0�,-����(C�0�)1(*,(,0�(23-*'0*+-23-�.02��+16:'.����0/3.02,'.'42��/-�E(�)1(*,(,0�-6�:*0)*(+(�.02�-6�;1-�/-�-/3?�3*(C(>(2,0�'2.61=-2,0�60/�:1230/�,-�'23-**1:.'42���@)1+(�+-'/((%3*+,-���-/1+-2� ,-� A12.'02(6',(,�� .1(2,0� -6� 1/1(*'0� E(.-� .6'.� /0C*-� 12(� 6@2-(� ,-� .4,')0�A1-23-�;1-�20�3'-2-�:1230�,-�'23-**1:.'42D�/-�:02-�12�:1230�,-�'23-**1:.'42����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� :-*+'3-� (6� 1/1(*'0� ,-.','*� -2� ;1-� 6@2-(/� ,-6�:*0)*(+(�/-�<(�(�,-3-2-*�6(�->-.1.'42�,-6�-+16(,0*�:(*(�:0,-*�.02/163(*�-6�-/3(,0�,-�/1/�*-)'/3*0/D�-6�.023-2',0�,-�+-+0*'(D������.30*���/1(*'0���*-.02,'.'42�� E(=� 12� :*0)*(+(� .(*)(,0� =� +0/3*(,0� -2� -6� '23-*A(.-� )*?A'.0� ,-� 6(�(:6'.(.'42�=�/-�<(�(�E(.-*�.6'.�/0C*-�12(�6@2-(�/'2�:1230�,-�'23-**1:.'42����0/3.02,'.'42�� /-� E(� :1-/30� 12(� 21-<(� '23-**1:.'42D�+0,'A'.?2,0/-� 6(� -/3*1.31*(� ,-�,(30/�.02�-/-�21-<0�:1230�,-�'23-**1:.'42�=�<'/1(6'I?2,060�-2�:(23(66(���T%+')(�+-'/((%3*+,-���-/1+-2� ,-� A12.'02(6',(,�� .1(2,0� -6� 1/1(*'0� E(.-� .6'.� /0C*-� 12(� 6@2-(� ,-� .4,')0�A1-23-�;1-�3'-2-�:1230�,-�'23-**1:.'42D�/-�;1'3(�-6�:1230�,-�'23-**1:.'42�-5'/3-23-����(:-6�,-23*0�,-6�3*(C(>0�,-6�1/1(*'0��:-*+'3-�(6�1/1(*'0�;1'3(*�12�:1230�,-�'23-**1:.'42�;1-� E(C@(� :1-/30� (23-*'0*+-23-� -2� 12(� 6@2-(� :(*(� <-*'A'.(*� -6� A12.'02(+'-230� ,-6�:*0)*(+(����.30*���/1(*'0����*-.02,'.'42�� E(=� 12� :*0)*(+(� .(*)(,0� =� +0/3*(,0� -2� -6� '23-*A(.-� )*?A'.0� � ,-� 6(�(:6'.(.'42�=�/-�<(�(�E(.-*�.6'.�/0C*-�12(�6@2-(�.02�:1230�,-�'23-**1:.'42����0/3.02,'.'42��/-�E(�;1'3(,0�12�:1230�,-�'23-**1:.'42D�+0,'A'.?2,0/-�6(�-/3*1.31*(�,-�,(30/�.0**-/:02,'-23-�=�;1'3(2,0�-6�'2,'.(,0*�,-6�'23-*A(.-�)*?A'.0�,-6�:*0)*(+(����-N+)(�/$�3(27()0)�)$�/0%$)12(��

Page 34: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�-/1+-2�,-�A12.'02(6',(,��-2<@(�-6�:*0)*(+(�.(*)(,0�-2��+16:'.�(6�-+16(,0*����(:-6�,-23*0�,-6� 3*(C(>0�,-6�1/1(*'0��:(*(�;1-�-6�1/1(*'0�:1-,(�,-:1*(*�-6�:*0)*(+(�;1-�E(�.*-(,0�.02����(C�:(*(�-6��'.��#%9��-2�-6�-+16(,0*�(23-/�,-C-�-2<'(*60�,-/,-�-6�:*0)*(+(��+16:'.�(�3*(<J/�,-6�:1-*30�/-*'-���6�(.30*�;1-�6(2I(�-6�.(/0�,-�1/0�-/�-6�1/1(*'0� ;1-� /06'.'3(� -2<'(*� -6� :*0)*(+(� (6� -+16(,0*�� '� -6� -+16(,0*� -/3?� :*-:(*(,0�:(*(�-/3(C6-.-*�6(�.0+12'.(.'42�*-/:02,-�(6�� �=�/-�'2'.'(�-6�-2<@0����.30*���/1(*'0D��+16(,0*���*-.02,'.'42���5'/3-�12�:*0)*(+(�.(*)(,0�-2��+16:'.���0/3.02,'.'42���6�:*0)*(+(�;1-�E(=�-2��+16:'.�/-�E(�-2<'(,0�(6�-+16(,0*����G/*%')(�/$�3(27()0)���-/1+-2�,-�A12.'02(6',(,��12(�<-I�;1-�/-�E(�.(*)(,0�-6�:*0)*(+(�-2�-6�-+16(,0*�-6�1/1(*'0� ,-C-� '2'.'(*� /1� ->-.1.'42� :(*(� :0,-*� ,-:1*(*� /1� A12.'02(+'-230�� '� -6�:*0)*(+(� -/3?� :(1/(,0� /-� .023'2M(� 6(� ->-.1.'42� ,-6� :*0)*(+(� ,02,-� /-� E(C@(�,-3-2',0����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� -6� 1/1(*'0� ->-.13(� 6(� 0*,-2� ;1-� -2<@(� -/3-�.0+(2,0�(6�-+16(,0*���6�� �'23-23(�-/3(C6-.-*�6(/�.0+12'.(.'02-/�/-*'-�=�-6�-+16(,0*�*-/:02,-�(A'*+(3'<(+-23-�/'�-/3?�:*-:(*(,0�:(*(� *-.'C'*� 6(� '2A0*+(.'42�-2�.1=0�.(/0�/-�-2<@(�6(�0*,-2����.30*��1/1(*'0D�-+16(,0*���*-.02,'.'42��-5'/3-�12�:*0)*(+(�.(*)(,0�-2�-6�-+16(,0*���0/3.02,'.'42�� /'� -6� -+16(,0*� E(� *-.'C',0� -6� .0+(2,0� /-�E(� '2'.'(,0� 6(� ->-.1.'42�,-6�:*0)*(+(���)()(�$)�/G/*%*+,-�1/$�3(27()0)���-/1+-2� ,-� A12.'02(6',(,�� A'2(6'I(� 6(� ->-.1.'42� ,-6� :*0)*(+(� -2� -6� -+16(,0*�� �6�-+16(,0*�;1-,(�:*-:(*(,0�:(*(�*-.'C'*�03*0�:*0)*(+(�0�:(*(�<06<-*�(�->-.13(*60����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� -6� 1/1(*'0� ->-.13(� 6(� 0*,-2� ;1-� -2<@(� -/3-�.0+(2,0�(6�-+16(,0*���6�� �'23-23(�-/3(C6-.-*�6(/�.0+12'.(.'02-/�/-*'-�=�-6�-+16(,0*�*-/:02,-�(A'*+(3'<(+-23-�/'�-/3?�:*-:(*(,0�:(*(� *-.'C'*� 6(� '2A0*+(.'42�-2�.1=0�.(/0�/-�-2<@(�6(�0*,-2����.30*��1/1(*'0D�-+16(,0*���*-.02,'.'42��-5'/3-�12�:*0)*(+(�-2�A12.'02(+'-230�-2�-6�-+16(,0*���

Page 35: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�0/3.02,'.'42�� /'� -6� -+16(,0*� E(� *-.'C',0� -6� .0+(2,0� A'2(6'I(� 6(� ->-.1.'42� ,-6�:*0)*(+(����)%&)(�$)�/G/*%*+,-�1/$�3(27()0)���-/1+-2� ,-� A12.'02(6',(,�� E(.-� 12(� :(1/(� -2� 6(� ->-.1.'42� ,-6� :*0)*(+(� ,-6�-+16(,0*�� �6� -+16(,0*� ;1-,(� :*-:(*(,0� :(*(� .023'21(*� 6(� ->-.1.'42� ,02,-� 60� E(C@(�,->(,0�0�:(*(�(<(2I(*�12(�6@2-(�-2�6(�->-.1.'42���2�6(�<-23(2(�,-��+16:'.�/-�'2,'.(�6(�6@2-(�,02,-�/-�E(�:(1/(,0�6(�->-.1.'42�,-6�:*0)*(+(����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� -6� 1/1(*'0� ->-.13(� 6(� 0*,-2� ;1-� -2<@(� -/3-�.0+(2,0�(6�-+16(,0*���6�� �'23-23(�-/3(C6-.-*�6(/�.0+12'.(.'02-/�/-*'-�=�-6�-+16(,0*�*-/:02,-�(A'*+(3'<(+-23-�/'�-/3?�:*-:(*(,0�:(*(� *-.'C'*� 6(� '2A0*+(.'42�-2�.1=0�.(/0�/-�-2<@(�6(�0*,-2����.30*��1/1(*'0D�-+16(,0*���*-.02,'.'42��-5'/3-�12�:*0)*(+(�->-.13?2,0/-�-2�-6�-+16(,0*����0/3.02,'.'42��/'�-6�-+16(,0*�E(�*-.'C',0�6(�0*,-2�/-�:(1/(�6(�->-.1.'42�,-6�:*0)*(+(���N)-;)(�%-)�$9-/)���-/1+-2� ,-� A12.'02(6',(,�� .02� -6� -+16(,0*� :(1/(,0� -6� 1/1(*'0� :1-,-� /06'.'3(*� ;1-�->-.13-�6(�/')1'-23-�6@2-(�,-�.4,')0�=�;1-�<1-6<(�(�:02-*/-�-2�:(1/(����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� -6� 1/1(*'0� ->-.13(� 6(� 0*,-2� ;1-� -2<@(� -/3-�.0+(2,0�(6�-+16(,0*���6�� �'23-23(�-/3(C6-.-*�6(/�.0+12'.(.'02-/�/-*'-�=�-6�-+16(,0*�*-/:02,-�(A'*+(3'<(+-23-�/'�-/3?�:*-:(*(,0�:(*(� *-.'C'*� 6(� '2A0*+(.'42�-2�.1=0�.(/0�/-�-2<@(�6(�0*,-2����.30*��1/1(*'0D�-+16(,0*���*-.02,'.'42�� -5'/3-� 12� :*0)*(+(� ->-.13?2,0/-� -2� -6� -+16(,0*� =� -/3?� -2� -/3(,0� ,-�:(1/(����0/3.02,'.'42�� /'�-6�-+16(,0*�E(� *-.'C',0�-6� .0+(2,0�E(�->-.13(,0� 6(� /')1'-23-� 6@2-(�,-6�:*0)*(+(�=�E(�<1-630�(�/'31(*/-�-2�-/3(,0�,-�:(1/(����2$+*+')(�/$�*2-'/-+12�1/$�/0%$)12(���-/1+-2� ,-� A12.'02(6',(,�� .1(2,0� -6� -+16(,0*� /-� :02-� -2� -/3(,0� ,-� :(1/(�'2+-,'(3(+-23-� ,-/:1J/� �+16:'.� 6-� /06'.'3(� -6� .023-2',0� ,-� /1/� *-)'/3*0/� =�+-+0*'(�:(*(� :0,-*� ,(*� -/3(� '2A0*+(.'42� (6� 1/1(*'0� =� :(*(� /(C-*� -2� ;1-� 6@2-(� /-� E(�'23-**1+:',0�6(�.0+12'.(.'42�=�:0,-*�'2,'.(*60�-2�-6�.4,')0�A1-23-����(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� .1(2,0� -6� 1/1(*'0� E(� /06'.'3(,0� :(1/(*� -6�-+16(,0*�0�(<(2I(*�12(�6@2-(�-2�6(�->-.1.'42�,-6�:*0)*(+(�-6�1/1(*'0�2-.-/'3(*?�/(C-*�

Page 36: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��#�

-2�;1-�6@2-(�/-�E(�,-3-2',0�-6�:*0)*(+(�=�.02/163(*?�-6�.023-2',0�,-�60/�*-)'/3*0/�0�6(�+-+0*'(���(*(�:0,-*�0C3-2-*�-/3(�'2A0*+(.'42�/-�,-C-�/06'.'3(*�(6�-+16(,0*�;1-�-2<@-�30,(�6(�'2A0*+(.'42�/0C*-�/1�-/3(,0����.30*��-/3-�.(/0�20�3'-2-�12�(.30*�:*'2.':(6���/�12�.(/0�,-�1/0�'2.61',0�,-23*0�,-�60/�.(/0/� ,-� 1/0� :(1/(*� -6� -+16(,0*� =� (<(2I(*� 12(� 6@2-(� 6(� ->-.1.'42� ,-6� :*0)*(+(�� �6�-+16(,0*�-/�12�(.30*�20�:*'2.':(6�-2�-/3-�.(/0����*-.02,'.'42�� -5'/3-� 12� :*0)*(+(� ->-.13?2,0/-� -2� -6� -+16(,0*� =� -/3?� -2� -/3(,0� ,-�:(1/(����0/3.02,'.'42��/'�-6�-+16(,0*�E(�*-.'C',0�6(�0*,-2�E(�-2<'(,0�6(�'2A0*+(.'42�/06'.'3(,(�(6�� �=�/-�+(23'-2-�-2�-/3(,0�,-�:(1/(����/(�/$�*2-'/-+12�1/�$2&�(/7+&'(2&�1/$�/0%$)12(���-/1+-2�,-�A12.'02(6',(,��+1-/3*(�-6�.023-2',0�,-�60/�*-)'/3*0/�,-6�-+16(,0*���(:-6� ,-23*0� ,-6� 3*(C(>0� ,-6� 1/1(*'0�� :(*(� :0,-*� .0+:*0C(*� -6� A12.'02(+'-230� ,-6�:*0)*(+(�-/�'+:*-/.'2,'C6-�:(*(�-6�1/1(*'0�:0,-*�<-*�;1-�<(60*-/�30+(2�60/�*-)'/3*0/�,-6�+'.*0.023*06(,0*����.30*���/1(*'0���*-.02,'.'42�� �5'/3-� 12� :*0)*(+(� .(*)(,0� -2� -6� -+16(,0*D� -6� 1/1(*'0� E(�:(1/(,0� 6(�->-.1.'42�=�E(�/06'.'3(,0�;1-�/-�6-�-2<@-�6(�'2A0*+(.'42�,-6�-+16(,0*����0/3.02,'.'42�� /-� E(� +0/3*(,0� -2� 6(� :(23(66(� -6� .023-2',0� ,-� 60/� *-)'/3*0/� ,-6�+'.*0.023*06(,0*����/(�/$�*2-'/-+12�1/�$)�0/02(+)�1/$�3(27()0)���-/1+-2�,-�A12.'02(6',(,��+1-/3*(�-6�.023-2',0�,-�6(�+-+0*'(�,-6�+'.*0.023*06(,0*����(:-6�,-23*0�,-6�3*(C(>0�,-6�1/1(*'0��:-*+'3-�(6�1/1(*'0�<-*�-6�.023-2',0�,-�6(�+-+0*'(�:(*(�:0,-*�.02/163(*�-6�.023-2',0�,-�6(/�<(*'(C6-/����.30*���/1(*'0���*-.02,'.'42�� -5'/3-� 12� :*0)*(+(� .(*)(,0� -2� -6� -+16(,0*D� -6� 1/1(*'0� E(� :(1/(,0� 6(��->-.1.'42�=�E(�/06'.'3(,0�;1-�/-�6-�-2<@-�6(�'2A0*+(.'42�,-6�-+16(,0*����0/3.02,'.'42�� /-� E(� +0/3*(,0� -2� 6(� :(23(66(� -6� .023-2',0� ,-� 6(� +-+0*'(� ,-6�+'.*0.023*06(,0*����

Page 37: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

���� � �����-�����.-���������������������/�����2�6(�'61/3*(.'42�/')1'-23-�:0,-+0/�<-*�12�.*0;1'/�,-6�:*0)*(+(��+16:'.��

��

��$%&'()*+,-������(2.%+&�1/�$)�)3$+*)*+,-�

���2�-6�/-�:1-,-2�,'/3'2)1'*�60/�/')1'-23-/�.0+:02-23-/������ �-23(2(� :*'2.':(6� ,-� 6(� (:6'.(.'42�� -*?� 6(� *$)&/� 6(2-'/()���)+-�()0/�� ��

:*'0*'�/-�',-23'A'.(2�60/�/')1'-23-/�.0+:02-23-/���

(�� �-2M�C�� �(**(�,-�E-**(+'-23(/�.�� �*-/-23(.'42�,-6�.4,')0�A1-23-���2�-/3(�I02(�,-�6(�<-23(2(�/-�+0/3*(*?�

30,(� 6(� '2A0*+(.'42� ,-� 6(� .061+2(� ]�@2-(^� � ,-� 30,(/� 6(/� 6@2-(/� ,-6�:*0)*(+(�� 1(2,0�-6�1/1(*'0�E()(�,0C6-�.6'.�-2�12(�6@2-(�,-6�:*0)*(+(�/-� (.3'<(*?2� 0� ,-/(.3'<(*?2� 60/� :1230/� ,-� '23-**1:.'42�� �(/� 6@2-(/� .02�:1230/� ,-� '23-**1:.'42� (:(*-.-*?2� *-/(63(,(/�� �6� :*0)*(+(� /460�:-*+'3'*?� :02-*� :1230/� ,-� '23-**1:.'42� /0C*-� 6(/� 6@2-(/� ;1-�

Page 38: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��9�

.0**-/:02,(2� (� .4,')0� ->-.13(C6-D� 0� /-(� (;1-66(/� ;1-� ,'/:02-2� ,-�

.4,')0�,-�'2/3*1..'42���

�/3(�.6(/-D�(,-+?/�,-�/-*�6(�<-23(2(�:*'2.':(6�,-�6(�(:6'.(.'42D�3(+C'J2�/-*?�6(�.6(/-� :*'2.':(6� ,-� 6(� (:6'.(.'42D� ,-/,-� 6(� ;1-� /-� )-/3'02(*?� 30,0� /1�A12.'02(+'-230��

���� �-23(2(/�:(*(�+0/3*(*�-6�-/3(,0�,-6�-+16(,0*�,-6�+'.*0.023*06(,0*�F+-+0*'(�=�

*-)'/3*0/G�� 1(2,0� 6(� ->-.1.'42� ,-6� :*0)*(+(� -2� -6� -+16(,0*� -/3-� -2� :(1/(�:0*;1-� /-� E(� -2.023*(,0� 12� :1230� ,-� '23-**1:.'42� 0� /-� -/3?� *-(6'I(2,0� 12(�->-.1.'42�]:(/0�(�:(/0^D�-6�1/1(*'0�:0,*?�(C*'*�,'<-*/(/�<-23(2(/�-2�6(/�;1-�/-�+0/3*(*(�-6�.023-2',0�,-�60/�*-)'/3*0/D�,-�6(�+-+0*'(D�-3.��-�,'/:02,*?2�,-�6(/�/')1'-23-/�<-23(2(/��

�(�� �'/1(6'I(.'42� ,-6� .023-2',0� ,-� 6(� +-+0*'(�� -*?� 6(� *$)&/� � 6(2-'/()�

�(0�/02(+)�� �/3(� <-23(2(� :*-/-23(*?� 6(� '2A0*+(.'42� ,-� 6(�+-+0*'(�,-�6(�/')1'-23-�+(2-*(�

������� ��� ��� ��� ��� ��� ��� ��� �������9� ��� ��� ��� ��� %%� ��� ��� ��������� ��� ��� ��� ��� ��� ��� ��� ������� � � � � � � � ���2� .(,(� A'6(� /-� :*-/-23(*?2� 9� :0/'.'02-/� ,-�+-+0*'(� .02/-.13'<(/�� �(�:*'+-*(�.-6,(�,-�6(�A'6(�'2,'.(*?�-2�;1-�:0/'.'42�,-�+-+0*'(�-+:'-I(�6(�/-)12,(� .-6,(� ,-� 6(� A'6(�� �2� -6� ->-+:60� (23-*'0*� 3-2-+0/� ;1-� 6(/�:0/'.'02-/�,-�+-+0*'(�;1-�/-�+1-/3*(2�-2�6(�/-)12,(�A'6(�.0**-/:02,-2�(����0/'.'42� ,-�+-+0*'(�

.023-2',0�

����9� �������!� ��������� ��������� ������� � %%������ ��������� �������%� ����-�:0,*?�-6-)'*�/'�/-�,-/-(�<-*�-6�.023-2',0�,-� 6(�+-+0*'(�-2�A0*+(30�C'2(*'0D��E-5(,-.'+(6�0�,-.'+(6��

�C�� �'/1(6'I(.'42� ,-6� .023-2',0� ,-� 60/� *-)'/3*0/�� -*?� 6(� *$)&/� 6(2-'/()�

�(0�/7+&'(2&���/3(�.6(/-�:-*+'3'*?�<-*�60/�*-)'/3*0/�,-23*0�,-�12�)*',�/'+'6(*�(�6(�/')1'-23-�3(C6(��

Page 39: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��!�

�0+C*-� ,-6�*-)'/3*0�

�(60*�

����� ���������� �� �������������� ���������%�� ������������� ������6�<(60*�,-�60/�*-)'/3*0/�/-�:0,*?�<'/1(6'I(*�-2�A0*+(30�C'2(*'0D�,-.'+(6�=�E-5(,-.'+(6��

�����

Page 40: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

����0� ������������������������0/� ,'()*(+(/� ,-� /-.1-2.'(� ;1-� /-� :*-/-23(2� (� .023'21(.'42� 3'-2-2� .0+0� 0C>-3'<0�(2(6'I(*�60/�,'A-*-23-/�.(/0/�,-�1/0/�,-A'2',0/�,-/,-�12�:1230�,-�<'/3(�,-�6(/�<-23(2(/�,-�6(�(:6'.(.'42�',-23'A'.(,(/����

����������������������� ��������������������������"�����

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

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

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

&�����������������'���������������������������(

�)��#�����������������

�)�����������#������������������

�)������������#������������������

�)�����$��������%���

����������������������#����������������������

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

�������

� *���+����

�����������

�����������

��������

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

��������

�������

� *���+����

"������

�����������

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

��������

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

��������

�������

� *���+����

��������

�����

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

� *���+����

����������

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

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

�����������

���������

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

,��-

����������������,�-

��$%&'()*+,-��#�� +)7()0)&�1/�&/*%/-*+)���)('/���

Page 41: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

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

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

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

�������

� ����+����

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

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

��������

�+��.��������

���/

�������

� *���+����

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

�������

�+��*������

���/

� *���+����

����������

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

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

�����������

���������

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

��������

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

����������

���������

�������

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

��������

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

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

�����������

��

�$%&'()*+,-����� +)7()0)&�1/�&/*%/-*+)���)('/�����

����1� ������������������������-���������������������������

��6�/')1'-23-�,'()*(+(�,-�-/3(,0/�/-�E(�*-(6'I(,0�:(*(�'61/3*(*�60/�,'A-*-23-/�-/3(,0/�-2�;1-� /-�-2.023*(*?� 6(�(:6'.(.'42� /-)M2� 6(/�(..'02-/�;1-� *-(6'.-�-6�1/1(*'0��-*<'*?�,-�(=1,(�(�6(�E0*(�,-�,'/-H(*�60/�/'/3-+(/�,-�+-2M/�=�,-�C(**(/�,-�E-**(+'-23(/�=(�;1-�20/�(=1,(*?�(�/(C-*�;1-�.0+(2,0/�,-6�+-2M�=�;1-�C0302-/�:1-,-2�-/3(*�(.3'<0/�-2�.(,(�+0+-230����

Page 42: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�0 1

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

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

2

�#��������������

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

3

����$������������

�#��������������

�#��������������

����������#������

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

4

5

6

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

��������

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

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

����������

�����������

��������

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

�������

����������

�����������

��������

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

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

�����������

��������

7

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

��������

����$��������%���

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

��������

������������"������

����������

�����������

��

�$%&'()*+,-��>�� +)7()0)�1/�/&')12&�1/�$)�)3$+*)*+,-����6�-/3(,0�'2'.'(6�,-�6(�(:6'.(.'42�-/�-6�-/3(,0�����2�-6�+0+-230�-2�;1-�-6�1/1(*'0�(C*-�12�(*.E'<0�6(�(:6'.(.'42�:(/(�(6�-/3(,0D�,-/,-�-6�.1(6�/-�:0,*?2�:02-*�0�;1'3(*�:1230/�,-�'23-**1:.'42�=�:*0)*(+(*�-6�-+16(,0*�� 1(2,0�/-�E(=(�:*0)*(+(,0�-6�-+16(,0*�6(�(:6'.(.'42� -/3(*?� -2� -6� -/3(,0� ��� -/,-� -/3-� -/3(,0� /-� :0,*?� '2'.'(*� 6(� ->-.1.'42�.023'21(�,-6�:*0)*(+(�0�(<(2I(*�12(�6@2-(�-2�6(�->-.1.'42�F->-.1.'42�:(/0�(�:(/0G��'�/-�:02-�12�:1230�,-�'23-**1:.'42�+'-23*(/�-6�:*0)*(+(�-/3?�-2�-6�-/3(,0���/-�:(/(�(6�-/3(,0�����'�/-�E(�->-.13(,0�-6�:*0)*(+(�-2�-6�-+16(,0*��+16:'.�:(/(�(6�-/3(,0����-/,-�-/3-�-/3(,0�:0,*-+0/�:(*(*�6(�->-.1.'42�,-6�:*0)*(+(D�60�;1-�20/�,-<06<-*?�(6�-/3(,0��D�0�:0,*-+0/�:(1/(*�-6�:*0)*(+(D�60�;1-�20/�66-<(*?�(6�-/3(,0�����

Page 43: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

-/,-�-6�-/3(,0���:0,*-+0/�.02/163(*�-6�.023-2',0�,-� 60/�*-)'/3*0/�=� 6(�+-+0*'(�,-6�-+16(,0*D� =(� ;1-� (6� :(1/(*� 6(� ->-.1.'42� -6� -+16(,0*� E(C*?� -2<'(,0� (� �+16:'.� /1�.023-2',0���

Page 44: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

���� ��#����$� �����

������ ���������������������.023'21(.'42�/-�+1-/3*(�-6�,'()*(+(�,-�6(/�.6(/-/�,-�6(�(:6'.(.'42�,-23*0�,-6�+(*.0�,-�.6(/-/�,-�6(��% �13'6'I(,(/���(*(�<-*�.0**-.3(+-23-�-6�,'()*(+(�/-�*-.0+'-2,(�12�I00+�,-6����_���

&�������

8����

����������

*&99�&:*; *���+���� 9�����<��=;

>���<��=;

�����?���

0 0

2

7

9�����<��

>���<������������

*&@A:=;����������

��@ .&>&����������

+��.��������

������

+��*������

<�����

+��

�B@*�

����������

0

0

7

0

���C�#��

;�����

7

0

00

����������

����������

;������������

?����

0

�����

9�������>�������

0

0

&�������0 0

�������

0 0

&�����D��/ 0 0

9����D��/

00

����������

��������

��*������

0

0

����������

0

0

�� ���

����������

�������

0

0

0

0

��� ���

8���������

&�������

8����

����������

*&99�&:*; *���+����

+����8��

9�����<��=;

>���<��=;

�����?���

0 0

7

9�����<��

>���<������������

*&@A:=;����������

��@ .&>&����������

+��.��������

������

+��*������

<�����

+��

�B@*�

����������

0

0

7

0

���C�#��

;�����

7

0

00

����������

����������

;������������

?����

0

0��@

�����

9�������>�������

0

0

&�������0 0

�������

0 0

&�����D��/ 0 0

9����D��/

00

����������

��������

��*������

0

0

����������

0

�� ���

����������

�������

0

0

0

0

��� ���

8���������

0

*������

0

0

0

0��@

;��*������

0

0

��

�$%&'()*+,-����� +)7()0)�1/�*$)&/&��

Page 45: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�(� .6(/-� :*'2.':(6� ,-� 6(� (:6'.(.'42D� ,-/,-� 6(� ;1-� /-� '2'.'(� -6� :*0)*(+(D� -/� 6(� .6(/-� �+16:'.�::���/3(�.6(/-�,-C-�E-*-,(*�,-�6(�.6(/-� N'2�::�,-�6(�C'C6'03-.(�,-�.6(/-/�,-� �'.*0/0A3� �% � F�'.*0/0A3� %012,(3'02� 6(/-/G� =� ,-C-� '+:6-+-23(*� -6� '23-*A(.-������Z����:(*(�:0,-*�:*0.-/(*�+-2/(>-/�,-�N'2,0B/�F-<-230/G��� �+16:'.�::D�(� 3*(<J/�,-�/1�/1:-*.6(/-� N'2�::�,'/:02-�,-�12�(3*'C130�,-� 6(� .6(/-��% � '2)6-0.�-+:6(3-� ;1-� -/� 6(� ;1-� :-*+'3'*?� '+:6-+-23(*� 6(� (*;1'3-.31*(�,0.1+-230�<'/3(� ,-� 6(� (:6'.(.'42�� �(+C'J2� ,'/:02-� ,-� 12� (3*'C130� ,-� 6(� .6(/-� �('2%*(+-D�<-23(2(�:*'2.':(6�,-�6(�(:6'.(.'42����(�.6(/-��% � '2)6-0.�-+:6(3-�<'2.16(�6(�.6(/-�,-�,0.1+-230� �+16:'.0.D�6(�.6(/-�<'/3(� �+16:'.�'-B�=�6(�<-23(2(�,02,-�/-�+0/3*(*?�6(�<'/3(� �('2%*(+-����(�.6(/-� �('2%*(+-�/-*?� 6(�<-23(2(�:*'2.':(6�,-� 6(�(:6'.(.'42�=�,-C-�E-*-,(*�,-� 6(�.6(/-� �% � %*(+-N2,� -� '+:6-+-23(*� 60/� '23-*A(.-/� �����Z���� :(*(� :*0.-/(*�+-2/(>-/� ,-� N'2,0B/D� ����ZO�� :(*(� ,(*� 12� (/:-.30� ,-� O�� (� 60/� +-2M/� ,-� 6(�<-23(2(� =� �� ������ :(*(� ;1-� 6(� (*;1'3-.31*(� ,0.1+-230�<'/3(� :1-,(� .*-(*�,'2?+'.(+-23-�6(�<-23(2(���(�.6(/-� �('2%*(+-�3'-2-���

�� .1(3*0�'2/3(2.'(/�,-�6(�.6(/-� �006�(*O��:(*(�6(/�C(**(/�,-�E-**(+'-23(/���� 12(�'2/3(2.'(�,-�6(�.6(/-� 3(31/�(*�:(*(�6(�C(**(�,-�-/3(,0�

��� ,0/�'2/3(2.'(/�,-�6(�.6(/-� �+()-�'/3�:(*(�60/� '.020/�;1-�/-�+0/3*(*?2�-2�60/�

C0302-/�,-� 6(�C(**(�,-�-/3(,0D�12(�:(*(�60/�C0302-/�(.3'<(,0/�=�12(�:(*(�60/�C0302-/�,-/(.3'<(,0/�

��� 12(� '2/3(2.'(� ,-� 6(� .6(/-� 0+ 3*6� ;1-� /-*?� 6(� -2.(*)(,(� ,-� 6(/�

.0+12'.(.'02-/�/-*'-��

�� �2(� '2/3(2.'(� ,-� 6(� .6(/-� %*+�-)'/3*0/D� <-23(2(� ,02,-� /-� +0/3*(*?2� 60/�*-)'/3*0/�,-6�:*0.-/(,0*�

��� �2(�'2/3(2.'(�,-�6(�.6(/-�%*+�-+0*'(D�<-23(2(�,02,-�/-�+0/3*(*?�-6�.023-2',0�

,-�6(/�+-+0*'(/�,-6�:*0.-/(,0*��

�� '2.0�'2/3(2.'(/�,-�6(�.6(/-��-+0*'(���/30/�.'2.0�0C>-30/�.023-2,*?2�60/�,(30/�,-�60/�*-)'/3*0/�,-�60/�C(2.0/�,-�*-)'/3*0/�=�,-�6(/�+-+0*'(/�,-6�-+16(,0*��

��0/� :*0)*(+(/� ;1-� /-� -2<'(*?2� (6� -+16(,0*� -/3(*?2� -2.(:/16(,0/� :0*� 6(� .6(/-��*0)*(+(���/3(�.6(/-�/-*?�12�.023-2-,0*�,-�0C>-30/�,-�6(�.6(/-��'2-(�� (,(�0C>-30�,-�6(� .6(/-� �'2-(� .0**-/:02,-*?� (� 12(� 6@2-(� ,-6� :*0)*(+(� ;1-� /-� -2<'(*?� (6� -+16(,0*���(*(� (.31(*� .0+0� 3(6� .023-2-,0*� �*0)*(+(� E-*-,(*?� ,-� 6(� .6(/-� -/3?2,(*� ,-� 6(�C'C6'03-.(�,-� LL��-.30*���*0)*(+(�3(+C'J2�/-�-2.(*)(*?�,-�6--*�60/�(*.E'<0/�.02�-6�:*0)*(+(�.02�6(�.06(C0*(.'42�,-�6(�.6(/-�,-�6(��% � �*.E'<-��

Page 46: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��#�

�(*(� :0,-*� '+:6-+-23(*� 6(� (*;1'3-.31*(� ,0.1+-230�<'/3(� =� :-*+'3'*� (� 6(� (:6'.(.'42�+0/3*(*�-6�:*0)*(+(�)1(*,(,0�-2��*0)*(+(�/-�E(�,-A'2',0� 6(�.6(/-� �+16:'.0.�;1-�E-*-,(�,-��*0)*(+(�=�,-� 0.1+-23����(/� .6(/-/� 3(31/�(*O�� =� �006C(*O�� /02� .6(/-/� ,-� 12(� 6'C*-*@(� ,-/.(*)(,(� ,-��23-*2-3�:(*(�0A*-.-*�12�(/:-.30�,-�O��(�6(�(:6'.(.'42����(/� .6(/-/� %*+�-+0*'(� =� %*+�-)'/3*0/� 3'-2-2� .(*(.3-*@/3'.(/� .0+12-/�:0*� 60� ;1-�E-�.*-(,0D�:0*�)-2-*(6'I(.'42D�12(�.6(/-�%*+�;1-�:0/--�60/�(3*'C130/�=�+J30,0/�.0+12-/�(� (+C(/� .6(/-/�� %*+� E-*-,(*?� ,-� 6(� .6(/-� �% � '(60)D� =(� ;1-� %*+�-+0*'(� =�%*+�-)'/3*0/�/-*?2�,0/�<-23(2(/�3':0�.1(,*0�,-�,'(60)0����0/� *-)'/3*0/� =� 6(�+-+0*'(� /-� :*-/-23(*?2� -2� %*+�-+0*'(� =� %*+�-)'/3*0/� /0C*-� 12�C'3+(:� =� 6(/� 0:-*(.'02-/� )*?A'.(/� 2-.-/(*'(/� :(*(� :'23(*� /0C*-� -/30/� C'3+(:� /-�*-(6'I(*?2�.02�(=1,(�,-�6(/�.6(/-/��% � �('2 D� �'�C>-.3D� �=� �'3+(:�,-�%*+���(*(�:0,-*�+0/3*(*� 60/�,(30/�,-� 60/� *-)'/3*0/�0�,-� 6(�+-+0*'(�%*+�,'/:02,*?�,-�12�:123-*0�(�6(�.6(/-��-+0*'(�;1-�.023'-2-�60/�,(30/�;1-�,-C-�+0/3*(*����(�.6(/-��-+0*'(�-/�12�.023-2-,0*�,-�0C>-30/�,-�6(�.6(/-��0/�-+0*'(�=�E-*-,(�,-�6(�.6(/-�<-.30*�����(�.6(/-��0/�-+0*'(�*-:*-/-23(�12(�:0/'.'42�,-�+-+0*'(�,-6�-+16(,0*D�=(�/-(�,-�12�*-)'/3*0�0�,-�12(�:0/'.'42�,-�+-+0*'(�=�.023'-2-�/1�:0/'.'42�,-�+-+0*'(�=�/1�<(60*���

������ ������-������������������������������.�������������������������������

��6�:*0)*(+(�3*(C(>(*?�.02�6(�/')1'-23-�'2A0*+(.'42���

�� 6@2-(/�,-6�(*.E'<0�U�6/3�;1-�/-�6--�,-����(C��� (30/�,-�6(�+-+0*'(�=�60/�*-)'/3*0/�,-6�-+16(,0*�

�������� 6(/-��'2-(���2� 6(� ,-/.*':.'42� ;1-� /-� E(� ,(,0� -2� -6� (:(*3(,0� ,-� -5:6'.(.'42� 3-531(6� ,-� 6(/�-/:-.'A'.(.'02-/� ,-6� :*0)*(+(� /-� E(� '61/3*(,0� 6(� -/3*1.31*(� ,-� 12(� 6@2-(� ,-6� (*.E'<0�U�6/3�� -+0/�:0,',0�<-*�;1-�-/3(�6@2-(/�:0/--2�6(�/')1'-23-�'2A0*+(.'42���

�� :0/'.'42�,-�+-+0*'(��� .4,')0�,-�'2/3*1..'42��� 2M+-*0�,-�6@2-(��� 3-530�,-6�.4,')0�A1-23-�

�-� � -/3(� '2A0*+(.'42� -6� 2M+-*0� ,-� 6@2-(� 20� 20/� '23-*-/(� =(� ;1-� 20� (:0*3(� 2'2)12(�'2A0*+(.'42�M3'6�(6�-+16(,0*��

Page 47: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��,-+?/�,-�-/30/�,(30/�-6�1/1(*'0�:1-,-�:02-*�=�;1'3(*�:1230/�,-�'23-**1:.'42�-2�6(/�6@2-(/�,-6�:*0)*(+(��� 02� -/3(� '2A0*+(.'42� :0,-+0/� ,-A'2'*� 6(� .6(/-� �'2-(D� ;1-� 3-2,*?� 60/� /')1'-23-/�(3*'C130/�=�+J30,0/��

��+-/)�

��0/�-+��/3*'2)�� 0,�2/3��/3*'2)���'2-��/3*'2)���23-**��C06-(2�L��'2-(�F:+�/3*'2)D�.'��/3*'2)D6�/3*'2)G�L`�'2-(FG�L�-3�0/�-+F�G�/3*'2)�L�-3 0,�2/3F�G�/3*'2)�L�-3�'2-(F�G�/3*'2)�L�-3�23F�G�C006-(20�L-3�23F�G�C006-(20��

�6� (3*'C130� �0/�-+� .023-2,*?� -6� ,(30� .0**-/:02,'-23-� (� �0/'.'42� ,-�+-+0*'(�� '� 6(�6@2-(�20�.023'-2-�12(�'2/3*1..'42��0/�-+�<(6,*?�]^��

��6� (3*'C130� 0,�2/3� .023-2,*?� -6� ,(30� .0**-/:02,'-23-� (� 6(� .061+2(� 4,')0� ,-�'2/3*1..'42���'�6(�6@2-(�20�-/�12(�'2/3*1..'42�F:�-��12�.0+-23(*'0G� 0,�2/3�,-C-*?�<(6-*�]^�

��6�(3*'C130��'2-�.023-2,*?�-6�3-530�,-�6(�6@2-(���/3-�,(30�/-�+0/3*(*?�-2�6(�:(23(66(�(6�1/1(*'0����6�(3*'C130� �23-**�:-*+'3-� /(C-*� /'�-6�1/1(*'0�E(�/'31(,0�12�:1230�,-� '23-**1:.'42�-2�-/3(�6@2-(����2�-6� .02/3*1.30*�,-�.6(/-� *-.'C'*?�.0+0�:(*?+-3*0/� 60/�;1-�.0**-/:02,-�(��0/�-+D� 0,�2/3�=��'2-(���6�(3*'C130��23-**�-/3(*?�'2'.'(6+-23-�(�A(6/-�����6� ,-/3*1.30*� ,-� .6(/-� `�'2-(� 6'C-*(*?� -6� -/:(.'0� (/')2(,0� ,'2?+'.(+-23-� (� 60/�,'A-*-23-/�(3*'C130/�,-6�3':0�/3*'2)�,-�6(�.6(/-���-�E(2�.*-(,0�(..-/0*-/�,-�6-.31*(�:(*(�60/�(3*'C130/��0/�-+D� 0,�2/3�=��'2-(���/30/�(3*'C130/� 20� 2-.-/'3(2� (..-/0*-/� ,-� 6-.31*(� =(� ;1-� -/30/� (3*'C130/� /460� ,-C-2� /-*�(/')2(,0/�12(�<-I�-2�-6�+0+-230�,-�.*-(*�6(�.6(/-����(*(� -6� (3*'C130� �23-**� /-� .*-(*?� 12� (..-/0*� ,-� 6-.31*(D� �-3�23D� =� 120� ,-� -/.*'31*(D�-3�23�� 0+0� -6� 1/1(*'0� /060� :0,*?� :02-*� :1230/� ,-� '23-**1:.'42� /0C*-� 6@2-(/� ;1-�3-2)(2� .4,')0� ->-.13(C6-D� 0� /-(� (;1-66(/� ;1-� 3-2)(2� .4,')0� ,-� '2/3*1..'42D� -6�A12.'02(+'-230�,-�-3�23�/-*?�-6�/')1'-23-���-3�23�

Page 48: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��9�

�a�*-��6(�'2/3(2.'(�,-�6(�.6(/-��'2-(�-/3?�.0**-.3(+-23-�'2'.'(6'I(,(b�

�:(*?+-3*0/���2'2)120��/'� 0,�2/3�Tc�]^�-2302.-/�� �23-**�S�d�23-**� � �

*-31*2�3*1-�/'20�� *-31*2�A(6/-�A/'��

a�0/3�� /'� 6(� '2/3(2.'(� ,-� 6(� .6(/-� 6@2-(� .0**-/:02,@(� (� 12(� 6@2-(� .02� .4,')0�->-.13(C6-�=�20�E(C@(�12�:1230�,-�'23-**1:.'42�60�:02-�=�,-<1-6<-�3*1-D�/'�E(C@(�:1230�,-�'23-**1:.'42�60�;1'3(�=�,-<1-6<-�3*1-��'�6(�'2/3(2.'(�,-�6(�.6(/-��'2-(�20�.0**-/:02,@(�(�12(�6@2-(�.02�.4,')0�->-.13(C6-�,-<1-6<-�A(6/-b��

�������� 6(/-��*0)*(+(�� 0+0� 12� :*0)*(+(� -/� 12� .02>1230� ,-� 6@2-(/� ,-� .4,')0� A1-23-� 2-.-/'3(+0/� 12(�.06-..'42�,-�0C>-30/��'2-(�:(*(�(6+(.-2(*�-6�:*0)*(+(���/3(�.06-..'42�6(�3-2,*-+0/�-2�6(�.6(/-��*0)*(+(����(*(�-6-)'*�-6�3':0�,-�.023-2-,0*�,-6�;1-�E-*-,(*?�6(�.6(/-��*0)*(+(�,-C-+0/�/(C-*�;1-���

�� 60/�0C>-30/��'2-(�/-�'2/-*3(*?2�/-.1-2.'(6+-23-�=�/-�+(23-2,*?2�-2�-6�+'/+0�0*,-2�-2�;1-�/-�E(2� '2/-*3(,0��-C-*?�/-*�12�.023-2-,0*�20�0*,-2(,0��060�2-.-/'3(�;1-�/-�'2/-*3-2�-6-+-230/�(6�A'2(6�,-6�.023-2-,0*��

���� :(*(� :*-/-23(*� -6� :*0)*(+(� -2� 6(� <-23(2(� ,-� �+16�'.� /-� (..-,-*?�

/-.1-2.'(6+-23-� (� 30,(/� 6(/� :0/'.'02-/� ,-6� .023-2-,0*�� -C-*?� /-*� 12�.023-2-,0*�*-.0**'C6-��

��� �(*(�:02-*�=�;1'3(*�:1230/�,-�'23-**1:.'42�/-�(..-,-*?�(�12�-6-+-230�.02.*-30�

(�:(*3'*�,-�/1�:0/'.'42�-2�-6�.023-2-,0*���6�.023-2-,0*�,-C-*?�:-*+'3'*�(..-/0�(6-(30*'0�(�/1/�-6-+-230/��

��� �0�/02�2-.-/(*'0/�(6)0*'3+0/�,-�0*,-2(.'42��

� 0+0�-6�:*0)*(+(�/-�-/3?�*-(6'I(2,0�-2� LL������,'/:02)0�,-�6(�6'C*-*@(�-/3?2,(*�,-� LL��-�30,0/�60/�3':0/�,-�.023-2-,0*-/�'2.61',0/�-2�-/3(�6'C*-*@(�6(�.6(/-��-.30*�-/�6(�;1-�+->0*�/-�(,(:3(�(�6(/�2-.-/',(,-/�,-6�:*0)*(+(���

�� '2/-*.'42�,-�-6-+-230/�(6�A'2(6�,-6�.023-2-,0*�.02�3'-+:0�.02/3(23-��

Page 49: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��!�

��� :-*+'3-�(..-,-*�,-�A0*+(�*?:',(�(�.1(6;1'-*�-6-+-230�,-6�.023-2-,0*��

�/@�:1-/D�,'/-H(*J�6(�.6(/-��*0)*(+(�:(*(�;1-�E-*-,-�,-��-.30*���

�(27()0)�TT-53-2,/��-.30*cc�

�L�*0)*(+(F�G�L�0(,�/3F(*� �*.E'<-G�'23-)-*�L�0(,F(*� �*.E'<-G�'23-)-*�L(<-F(*� �*.E'<-G�'23-)-*��'2-(�

��� 60/�(3*'C130/�=�+J30,0/�;1-�E-*-,(�,-��-.30*� 6-�(H(,'*-+0/� 60/�+J30,0/��0(,�/3D��0(,�=�(<-����6� +J30,0� �0(,�/3� 6--*?� -6� (*.E'<0� U�6/3� ;1-� )-2-*(� -6� ���(C�� �-.'C-� .0+0�:(*?+-3*0� 12� 0C>-30� ,-� 6(� .6(/-� �*.E'<-� ;1-� .0**-/:02,-� (� 6(� .6(/-� ;1-�+(2':16(�-6�(*.E'<0�;1-�/-�<(�(�6--*��'�6(�6-.31*(�,-6�(*.E'<0�E(�/',0�.0**-.3(�,-<1-6<-����'�6(�6-.31*(�,-6�(*.E'<0�E(�/',0�'2.0**-.3(�,-<1-6<-�12�2M+-*0�,-�-**0*�2-)(3'<0����0(,�/3�a�*-�6(�'2/3(2.'(�,-�6(�.6(/-��*0)*(+(�-/3?�.*-(,(b�:(*?+-3*0/�(*.E'<0�/3*'2)�<(*'(C6-/��.(,-2(�/3*'2)�A�A'.E-*0��/'�-5'/3-�-6�A'.E-*0�.1=0�20+C*-�-/3?�-2�-6�:(*?+-3*0�(*.E'<0�� C0**(*�-6�.023-2',0�,-6�.023-2-,0*�

A�0:-2FG�� +'-23*(/�dA�-0AFG�� � .(,-2(�S�A�6--*�'2-(FG�� � /'�.(,-2(�3'-2-�12�2M+-*0�,-�6@2-(�-2�6(�.061+2(�-/:-*(,(�

6--*�,-�.(,-2(�6(�:0/'.'42�,-�+-+0*'(D�-6�.4,')0�,-�'2/3*1..'42�=�6(�'2/3*1..'42�.*-(*� 12(� 21-<(� '2/3(2.'(� ,-� 6(� .6(/-� �'2-(� =� (H(,'*6(� (6�.023-2-,0*�

� � A/'�A�(<(2I(FG�

� A+'-23*(/�A�.60/-FG�*-31*2��V�

/'20�� *-31*2���V�

Page 50: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

A/'��a�0/3��/'�20�-5'/3@(�-6�A'.E-*0�,-<1-6<-�e��/'�-6� A'.E-*0�/-�E(� 6-@,0�.0**-.3(+-23-�-6�.023-2-,0*�/-�E(� 66-2(,0�.02� 6(/� 6@2-(/�,-6�:*0)*(+(�=�,-<1-6<-���b���0/�+J30,0/��0(,�=�(<-�:-*+'3-2�(C*'*�)1(*,(*�60/�(*.E'<0/�(C'-*30/�-2�-6�A0*+(30�,-��+16�'.���-.'C-2�.0+0�:(*?+-3*0�12�0C>-30�,-�6(�.6(/-� �*.E'<-�;1-�-/�-6�0C>-30�;1-�+(2':16(�-6�(*.E'<0�.02�-6�;1-�/-�<(�(�3*(C(>(*�����6�3':0�,-�(*.E'<0�,-�-+16:'.�.023-2,*?� '2A0*+(.'42�/0C*-� 60/�:1230/�,-� '23-**1:.'42�;1-� E(� /'31(,0� -6� 1/1(*'0�� �0/� (*.E'<0/� ,-� �+16�'.� 3-2,*?2� 6(� -53-2/'42� -+:� =� /1�A0*+(30�/-*?���T'23-**1:.'42cDT:0/'.'42�,-�+-+0*'(cDT.4,')0�,-�'2/3*1..'42cDT6@2-(��c�T'23-**1:.'42cDT:0/'.'42�,-�+-+0*'(cDT.4,')0�,-�'2/3*1..'42cDT6@2-(��c�����T'23-**1:.'42cDT:0/'.'42�,-�+-+0*'(cDT.4,')0�,-�'2/3*1..'42cDT6@2-(�2c���6� +J30,� �0(,� 6--*?� 60/� (*.E'<0/� U�-+:�� '� 6(� 6-.31*(� ,-6� (*.E'<0� E(� /',0� .0**-.3(�,-<06<-*?��D�/'�E(�/',0�'2.0**-.3(�,-<06<-*?�12�2M+-*0�,-�-**0*�2-)(3'<0����0(,�a�*-�6(�'2/3(2.'(�,-�6(�.6(/-��*0)*(+(�-/3?�.*-(,(b�:(*?+-3*0/�(*.E'<0�/3*'2)��<(*'(C6-/��.(,-2(�/3*'2)�A�A'.E-*0��/'�-5'/3-�-6�A'.E-*0�.1=0�20+C*-�-/3?�-2�-6�:(*?+-3*0�(*.E'<0�� C0**(*�-6�.023-2',0�,-6�.023-2-,0*�

A�0:-2FG�� +'-23*(/�dA�-0AFG�� � .(,-2(�S�A�6--�'2-(FG�

6--*� ,-� .(,-2(� 6(� :0/'.'42� ,-� +-+0*'(D� -6� .4,')0� ,-� '2/3*1..'42D� 6(�'2/3*1..'42�=�-6�:1230�,-�'23-**1:.'42�.*-(*�12(�21-<(�'2/3(2.'(�,-�6(�.6(/-��'2-(�=�(H(,'*6(�(6�.023-2-,0*�

� A�(<(2I(FG�� A+'-23*(/�� A�.60/-FG�� *-31*2��V�/'20�� *-31*2���V�A/'�

Page 51: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�a�0/3��/'�20�-5'/3@(�-6�A'.E-*0�,-<1-6<-�e��/'�-6� A'.E-*0�/-�E(� 6-@,0�.0**-.3(+-23-�-6�.023-2-,0*�/-�E(� 66-2(,0�.02� 6(/� 6@2-(/�,-6�:*0)*(+(�=�,-<1-6<-���b��6� +J30,0� (<-� )1(*,(*?� 60/� (*.E'<0/� U�-+:�� '� 6(� -/.*'31*(� ,-6� (*.E'<0� E(� /',0�.0**-.3(�,-<06<-*?��D�/'�E(�/',0�'2.0**-.3(�,-<06<-*?�12�2M+-*0�,-�-**0*�2-)(3'<0���(<-�a�*-�6(�'2/3(2.'(�,-�6(�.6(/-��*0)*(+(�-/3?�.*-(,(b�:(*?+-3*0/�(*.E'<0�/3*'2)��<(*'(C6-/��.(,-2(�/3*'2)�.(,-2(��/3*'2)�.(,-2(��/3*'2)�.(,-2(��/3*'2)�.(,-2(��/3*'2)�62��'2-(�A�A'.E-*0��/'�-5'/3-�-6�A'.E-*0�.1=0�20+C*-�-/3?�-2�-6�:(*?+-3*0�(*.E'<0�� :*-)123(*�/'�/-�,-/-(�C0**(*�-6�A'.E-*0�� /'�/-�,-/-(�C0**(*�� � C0**(*�-6�A'.E-*0�� /'20�� � ,-<06<-*�e��=�/(6'*�� A/'�A/'��A�0:-2FG�:0/'.'02(*�-6�.023-2-,0*�-2�-6�:*'+-*�-6-+-230�62SA�6--�'2-(FG�+'-23*(/�d��%F.023-2-,0*G�� .(,-2(��62�)-3�0/+-+FG�

.(,-2(��62�)-3 0,�2/3FG�

.(,-2(��62�)-3�'2-(FG�

.(,-2(��62�)-3�23FG�

.(,-2(S.(,-2(�L^D^L.(,-2(�L^D^L.(,-2(�L^D^L.(,-2(�� � �� A�-/.*'C-F.(,-2(G�

(<(2I(*�-6�:1230�,-�'23-*J/�,-6�.023-2-,0*�A+'-23*(/�.-**(*�-6�A'.E-*0��*-31*2��V��

Page 52: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

a�0/3��/'� 20� /-� ,-/--(� /0C*-/.*'C'*� -6� A'.E-*0� -5'/3-23-� ,-<1-6<-� ,-<1-6<-� e�� =� /(6-� ,-6�+J30,0�/'�-6�A'.E-*0�/-�E(�.*-(,0�.0**-.3(+-23-�,-<1-6<-���b��

�������� 6(/-��0/�-+0*'(���(/� .6(/-/� �'2-(� =� �*0)*(+(� -*(2� 6(/� .6(/-/� :(*(� +(2':16(*� 60/� ,(30/� ;1-� �+16:'.�13'6'I(�:(*(�-2<'(*�-6�:*0)*(+(�(6�-+16(,0*����(/� .6(/-/� �0/�-+0*'(� =��-+0*'(� /-*?2� 6(/� ;1-� �+16:'.� 13'6'I(*?� :(*(�+(2':16(*� 6(�'2A0*+(.'42�;1-�0C3'-2-�,-6�-+16(,0*�=�;1-�,-C-�:*-/-23(*�-2�:(23(66(����(�.6(/-��0/�-+0*'(�-2.(:/16(*?�-6�:(*�,-�<(60*-/�F:0/'.'42�,-�+-+0*'(D�.023-2',0�,-�6(�:0/'.'42�,-�+-+0*'(G�;1-�.0**-/:02,-*?2�(�12(�:0/'.'42�,-�+-+0*'(�,-6�-+16(,0*��

�2&�/02(+)��:0/'.'02�'23��<(60*�C=3-�L�0/�-+0*'(F:0/�'23D<(6�C=3-G�L)-3�0/F�G�'23�L)-3�(6F�G�C=3-���0/�(3*'C130/�,-�6(�.6(/-�/02���

�� :0/'.'02�� 023'-2-�6(�:0/'.'42�,-�+-+0*'(�=�-/��,-�3':0�-23-*0����� �(60*�� 023'-2-�-6�,(30�.023-2',0�-2�6(�:0/'.'42�,-�+-+0*'(���(60*�/-*?�,-�3':0�

C=3-�=(�;1-�-/�-6�3(+(H0�,-�6(/�:0/'.'02-/�,-�+-+0*'(�,-6��� ��#%9����0/�+J30,0/�,-�6(�.6(/-�/02���

�� �0/�-+0*'(F:0/�'23D� <(6�C=3-G�� �/� -6� .02/3*1.30*� ,-� 6(� .6(/-� =� *-.'C-� 60/�:(*?+-3*0/�.0**-/:02,'-23-/�(�6(�,'*-..'42�,-�+-+0*'(�=�-6�<(60*�.023-2',0�-2�-66(��

�� �-3'*-..'02���..-/0*�,-�6-.31*(�(6�(3*'C130�:0/'.'02��-<1-6<-�12�3':0�'23���� �-3�(60*���..-/0*�,-�6-.31*(�(6�(3*'C130�<(60*��-<1-6<-�12�3':0�C=3-��

��

�������� 6(/-��-+0*'(���(�.6(/-��-+0*'(�/-*?�-6�.023-2-,0*�,-�0C>-30/�,-�6(�.6(/-��0/�-+0*'(�=�/-�-2.(*)(*?�,-� (6+(.-2(*� -2� 6(�+-+0*'(� ,-6� :*0)*(+(� �+16:'.� -6� .023-2',0� ,-� 6(�+-+0*'(� ,-6�-+16(,0*� =� ,-� 60/� *-)'/3*0/�� �(/� .(*(.3-*@/3'.(/� ;1-� ,-C-� 3-2-*� -/3(� .6(/-� /02�:*?.3'.(+-23-�6(/�+'/+(/�;1-�6(/�,-�6(�.6(/-��*0)*(+(���

Page 53: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�� 60/�0C>-30/��0/+-+0*'(�/-� '2/-*3(*?2�/-.1-2.'(6+-23-�=�/-�+(23-2,*?2�-2�-6�+'/+0�0*,-2�-2�;1-�/-�E(2�'2/-*3(,0��-C-*?�/-*�12�.023-2-,0*�20�0*,-2(,0��060�2-.-/'3(�;1-�/-�'2/-*3-2�-6-+-230/�(6�A'2(6�,-6�.023-2-,0*��

���� :(*(� :*-/-23(*� -6� .023-2',0� -2� 6(/� <-23(2(/� ,-6� :*0)*(+(� /-� (..-,-*?�

/-.1-2.'(6+-23-� (� 30,(/� 6(/� :0/'.'02-/� ,-6� .023-2-,0*�� -C-*?� /-*� 12�.023-2-,0*�*-.0**'C6-��

��� �0�/02�2-.-/(*'0/�(6)0*'3+0/�,-�0*,-2(.'42��

��6'>0�-6�.023-2-,0*�<-.30*�,-�6(�6'C*-*@(�-/3?2,(*�,-� LL�:0*;1J���

�� 6(�'2/-*.'42�,-�-6-+-230/�(6�A'2(6�,-6�.023-2-,0*�-/�,-�3'-+:0�.02/3(23-����� :-*+'3-�(..-,-*�,-�A0*+(�*?:',(�(�.1(6;1'-*�-6-+-230�,-6�.023-2-,0*�

�(�.6(/-�+-+0*'(�20�(H(,'*?�2'2)M2�+J30,0�2'�(3*'C130�(�6(�.6(/-�<-.30*D�:-*0�.*-(*J�6(� .6(/-� :(*(� :0,-*� -/:-.'(6'I(*6(� -2� -6� (6+(.-2(+'-230� ,-� 0C>-30/� ,-� 6(� .6(/-��0/�-+0*'(���

�/02(+)����0/�-+0*'(��

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

�������� 6(/-�:*'2.':(6�,-�6(�(:6'.(.'42�� 6(/-� �+16�'.�::�� �+16:'.�::�-/�6(�.6(/-�:*'2.':(6�,-�6(�(:6'.(.'42�=�/1�:1230�,-�-23*(,(�� -*-,(*?�,-� N'2�::�=�/1�,'()*(+(�����-/���

��0%$3+*33�TT-53-2,/� N'2�::cc�

L�+16:'.�::FG�L�2'3�2/3(2.-FG�C006-(20�L�5'3�2/3(2.-FG�'23�L�2%'6-�:-2FG�L�2�::�C013FG����/'212&���6�+J30,0��+16:'.�::�-/�-6�.02/3*1.30*�,-�.6(/-D����0/� +J30,0/� �2'3�2/3(2.-� =� �5'3�2/3(2.-� /02� *--+:6(I0/� :0*� -/:-.'(6'I(.'42� ,-� 60/�+J30,0/�,-�6(�/1:-*.6(/-��

Page 54: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��2�-6�+J30,0� �2'3�2/3(2.-� /-� *-(6'I(2� '2'.'(6'I(.'02-/�-/3?2,(*�,-� 6(/� (:6'.(.'02-/�,-�N'2,0B/���(�+(=0*@(�,-�6(/�'2'.'(6'I(.'02-/�6(/�*-(6'I(�(130+?3'.(+-23-�-6�-230*20�,-�:*0)*(+(.'42� ����� .1(2,0� /-� .*-(� 12� 21-<0� :*0=-.30�� �23*-� -/3(/� '2'.'(6'I(.'02-/�-2.023*(+0/�6(�'2'.'(6'I(.'42�,-�C'C6'03-.(/����D�,-�6(�6'C*-*@(�,-�.023*06-/� 0++.36���=�-6�:*0.-/(+'-230�,-� 6(� 6@2-(�,-�.0+(2,0/���,-+?/�,-� 6(/� '2'.'(6'I(.'02-/�-/3?2,(*�(H(,'*J�6(/�/')1'-23-/�(..'02-/���

�� (.3'<(*� 6(�<'/1(6'I(.'42�,-6�-/3'60�O��,-� 60/�+-2M/���(*(�-660�/-�,-C-� 66(+(*�(6�+J30,0��2'3'(6'I- 00K�,-�6(�.6(/-� �-21O���

�� *-(*�12(�-23*(,(�-2�-6�*-)'/3*0�:(*(�6(�(:6'.(.'42��� (*)(*�6(�6'/3(�,-�60/�.1(3*0�M63'+0/�(*.E'<0/�(C'-*30/��� �2'.'(6'I(*�6(�(*;1'3-.31*(�,0.1+-230P<'/3(�,-�6(�(:6'.(.'42�

��2'3�2/3(2.-�,-<1-6<-�3*1-�/'�6(�'2'.'(6'I(.'42�E(�/',0�.0**-.3(�=�A(6/-�/'�E(�A(66(,0���2�-6�+J30,0��5'3�2/3(2.-�/460�/-�,-C-*?�,-/(.3'<(*�6(�:*-/-23(.'42�,-�60/�+-2M/�.02�-6�-/3'60�O��=�66(+(*�(��5'3�2/3(2.-�,-�6(�/1:-*.6(/-�����6� +J30,0� �2%'6-�:-2� -/� 12� *--+:6(I0� :0*� -/:-.'(6'I(.'42� ,-6� +J30,0� ,-� 6(�/1:-*.6(/-���/3-�+J30,0�/-�->-.13(�.1(2,0�-6�1/1(*'0�/-6-..'02(�-6�.0+(2,0��C*'*���2�-/3-�+J30,0�:-*/02(6'I(*J�-6�.1(,*0�,-�,'(60)0�,-�(C*'*�:(*(�;1-�:-*+'3(�/-6-..'02(*�(*.E'<0/�.02� 6(�-53-2/'42�U�-+1D�U�6/3�=�U�U� � 1(2,0�-6�1/1(*'0�E(=(�/-6-..'02(,0�-6�(*.E'<0�;1-�;1'-*-�(C*'*�/-�,-C-�66(+(*�(6��:-20.1+-23%'6-�,-�6(�/1:-*.6(/-����6� +J30,� �2�::�C013� -/� 12� *--+:6(I0� :0*� -/:-.'(6'I(.'42� ,-6� +J30,0� ,-� 6(�/1:-*.6(/-�� �2� -6�+0/3*(*J� -6� .1(,*0� ,-� ,'?60)0� (.-*.(� ,-D� ;1-� -/3(� ,-A'2',0� :0*� 6(�.6(/-��C0136)���

���������-/3'42�,-�6(/�.0+12'.(.'02-/�/-*'-�� 6(/-� 0+ 3*6���(*(�'+:6-+-23(*�6(/�.0+12'.(.'02-/�/-*'-�/-�,'/:02-�,-�6(/�/')1'-23-/�:0/'C'6',(,-/��

�� .*-(*�12(�.6(/-�;1-�)-/3'02-�6(/�.0+12'.(.'02-/�/-*'-�,-/,-�-6�:*'2.':'0����� C1/.(*�12(�6'C*-*@(�,-�.6(/-/�;1-�,'/:02)(�,-�6(�.6(/-�;1-�2-.-/'3(+0/����� 13'6'I(*�-6�.023*06�� O�,-�.0+12'.(.'02-/�/-*'-�� 0++��

�-�-/3(/�3*-/�0:.'02-/�E-�-6-)',0�6(�3-*.-*(�=(�;1-�-/�6(�;1-�+-�0A*-.-�120/�+->0*-/�*-/163(,0/� .02� 12(� +@2'+(� '2<-*/'42� ,-� 3'-+:0�� �(� '+:6-+-23(.'42� ,-� 6(� .6(/-� 6(�*-(6'I(� (130+?3'.(+-23-� -6� -230*20� ,-� ,-/(**0660� ������ �(*(� '+:6-+-23(*� -/3(� .6(/-�/460� -/� 2-.-/(*'0� /-6-..'02(*� -6�+-2M� �*0>-.3��� �,, 6(//� =� /-6-..'02(*� ]�% � 6(//�%*0+��.3'<-O� 023*06^���

Page 55: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��

�$%&'()*+,-��"���(/)*+,-�1/�$)�*$)&/�1/�*20%-+*)*+2-/&���2(� <-I� ;1-� ����� E(=(� .*-(,0� 6(� .6(/-� :(*(� 13'6'I(*6(� /460� /-� 3'-2-� *-(6'I(*� 60/�/')1'-23-/�:(/0/���

�� .*-(*�12(�'2/3(2.'(�,-�-/3(�.6(/-�-2�12(�.6(/-�;1-�E-*-,-�,-� N2,����� �H(,'*�60/�+J30,0/�2-.-/(*'0/�:(*(�6(�)-/3'42�,-�60/�-<-230/�,-6�.023*06��.3'<-�

O�,-�.0+12'.(.'02-/���(� .6(/-� ,-� .0+12'.(.'02-/� ;1-� .*-(*J� (� :(*3'*� ,-6� .023*06� �.3'<-� O� � 0++� /-�66(+(*?� 0+.3*6���0/�+J30,0/�;1-�)-2-*(������:(*(�-/3(�.6(/-�/02���

��20*'($�TT N2,cc�

�L�-3 6/',FG� ���L *-(3-F�� ����6:/I 6(//�(+-D��� ��� ����6:/IN'2,0B�(+-D��������������N���,B3=6-D�� �.02/3��� �f�*-.3D�� � N2,U�:�(*-23N2,D������2�D�� � *-(3- 023-53U�: 023-53G�C006-(20�L *-(3-F�� ����6:/IN'2,0B�(+-D�������������N���,B3=6-D�� .02/3��� �f�*-.3D������������� N2,U�:�(*-23N2,D������������������2�D������������ %'6-U�:�-*/'/3D��

Page 56: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��#�

����������������C30*()-�S�%���D�� ����C/3*�'.$-=G�C00-6(20�L�-3 06,'2)FG�C006-2(0�L-3 06,'2)FC006-(20G�<0',�L�-3 �'+-013FG�602)�L-3 �'+-013F602)G�602)�L�-3 0++�FG�/E0*3�L-3 0++�F/E0*3G�<0',�L�-3 0++�0*3FG�/E0*3�L-3 0++�0*3F/E0*3G�<0',�L�-3 � 06,'2)FG�C006-(20�L-3 � 06,'2)FC006-(20G�<0',�L�-3 ��'+-013FG�602)�L-3 ��'+-013F602)G�<0',�L�-3� 06,'2)FG�C006-(20�L-3� 06,'2)FC006-(20G�<0',�L�-3��'+-013FG�602)�L-3��'+-013F602)G�<0',�L�-3���2(C6-FG�C006-(20�L-3���2(C6-FC006-(20G�<0',�L�-3 (2,/E(K'2)FG�602)�L-3 (2,/E(K'2)F602)G�<0',�L�-3�2�1AA-*'I-FG�/E0*3�L-3�2�1AA-*'I-F/E0*3G�<0',�L�-3�2�1AA-* 0123FG�/E0*3�L-3�2�1AA-* 0123F/E0*3G�<0',�L�-3�*-(KFG�C006-(20�L-3�*-(KFC006-(20G�<0',�L�-3�2:13�-2FG�/E0*3�L-3�2:13�-2F/E0*3G�<0',�L�-3�23-*<(6FG�602)�L-3�23-*<(6F602)G�<0',�L�-3�166'/.(*,FGC006-(20���(/�A12.'02-/�,-�-/30/�+J30,0/�/02���

�� �J30,0/� *-(3-�� �(� .6(/-� :*0:0*.'02(� ,0/� +J30,0/� /0C*-.(*)(,0/� :(*(� 6(�.*-(.'42� ,-� 6(� .6(/-�� �/30/�+J30,0/� .*-(2� -6� .023*06� (.3'<-� O� =� 60� <'2.16(2� (�-/3(�.6(/-�=�.*-(2�6(�.6(/-�<'2.16?2,06(�(�6(�<-23(2(�-2�6(�;1-�/-�'2.*1/3(*(��

�� �J30,0/� �-3� =� -3�� 02� +J30,0/� ;1-� (..-,-2� (� 6(/� :*0:'-,(,-/� ;1-�.0**-/:02,-2�-2�-6�.023*06��.3'<-�O�� 0++��

��(*(� '61/3*(*�-6� A12.'02(+'-230�,-� 6(� .6(/-�:0,-+0/�<-*� 6(� '+:6-+-23(.'42�;1-�E(.-������,-6�+J30,0��-3 0++�0*3�;1-�0C3'-2-�-6�<(60*�,-� 6(�:*0:'-,(,�:0*3�,-6�.023*06�� 0++������������������������ ��������� �������������� ��� ������������������������ !�"��������� �����#��������$�

Page 57: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

� 0+0�/-�:1-,-�<-*�60�M2'.0�;1-�E(.-�-6�+J30,0�-/�.02/163(*�-6�<(60*�,-�6(�:*0:'-,(,�+-,'(23-�-6�+J30,0��-3�*0:-*3=�;1-�E-*-,(�,-� N2,���0/�:(*?+-3*0/�;1-�/-�6-�:(/(2�(��-3�*0:-*3=�/02D�-2�-6�+'/+0�0*,-2�-2�;1-�(:(*-.-2���

�� ',-23'A'.(,0*�,-�6(�:*0:'-,(,�(�*-.1:-*(*��� ',-23'A'.(,0*�,-6�3':0�,-�,(30/�,-�6(�:*0:'-,(,��� :123-*0�(�<(*'(C6-�-2�6(�;1-�/-�,-<06<-*?�-6�<(60*�,-�6(�:*0:'-,(,��

��6�*-/30�,-�60/�+J30,0/�,-�6(�.6(/-�;1-�/-�.0+12'.(2�.02�-6�.023*06��.3'<-�O�A12.'02(2�')1(6� ;1-� -/3-� +J30,0�� �?/� '2A0*+(.'42� /0C*-� -/3(� .6(/-� 6(� :0,-+0/� -2.023*(*�.02/163(,0�-2�6(�(=1,(�,-��'.*0/0A3����

���� � �����-�����.-���������������������.�������������������-��������

���������-2-*(6',(,-/���6�,'/-H0�,-6�'23-*A(.-�)*?A'.0�,-�6(�(:6'.(.'42�/-�<(�(�*-(6'I(*�.02�6(�'23-2.'42�,-�,(*6-�12(�(:(*'-2.'(�303(6+-23-�:*0A-/'02(6�:0*�60�;1-�/-�<(�(�:*-/3(*�12(�)*(2�(3-2.'42�-2�60/�,-3(66-/�3@:'.0/�,-�(:6'.(.'02-/�,-�N'2,0B/��-�:*-3-2,-�.02/-)1'*���

�� �2� (/:-.30� ,-� 6(� (:6'.(.'42� (.31(6�� �(*(� -660� /-� ,03(*?� (6� :*0)*(+(� ,-� 12�/'/3-+(�,-�+-2M/�=�,-�C(**(/�,-�E-**(+'-23(/�.0+0�-6�-/3?2,(*�,-�N'2,0B/�O��

��� �2� /'/3-+(� ,-� +-2M/� .02� 60/� -6-+-230/� +?/� 3@:'.0/� ,-� 6(/� (:6'.(.'02-/�

N'2,0B/�F�*.E'<0D��,'.'42D��-*gG��

�� �*-/-23(*�-2�-6�:*0)*(+(�6(�6'/3(�,-�,0.1+-230/�+?/�*-.'-23-/��

�� �6� A0*+(30� ,-� (*.E'<0/� ,-� �+16:'.� ;1-,(*?� *-)'/3*(,0� -2� -6� ���� =� :-*+'3'*?�;1-D� E(.'-2,0� ,0C6-� .6'.� /0C*-� 12� (*.E'<0� U�-+1D� /-� (C*(� �+16:'.� =� -6�,0.1+-230�/-6-..'02(,0�

��� �(�:*-/-23(.'42�,-� 60/�:*0)*(+(/�,-6�-+16(,0*�3-2,*?�12�(/:-.30�:*0A-/'02(6�

'2.61=-2,0� .0+-23(*'0/� -2� .060*� <-*,-D� 6@2-(/� .02� :1230/� ,-� '23-**1:.'42� -2�.060*�*0>0D�g�

��� �6�/'/3-+(�,-�+-2M/�=�C(**(/�,-�E-**(+'-23(/�/460�(.3'<(*?�-2�.(,(�+0+-230�

60/�.0+(2,0/�;1-�/-�:1-,(2�13'6'I(*���

Page 58: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��9�

�������� 6(/-� �('2%*(+-���(� .6(/-� �('2%*(+-� -/� 6(� <-23(2(� :*'2.':(6� ,-� 6(� (:6'.(.'42�� -/,-� -66(� -6� 1/1(*'0�:0,*?�(..-,-*�(�60/�+-2M/D�C(**(/�,-�E-**(+'-23(/�=�<-*�-6�.4,')0�A1-23-�;1-�,-/-(�-2<'(*�(6�-+16(,0*���-2,*?�6(/�/')1'-23-/�.(*(.3-*@/3'.(/����/-U&�

��� �*.E'<0���6�+-2M�(*.E'<0�,'/:02,*?�,-�60/�/')1'-23-/�.0+(2,0/���

�� �C*'*��-*?�-6�.0+(2,0�;1-�/-�13'6'I(*?�:(*(�;1-�-6�1/1(*'0�:1-,(�'2'.'(*�60/�.(/0/�,-�1/0�(C*'*�(*.E'<0�U�6/3�=�(C*'*�(*.E'<0�U�-+:�

��� �1(*,(*� =��1(*,(*� .0+0�� � -*?2� 60/� .0+(2,0/� ;1-� /-� 13'6'I(*?2� :(*(�

;1-�-6�1/1(*'0�:1-,(�'2'.'(*�-6�.(/0�,-�1/0�)1(*,(*�(*.E'<0�U�-+:��

�� 02A')1*(*� 6(/� .0+12'.(.'02-/�� �/3-� .0+(2,0� :-*+'3'*?� /-6-..'02(*� -6�:1-*30� /-*'-� ;1-� /-� ,-/-(� 13'6'I(*�� �(*(� /'+:6'A'.(*� -6� ,'/-H0� ,-6�-+16(,0*� 20� /-� E(� :*-<'/30� 6(� :0/'C'6',(,� ,-� +0,'A'.(*� 03*(/�.(*(.3-*@/3'.(/�,-�6(/�.0+12'.(.'02-/�/-*'-��

��� �*0)*(+(*� -6� -+16(,0*�� -*?� -6� .0+(2,0� ;1-� /-� 13'6'I(*?� :(*(� ;1-� -6�

1/1(*'0�'2'.'-�-6�.(/0�,-�1/0��2<'(*�-6�:*0)*(+(�(6�-+16(,0*���

�� (6'*��%'2(6'I(*?�-6�:*0)*(+(��

�� �'/3(� ,-� A'.E-*0/� *-.'-23-/�� �2� -6� +-2M� (:(*-.-*?� 12(� 6'/3(� .02� 60/�M63'+0/���A'.E-*0/�(C'-*30/��

��� �,'.'42���6�+-2M�-,'.'42�,'/:02,*?�,-�60/�/')1'-23-/�.0+(2,0/���

�� �63-*2(*�:1230�,-�'23-**1:.'42���/3-�.0+(2,0�/-�13'6'I(*?�:(*(�'2'.'(*�60/�.(/0/�,-�1/0�(H(,'*�'23-**1:.'42�=�;1'3(*�'23-**1:.'42��

��� �0**(*� :1230/� ,-� '23-**1:.'42�� �/3-� .0+(2,0� /-� 13'6'I(*?� :(*(� ;1'3(*�

30,0/� 60/� :1230/� ,-� '23-**1:.'42�� �2'.'(*?� 3(23(/� <-.-/� .0+0� /-(�2-.-/(*'0�-6�.(/0�,-�1/0�;1'3(*�'23-**1:.'42��

��� �-*���6�+-2M�<-*�3-2,*?�60/�/')1'-23-/�.0+(2,0/���

�� �-)'/3*0/�� �2'.'(*?� -6� .(/0� ,-� 1/0� <-*� .023-2',0� ,-� 60/� *-)'/3*0/� ,-6�-+16(,0*��

��� �-+0*'(���2'.'(*?�-6�.(/0�,-�1/0�<-*�.023-2',0�,-�6(�+-+0*'(�

Page 59: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��!�

�� �(**(/�,-�E-**(+'-23(/���/3-� /-*?�12�+-2M�,-/:6-)(C6-�;1-�:-*+'3'*?�(..-,-*�(�60/�.0+(2,0/�;1-�+0/3*(*?2�4�0.163(*?2�6(/�,'A-*-23-/�C(**(/�,-�E-**(+'-23(/�;1-�(:(*-.-2�-2�-6�:*0)*(+(��

��� -:1*(.'42���2�-/3-�+-2M�/-�-2.023*(*?2�60/�/')1'-23-/�.0+(2,0/���

�� �>-.13(*���2'.'(*?�-6�.(/0�,-�1/0�->-.13(*�-6�:*0)*(+(����� �>-.13(*�:(/0�(�:(/0���2'.'(*?�-6�.(/0�,-�1/0�(<(2I(*�12(�6@2-(��

��� �23-**1+:'*���2'.'(*?�-6�.(/0�,-�1/0�:(1/(*�6(�->-.1.'42�,-6�:*0)*(+(��

��� �-*+'2(*���2'.'(*?�-6�.(/0�,-�1/0�:(*(*�6(�->-.1.'42�,-6�:*0)*(+(��

��� �=1,(���2�-/3-�+-2M�/-�'2.61'*?2�-6-+-230/�3@:'.0/�-2�60/�+-2M/�,-�(=1,(��

��0/� +-2M/� /-� ,'/-H(*?2� .02� -6� (/:-.30� ;1-� 3'-2-2� 60/� +-2M/� ,-� N'2,0B/� O�� =��'2.61'*?2�3-.6(/�,-�(..-/0�*?:',0�=�,-/.*':.'42�,-6�.0+(2,0�-2�6(�C(**(�,-�-/3(,0���(*(�,(*6-/� -6� (/:-.30� ,-� O�� /-� E(2� 13'6'I(,0� 12(/� 6'C*-*@(/� ,-� .6(/-/� ,-/.(*)(,(/� ,-��23-*2-3���(/�.6(/-/�'2.61',(/�-2�-/3(�6'C*-*@(�;1-�13'6'I(*J�-2�-6�:*0)*(+(�/02���

�� �006C(*O����(*(�,(*�(/:-.30�,-�O��(�6(/�C(**(/�,-�E-**(+'-23(/��� �-21O����(*(�,(*�(/:-.30�,-�O��(�60/�+-2M/�,-�6(�(:6'.(.'42��� 3(31/C(*O����(*(�,(*�(/:-.30�,-�O��(�6(�C(**(�,-�-/3(,0�

���)(()&�1/�Q/(()0+/-')&��-�'2.61'*?2�.1(3*0�C(**(/�,-�E-**(+'-23(/�;1-�.0**-/:02,-*?2�(�.0+(2,0/�,-6�+-2M��*.E'<0D�+-2M��,'.'42D�+-2M��-*�=�+-2M�,-:1*(.'42����(/�C(**(/�,-�-/3(,0�/-�:0,*?2�<-*�4�0.163(*D�:0,*?2�/-*� A603(23-/�0�(>1/3(*/-�(� 60/�.1(3*0�-53*-+0/�,-� 6(�<-23(2(�,-� 6(�(:6'.(.'42���6� ')1(6�;1-� 60/�+-2M/� 6(/�C(**(/�,-�E-**(+'-23(/�3(+C'J2�3-2,*?2�12(�(:(*'-2.'(�,-�N'2,0B/�O����(�(:6'.(.'42�)1(*,(*?�-2�-6�*-)'/3*0�-6�-/3(,0�-2�;1-�/-�-2.023*(C(2� 60/�+-2M/�(23-/�,-�.-**(*/-D�,-�-/3(�+(2-*(�6(�/')1'-23-�<-I�;1-�/-�(C*(�+(23-2,*?�-6�(/:-.30�;1-�3-2@(�6(�M63'+(�<-I�;1-�/-�->-.134����)(()�1/�/&')12��-� '2.61'*?� 12(� C(**(� ,-� -/3(,0� -2� 6(� ;1-� (:(*-.-*?2� +-2/(>-/� (.6(*(30*'0/� ,-� 60/�.0+(2,0/�,-�6(�(:6'.(.'42���(�C(**(�,-�-/3(,0�3-2,*?�12(�(:(*'-2.'(�,-�N'2,0B/�O����(/)�*$+/-'/�1/�$)�)3$+*)*+,-���2�-6�?*-(�.6'-23-�,-� 6(�(:6'.(.'42�/-�+0/3*(*?�12(�<-23(2(�.02�-6� .4,')0� A1-23-�,-6�:*0)*(+(�;1-�;1-*-+0/�->-.13(*�-2�-6�-+16(,0*���

Page 60: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

+)7()0)�����1/���)+-�()0/���(�.6(/-� �('2%*(+-�E-*-,(�,-�6(�.6(/-� A*(+-N2,�;1-�-/3?�'2.61',(�-2�6(�6'C*-*@(�,-�.6(/-/��% �,-��'.*0/0A3��1�,'()*(+(�����-/�-6�/')1'-23-���

��)+-�()0/�TT-53-2,/� A*(+-N2,cc�

� 0++(2,3(3-�'23���63-*2(*�'233(31/�C006-(20��%'6-�006�(*� �006�(*O����,'3�006�(*� �006�(*O����-*�006�(*� �006�(*O���-:1*(.'02�006�(*�� �006�(*O���3(31/�(*� 3(31/�(*O���N2,�-+0*'(�%*+�-+0*'(��N2,�-)'/3*0/�%*+�-)'/3*0/��'+)�'/3� �+()-�'/3��'+)�'/3'/� �+()-�'/3�� 0++.3*6� 0++ 3*6��C(2.0�-)���-+0*'(��C(2.0�-)���-+0*'(��C(2.0�(+���-+0*'(��C(2.0�(+���-+0*'(��C(2.0��:*0+��-+0*'(��% �('2%*(+-FG�L-3 0++(2,3(3-F./�'23G�L�-3 0++(2,3(3-FG�'23�L�.3'<(* 0+(2,0�23F<�C006-(20G�L�-3�-+0*'(F3':0�'23G��-+0*'(U��W�0(,%*(+-F2��-/01*.-������� �����,B-A(1633=6-�N��D�� �����:�(*-23N2,�� N2,UD�����������������: 023-53� *-(3- 023-53UG�W��2 *-(3-F6: *-(3-3*1.3�������������������� �������� �G�'23�W�2�:,(3-(<-F: +,���U +,��G�W�2�:,(3-�*0)-+16F: +,���U +,��G�W�2�:,(3-�6(=F: +,���U +,��G�W�2�:,(3-�'-B*-)'/3-*/F: +,���U +,��G�W�2�:,(3-�'-B+-+0*=F: +,���U +,��G�W�2�:,(3-�6(=/3-:F: +,���U +,��G�W�2�:,(3-�6(=:(1/-F: +,���U +,��G�W�2�:,(3-�6(=-2,F: +,���U +,��G�W�2�:,(3-�C*'*F: +,���U +,��G�W�2�:,(3-�63-*2(*:'F: +,���U +,��G�W�2�:,(3-�0**(*:'F: +,���U +,��G�W�2�(**(/,-E-**(+'-23(/�*.E'<0FG�W�2�(**(/,-E-**(+'-23(/�,'.'FG�W�2�(**(/,-E-**(+'-23(/�-*FG�W�2�(**(/,-E-**(+'-23(/-:1*(.'FG�W�2�'-B*-)'/3-*/FG�W�2�'-B+-+0*=FG�

Page 61: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

W�2�*.E'<0 02A')1*(*6(/.0+12'.(.'02-/FG�W�2�*0)*(+�+16(30*FG�W�2�6(=FG�W�2�6(=3-:FG�W�2�(1/-FG�W�2�6(=�2,FG�W�2 0++�<-23FG��0�<-23/FG���2<'(�2/3*1..'02F'2/3�C=3-G��� /&*(+3*+,-�1/�$2&�)'(+:%'2&�� 0++(2,3(3-���/3-�(3*'C130�,-�3':0�-23-*0�/-�13'6'I(�:(*(�'+:6-+-23(*�12(�+?;1'2(�,-�-/3(,0/�A'2'3(�;1-�:-*+'3-�(.3'<(*�0�,-/(.3'<(*�60/�+-2M/�=�.0+(2,0/�,-�6(/�C(**(/�,-�E-**(+'-23(/�2-.-/(*'0/����63-*2(*�'233(31/���/3-�(3*'C130�,-� 3':0�C006-(20�:-*+'3-� /(C-*� /'� /-�,-C-�(.3'<(*�0�,-/(.3'<(*�-6�.0+(2,0�,-�(63-*2(*�:1230/�,-�'23-**1:.'42���3(31/�(*�� �/3-� (3*'C130� -/� ,-� 6(� .6(/-� /3(31/�(*O�� =� -/� 6(� C(**(� ,-� -/3(,0� ,-6�A0*+16(*'0�:*'2.':(6�,-�6(�(:6'.(.'42��%'6-�006�(*���/3-�(3*'C130�-/�,-�6(�.6(/-� 3006�(*O��=�-/�6(�C(**(�,-�E-**(+'-23(/�.02�(6)120/�.0+(2,0/�,-6�+-2M��*.E'<0����,'3�006�(*���/3-�(3*'C130�-/�,-� 6(�.6(/-� 3006�(*O����/� 6(�C(**(�,-�E-**(+'-23(/�.02�60/�.0+(2,0/�,-6�+-2M�,-�-,'.'42����-*�006�(*���/3-�(3*'C130�-/�,-� 6(�.6(/-� 3006�(*O��=�.023'-2-�(6)120/�.0+(2,0/�,-6�+-2M��-*���-:1*(.'02�006�(*O����/3-�(3*'C130�-/�,-� 6(� .6(/-� 3006�(*O��=�-2�-6� /-�/'31(*?2� 60/�+'/+0/�.0+(2,0/�;1-�-2�-6�+-2M�-:1*(.'42���N2,�-+0*'(���/3-�(3*'C130�,-�6(�.6(/-�%*+�-+0*'(�/-�13'6'I(*?�:(*(�;1-�6(�(:6'.(.'42�+1-/3*-�6(�<-23(2(�.02�-6�.023-2',0�,-�6(�+-+0*'(�,-6�-+16(,0*��N2,�-)'/3*0/���/3-�(3*'C130�,-�6(�.6(/-�%*+�-)'/3*0/�/-�13'6'I(*?�:(*(�;1-�6(�(:6'.(.'42�+1-/3*-�6(�<-23(2(�.02�-6�.023-2',0�,-�60/�*-)'/3*0/�,-6�-+16(,0*����+)�'/3�� �/3-� (3*'C130� -/� ,-� 6(� .6(/-� '+()-�'/3D� 12(� .6(/-� ,-� 6(� �% � ;1-� :-*+'3-�)1(*,(*�12(� 6'/3(�,-� '+?)-2-/���/3(� 6'/3(�,-� '+?)-2-/�/-*?�2-.-/(*'(�:(*(� 60/� '.020/�,-�6(/�C(**(/�,-�E-**(+'-23(/����+)�'/3'/���/3-�(3*'C130�,-�6(�.6(/-� '+()-�'/3�)1(*,(*?�60/�'.020/�;1-�(:(*-.-*?2�-2�6(/�C(**(/�,-�E-**(+'-23(/�.1(2,0�60/�.0+(2,0/�-/3J2�,-/(.3'<(,0/���

Page 62: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

0++.3*6���/3-�(3*'C130�,-�6(�.6(/-� 0++ 3*6�-/�-6�-2.(*)(,0�,-�6(/�.0+12'.(.'02-/�(�3*(<J/�,-6�:1-*30�/-*'-���0/� (3*'C130/� ,-� 6(� .6(/-D� C(2.0�-)�D� C(2.0�-)�DC(2.0�(+�D� C(2.0�(+�� =�C(2.0��:*0+� /02� 0C>-30/� ,-� 6(� .6(/-� +-+0*'(� ;1-� *-:*-/-23(*?2� 60/� C(2.0/� ,-�*-)'/3*0/�,-6�-+16(,0*�=�6(/�,'A-*-23-/�+-+0*'(/�,-6�-+16(,0*��� /&*(+3*+,-�1/�$2&�0='212&�� �('2%*(+-FG���/�-6�.02/3*1.30*�,-�6(�.6(/-���2�-/3-�+J30,0�/-�'2'.'(6'I(*?�-6�(3*'C130� 0++(2,3(3-�(���=��63-*2(*�'233(31/�(�����-3 0++(2,3(3-F./�'23G���..-/0*�,-�-/.*'31*(�(6�(3*'C130� 0++(2,3(3-���-3 0++(2,3(3-FG���..-/0*�,-�6-.31*(�(6�(3*'C130� 0++(2,3(3-����.3'<(* 0+(2,0�23F<�C006-(20G���..-/0*�,-�-/.*'31*(�(6�(3*'C130��63-*2(*�'233(31/����-3�-+0*'(F3':0�'23G�� �/3-� +J30,0� /-*?� -6� (..-/0*� ,-� 6-.31*(� (� 60/� (3*'C130/�C(2.0�-)�D� C(2.0�-)�D� C(2.0�(+�D� C(2.0�(+�� =� C(2.0��:*0+�� �6� :(*?+-3*0� 3':0�:-*+'3'*?�/-6-..'02(*�-6�(3*'C130�;1-�/-�,-/-(�6--*���

�� ����C(2.0�-)���� ����C(2.0�-)���� ����C(2.0�(+���� ����C(2.0�(+���� ����C(2.0��:*0+�

��0(,%*(+-FgG�� (*)(�-6�%*(+-�,-�6(�<-23(2(���0/�:(*?+-3*0/�;1-�*-.'C-�/02���

�� 2��-/01*.-��������/�-6�',-23'A'.(,0*�,-�60/�*-.1*/0/�(/0.'(,0/�(�6(�<-23(2(���� ,B-A(1633=6-�N����-A'2-�-6�-/3'60�,-�6(�<-23(2(��

��� :�(*-23N2,�� N2,U��-A'2-�6(�<-23(2(�:(,*-�

��� : 023-53� *-(3- 023-53U��-�13'6'I(�:(*(�(/0.'(*�12�,0.1+-230D��/1�<'/3(�=�6(�

<-23(2(�:*'2.':(6�,02,-�/-�+0/3*(*?�6(�<'/3(����2�-/3-�+J30,0�/-�,-C-*?2�.(*)(*�-6�'.020�(/0.'(,0�(�6(�(:6'.(.'42�=�66(+(*�(6�+J30,0��:,(3-�-21�(*�,-� �-21O��:(*(�;1-�.(*)1-�60/�+-2M/�.02�A0*+(30�,-�O����6�*-/30�,-�0:-*(.'02-/�6(/�*-(6'I(*?�6(�/1:-*.6(/-����2 *-(3-FG�� *-(� 6(� <-23(2(�� �-.'C-� .0+0� :(*?+-3*0� 12� :123-*0� (� 6(� -/3*1.31*(� �������� ��;1-�,-A'2-�60/�,'A-*-23-/�:(*?+-3*0/�2-.-/(*'0/�:(*(�6(�.*-(.'42�,-�6(�<-23(2(����2�-/3-�+J30,0�/-�,-C-*?2�E(.-*�6(/�/')1'-23-/�0:-*(.'02-/���

�� *-(*�6(/�C(**(/�,-�E-**(+'-23(/�

Page 63: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

��� *-(*�-6�0C>-30�,-�.0+12'.(.'02-/�

��6�*-/30�,-�0:-*(.'02-/�60/�*-(6'I(*?�6(�/1:-*.6(/-���2 *-(3-�,-<1-6<-���/'�/-�E(�.*-(,0�.0**-.3(+-23-�=����/'�E(�E(C',0�12�-**0*���0/� /')1'-23-/�+J30,0/��2�:,(3-U� F: +,���U +,��G� /-� '2<0.(2� :0*� 6(� (:6'.(.'42�.1(2,0� 2-.-/'3(� (.31(6'I(*� -6� -/3(,0� ,-6� +-2M� =P0� .0+(2,0� ,-� 6(� C(**(� ,-�E-**(+'-23(/� (/0.'(,0� (6� *-.1*/0� ,-A'2',0� :0*� : +,���� �2� -/30/� +J30,0/�.02/163(*-+0/�-6�<(60*�,-6�(3*'C130� 0++(2,3(3-�=�-2�A12.'42�,-�/1�<(60*�/-�'2,'.(*?�(� 6(� (:6'.(.'42� /'� ,-C-� (.3'<(*� 0� ,-/(.3'<(*� 6(� (:6'.(.'42�� �0/� .0+(2,0/� /-� (.3'<(*?2�/-)M2�'2,'.(�-6�,'()*(+(�,-�-/3(,0/�,-�6(�(:6'.(.'42�,-�6(�'61/3*(.'42�������(*(� 60/� +J30,0/� �2�:,(3-�63-*2(*:'� =� �2�:,(3-�0**(*:'� /-� .02/163(*?� -6� (3*'C130��63-*2(*�'233(31/��'�-6�1/1(*'0�/-�E(�/'31(,0�/0C*-�12(� 6@2-(�,02,-�/-�:1-,-�:02-*�12�:1230�,-�'23-**1:.'42��63-*2(*�'233(31/�<(6,*?�3*1-�=�:0*�60�3(230�/-�:0,*?�(.3'<(*�-6�+-2M� =� -6� .0+(2,0�,-� 6(� C(**(� ,-� E-**(+'-23(/� ;1-� :-*+'3-� :02-*� 12� :1230� ,-�'23-**1:.'42����2�(**(/,-E-**(+'-23(/�*.E'<0�� �/3-� +J30,0� /-� ->-.13(*?� .1(2,0� -6� 1/1(*'0�/-6-..'02-� -6� .0+(2,0� ,-� +-2M� ;1-� :-*+'3-� +0/3*(*� 0� 0.163(*� 6(� C(**(� ,-�E-**(+'-23(/� ,-� .0+(2,0/� ,-� (*.E'<0�� '� 6(� C(**(� ,-� E-**(+'-23(/� -/3?� <'/'C6-� 6(�+0/3*(*?�=�/'�20�6(�0.163(*?����0/� +J30,0/� �2�(**(/,-E-**(+'-23(/�,'.'FGD� �2�(**(/,-E-**(+'-23(/�-*FG� =��2�(**(/,-E-**(+'-23(/-:1*(.'FG� A12.'02(2� ')1(6� ;1-��2�(**(/,-E-**(+'-23(/�*.E'<0�����0/� +J30,0/� �2�'-B*-)'/3-*/� =� � �2�'-B+-+0*=� +0/3*(*?2� 6(/� <-23(2(/� ;1-�:*-/-23(2�-6�.023-2',0�,-�60/�*-)'/3*0/�=�-6�.023-2',0�,-�6(�+-+0*'(�*-/:-.3'<(+-23-����6� +J30,0� �2�*.E'<0 02A')1*(*6(/.0+12'.(.'02-/� +0/3*(*?� 6(� <-23(2(� ;1-� :-*+'3-�/-6-..'02(*�-6�:1-*30�,-�.0+12'.(.'02-/�/-*'-����2�*0)*(+�+16(30*�� �/3-�+J30,0� /-� ->-.13(*?� .1(2,0� -6� 1/1(*'0� :16/-� -6� .0+(2,0�:(*(�:*0)*(+(*�-6�-+16(,0*���(/�(..'02-/�;1-�/-�,-C-*?2�*-(6'I(*�-2�-/3-�+J30,0�/02���

�� (C*'*�-6�:1-*30�,-�.0+12'.(.'02-/�/-*'-��� -2<'(*�(6�-+16(,0*�6(�'2/3*1..'42�,-�'2'.'0�,-�.0+12'.(.'02-/��� �6(+(*�(6�+J30,0��-3�.3'<-0.1+-23�;1-�E-*-,(�,-�6(�/1:-*.6(/-�:(*(�0C3-2-*�

-6�,0.1+-230�(/0.'(,0�(�6(�<-23(2(��� �-.0**-*� 30,(/� 6(/� 6@2-(/� ,-6� :*0)*(+(� ;1-� .023'-2-� -6� ,0.1+-230� =� -2<'(*�

:(*(�6(/�'2/3*1..'02-/�(6�-+16(,0*��� �2<'(*�6(�'2/3*1..'42�,-�A'2�,-�-2<@0�,-6�:*0)*(+(��� �/:-*(*�(�;1-�-6�C1AA-*�,-�/(6',(�/-�<(.@-��� -**(*�-6�:1-*30�/-*'-�

Page 64: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

�(,0�;1-�-6�C1AA-*�,-�/(6',(�,-6�:1-*30�,-�.0+12'.(.'02-/�3'-2-�12�3(+(H0�+?5'+0�/-�,-C-*?� .0+:*0C(*� (23-/� ,-6� -2<@0� ,-� .(,(� '2/3*1..'42� /'� E(=� /'3'0� -2� -6� C1AA-*� ,-�/(6',(�� �2� .(/0� ,-� ;1-� -6� C1AA-*� -/3J� 66-20� /-� ,-C-*?� -/:-*(*� (� ;1-� /-� <(.@-� /'2�C60;1-(*�6(�(:6'.(.'42���(*(�*-(6'I(*�-/30�*-(6'I(*J�12�C1.6-�;1-�.02/163-�-6�-/3(,0�,-6�C1AA-*�F.0++.3*6��-3�13�1AA-* 0123FG�=�,-23*0�,-6�C1.6-� 66(+(*J�(6�+J30,0�0�<-23/�;1-�:-*+'3-�:*0.-/(*�60/�+-2/(>-/�,-6�/'/3-+(�;1-�6-�66-)(2�(�6(�(:6'.(.'42D�-<'3(2,0�,-�-/3(�+(2-*(�;1-�-6�C1.6-�6(�C60;1--���PP.(,(�'2/3*1..'42�/02�.1(3*0�C=3-/�'�.0++.3*6��-3�13�1AA-* 0123FG��c�.0++.3*6��-3�13�1AA-*'I-FG�e���

�'-23*(/�;1-�.0++.3*6��-3�13�1AA-* 0123FG��c��.0++.3*6��-3�13�1AA-*'I-FG�e���� 0-<-23/FG�%+'-23*(/�

A/'��

�(� '2A0*+(.'42� /0C*-� -6� A0*+(30� ,-� '2/3*1..'02-/� ;1-� /-� -2<@(2� (6� -+16(,0*� /-�-2.1-23*(�-2�-6�.(:@3160��$2.%/�1/�*2-'(2$�1/$�/0%$)12(����2�6(=���2<@(�6(�'2/3*1..'42�,-�->-.13(*�-6�:*0)*(+(�(6�-+16(,0*����2�6(=3-:���2<@(�6(�'2/3*1..'42�,-�(<(2I(*�12(�'2/3*1..'42�(6�-+16(,0*����2�(1/-���2<@(�6(�'2/3*1..'42�,-�:(1/(*�6(�->-.1.'42����2�6(=�2,���2<@(�6(�'2/3*1..'42�,-�,-3-2-*�6(�->-.1.'42����2 0++�<-23�� �/3-� +J30,0� /-� ,-C-� +(:-(*� (� 60/� -<-230/� ,-6� .023*06� ,-�.0+12'.(.'02-/�=�/-�13'6'I(*?�:(*(�*-.'C'*�60/�,(30/�,-6�-+16(,0*�=�60/�:0/'C6-/�-**0*-/�,-�.0+12'.(.'02-/�� 1(2,0�/-�*-.'C(2�60/�,(30/�,-6�-+16(,0*�/-�66-2(*?2�60/�<-.30*-/�C(2.0�-)�D� C(2.0�-)�D� C(2.0�(+�D� C(2.0�(+�� =� C(2.0��:*0+� .02� 60/� ,(30/�*-.'C',0/�,-6�-+16(,0*�� 1(2,0�/-�*-.'C(�12�+-2/(>-�,-�-**0*�/-�+0/3*(*?�-6�+-2/(>-�.0**-/:02,'-23-���0�<-23/�� �/3-� +J30,0� :-*+'3'*?� (� 6(� <-23(2(� :*0.-/(*� 60/� +-2/(>-/� ,-6� /'/3-+(�+'-23*(/�-/:-*(�(�;1-�E(=(�/'3'0�-2�-6�C1AA-*�,-�/(6',(�,-6�:1-*30�/-*'-�,1*(23-�-6�-2<@0�,-6� :*0)*(+(� (6� :*0.-/(,0*�� �6� :*0.-/(+'-230� ,-� 60/� +-2/(>-/� /-� *-(6'I(*?� ,-� 6(�/')1'-23-�+(2-*(���&&� ��'��(������#�()���������#�����#�(�'�(� ��(�(��'('�*#�+����� ��,-���(.��"��.�/011����� -�/234-2�4�����

&!���(# ��(�'�(�����('�(��('���#(������5(����(�� ��+���!&�� �6��786��������( ��9: ���-���(.������ � �����#��$��

Page 65: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

�2<'(�2/3*1..'02�� �J30,0� ;1-� -2<@(� 12(� '2/3*1..'42� (6� :1-*30� /-*'-�� �-.'C-� .0+0�:(*?+-3*0�-6�C=3-�'2/3D�;1-�-/�6(� '2/3*1..'42�;1-�/-�<(�(�-2<'(*���(/�(..'02-/�;1-�/-�,-C-*?2�*-(6'I(*�-2�-/3-�+J30,0�/02���

�� (C*'*�-6�:1-*30�/-*'-��� -2<'(*�-6�C=3-��� -/:-*(*�(�;1-�-6�C1AA-*�,-�/(6',(�/-�<(.@-��� .-**(*�-6�:1-*30�

��-'/(6)*/&�+03$/0/-')12&�32(���)+-�()0/���(*(� :0,-*� 0C3-2-*� -6� (/:-.30� ,-�+-2M� ,-�N'2,0B/� O�� 6(� .6(/-� �('2%*(+-� ,-C-�'+:6-+-23(*�-6�'23-*A(.-��-21O������(*(�:0,-*�,(*� *-/:1-/3(�(� 6(/�(..'02-/�,-6�1/1(*'0� .1(2,0�:16/(�(6)M2�.0+(2,0� 6(�.6(/-� �('2%*(+-�,-C-*?�'+:6-+-23(*�-6�'23-*2(�.-��-//()-Z�(:����(*(� ;1-� 6(� .6(/-� �('2%*(+-� :1-,(� :*0.-/(*� 60/� -<-230/� )-2-*(,0/� .02� -6� 0C>-30� 0++ 3*6�,-C-�'+:6-+-23(*�-6�'23-*A(.-��<-23'2KZ�(:���

�������� 6(/-�%*+���(�.6(/-�%*+�6(�,-A'20�:0*�)-2-*(6'I(.'42�,-�(3*'C130/�=�+J30,0/�.0+12-/�,-�6(/�.6(/-/�%*+�-+0*'(�=�%*+�-)'/3*0/�;1-�/-�<-*?2�+?/�(,-6(23-��%*+�/-*?�12(�.6(/-�<'*31(6�=(�;1-�20�-5'/3'*?�2'2)M2�0C>-30�,-�-/(�.6(/-���1�,'()*(+(�����-/���

�(0�TT-53-2,/� '(60)cc�

�+-+,.� ��C+:� �'3+(:��*��� ���:06,C+:�U �'3+(:��:�6,�-2�U �,'�C>-.3��:�6,�*1/E�U �,'�C>-.3��,.�U �('23 ��<'-B�0,-�'23-)-*��+-+0*=�U�-+0*'(�L%*+F2��-+:6(3-������D:�(*-23� N2,UG���0,0/�60/�(3*'C130/�+-20/�<'-B�0,-�=�+-+0*=�/-*?2�13'6'I(,0/�:(*(�*-(6'I(*�6(/�0:-*(.'02-/�)*?A'.(/�2-.-/(*'(/�:(*(�:*-/-23(*�60/�,(30/�(6�1/1(*'0�����23-/� ,-� -5:6'.(*� -/30/� (3*'C130/� ,-/-0� -5:02-*� -6� A12.'02(+'-230� ;1-� ;1'-*0� ;1-�3-2)(2� 6(/�.6(/-/�;1-�E-*-,(2�,-�%*+�� � 1(2,0�-6�-+16(,0*�-2.1-23*-�12�:1230�,-�

Page 66: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�##�

'23-**1:.'42� 0� -6� 1/1(*'0� :16/-� :(1/-� /-� <06.(*?� -6� .023-2',0� ,-� 60/� *-)'/3*0/� =� 6(�+-+0*'(�,-6��+16(,0*�(6�� ���2�-/-�+0+-230�-6�1/1(*'0�:0,*?�(..-,-*�(�6(�<-23(2(�,-�<'/1(6'I(.'42�,-� *-)'/3*0/�0�,-�+-+0*'(���/3(/�,0/� <-23(2(/�E-*-,(*?2�,-� %*+�=�/0C*-� -66(/� ,'C1>(*J� 12(� '+()-2� .02� (/:-.30� ,-� 3(C6(� =� ,-23*0� ,-� -66(� -/.*'C'*J� -6�.023-2',0� ,-� 60/� *-)'/3*0/� 0� ,-� 6(� +-+0*'(�� �(*(� *-(6'I(*� 6(/� 0:-*(.'02-/� )*?A'.(/�2-.-/'3(*J�12(�/-*'-�,-�0C>-30/�;1-�/02�60/�(3*'C130/�,-�6(�.6(/-�%*+����-)M2� 6(� ,0.1+-23(.'42� ,-� �'.*0/0A3� 60/� :(/0/� ;1-� 2-.-/'3(*J� :(*(� *-(6'I(*� 6(/�0:-*(.'02-/�)*?A'.(/�,-/-(,(/�/02���

�� *-(*�12�0C>-30�,-� 6(� .6(/-� :('23 �(�:(*3'*� ,-� 6(� .6(/-�%*+D�;1-�,-*'<(�,-� ,'(60)���6�(3*'C130�,.�/-*?�12�:123-*0�(�-/3-�0C>-30��

��� *-(*�12�0C>-30� �(�:(*3'*�,-6�0C>-30�,.���/3-�0C>-30�/-*?�-6�(3*'C130�+-+,.��

��� �02-*� -2� +-+,.� -6� C'3+(:� /0C*-� -6� ;1-� ;1'-*0� -/.*'C'*� 60/� *-)'/3*0/� 0� -6�

.023-2',0�,-�6(�+-+0*'(���/3(�0:-*(.'42�/-�*-(6'I(�.02�-6�+J30,0�-6-.3�C>-.3�,-� 6(� .6(/-�+-+,.���6� C'3+(:�;1-�:02,*J�-2�+-+,.� .0**-/:02,-�(6� (3*'C130�C+:���

��� 1(2,0�/-�:02-�-2�120�,-�60/�0C>-30/�)*?A'.0/�,-��'.*0/0A3�03*0�0C>-30D�.0+0�

:1-,-�/-*�12�C'3+(:D�12�6?:'ID�12(�C*0.E(D����E(=�;1-�)1(*,(*�-6�(23-*'0*�:(*(�*-/3(1*(*60�,-/:1J/�,-�*-(6'I(*�6(/�0:-*(.'02-/�)*?A'.(/���(*(�)1(*,(*�-6�C'3+(:�;1-�E(=�-2�+-+,.�(23-/�,-�:02-*�-6�+@0�13'6'I(*J�-6�(3*'C130�:06,C+:��

��� �02-*� 12� 6?:'I� 2-)*0� -2� +-+,.� =� )1(*,(*� -6� (23-*'0*�� �0� )1(*,(*J� -2� -6�

(3*'C130�:�6,�-2���

�� �02-*�12(�C*0.E(�C6(2.(�-2�+-+,.�:(*(�;1-�.1(2,0�-/.*'C(�-6� A02,0�,-� 6(/�6-3*(/� ;1-,-� -2� C6(2.0�� �(� C*0.E(� ;1-� -5'/3(� (23-*'0*+-23-� -2� +-+,.� 6(�)1(*,(*J�-2�-6�(3*'C130�:�6,�*1/E��

��� �/.*'C'*� 60/� .023-2',0/� ,-� 60/� *-)'/3*0/� 0� ,-� 6(�+-+0*'(�� �(*(� /(C-*� -2� 30,0�

+0+-230�6(/�.00*,-2(,(/�,-6�*-.3?2)160�-2�-6�;1-�-/.*'C'*J�-6�3-530�13'6'I(*J�-6�(3*'C130�*D�,-6�3':0��� ��F*-.3?2)160G��

��� �6�1/1(*'0�:0,*?�-/.0)-*�-6�/'/3-+(�,-�21+-*(.'42�.02�-6�;1-�,-/-(�;1-�/-�6-�

:*-/-23-�6(�'2A0*+(.'42D�E-5(,-.'+(6D�,-.'+(6�0�C'2(*'0���(�-6-..'42�,-6�1/1(*'0�;1-,(*?�)1(*,(,(�-2�-6�(3*'C130�<'-B�0,-��

��� �2(� <-I� A'2(6'I(,(/� 6(/� 0:-*(.'02-/� )*?A'.(/� *-/3'31'*J� 30,0/� 60/� 0C>-30/�

0*')'2(6-/����6� (3*'C130� +-+0*=� -/� 12� :123-*0� (� 12� 0C>-30� ,-� 6(� .6(/-� �-+0*'(�� �(/� /1C.6(/-/�%*+�-+0*'(� =� %*+�-)'/3*0/� 13'6'I(*?2� -/3-� (3*'C130� :(*(� 3-2-*� -6� <-.30*� .02� 60/�*-)'/3*0/�0�6(/�:0/'.'02-/�,-�+-+0*'(�;1-�,-/-(2�:*-/-23(*�-2�:(23(66(����

Page 67: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#��

�6�M2'.0�+J30,0�;1-�:*-/-23(�-/3(�.6(/-�-/�-6�.02/3*1.30*�;1-�*-.'C-�.0+0�:(*?+-3*0/�-6� ',-23'A'.(,0*�,-6� *-.1*/0�.0**-/:02,'-23-�(6� .1(,*0�,-�,'?60)0�=� 6(�<-23(2(�+(,*-�,-6� .1(,*0� ,-� ,'?60)0D� 0� /-(D� 6(� <-23(2(� :*'2.':(6� ,-� 6(� (:6'.(.'42�� �0� M2'.0� ;1-� /-�,-C-*?� *-(6'I(*� -2� -6� .02/3*1.30*� -/� '2'.'(6'I(*� <'-B�0,-� (� �� :(*(� /-6-..'02(*� :0*�,-A-.30�6(�:*-/-23(.'42�-2�E-5(,-.'+(6���

�������� 6(/-�%*+�-+0*'(���(�.6(/-�%*+�-+0*'(�E-*-,(�,-�6(�.6(/-�%*+�=�/-*?�6(�<-23(2(�-2�6(�;1-�/-�:*-/-23(*?�-6�.023-2',0�,-�6(�+-+0*'(�,-6�-+16(,0*���2�-/3(�<-23(2(�-6�1/1(*'0�:0,*?�/-6-..'02(*�-6� .4,')0� 21+J*'.0� -2� -6� ;1-� ,-/-(� <-*� -6� .023-2',0� ,-6� -+16(,0*� =� -6� C(2.0� ,-�+-+0*'(�,-6�-+16(,0*�;1-�,-/-(�<-*D�C(2.0���D�C(2.0���0����������6�A12.'02(+'-230�,-�6(�.6(/-�-2�60�;1-�/-�*-A'-*-�(�6(�:*-/-23(.'42�,-�6(�'2A0*+(.'42�-2�:(23(66(�=(�/-�E(�,-/.*'30�-2�6(�.6(/-�%*+���6�C(2.0�,-�+-+0*'(�;1-�/-�,-/-(�<-*�=�-6�.4,')0�21+J*'.0�,-� <'/1(6'I(.'42� F<'-B�0,-� ,-� 6(� .6(/-� %��G� /-� -/.0)-*?2� .02� C0302-/� 3':0��(,'0�13302�� �6� '23-*.(+C'0� ,-� '2A0*+(.'42� -23*-� -/30/� C0302-/� ,-� *(,'0� =� /1/�<(*'(C6-/� (/0.'(,(/� /-� *-(6'I(*?� /-)M2� 6(/� 3J.2'.(/� ,-A'2',(/� :0*� �'.*0/0A3� :(*(� /1/�.1(,*0/�,-�,'?60)0���

�(0�/02(+)�TT-53-2,/�%*+cc�

�+-+0*=�':-�'23�L%*+�-+0*'(F:(*-23� N2,G�L�2�2 6'.K-,FG�W0(3(�5.E(2)-F:O�U ,(3(�5.E(2)-G�W�2�('23FG��:*'23�-)'/3-*F<(61-��8��G���'(+:%'2&���-+0*=�':-���2,'.(�-6�C(2.0�,-�+-+0*'(�;1-�E(�-/.0)',0�-6�1/1(*'0D�����C(2.0�,-�+-+0*'(��D�����C(2.0�,-�+-+0*'(��D��������������='212&��%*+�-+0*'(�� �/3-� .02/3*1.30*� ;1-� (H(,0� (� 6(� .6(/-� %*+�-+0*'(� /460� *-.'C-� .0+0�:(*?+-3*0� /1� <-23(2(� :(,*-�� -23*0� ,-6� .02/3*1.30*� ,-C-*J� '2'.'(6'I(*� -6� (3*'C130�+-+0*=�':-D� 66(+(*� (6� .02/3*1.30*� ,-� 6(� /1:-*.6(/-� '2,'.?2,06-� -6� *-.1*/0� ;1-� ,-C-�13'6'I(*� :(*(� .*-(*� -6� .1(,*0� ,-� ,'?60)0� =� 6(� <-23(2(� :(,*-� =� .(*)(*� -6� C'3+(:� ;1-�,-/-0�13'6'I(*�:(*(�:*-/-23(*�60/�<(60*-/�,-�6(/�.-6,(/�,-�+-+0*'(����2�2 6'.K-,�� �/3-�+J30,0� 60� ,-A'20� :(*(� ;1-� /-� ->-.13-� .1(2,0� -6� 1/1(*'0� :16/-� -6�C0342�,-�/(6'*�;1-�:02,*J�-2�6(�<-23(2(���2�-/3-�+J30,0�/-�.-**(*?�6(�<-23(2(���

Page 68: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#9�

0(3(�5.E(2)-�� �/3-� +J30,0� /-� ,-A'2-� :0*� -/:-.'(6'I(.'42� ,-6� +J30,0�0(3(�5.E(2)-� ,-� 6(� /1:-*.6(/-�� �2� -6� /-� 0C3-2,*?� -6� <(60*� ,-� +-+0*=�':-� =� ,-�<'-�0,-�F,-A'2',0�-2�%*+G�.1(2,0�-6�1/1(*'0�:16/-�60/��(,'0�13302����2�('23��-�,-A'2-�:0*�-/:-.'(6'I(.'42�,-6�+J30,0��2�('23�,-� ,'(60)D�.6(/-�,-�6(�;1-�E-*-,(�(�3*(<J/�,-�%*+����6�/'/3-+(�66(+(�(�-/3-�+J30,0�.1(2,0�2-.-/'3(�*-,'C1>(*�6(�<-23(2(���2�-6�/-�*-(6'I(*?2�6(/�0:-*(.'02-/�)*?A'.(/�;1-�/-�E(2�-5:6'.(,0�-2�6(�.6(/-�%*+D�=�/-�13'6'I(*?2� 60/�(3*'C130/�;1-�E-*-,(�,-�%*+���(*(�-/.*'C'*�-6�.023-2',0�,-� 6(�+-+0*'(� /-� *-.0**-*?� -6� (3*'C130� +-+0*=D� ;1-� E-*-,(� ,-� %*+D� -� '*?� 66(+(2,0�/1.-/'<(+-23-�(6�+J30,0��*'23�-)'/3-*����*'23�-)'/3-*���/3-�+J30,0�-/.*'C'*?�-2�:(23(66(�-6�<(60*�,-6� *-)'/3*0�0�,-� 6(�.-6,(�,-�+-+0*'(�;1-�/-�6-�:(/(�-2�-6�:(*?+-3*0�<(61-D�,-�3':0�C=3-���6�<(60*�/-�-/.*'C'*?�-2�6(/�.00*,-2(,(/�,-�:(23(66(�;1-�'2,'.(�-6�(3*'C130�*D�,-6�3':0��-.3(2)6-D�;1-�/-�E-*-,(�,-�6(� .6(/-� %*+�� �2(� <-I� -/.*'30� -6� <(60*� ,-C-*?� (.31(6'I(*� *� :(*(� ;1-� (:123-� (� 6(/�.00*,-2(,(/�,-6� C'3+(:�;1-� .0**-/:02,-2�(� 6(�/')1'-23-� .-6,(�,-�+-+0*'(�;1-� /-�,-C-�-/.*'C'*���

�������� 6(/-�%*+�-)'/3*0/���(� .6(/-� %*+�-)'/3*0/� .0**-/:02,-� (� 6(� <-23(2(� ;1-� :*-/-23(*?� -6� .023-2',0� ,-� 60/�*-)'/3*0/�,-6��+16(,0*�(6�1/1(*'0���2�-/3(�<-23(2(�/-�,'C1>(*?�12�C'3+(:�/0C*-�-6�;1-�/-�-/.*'C'*?2� 60/�*-)'/3*0/D�E(C*?�120/�C0302-/��(,'0�13302�;1-�:-*+'3'*?2�(6�1/1(*'0�-/.0)-*�-6�/'/3-+(�2M+-*'.0�-2�-6�;1-�,-/-(�<-*�60/�*-)'/3*0/��=�12�C0342��.-:3(*�:(*(�.-**(*�6(�<-23(2(��%*+�-)'/3*0/�E-*-,(*?�,-�%*+�F=�,-� ,'(60)�(�3*(<J/�,-�%*+G���

�(0�/7+&'(2&�TT-53-2,/�%*+cc�

�L%*+�-)'/3*0/F:�(*-23� N2,G�L�2�2 6'.K-,FG�W0(3(�5.E(2)-F:O�U ,(3(�5.E(2)-G�W�2�('23FG��/-6-.3�(2KF2�'23G��:*'23�-)'/3-*F<(61-��8��G���/3(�.6(/-�20�(H(,-�2'2)M2�21-<0�(3*'C130�(�60/�;1-�E-*-,(�,-�%*+����0/�+J30,0/�,-�60/�;1-�,'/:02,*?�/02���%*+�-)'/3*0/�� �/� -6� .02/3*1.30*� ,-� 6(� .6(/-�� 1/� A12.'02-/� /-*?2� 6(/� ,-� 66(+(*� (6�.02/3*1.30*� ,-� 6(� /1:-*.6(/-D� '2,'.?2,06-� ;1-� *-.1*/0� ,-C-� .(*)(*� :(*(� .*-(*� 6(�<-23(2(� ,-� ,'?60)0� =� .1(6� /-*?� /1� <-23(2(� :(,*-�� �(+C'J2� ,-C-*?� .(*)(*� -6� C'3+(:�/0C*-�-6�;1-�,'C1>(*J�-6�.023-2',0�,-�60/�*-)'/3*0/����2�2 6'.K-,�� -� ->-.13(*?� .1(2,0� -6� 1/1(*'0� :16/-� -6� C0342� ,-� �.-:3(*�� �2� -/3-�+J30,0�/-�.-**(*?�6(�<-23(2(��

Page 69: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�#!�

�0(3(�5.E(2)-�� �/3-� +J30,0� /-� ,-A'2-� :0*� -/:-.'(6'I(.'42� ,-6� +J30,0�0(3(�5.E(2)-�,-�6(�/1:-*.6(/-���2�-6�/-�0C3-2,*?�-6�<(60*�,-�<'-�0,-�F,-A'2',0�-2�%*+G� .1(2,0� -6� 1/1(*'0� :16/-� 60/� �(,'0�13302�� �(6� .0+0� /-� E(� '2,'.(,0� -2� 6(� .6(/-�%*+�-+0*'(D� -6� '23-*.(+C'0� ,-� '2A0*+(.'42� -23*-� 60/� �(,'0�13302� =� -6� (3*'C130�<'-B�0,-�/-�*-(6'I(*?�/')1'-2,0�6(/�-/:-.'A'.(.'02-/�,-��'.*0/0A3����2�('23��1�A12.'02(+'-230�-/�',J23'.0�(6�,-6�+J30,0��2�('23�,-�6(�.6(/-�%*+�-+0*'(D�.02�6(/�,'A-*-2.'(/�;1-�'+:6'.(�;1-�6(�'2A0*+(.'42�(�-/.*'C'*�-/�(6)0�,'A-*-23-�����*'23�-)'/3-*���/3-�+J30,0�-/.*'C'*?�-2�:(23(66(�-6�<(60*�,-6� *-)'/3*0�0�,-� 6(�.-6,(�,-�+-+0*'(�;1-�/-�6-�:(/(�-2�-6�:(*?+-3*0�<(61-D�,-�3':0�C=3-���6�<(60*�/-�-/.*'C'*?�-2�6(/�.00*,-2(,(/�,-�:(23(66(�;1-�'2,'.(�-6�(3*'C130�*D�,-6�3':0��-.3(2)6-D�;1-�/-�E-*-,(�,-�6(� .6(/-� %*+�� �2(� <-I� -/.*'30� -6� <(60*� ,-C-*?� (.31(6'I(*� *� :(*(� ;1-� (:123-� (� 6(/�.00*,-2(,(/� ,-6� C'3+(:� ;1-� .0**-/:02,-2� (� 6(� /')1'-23-� .-6,(� ,-� +-+0*'(� ;1-� /-�,-C-�-/.*'C'*���

������#��*;1'3-.31*(�,0.1+-230�<'/3(���6� :*0)*(+(� �+16:'.� 60� *-(6'I(*J� � 13'6'I(2,0� 6(� (*;1'3-.31*(� ,0.1+-230� <'/3(� ,-��'.*0/0A3���/3(�(*;1'3-.31*(�.02/'/3-�-2�12�.02>1230�,-�.6(/-/�;1-�:-*+'3-2�(/0.'(*�6(�.6(/-�:*'2.':(6�,-�6(�(:6'.(.'42D�-6�,0.1+-230�;1-�;1-*-+0/�<'/1(6'I(*D� 6(�<'/3(�,02,-�6(�<'/1(6'I(*-+0/�=�6(�<-23(2(�-2�6(�;1-�/-�:02,*?�-/(�<'/3(���/3(�(/0.'(.'42�/-�*-(6'I(�(�3*(<J/�,-�6(/�.6(/-/� ,0.�(2()-*�=� /'2)6-0.�-+:6(3-�,-�6(��% �,-��'.*0/0A3���(�.6(/-�:*'2.':(6�,-�6(�(:6'.(.'42D�-2�-6�.(/0�,-��+16:'.�-/� -+16:'.�::D�3'-2-�12�0C>-30�,-� 6(�.6(/-� ,0.(2()-*���/3-�0C>-30� 3'-2-�12�0C>-30�,-� 6(�.6(/-� /'2)6-0.�-+:6(3-D�;1-�)1(*,(�-6�0C>-30�.0**-/:02,'-23-�(6�,0.1+-230D�6(�<'/3(�*-6(.'02(,(�=�60/�(/0.'(���2�-6�,'()*(+(�,-�.6(/-/�,-� 6(�(:6'.(.'42�:0,-+0/�<-*� 6(� '23-*(..'42�,-�-/3(/�.6(/-/�-23*-� /@�� �(*(� *-(6'I(*� �+16:'.� ,-C-*J� ,-A'2'*� 6(� .6(/-� <'/3(D� -+16:'.�'-B� =� 6(� .6(/-�,0.1+-230D� -+16:'.0.�� -+16:'.�'-BD� -+16:'.0.� =� /'2)6-0.�-+:6(3-� 13'6'I(2�6(� <-23(2(� :*'2.':(6� ,-� 6(� (:6'.(.'42� +('2%*(+-�� /'2)6-0.�-+:6(3-� 6(� .*-(D� =� -+16:'.�'-B� =� -+16:'.0.� :*-/-23(2� -2� -66(� -6� ,0.1+-230D� -2� -/3-� .(/0� -6�:*0)*(+(�;1-�/-�-2<'(*?�(6�-+16(,0*�����/0%$3+* 2*���/3(� .6(/-� .0**-/:02,-� (6� ,0.1+-230� ;1-� 6(� (:6'.(.'42� 13'6'I(*?� -2� 6(� (*;1'3-.31*(�,0.1+-230� <'/3(�� �6� ,0.1+-230� /-*?� -6� :*0)*(+(� ;1-� /-� -2<'(*?� (6� -+16(,0*�� �/3(�.6(/-� 6(� 0C3-2,*J� (� :(*3'*� ,-� E-*-2.'(� +M63':6-� ,-� 6(� .6(/-� �*0)*(+(� =� ,-� 6(� .6(/-� ,0.1+-23� ,-� �'.*0/0A3�� �6� E-*-,(*� ,-� �*0)*(+(� .02<'-*30� (� 6(� .6(/-� -2� 12�.023-2-,0*�,-6�3':0�<-.30*D�F�*0)*(+(�E-*-,(�,-� 6(�.6(/-��-.30*G��;1-�.023'-2-�.(,(�12(�,-� 6(/� 6@2-(/�,-6� :*0)*(+(� F-2.(:/16(,(/�:0*� -6� 0C>-30� �'2-(G���6� E-*-,(*�,-� 6(�.6(/-� ,0.1+-23�,030�(�6(�.6(/-�,-�6(�A12.'02(6',(,�2-.-/(*'(�:(*(�/1�A12.'02(+'-230�,-23*0�,-�6(�(*;1'3-.31*(�,0.1+-230�<'/3(�,-�6(�(:6'.(.'42����

Page 70: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�/0%$3+* 2*�TT-53-2,/� ,0.1+-23D�*0)*(+(cc�

�L -+16:'.0.F�G�L-*'(6'I-F(*� (*.E'<-G�L(<-�0,'A'-,FG�C006-(20���(�.6(/-� -+16:'.0.�20�'2.0*:0*(�2'2)M2�(3*'C130��1-<0����0/�+J30,0/�;1-�/-�,-A'2-2�-2�-/3(�.6(/-�/02��� -+16:'.0.���/�-6�.02/3*1.30*�,-�6(�.6(/-���0�*-;1'-*-�2'2)12(�'2'.'(6'I(.'42�-/:-.'(6���-*'(6'I-�� -� ,-.6(*(� :0*� -/:-.'(6'I(.'42� ,-6� +J30,0� -*'(6'I-� ,-� 6(� /1:-*.6(/-� ,0.1+-23�� �/3-� +J30,0� /-� 66(+(*?� ,-/,-� -6� A*(+-B0*K� .1(2,0� -6� 1/1(*'0� (C*(� 0�.'-**-�12�,0.1+-230���(/�0:-*(.'02-/�,-�(*.E'<0�,-6�,0.1+-230�/-�*-(6'I(*?2�(�3*(<J/�,-6� :(*?+-3*0� (*D� 12� 0C>-30� ,-� 6(� .6(/-� (*.E'<-� ;1-� +(2':16(� -6� (*.E'<0�.0**-/:02,'-23-�(6�,0.1+-230����6� /')1'-23-� :/-1,0.4,')0� '61/3*(� 6(/� 0:-*(.'02-/� ;1-� /-� ,-C-*?2� *-(6'I(*� ,-23*0� ,-�-*'(6'I-���'�-6�(*.E'<0�(*�-/3?�(C'-*30�:(*(�-/.*'31*(�� �6(+(*�(6�+J30,0�/(<-�,-�6(�/1:-*.6(/-��*0)*(+(�'20�F-/3?�(C'-*30�:(*(�6-.31*(G�� '�-6�(*.E'<0�(C'-*30�3'-2-�-53-2/'42�6/3�F-/�12�(*.E'<0�,-��+16:'.G�� � �6(+(*�(6�+J30,0��0(,�/3�,-�6(�/1:-*.6(/-��*0)*(+(�� '20��

'23-23(�(C*'*60�.0+0�12�(*.E'<0�,-�A0*+(30�-+16:'.�66(+(2,0�(6��+J30,0��0(,�,-�6(�/1:-*.6(/-��*0)*(+(�

� A/'�A/'���(<-�0,'A'-,���/3-�+J30,0�60�,-.6(*0�:0*�-/:-.'(6'I(.'42�,-6�+J30,0�(<-�0,'A'-,�,-� ,0.1+-23�� �/3-� +J30,0� /-� 66(+(� (130+?3'.(+-23-� ,-/,-� -6� A*(+-B0*K� .1(2,0�,-3-.3(�;1-�-6�,0.1+-230�3'-2-�-6�(3*'C130�,-�+0,'A'.(,0�(�3*1-�� 0+0��+16:'.�(C*-�(*.E'<0/�,-6� 3':0� 6/3� F;1-�/-�.*-(2�.02��:6(CG�=�-+1�F(*.E'<0�,-�-+16:'.G�:-*0�/460�)1(*,(� (*.E'<0/� -2� A0*+(30� -+1D� ,-C0� -/:-.'(6'I(*� -6� +J30,0� (<-�0,'A'-,� ,-� 6(�/1:-*.6(/-� ,0.1+-23�� �/3-� +J30,0� .0+:*0C(*?� /'� 6(� -53-2/'42� ,-6� ,0.1+-230� -/�-+1D�=�-2�.(/0�(A'*+(3'<0�60�)1(*,(*?������0%$3+*�+/R���/3(�.6(/-�-/�6(�<'/3(�,-6�,0.1+-230D�6(�;1-�)-/3'02(*?�6(�:*-/-23(.'42�-2�:(23(66(�,-�60/�:*0)*(+(/�;1-�/-�-2<'(*?2�(6�-+16(,0*�� �+16:'.�'-B�/-�-2.(*)(*?�,-�-/.*'C'*�-2�6(� :(23(66(� -6� :*0)*(+(D� :02'-2,0� -2� <-*,-� 60/� .0+-23(*'0/� =� -2� *0>0� 6(/� 6@2-(/� ,-6�

Page 71: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

:*0)*(+(�/0C*-�6(/�;1-�/-�/'3M(�12�:1230�,-�'23-**1:.'42���(+C'J2�.023*06(*?�-6�/.*066�,-�6(�<-23(2(D�:(*(�60�;1-�E-*-,(*?�,-�6(�.6(/-��% � .*066�'-B����

��0%$3+*�+/R�TT-53-2,@� .*066�'-Bcc�

�21+�'2-/�'23�� 1**�'2-�'23�� 1**�'2-�/ 0,-�C006-(20�L �+16:'.�'-BFG�L�2*(BF:,.�U G�L�2�2'3'(6�:,(3-FG�L�2 023-53�-21F:N2,� N2,D:0'23� �0'23G�W�2�63-*2(*:'FG�W�2�0**(*:'FG�W�2��133020B2F2%6()/�����D:0'23� �0'23G�W�2��133020B2F2%6()/�����D:0'23� �0'23G�W�2��13302C6 6KF2%6()/�����D:0'23� �0'23G�W�2$-=0B2F2 E(*�����D2�-: 23�����D2%6()/�����G�� (6.16(�'2-(F:0'23� �0'23G���-30.1+-23FG�U �+16:'.0.����6�(3*'C130�21+�'2-/�)1(*,(�-6�2M+-*0�,-�6@2-(/�;1-�3'-2-�-6�,0.1+-230����6� (3*'C130� 1**�'2-� )1(*,(� -6� 2M+-*0� ,-� 6@2-(� /0C*-� 6(� ;1-� E(� /'31(,0� -6� *(342� -6�1/1(*'0��� 1**�'2-�/ 0,-�'2,'.(�/'�6(�6@2-(�(.31(6�.0**-/:02,-�(�12(�6@2-(�.02�.4,')0�->-.13(C6-����6�+J30,0���+16:'.�'-B�-/�-6�.02/3*1.30*�,-�6(�.6(/-����6�+J30,0��2*(B�+0,'A'.(�-6�+J30,0��2*(B�,-� 6(�/1:-*.6(/-�=(�;1-�-/�2-.-/(*'0�-/:-.'(6'I(*60�:(*(�-/3(�.6(/-���6�:/-1,0.4,')0�;1-�'61/3*(�6(/�(..'02-/�;1-�/-�,-C-*?2�*-(6'I(*�-2�-/3-�+J30,0�-/����2*(B�a:*-�-5'/3-�12�,0.1+-230�;1-�/-�<(�(�:*-/-23(*�-2�6(�:(23(66(b��

+(5�'2-N',3E�'23��PP(2.E0�,-�6(�6@2-(�+?/�)*(2,-�6'2-N',3E��'23��PP�2.E0�,-�6(�6@2-(�(630%1-23-��'23�PP(631*(�,-�6(�A1-23-�(2.E00.1+-230�� '23� PP)1(*,(� -6� (2.E0� ,-6� ,0.1+-230� -2� 12',(,-/� ,-� 6(�:(23(66(�(6300.1+-230�'23�PP)1(*,(�6(�(631*(�,-6�,0.1+-230�-2�12',(,-/�,-�6(�:(23(66(�

�� (630%1-23-�S��C3-2-*�-6�3(+(H0�,-�6(�A1-23-�,-�6(�<-23(2(�� �

Page 72: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�2'.'(6'I(*�-6� *-.3?2)160�;1-�)1(*,(� 6(/�,'+-2/'02-/�-2� 6(/�;1-�/-�-/.*'C'*?� 6(�6@2-(�

� �(*(�.(,(�6@2-(�,-6�:*0)*(+(�� � '�6(�6@2-(�-/�6(�;1-�3'-2-�/-6-..'02(,(�-6�1/1(*'0�� � � 'C1>(*�-6�*-.3?2)160�,-�6(�6@2-(�.02�A02,0�(I16�� � '20�� � � '�6(�6@2-(�3'-2-�12(�'23-**1:.'42�� � � � 'C1>(*�-6�*-.3?2)160�,-�6(�6@2-(�.02�A02,0�*0>0�� � � '20�� � � � 'C1>(*�-6�*-.3?2)160�,-�6(�6@2-(�.02�-6�.060*�,-�A02,0�,-��� � � � 6(�<-23(2(�� � � %/'�� � %/'�� � �/.*'C'*�-6�.4,')0�,-�6(�6@2-(�-2�2-)*0�� � �/.*'C'*�-6�.4,')0�,-�6(�6@2-(�-2�<-*,-�� � 6'2-N',3E�S�.(6.16(*�-6�(2.E0�,-�6(�6@2-(�-/.*'3(�� � /'�6'2-N',3E�c�+(5�'2-N',3E��� � � +(5�'2-N',3E�S�6'2-N',3E�

A/'�� � �.31(6'I(*�-6�*-.3?2)160�.02�6(/�.00*,-2(,(/�,-�6(�/')1'-23-�6@2-(��� A:(*(��� (2.E00.1+-230�S��(5�'2-N',3E�� (6300.1+-230�S��1+-*0�,-�6@2-(/�U�(630%1-23-�a�0/3�/-�E(�-/.*'30�-6�:*0)*(+(�-2�6(�:(23(66(���2�(2.E00.1+-230�=�(6300.1+-230�/-� E(2� )1(*,(,0� 6(/� ,'+-2/'02-/� ,-6� ,0.1+-230� -2� 12',(,-/� ,-� :(23(66(� :(*(�13'6'I(*6(/�-2�60/�+J30,0/�,-�/.*066b���6�+J30,0��2�2'3'(6�:,(3-� /1C/3'31=-� -6�+J30,0� ,-6�+'/+0�20+C*-� ,-� 6(� /1:-*.6(/-�:(*(�-/:-.'(6'I(*60���2�-/3-�+J30,0�/-�'2'.'(6'I(*?�-6�3(+(H0�,-�6(/�C(**(/�,-�/.*066�=�/-�:02,*?2�(�.-*0�60/�(3*'C130/�,-�6(�.6(/-����6�+J30,0��2 023-53�-21�/-�+0/3*(*?�.1(2,0�-6�1/1(*'0�:16/-�-6�C0342�,-*-.E0�,-6�*(342� /0C*-� 6(� <-23(2(�� �2� -/3J�+J30,0� /-� ->-.13(*?2� 6(/� (..'02-/� 2-.-/(*'(/� :(*(�+0/3*(*�12�+-2M�.023-531(6����6� +J30,0� �2�63-*2(*�'� /-� ->-.13(� .1(2,0� -6� 1/1(*'0� :16/(� -6� .0+(2,0� :(*(� :02-*�:1230/�,-� '23-**1:.'42���2�-/3-�+J30,0�/-�,-C-*?� .0+:*0C(*� /'� 6(� 6@2-(�(.31(6� 3'-2-�.4,')0�->-.13(C6-�F 1**�'2-�/ 0,-GD�=�-2�.(/0�(A'*+(3'<0�/-�:02,*?�0�;1'3(*?�-6�:1230�,-� '23-**1:.'42� =� /-� (.3'<(*?� -6� A6()� ,-�+0,'A'.(,0� ,-6� ,0.1+-230�� '� 6(� 6@2-(� 3-2@(�:1230�,-�'23-**1:.'42�60�;1'3(*?�=�/'�20�3-2@(�:1230�,-�'23-**1:.'42�60�:02,*?����2�0**(*:'���/3-�+J30,0�C0**(*?�30,0/�60/�:1230/�,-�'23-**1:.'42�,-6�:*0)*(+(����0/�+J30,0/��2��133020B2�=��2��133020B2�/-�->-.13(2�.1(2,0�-6�1/1(*'0�:16/(�-6�C0342�'I;1'-*,0�0�,-*-.E0�,-6�*(342�/0C*-�6(�<-23(2(���2�-/30/�+J30,0/�/-�.(6.16(*?�-6� 2M+-*0� ,-� 6@2-(� /0C*-� 6(� ;1-� /-� E(� :16/(,0D� /-� C1/.(*?� -2� -6� ,0.1+-230� -/-�2M+-*0�,-�6@2-(�=�/-�.0+:*0C(*?�/'�/-�:1-,-�:02-*�12(�'23-**1:.'42�-2�-66(�F/'�6(�6@2-(�

Page 73: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

3'-2-� .4,')0� ->-.13(C6-� /-� :0,*?� :02-*� 12(� '23-**1:.'42G�� �2� .(/0� ,-� ;1-� /-� :1-,(�:02-*�12(� '23-**1:.'42� /-�(.3'<(*?2� 60/� .0+(2,0/�,-� 6(�C(**(�,-�E-**(+'-23(/� =� 60/�+-2M/�;1-�:-*+'3-2�:02-*�12�:1230�,-�'23-**1:.'42����6� +J30,0� �2��13302C6.6K� /-� ->-.13(� .1(2,0� -6� 1/1(*'0� E(.-� ,0C6-� .6'.� /0C*-� 6(�<-23(2(�� �2� -/3-� +J30,0� /-� .(6.16(� -6� 2M+-*0� ,-� 6@2-(� .0**-/:02,'-23-� (� 6(/�.00*,-2(,(/�/0C*-�6(/�;1-�/-�E(�/'31(,0�-6�*(342D�/-�.0+:*1-C(�/'�6(�6@2-(�:1-,-�3-2-*�12�:1230�,-�'23-**1:.'42�=�-2�.(/0�(A'*+(3'<0�/-�:02-�12�:1230�,-�'23-**1:.'42D�0�/-�;1'3(�/'�=(�-5'/3@(�120����6�+J30,0��2$-=0B2� /-� 13'6'I(*?� :(*(� :-*+'3'*� ;1-� -6� 1/1(*'0� :1-,(� ,-/:6(I(*� 6(/�C(**(/�,-�,-/:6(I(+'-230�.02� 6(/� 3-.6(/�,-6�.1*/0*D�(<(2.-�,-�:?)'2(�=� *-3*0.-/0�,-�:?)'2(���/3-�+J30,0�60�'2<0.(�-6�/'/3-+(�0:-*(3'<0�.1(2,0�-6�1/1(*'0�:16/(�12(�3-.6(���2� A12.'42� ,-� 6(� 3-.6(� :16/(,(D� ,(30� ;1-� /-� *-.'C-� .0+0� :(*?+-3*0D� /-� 66(+(*?� (6�+J30,0�,-�/.*066�.0**-/:02,'-23-����6�+J30,0� (6.16(�'2-(� /-*?� 13'6'I(,0� :0*� 03*0/�+J30,0/� :(*(� .(6.16(*� -6� 2M+-*0� ,-�6@2-(�,-6� :*0)*(+(�;1-� .0**-/:02,-�(� 6(/� .00*,-2(,(/� /0C*-� 6(/� ;1-� /-�E(�:16/(,0�.02�-6�*(342���(*(�0C3-2-*�-6�2M+-*0�,-�6@2-(�/-�(:6'.(*?2�6(/�/')1'-23-/�A4*+16(/�����S��M+-*0�,-�6@2-(��/�S��0/'.'42�,-�6(�C(**(�,-�/.*066�<-*3'.(6�:�=�S�.00*,-2(,(�=�/0C*-�6(�;1-�/-�E(�:16/(,0�-6�*(342��A�E�S�(630�,-�6(�A1-23-����S�F�/L:�=GPA�E�� 0+0�6(�6@2-(�3'-2-�<(*'0/�:'5-6/�,-�(630D�/'�3-2-+0/�,-.'+(6-/�/-�,-C-�'2.*-+-23(*�-6�2M+-*0�,-�6@2-(����-/30�S�F�/L:�=G�_�A�E��'��-/30�c����� �S�L�A/'���6�+J30,0��-30.1+-23�,-<1-6<-�12�:123-*0�(6�,0.1+-230�(/0.'(,0�(�6(�<'/3(�

Page 74: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

���� ����������������.023'21(.'42�/-�:*-/-23(2�12(/�.(:31*(/�,-�:(23(66(�:(*(�'61/3*(*�-6�(/:-.30�.02�-6�;1-�E(�;1-,(,0��+16:'.����

��

�$%&'()*+,-��!���0%$3+*�*2-�%-�3(27()0)�*)(7)12��

Page 75: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

�2� 6(� '61/3*(.'42� ��� /-� :1-,-� 0C/-*<(*� 6(� <-23(2(� :*'2.':(6� ,-� 6(� (:6'.(.'42� .02� 12�:-;1-H0� :*0)*(+(� ,-� ->-+:60�� -� :1-,-� 0C/-*<(*� 6(/� 6@2-(/� .02� 60/� :1230/� ,-�'23-**1:.'42D�-2�*0>0D�=�60/�.0+-23(*'0/�,-6�:*0)*(+(D�-2�<-*,-����

��

�$%&'()*+,-������/-')-)�*2-�/$�*2-'/-+12�1/�$2&�(/7+&'(2&�1/$�/0%$)12(����(�'61/3*(.'42����+1-/3*(�-6�(/:-.30�;1-�3'-2-�6(�<-23(2(�;1-�:*-/-23(�-6�.023-2',0�,-�60/� *-)'/3*0/� ,-6� -+16(,0*�� -� :1-,-� 0C/-*<(*� .0+0� -6� 1/1(*'0� :1-,-� *-.020.-*�A?.'6+-23-�60/�*-)'/3*0/�:0*�/1�20+C*-�=�,'*-..'42D�=�<-*�/1�.023-2',0D�=(�/-(�-2�C'3/�0�-6�<(60*�,-6�C=3-���(+C'J2�:1-,-�/-6-..'02(*�-6�.4,')0�21+J*'.0�;1-�/-�13'6'I(*?�:(*(�<'/1(6'I(*�-6�<(60*�,-6�*-)'/3*0���

Page 76: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��#�

��

�$%&'()*+,-������/-')-)�*2-�/$�*2-'/-+12�1/�$)�0/02(+)�1/$��0%$)12(����(� '61/3*(.'42� ���+1-/3*(� .0+0� /-� <-� -6� .023-2',0� ,-� 6(�+-+0*'(� ,-6� -+16(,0*�� -�:1-,-� 0C/-*<(*� ;1-� -6� 1/1(*'0� :1-,-� -/.0)-*� -6� C(2.0� ,-� +-+0*'(� ,-/-(,0� =� -6�.4,')0�,-�<'/1(6'I(.'42�����

��

�$%&'()*+,-������&')12&�1/�$)�)3$+*)*+,-����2� 6(� '61/3*(.'42� ��� /-� :1-,-� 0C/-*<(*� .0+0� 6(� C(**(� ,-� -/3(,0/� (.3'<(� /460� 60/�.0+(2,0/�2-.-/(*'0/�/-)M2�-6�-/3(,0�,-�6(�(:6'.(.'42�F<-*�,'()*(+(�,-�-/3(,0/�,-�6(�(:6'.(.'42�-2�-6�:1230�����#G����3*(/�.(*(.3-*@/3'.(/�,-�6(�(:6'.(.'42�/02���

�� �'/3(�,-�(*.E'<0/�+?/�*-.'-23-/�F'61/3*(.'42���G��

Page 77: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

����

��

�$%&'()*+,-������+&')�1/�)(*Q+N2&�0V&�(/*+/-'/&��

�� �0/�(*.E'<0/�,-��+16:'.�;1-,(2�*-)'/3*(,0/D�(:(*-.'-2,0�-2�-6�-5:60*(,0*�.02�/1�'.020��'�/-�E(.-�,0C6-�.6'.�/0C*-�-6�(*.E'<0�/-�->-.13(��+16:'.�=�/-�(C*-�-6�(*.E'<0�/-6-..'02(,0�

��

��

�$%&'()*+,-��#��(*Q+N2&�1/�/0%$3+*���

�� �(/�C(**(/�,-�E-**(+'-23(/�/-�:1-,-2�+0/3*(*�=�0.163(*�=�/-�:1-,-2�(:(*.(*�(�.1(6;1'-*(�,-�60/�.1(3*0�6(,0/�,-�6(�<-23(2(�=�/-*�A603(23-/��

��

��

�$%&'()*+,-������)(()&�1/�Q/(()0+/-')&�1+-V0+*)&���

Page 78: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��9�

����6�A12.'02(+'-230�,-�6(/�.0+12'.(.'02-/�/-*'-�/(6'-23-/�/-�E(2�.0+:*0C(,0�+-,'(23-�-6�:*0)*(+(�0A3B(*-�-*'(6��02'30*��'3-D�;1-�+02'30*'I(�-6�3*?A'.0�;1-�.'*.16(�(�3*(<J/�,-�60/�:1-*30/�/-*'-����

��

�$%&'()*+,-��>���203(2:)*+,-�1/�$)&�*20%-+*)*+2-/&�&/(+/�&)$+/-'/&����(*(� .0+:*0C(*� -6� A12.'02(+'-230� ,-� 6(/� .0+12'.(.'02-/� /-*'-� -23*(23-/� /-� E(�*-(6'I(,0�12�:-;1-H0�:*0)*(+(�-2��'/1(6��(/'.�#���;1-�-2<@(�12� .02>1230�,-�,(30/�(6-(30*'0/�,-6�+'/+0�3(+(H0�;1-�60/�;1-�-2<'(*@(�-6�-+16(,0*����

Page 79: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

��!�

��

�$%&'()*+,-������(27()0)�3)()�3(2:)(�$)&�*20%-+*)*+2-/&�1/��0%$3+*���6�:*0)*(+(�<(�*-.'C'-2,0�6(/�0*,-2-/�,-��+16:'.�=�.1(2,0�*-.'C-�6(��2/3*1..'42�����/-�,-C-�:16/(*��2<'(*�,(30/�:(*(�/'+16(*�;1-�-6�-+16(,0*�E(�-2<'(,0�-6�.023-2',0�,-�/1/�*-)'/3*0/�=�+-+0*'(��

Page 80: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

�� ���������������������(� -+16(.'42� ,-6� +'.*0.023*06(,0*� �� � /-� *-(6'I(*?� -2� -6� -+16(,0*�� �(� .*-(.'42� ,-6�-+16(,0*� .02/'/3'*?� -2� ,'/-H(*� 12� /'/3-+(� -6-.3*42'.0� ;1-� :-*+'3(� /'+16(*� -6�+'.*0.023*06(,0*��� �=�;1-�:-*+'3(�.0+12'.(*�-6�-+16(,0*�.02�-6�� ���(�:*0)*(+(.'42�,-6�-+16(,0*�/-�*-(6'I(*?�.02�� ��=�/-�)*(C(*?�-2�6(�%����;1-�'2.0*:0*(�6(�3(*>-3(�,-�,-/(**0660�.0+:*(,(�(�����=�;1-�E(�/',0�,-/.*'3(�-2�6(�'23*0,1..'42�,-6�:*0=-.30����6�,'/-H0�,-6�-+16(,0*�(�:*0)*(+(*�.02/'/3'*?�-2�3*-/�)*(2,-/�C60;1-/���

�� -6�C60;1-�,-�)-/3'42�,-�.0+12'.(.'02-/��-�-2.(*)(*?�,-�*-.'C'*�,(30/�,-6�� �(�3*(<J/� ,-6� :1-*30� /-*'-� =� ,-� -2<'(*� ,(30/� (6� � �� �0/� ,(30/� *-.'C',0/� /-*?2� -6�:*0)*(+(�;1-�,-C-�->-.13(*�-6�-+16(,0*�=�6(/�0*,-2-/�F:6(=D�:(1/-D�/3-:G�;1-�-2<@(� -6� � �� �0/� ,(30/� (� -2<'(*� /-*?2� -6� .023-2',0� ,-� 60/� *-)'/3*0/� =� ,-� 6(�+-+0*'(��

��� �6� C60;1-� ,-� .023*06� ,-6� -+16(,0*� *-.'C'*?� 60/� .0+(2,0/� =� ,(30/� ,-6� � � =�

(.31(*?� /0C*-� -6� C60;1-� ,-� -+16(.'42� :(*(� ;1-� -/3-� ->-.13-� 60/� .0+(2,0/�-2<'(,0/��

��� �6� C60;1-� ,-� -+16(.'42� /-*?2� 60/� .'*.1'30/� /-.1-2.'(6-/� =� .0+C'2(.'02(6-/�

2-.-/(*'0/� :(*(� -+16(*� -6�+'.*0.023*06(,0*D� *-)'/3*0/D����D�+-+0*'(D� :1-*30/��PDg�

� 1(2,0� -6� � � -2<'J� -6� :*0)*(+(� -/3-� /-*?� *-.'C',0� :0*� -6� C60;1-� ,-� )-/3'42� ,-�.0+12'.(.'02-/�;1-� 60�-2<'(*?�(6�C60;1-�,-�.023*06�,-6�-+16(,0*���/3-�(..-,-*?�(� 6(�+-+0*'(�,-�:*0)*(+(�,-6�C60;1-�,-�-+16(.'42�=�60�'*?�)*(C(2,0�� 1(2,0�-6�:*0)*(+(�/-� E(=(� -2<'(,0� =� /-� *-.'C(� 6(� 0*,-2� ,-� ->-.1.'42� -2� -6� C60;1-� ,-� )-/3'42� ,-�.0+12'.(.'02-/� -6� C60;1-� ,-� .023*06� 6-� '2,'.(*?� (6� C60;1-� ,-� -+16(.'42� ;1-� ,-C-�'2'.'(*�6(�->-.1.'42���6�:*0)*(+(�/-�->-.13(*?�-2�-6�C60;1-�,-�-+16(.'42�E(/3(�;1-�/-�-2.1-23*-�12(�'2/3*1..'42�.02�:1230�,-�'23-**1:.'42�0�/-�*-.'C(�6(�0*,-2�,-�:(1/(*�6(�->-.1.'42�� �2� -/30/� +0+-230/� -6� C60;1-� ,-� .023*06� (..-,-*?� (� 60/� *-)'/3*0/� =� (� 6(�+-+0*'(�,-6�C60;1-�,-�-+16(.'42�-�'*?�-2<'(2,0�30,0/�60/�C=3-/�(6�C60;1-�,-�)-/3'42�,-�.0+12'.(.'02-/�:(*(�;1-�60/�3*(2/+'3(�(6�� ����

���� ������� ����������������������������� ���$�������

��(/�.0+12'.(.'02-/�-23*-�-6�� �=�-6�-+16(,0*�/-�*-(6'I(*?2�(�3*(<J/�,-6�:1-*30�/-*'-���(� .02-5'42� ,-6� :1-*30� ����� � -/3(*?� .02A')1*(,(� .0+0� +4,-+� 2160�� �(*(� -/3(�.02-5'42�/-�13'6'I(*?2�6(/�6@2-(/��5D��5D����=� ����

Page 81: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

��

�$%&'()*+,-��"���2-/8+,-���W�����/-�*2-6+7%()*+,-�1/�0,1/0�-%$2����(/�.0+12'.(.'02-/�-/3(*?2�.02A')1*(,(/�,-�6(�/')1'-23-�+(2-*(���

�� �-60.',(,��!#���C(1,'0/��� 023*06�,-�A61>0����� ���� 9�C'3/�,-�,(30/�L���C'3�,-�/3(*3�L���C'3�,-�/30:�

��2�6(�/')1'-23-�'61/3*(.'42�:0,-+0/�<-*�.0+0�-<061.'02(2�6(/�,'A-*-23-/�6@2-(/�,1*(23-�-6�:*0.-/0�,-�.0+12'.(.'42���

��B��F�

� � �� �����5�

� ��������������������5�

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

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

��B���� ��F���5���5������ ��

Page 82: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

��

�$%&'()*+,-��!���(2-27()0)�1/�$)&�&/@)$/&�.%/�+-'/(N+/-/-�/-�$)�*20%-+*)*+,-�&/(+/����6� -;1':0� ;1-� ;1'-*-� -+'3'*� 60/� ,(30/� (.3'<(� 6(� /-H(6� ��� F(.3'<(� :0*� �G�� 1(2,0� -6�-;1':0�;1-�,-C-�*-.'C'*�60/�,(30/�,-3-.3(�6(�:-3'.'42�,-6�-+'/0*�6-�'2A0*+(�,-�;1-�-/3?�:*-:(*(,0�:(*(�*-.'C'*60/�(.3'<(2,0�6(�6@2-(� ��� 1(2,0�-6�-+'/0*�*-.'C-�6(�(.3'<(.'42�,-� 6(� 6@2-(� �� :*0.-,-� (� -2<'(*� 60/� ,(30/�� 0+0� E-� -/.0)',0� ;1-� 60/� ,(30/� /-�-2<'(*?2�-2�:(;1-3-/�,-�9�C'3/�L���C'3�,-�/3(*3�L���C'3�,-�/30:�-6�:*'+-*�C'3�;1-�/-�-2<'(*?� -/� -6� C'3� ,-� /3(*3� F(.3'<0� :0*� �G�� -/:1J/� /-)1'*?2� 60/� 9� C'3/� ,-� ,(30/� =�A'2(6+-23-� -6� C'3� ,-� /30:� F(.3'<0� :0*� �G�� 1(2,0� -6� -+'/0*� 3-*+'2-� ,-� -2<'(*� 6(�'2A0*+(.'42�,-/(.3'<(*?�6(�/-H(6����=�-6�*-.-:30*�,-/(.3'<(*?�6(�/-H(6� ����

.>9�

>9�

>E��

�����

��������

������

�����

�������

Page 83: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

��$%&'()*+,-������$2.%/�1/�7/&'+,-�1/�*20%-+*)*+2-/&�

Page 84: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

��6�C60;1-�,-�)-/3'42�,-�.0+12'.(.'02-/�-/3?�.0+:1-/30�,-���

�� ���� �/� 12(� +?;1'2(� ,-� -/3(,0/� A'2'3(� ;1-� *-.'C-� 6(/� /-H(6-/� ,-6� � � =� ,-6�-+16(,0*�� �/� -6� .-*-C*0�,-6� )-/30*� ,-� .0+12'.(.'02-/�� 023*06(� -6� -/3(,0� -2�;1-� /-� -2.1-23*(2� 6(/� .0+12'.(.'02-/D� -2<@(� 6(/� /-H(6-/� ,-� .023*06� ;1-� /-�-2<@(2�,-6�� �(6�-+16(,0*�=�,-6�-+16(,0*�(6�� ���-2-*(�/-H(6-/�(15'6'(*-/�;1-�A(.'6'3(2� 6(� 3(*-(�,-�:(/(*� 60/�C'3/�;1-�/-�*-.'C-2�-2�/-*'-�(�C=3-/�=� 60/�C=3-/�;1-�/-�E(2�,-�-2<'(*�(�C'3/��

��� �-2-*(,0*�,-�:16/0/������/3?�:*0)*(+(,0�:(*(�)-2-*(*�:16/0/� /'2.*02'I(,0/�

.02�6(�<-60.',(,�,-6�:1-*30�/-*'-D�!#���C(1,'0/���(*(�.(,(�C'3�;1-�/-�*-.'C(�0�;1-� /-� ,-C(� -2<'(*� /-� )-2-*(*?� 12� :16/0� ,-6� (2.E0� (,-.1(,0�� -� (.3'<(� (6�*-.'C'*�-2�/1�-23*(,(�,-�/3(*3�6(�/-H(6���Z� �F(.3'<(�:0*�.-*0G�;1-�)-2-*(����(6� ,-3-.3(*� 12� A6(2.0� ,-/.-2,-23-� -2� �5� .0**-/:02,'-23-� (6� C'3� ,-� /3(*3�� 1(2,0�/-�E(2�)-2-*(,0�60/�:16/0/�:(*(�6--*�60/�9�C'3/�,-�,(30/D�-6�C'3�,-�/3(*3�=�-6�C'3�,-�/30:�/-�(.3'<(�6(�/-H(6��� �F(.3'<(�:0*��G�;1-�(<'/(*?�(�6(�+?;1'2(�,-�-/3(,0/�;1-�:1-,-�:(/(*�(�-/:-*(*�03*0�C=3-��

��� �-)'/3*0� ,-� ,-/:6(I(+'-230� .02� -23*(,(� /-*'-� =� /(6',(� :(*(6-60� ���� �/3-�

*-)'/3*0� *-.'C'*?� 60/� C'3/� *-.'C',0/� :0*� -6� � � =� A(.'6'3(*?� (6� -+16(,0*� -6� C=3-�.0**-/:02,'-23-��

��� �-)'/3*0�,-�,-/:6(I(+'-230�.02�-23*(,(�:(*(6-60�=�/(6',(�/-*'-������6�-+16(,0*�

:02,*?�-2�-/3-�*-)'/3*0�.(,(�C=3-�;1-�,-/-(�-2<'(*�=�+-,'(23-�6(�/(6',(�/-*'-�,-�/-�-2<'(*?2�60/�C'3/�(�3*(<J/�,-�6(������ ��

��� �-+:0*'I(,0*��#��1�A12.'42�/-*?�-/3(C6-.-*�12�3'-+:0�,-�-/:-*(�:(*(�*-.'C'*�

6(�/-H(6� ��,-6�� �,-/:1J/�,-�;1-�-6�-+16(,0*�-2<@-�6(�/-H(6�����'�,-/:1J/�,-6� 3'-+:0� -/3(C6-.',0� -6� � � 20� *-/:02,-� ;1-� -/3?� ,'/:1-/30� (� *-.'C'*� 6(/�.0+12'.(.'02-/� ,-6� -+16(,0*� -/3-� 3-+:0*'I(,0*� )-2-*(*?� 12(� /-H(6� ;1-�(<'/(*?�(6�-+16(,0*�,-�;1-�20�/-�:1-,-�.0+12'.(*�=�;1-�E(*?�;1-����:(/-�(�/1�-/3(,0�'2'.'(6��

��� '2.*02'I(.'42�,-�/-H(6-/�,-�-23*(,(���D��>D����=��"���(/�/-H(6-/�,-�-23*(,(�

(6� -+16(,0*�,-C-2�-/3(*� /'2.*02'I(,(/� .02�-6� *-60>� '23-*20�,-6� -+16(,0*�:(*(�-<'3(*� +-3(-/3(C'6',(,-/�� �/3(� /'2.*02'I(.'42� ,-� 6(/� /-H(6-/� ,-� -23*(,(� -/�'+:*-/.'2,'C6-� :(*(� -6� .0**-.30� A12.'02(+'-230� ,-� 12� /'/3-+(� /-.1-2.'(6�/@2.*020��

��

Page 85: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

0

7 1 2

3 F 5

G@ H:&*A

G@ H:;

G.>9:;

G.>9:&*A

I.>9:; I.>9:; I.>9:;

I.>9:&*A I.>9:&*A I.>9:&*A

G H:&*A

G<9:;

G<:. D

G H:;

G<:.�B

G<:9&@>

��$%&'()*+,-����� +)7()0)�1/�/&')12&�1/$�:$2.%/�1/�*20%-+*)*+2-/&��

��(/�/-H(6-/�;1-�'23-*<'-2-2�-2�-6�.(+C'0�,-�-/3(,0�,-����/02���G��Z� ���/3(�/-H(6�.0**-/:02,-�(�6(�(.3'<(.'42�,-�6(�6@2-(����:0*�:(*3-�,-6�� ���2,'.(� (6� )-/30*� ,-� .0+12'.(.'02-/� ;1-� -6� � � ,-/-(� -2<'(*� ,(30/�� �/� (.3'<(� :0*�A6(2.0�,-/.-2,-23-���I��Z� ���/3(�/-H(6�.0**-/:02,-�(�6(�,-/(.3'<(.'42�,-�6(� 6@2-(����:0*�-6�� ���/�(.3'<(�:0*�A6(2.0�(/.-2,-23-�=�'2,'.(�;1-�-6�� �=(�E(�3-*+'2(,0�,-�-2<'(*�,(30/���G��Z����� 1(2,0�-6� -+16(,0*�,-/-(� '2'.'(*�12(�.0+12'.(.'42� /06'.'3(�(6�)-/30*�,-�.0+12'.(.'02-/�;1-�(.3'<-�6(�6@2-(������/�(.3'<(�:0*�A6(2.0�,-/.-2,-23-���I��Z����� 1(2,0�-6�-+16(,0*�,-/-(�A'2(6'I(*�12(�.0+12'.(.'42�/06'.'3(�(6�)-/30*�,-�.0+12'.(.'02-/�;1-�,-/(.3'<-�6(�6@2-(������G� $Z����� 1(2,0�-6�-+16(,0*�*-.'C-� 6(�/-H(6����,-6�� � 6-� '2,'.(�(6�)-/30*�,-�.0+12'.(.'02-/� ;1-� (.3'<-� 6(� 6@2-(� �� /'� :1-,-� (3-2,-*� 6(� /06'.'31,� ,-6� � �� �/�(.3'<(�:0*�A6(2.0�,-/.-2,-23-���G�� $Z����� �6� -+16(,0*� 6-� '2,'.(� (6� )-/30*� ,-� .0+12'.(.'02-/� ;1-� 20� :1-,-�(3-2,-*�6(�/06'.'31,�,-6�� ���.3'<(�:0*�A6(2.0�,-/.-2,-23-���G� $Z� �� 1(2,0�-6�� �*-.'C-�12(�/06'.'31,�,-�.0+12'.(.'02-/�,-6�-+16(,0*�F��G�(.3'<(�6(�6@2-(� ��/'�:1-,-�*-.'C'*�6(�3*(2/+'/'42���.3'<(�:0*�A6(2.0�,-/.-2,-23-���G�� $Z� �� '� ,-/:1J/� ,-� -2<'(*� 12(� :-3'.'42� ,-� .0+12'.(.'02-/� ,-/,-� -6�-+16(,0*�(6�� �20�/-�*-.'C-�*-/:1-/3(�,-6�� �F(.3'<(.'42�,-�6(�6@2-(� �G�/-�(.3'<(�

Page 86: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9#�

-/3(�/-H(6�:(*(�;1-�-6�)-/30*�,-�.0+12'.(.'02-/�<1-6<(�(6�-/3(,0�'2'.'(6���.3'<(�:0*�A6(2.0�,-/.-2,-23-��G�Z� �� 0**-/:02,-� (� 6(� *-.-:.'42� ,-6� C'3� ,-� /3(*3� ;1-� /-� -2<@(� ,-/,-� -6� � ���.3'<(�:0*�A6(2.0�,-/.-2,-23-���G�Z� ��� 1(2,0�/-�*-.'C-2�60/�9�C'3/�,-�,(30/�=�-6�C'3�,-�/30:�/-�(.3'<(�-/3(�/-H(6�;1-�'2,'.(�;1-�-6�)-/30*�,-�.0+12'.(.'02-/�:1-,-�:(/(*�(�-/:-*(*�03*0�C=3-���.3'<(�:0*�A6(2.0�,-/.-2,-23-���G�Z�8�� 1(2,0� -6� -+16(,0*� 3'-2-� ,'/:02'C6-� 12� C=3-� :(*(� ;1-� -6� )-/30*� ,-�.0+12'.(.'02-/�60�-2<@-�(6�� �/-�60�'2,'.(�(6�)-/30*�(.3'<(2,0�-/3(�6@2-(���.3'<(�:0*�A6(2.0�,-/.-2,-23-���G�Z����� �6� )-/30*� ,-� .0+12'.(.'02-/� (.3'<(� -/3(� /-H(6� .1(2,0� E(� -2<'(,0� 12�C=3-� (6� � � F9� C'3/� ,-� ,(30/�L� �� C'3� ,-� /3(*3� L� �� C'3� ,-� /30:G�� �.3'<(� :0*� A6(2.0�,-/.-2,-23-����

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

�"��������%�����

� �����

G��Z� � ���.3'<(�6(�/-H(6����Z� �F(.3'<(�:0*��G�;1-�'2,'.(*?�(6�C60;1-�,-�)-/3'42�,-6�-+16(,0*�;1-�-6�� �,-/-(�-2<'(*�,(30/���

G��Z���� ���.3'<(�6(�/-H(6�����F(.3'<(�:0*��G�;1-�'2,'.(*?�(6�� �;1-�-6�-+16(,0*�,-/-(�-2<'(*�,(30/�

G� $Z���� ���.3'<(�6(�/-H(6��� $�F(.3'<(�:0*��G�:(*(�;1-�/-�(.3'<-�6(�6@2-(�� $�;1-�'2,'.(*?�(6�� �;1-�-6�-+16(,0*�-/3?�:*-:(*(,0�:(*(�*-.'C'*�,(30/�

I��Z� � ��-/(.3'<(�6(�/-H(6����Z� �:(*(�'2,'.(*�(6�C60;1-�,-�)-/3'42�,-6�-+16(,0*�;1-�-6�� �E(�A'2(6'I(,0�,-�-2<'(*�,(30/�

��

I�� $Z���� ��-/(.3'<(�6(�/-H(6��� $�:(*(�'2,'.(*�(6�� �;1-�-6�-+16(,0*�20�:1-,-�*-.'C'*�,(30/�

G�Z� � ���.3'<(�6(�/-H(6���Z� �F(.3'<(�:0*��G�,-�6(�+?;1'2(�,-�-/3(,0/����:(*(�'2,'.(*�(6�)-2-*(,0*�,-�:16/0/�;1-�-+:'-I-�(�A12.'02(*���

I��Z� � ��-/(.3'<(�6(�/-H(6����Z� �:(*(�'2,'.(*�(6�C60;1-�,-�)-/3'42�;1-�-6�� �E(�A'2(6'I(,0�,-�-2<'(*�,(30/�

G�Z� �� �� �����

��I��Z� � ��

-/(.3'<(�6(�/-H(6����Z� �:(*(�'2,'.(*�(6�C60;1-�,-�)-/3'42�,-6�-+16(,0*�;1-�-6�� �E(�A'2(6'I(,0�,-�-2<'(*�,(30/�

G� $Z� � #��.3'<(�6(�/-H(6��� $Z� �F(.3'<(�:0*��G�:(*(�'2,'.(*�(6�)-/30*�,-6�-+16(,0*�;1-�-6�� �:1-,-�*-.'C'*�,(30/�

I��Z���� ��-/(.3'<(�6(�/-H(6�����:(*(�'2,'.(*�(6�� �;1-�-6�-+16(,0*�(�3-*+'2(,0�,-�-2<'(*�,(30/�

��

I�� $Z� � ��-/(.3'<(�6(�/-H(6��� $Z� �:(*(�'2,'.(*�(6�)-/30*�,-6�-+16(,0*�;1-�-6�� �20�:1-,-�*-.'C'*�,(30/�

#� G�Z�8� �� ����

Page 87: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9��

�I��Z���� ��

-/(.3'<(�6(�/-H(6�����:(*(�'2,'.(*�(6�� �;1-�-6�-+16(,0*�E(�3-*+'2(,0�,-�-2<'(*�,(30/�

G�Z���� #� ������

I��Z���� ��-/(.3'<(�6(�/-H(6�����:(*(�'2,'.(*�(6�� �;1-�-6�-+16(,0*�E(�3-*+'2(,0�,-�-2<'(*�,(30/�

��

Page 88: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�99�

���� ���"��� ���������� �������� �����6�C60;1-�,-�.023*06�,-6�/-�-2.(*)(*?�,-�:*0.-/(*�60/�C=3-/�;1-�-6�C60;1-�,-�)-/3'42�,-�.0+12'.(.'02-/�E(�*-.'C',0�=�*-(6'I(*?�6(/�3(*-(/�0:0*312(/����0/�C=3-/�*-.'C',0/�:0*�-6�-+16(,0*�/-�,'<',-2�-2�,0/�.(3-)0*@(/���

�� 0+(2,0/��02�4*,-2-/�;1-�/-�-2<@(2�,-/,-�-6�� ����� (30/�� 0**-/:02,-2�(�60/�,(30/�,-6�:*0)*(+(�;1-�,-C-*?�->-.13(*�-6�

-+16(,0*���

������ �"*�)���0/�,(30/�.0**-/:02,-*?2�(6�:*0)*(+(�;1-�,-C-*?�->-.13(*�-6�-+16(,0*����-2,*?2�-6�/')1'-23-�A0*+(30����*,-2� �*'+-*�C=3-�-2<'(,0� -)12,0�C=3-�-2<'(,0����,-�C'3� ��� ��� �!� �9� ��� �#� ��� ��� ��� ��� ��� ��� �!� �9� ��� �#�,-/.*':.'42� �,�

���'3�,-�.023*06�,-�

:1230/�,-�'23-**1:.'42�

�2/3*1..'42�

��*,-2� �-*.-*�C=3-�-2<'(,0� 1(*30��C=3-�-2<'(,0����,-�C'3� ��� ��� ��� ��� ��� ��� !� 9� �� #� �� �� �� �� �� ��,-/.*':.'42� '*-..'42�,-�+-+0*'(����6�C'3����F',G�:1-/30�(�.-*0�'2,'.(*?�(6�-+16(,0*�;1-�<(�(�*-.'C'*�12�,(30�,-6�:*0)*(+(���6�C'3���D�C'3�,-�.023*06�,-�:1230�,-�'23-**1:.'42D�/-�13'6'I(*?�:(*(�/(C-*�/'�(23-/�,-�->-.13(*/-�-/(�'2/3*1..'42�/-�,-C-�,-3-2-*�-6�-+16(,0*���0/�C'3/��#�(��!�/02�6(�'2/3*1..'42�,-6�:*0)*(+(���0/�C'3/���(����/02�6(�,'*-..'42�,-�+-+0*'(�,02,-�/-�,-C-�.(*)(*�6(�'2/3*1..'42��

������ �2"$%�)���0/�.0+(2,0/�;1-�/-�-2<'(*?2�(6�-+16(,0*�3-2,*?2�-6�/')1'-23-�A0*+(30������,-�C'3� �� #� �� �� �� �� �� ��

Page 89: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�9!�

,-/.*':.'42� �,����������

0+(2,0�

��6�C'3�',�:1-/30�(�120�'2,'.(*?�(6�-+16(,0*�;1-�<(�(�*-.'C'*�12�.0+(2,0���0/�C'3/���(�#�.0**-/:02,-*?2�(6�.4,')0�,-6�.0+(2,0���0/�C=3-/�;1-�/-�-2<'(*?2�(6�-+16(,0*�/02����-/.*':.'42� �':0� �C*-<'(.'42� �(60*� 0+:*0C(*�6(�:*-/-2.'(�,-6�-+16(,0*�

0+(2,0� ���� ���������

�2'.'0�,-�-2<@0�,-6�:*0)*(+(�

0+(2,0� ���F�-)'2��*0)*(+G� ���������

%'2�,-6�-2<@0�,-6�:*0)*(+(�

0+(2,0� ���F�2,��*0)*(+G� ���������

�>-.13(*�-6�:*0)*(+(�

0+(2,0� ���� ���������

%'2(6'I(*�6(�->-.1.'42�,-6�:*0)*(+(�

0+(2,0� ���� ���������

-3-2-*�6(�->-.1.'42�,-6�:*0)*(+(��

0+(2,0� ����$� ���������

�--*�-6�-/3(,0�,-6�-+16(,0*�F6--�60/�*-)'/3*0/D�6(�+-+0*'(D���G�

.0+(2,0� ���� ���������

�<(2I(*�12(�'2/3*1..'42�-2�6(�->-.1.'42�,-6�:*0)*(+(�

0+(2,0� ���� ���������

�*'+-*�C=3-�,-�,(30/�,-�:*0)*(+(�

,(30� ����� �OOOOOOO�

-)12,0�C=3-�,-�,(30/�,-�:*0)*(+(�

(30� ����� OOOOOOOO�

�-*.-*�C=3-�,-�,(30/�,-�:*0)*(+(�

(30� ����� OOOOOOOO�

1(*30�C=3-�,-�,(30/�,-�:*0)*(+(�

(30� ����� OOOOOOOO�

���0/�C=3-/�����D������=������:1-,-2�30+(*�.1(6;1'-*�<(60*� 60�;1-�E(*@(�;1-�/-�:1,'-*(2� .02A12,'*� .02� .1(6;1'-*� .0+(2,0� -2<'(,0� :0*� -6� � �� �(*(� -<'3(*� -/3-�:*0C6-+(� /-� '+:6-+-23(*?� 12(� +?;1'2(� ,-� -/3(,0/� ;1-� '23-*:*-3(*?� 60/� ,(30/�*-.'C',0/���6�-/3(C6-.-*�6(�+?;1'2(�,-�-/3(,0/�;1-�'2A0*+(.'42�:1-,-�*-.'C'*�-2�.(,(�+0+-230�/-�-<'3(�.1(6;1'-*�(+C')h-,(,�-2�60/�,(30/�*-.'C',0/��

Page 90: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

���� ���"��� ����������� ��������������� ��������!%��

��/3-�C60;1-�/-*?�-6� .02>1230�,-�-6-+-230/�,-� 64)'.(�/-.1-2.'(6� =� .0+C'2(.'02(6�;1-�-+16(*?2�-6�A12.'02(+'-230�,-6��� ��#%9����+:6-+-23(*J�12(�<-*/'42�*-,1.',(�,-�-/3-�+'.*0.023*06(,0*� =� ,'/:02,*?� ,-� 6(� ���D� 60/� *-)'/3*0/D� 6(� +-+0*'(� ,-� ,(30/� ���� =�������D�-6�.023(,0*�,-�:*0)*(+(D�6(�+-+0*'(�,-�:*0)*(+(D�-6�*-)'/3*0�,-�3*(C(>0�ND�-6�*-)'/3*0�,-�-/3(,0�����D�6(�:'6(�=�<(*'0/�+163':6-50*-/�;1-�:-*+'3'*?2�/-6-..'02(*�60/�,(30/��,-�-23*(,(�(�6(����D�(6�C1/�,-�,'*-..'02-/�,-�6(�+-+0*'(���(*(�/'+:6'A'.(*�-6�:*0=-.30�20� /-� '2.61'*?2� 60/�:1-*30/�,-��P�2'� 60/� *-.1*/0/�,-� 3-+:0*'I(.'42�,-�;1-�,'/:02-�-6�+'.*0.023*06(,0*����(� C(/-� ,-6� ,'/-H0� ,-6� -+16(,0*� /-*?� -6� ,'()*(+(� ,-� C60;1-/� :*0:0*.'02(,0� :0*��'.*0.E':�-2�/1�,(3(E--3����-/3-�,'()*(+(�,-�C60;1-/�6-�-6'+'2(*J�60/�.0+:02-23-/�;1-� � 20� /-� :*-<J2� '+:6-+-23(*�� �,-+?/� ,-� 60/� -6-+-230/� ;1-� /-� -6'+'2(*?2� /-*?2�2-.-/(*'(/�6(/�/')1'-23-/�+0,'A'.(.'02-/���

�� (H(,'*� 12� .02>1230� ,-� +163':6-50*-/� =� (+:6'(*� 60/� C1/-/� :(*(� :0,-*� 3-2-*�(..-/0�(6�.023-2',0�,-�6(�+-+0*'(�=�,-�60/�*-)'/3*0/�,-/,-�-6�C60;1-�,-�.023*06�,-6�-+16(,0*���

��� �(� +-+0*'(� ,-� :*0)*(+(� ,-C-*?� 3-2-*� 12� C'3� +?/� F��G� ;1-� 6(� +-+0*'(� ,-�

:*0)*(+(� ,-6� �� �#%9��� �/3-� C'3� :-*+'3'*?� /(C-*� /'� -5'/3-� 12� :1230� ,-�'23-**1:.'42�-2�12(�'2/3*1..'42���(�'23-**1:.'42�/-�,-C-�:*0,1.'*�(23-/�,-�;1-�/-�->-.13-�6(�'2/3*1..'42��

��� �(+C'J2�/-�,-C-*?�(H(,'*�6(�64)'.(�2-.-/(*'(�-2�-6�C60;1-�,-�,-.0,'A'.(.'42�,-�

'2/3*1..'02-/�,-6�-+16(,0*�:(*(�,-3-.3(*�60/�:1230/�,-�'23-**1:.'42�� 1(2,0�-6�C60;1-� ,-� ,-.0,'A'.(.'42� ,-� '2/3*1..'02-/� ,-3-.3-� 12� :1230� ,-� '23-**1:.'42�,-/E(C'6'3(*?� 6(/� -23*(,(/� ,-� *-60>� ,-� 30,0/� 60/� .0+:02-23-/� ,-6� -+16(,0*�E(/3(�;1-�/-�*-.'C(�6(�0*,-2�,-�.023'21(*�,-/,-�-6�� ��

��2� 6(� '61/3*(.'42� ��� /-� +1-/3*(� -6� ,'()*(+(� ,-� C60;1-/� ,-6� -+16(,0*� ,-6�+'.*0.023*06(,0*��� �=�.0+0�'23-*(.3M(�.02�-6�C60;1-�,-�.023*06�,-6�-+16(,0*���

Page 91: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

��$%&'()*+,-����� +)7()0)�1/�:$2.%/&�1/$�/0%$)12(�

Page 92: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

1(2,0�/-�*-.'C-�-6�:*0)*(+(�,-/,-�-6�� �-6�C60;1-�,-�)-/3'42�,-�.0+12'.(.'02-/�<(�*-.'C'-2,0�60/�C'3/�=�:(/(�6(�'2A0*+(.'42�(�C=3-/�;1-�:0/3-*'0*+-23-�-2<@(�(6�C60;1-�,-�.023*06�,-6�-+16(,0*���� 1(2,0� -6� C60;1-� ,-� .023*06� ,-6� -+16(,0*� *-.'C-� -6� .0+(2,0� ;1-� 6-� '2,'.(� ;1-� (�.023'21(.'42� <(� (� *-.'C'*� -6� :*0)*(+(� F.0+(2,0� �-)'2� �*0)*(+G� /-� :*-:(*(� :(*(�-+:-I(*� (� )1(*,(*� 6(� '2A0*+(.'42� -2� 6(� +-+0*'(� ,-� :*0)*(+(� ,-6� �+16(,0*D�'2'.'(6'I(2,0� -6� .023(,0*� ;1-� ,'*-..'02(*?� 6(� +-+0*'(� =� '2,'.(2,0� (6� C60;1-� ,-�,-.0,'A'.(.'42� ,-� '2/3*1..'02-/� ,-6� -+16(,0*� ;1-� <(� (� 30+(*� -6� .023*06� ,-6� C1/� ,-�:*0)*(+(���� 1(2,0� -+:'-I(� (� *-.'C'*� -6� :*0)*(+(� <(� ,'*-..'02(2,0� 6(�+-+0*'(� ,-6� :*0)*(+(� =�:02'-2,0�6(/�'2/3*1..'02-/�-2�-6�C1/�,-�:*0)*(+(�����6�*-.'C'*/-�6(�'2/3*1..'42�,-�;1-�/-�E(�A'2(6'I(,0�-6�-2<@0�,-6�:*0)*(+(�F�2,��*0)*(+G�-6�C60;1-�,-�.023*06�,-6�-+16(,0*�6-�'2,'.(�(6�-+16(,0*�;1-�E(�A'2(6'I(,0�-6�-2<@0�,-6�:*0)*(+(�:(*(�;1-� '2'.'(6'.-� -6� C60;1-�,-6� -+16(,0*� :(*(� 6(� '2+'2-23-� ->-.1.'42� ,-6�:*0)*(+(�F'2'.'(6'I(*�-6�.023(,0*�,-�:*0)*(+(D�30+(*�-6�.023*06�,-�60/�C1/-/�=�(.3'<(*�6(/�/-H(6-/�;1-�.023*06(2�60/�+163':6-50*-/G�����(� *-.-:.'42� ,-� 6(� '2/3*1..'42� ���� '2'.'(� 6(� ->-.1.'42� ,-6� :*0)*(+(�� �6� C60;1-� ,-�,-.0,'A'.(.'42� ,-� '2/3*1..'02-/� =� ,-� .023*06� ,-6�+'.*0:*0.-/(,0*� '*?� '2.*-+-23(,0� -6�<(60*�,-6�.023(,0*�,-�:*0)*(+(�� 02�-6�,(30�,-6�.023(,0*�,-�:*0)*(+(�/-�,'*-..'02(�6(�+-+0*'(� ,-� :*0)*(+(� =� 6(� '2/3*1..'42� ;1-� /-� 0C3'-2-� /-� .(*)(� -2� -6� *-)'/3*0� ,-�'2/3*1..'42� :(*(� ;1-� 6(� ,-.0,'A';1-� -6� C60;1-� ,-� ,-.0,'A'.(.'42� ,-� '2/3*1..'02-/� =�)-/3'02-�6(�->-.1.'42�,-6�:*0)*(+(������2�6(�+-+0*'(�,-�:*0)*(+(�/-�E(�:1-/30�12�C'3�+?/�-2�.(,(�:(6(C*(�:(*(�'2A0*+(*�(6�C60;1-�,-�,-.0,'A'.(.'42�,-�'2/3*1..'02-/�,-�6(/�6@2-(/�;1-�3'-2-2�'23-**1:.'42�� 1(2,0�-6� C60;1-� ,-� ,-.0,'A'.(.'42� ,-� '2/3*1..'02-/� ,-3-.3(� ;1-� -/3?� (.3'<0� -6� C'3� ,-�'23-**1:.'42� ,-/(.3'<(� 6(/� /-H(6-/� ,-� *-60>� ;1-� 66-)(2� (� 30,0/� 60/� .0+:02-23-/� ,-6�+'.*0.023*06(,0*�=�(<'/(�(6�C60;1-�,-�.023*06�,-6�-+16(,0*�,-�;1-�E(�-2.023*(,0�12(�'23-**1:.'42���2�-/-�+0+-230�-6�C60;1-�,-�.023*06�,-6�-+16(,0*�30+(�-6�.023*06�,-�60/�C1/-/�=�-+:'-I(�(�6--*�6(�'2A0*+(.'42�,-�60/�*-)'/3*0/�=�,-�6(�+-+0*'(�=�6(�<(�-2<'(2,0�(6�� ���0�+'/+0�0.1**-�.1(2,0�/-�*-.'C-�6(�0*,-2�,-�:(1/(�F����$G�,-/,-�-6�� ����2�-/0/�+0+-230/�-6�/'/3-+(�:-*+(2-.-�:(*(,0�E(/3(�;1-�20�/-�*-.'C-� 6(�0*,-2�,-�->-.1.'42� F���G� ,-/,-� -6� � �� -� -/3(� +(2-*(� -6� 1/1(*'0� :1-,-� .02/163(*�3*(2;1'6(+-23-�-6�.023-2',0�,-�6(�+-+0*'(�=�,-6�-+16(,0*����(/�.(*(.3-*@/3'.(/�,-6�E(*,B(*-�,-6�-+16(,0*�;1-�:-*+'3'*?2�*-(6'I(*�-/3-�:*0.-/0�/02���

�� �(�+-+0*'(�,-�:*0)*(+(�,'/:02,*?�,-�,0/�C1/-/�,-�,'*-..'02-/D�120�:(*(�-6�.023(,0*�,-�:*0)*(+(�=�03*0�:(*(�-6�C60;1-�,-�.023*06�,-6�-+16(,0*���6�C60;1-�,-�,-.0,'A'.(.'42�,-�'2/3*1..'02-/�,(*?�6(/�/-H(6-/�2-.-/(*'(/�:(*(�6(�(.3'<(.'42�,-6�C1/�(,-.1(,0��

Page 93: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

�� �*-<'0� (6� +163':6-50*� ,-� ,'*-..'02-/� ;1-� E(=� (23-/� ,-� 6(� +-+0*'(� ���� /-�/'31(*?�03*0�+163':6-50*�-2�-6�C1/�.0**-/:02,'-23-�(6�,'*-..'02(+'-230�,'*-.30���/3-� +163':6-50*� :-*+'3'*?� -/.0)-*� -23*-� -6� ,'*-..'02(+'-230� ;1-� *-(6'I(� -6�+'.*0.023*06(,0*� 0� -6� ;1-� *-(6'I(� -6� C60;1-� ,-� .023*06� ,-6� -+16(,0*� .1(2,0�,-/-(�-2<'(*�-6�.023-2',0�,-�6(�+-+0*'(�(6�� ���6�C60;1-�,-�,-.0,'A'.(.'42�,-�'2/3*1..'02-/�,-6�+'.*0:*0.-/(,0*�:*0:0*.'02(*?�6(/�/-H(6-/�,-�.023*06�,-�-/3-�+163':6-50*��

��� �2� -6� C1/� ,-� ,'*-..'02-/D� (23-/� ,-� 6(� +-+0*'(� ������D� /-� /'31(*?� 03*0�

+163':6-50*� ;1-� :-*+'3'*?� /-6-..'02(*� -6� ,'*-..'02(+'-230� :0*� :(*3-� ,-6�+'.*0.023*06(,0*� (� 3*(<J/� ,-6� *-)'/3*0� ����� FA12.'02(+'-230� 20*+(6� ,-6�+'.*0.023*06(,0*G� 0� -6� ,'*-..'02(+'-230� (� 3*(<J/� ,-6� C60;1-� ,-� .023*06� ,-6�-+16(,0*� .1(2,0�-/3J� 6-=-2,0� -6� .023-2',0�,-� 6(�+-+0*'(� =� ,-� 60/� *-)'/3*0/�:(*(�-2<'(*�6(�'2A0*+(.'42�(6�� ��

� 0+0� /-� :1-,-� 0C/-*<(*� E-� :*-<'/30� 13'6'I(*� ,0/� 3J.2'.(/� ,'A-*-23-/� :(*(� 6--*� 6(/�+-+0*'(/�,-6�+'.*0.023*06(,0*�12(�+-,'(23-�+163':6-50*-/�=�12�M2'.0�C1/�,-�,(30/�-2�6(�����=�6(�������D�=�03*(�+-,'(23-�,0/�C1/-/�,-�,(30/�-2�6(�+-+0*'(�,-6�:*0)*(+(�� -�-/.0)',0�:*0C(*�-/30/�,0/�+J30,0/�:(*(�(2(6'I(*�.1(6�/-*@(�-6�+?/�.02<-2'-23-���

Page 94: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

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

���� ��������� ����"��������������� ���������� ���������� ������!�������

��6� -/31,'0� *-(6'I(,0� E(� ,-+0/3*(,0� 6(� <'(C'6',(,� 3J.2'.(� ,-� 12� -+16(,0*� ,-�+'.*0.023*06(,0*-/� �� � C(/(,0� -2� %���D� -5:60*(2,0� 6(/� 3J.2'.(/� 2-.-/(*'(/� :(*(� /1�*-(6'I(.'42�=�0A*-.'-2,0�12�0*,-2�,-�+()2'31,�,-�/1�,'A'.163(,����0�0C/3(23-D�-2�12�:*0,1.30�:*0A-/'02(6�=�.0+:-3'3'<0�;1-�12(�-+:*-/(�;1'/'-*(�/(.(*�(6� +-*.(,0� /-� ,-C-*@(2� (+:6'(*� 6(/� -/:-.'A'.(.'02-/� =� .023-+:6(*� 60/� /')1'-23-/�:1230/���

�� �2�61)(*�,-�13'6'I(*�-6�K'3�,-�,-/(**0660�,-�%����,-�����;1-�/-�E(�13'6'I(,0�-2�-6�:*0=-.30D� 6(� -+:*-/(� ,-C-*@(� .02/3*1'*� /1� :*0:'(� :6(.(� .02� %���� :(*(� -6�-+16(,0*���2�(,-6(23-�+-�*-A-*'*J�(�-/3(�E':03J3'.(�:6(.(�.0+0��0%$�2)(1���

��� -C-� -+16(*� <(*'0/� +'.*0.023*06(,0*-/� ,-� �'.*0.E':� =P0� 03*0/�

+'.*0.023*06(,0*-/�,-6�+-*.(,0���

�� �6� .6'-23-� ,-C-*@(� 3-2-*� 6(� :0/'C'6',(,� ,-� (+:6'(*� /1� -+16(,0*� .02� 21-<0/�+'.*0.023*06(,0*-/�;1-�/-�<-2,(2�:0*�/-:(*(,0��

��� �0%$3+*�,-C-*@(�:-*+'3'*�6(�.02A')1*(.'42�,-�6(�64)'.(�:*0)*(+(C6-�,-�6(�%����

/-)M2�-6�3':0�,-�+'.*0.023*06(,0*�;1-�/-�,-/-(�13'6'I(*������ �2�-6�:*0=-.30�*-(6'I(,0D��0%$3+*�/460�(C*@(�:*0)*(+(/�,-����(C�;1-�31<'-*(2�

12� M2'.0� (*.E'<0� A1-23-� -/.*'30� -2� (//-+C6-*�� �(� <-*/'42� .0+-*.'(6� ,-C-*@(�0A*-.-*� 6(� :0/'C'6',(,� ,-� .(*)(*� :*0)*(+(/� .02�+?/� ,-� 12� (*.E'<0� ,-� .4,')0�A1-23-D�:*0)*(+(,0/�-2� D�.02�+(.*0/D����

��� �6�:*0=-.30�/460�/-�E(�*-(6'I(,0�:(*(�6--*�(*.E'<0/�,-�.4,')0�A1-23-�*-(6'I(,0/�

.02��:6(C�� (C*@(�;1-�-<(61(*� 6(�:0/'C'6',(,�,-�.0+:(3'C'6',(,�.02�:*0)*(+(/�*-(6'I(,0/� -2� 03*0/� -230*20/� ,-� ,-/(**0660� :(*(� +'.*0.023*06(,0*-/� �� � =P0�03*0/�+'.*0.023*06(,0*-/��

��� �(230��0%$3+*�.0+0�6(�:6(.(�3-2,*@(2�;1-�:-*+'3'*�+0,'A'.(*�-6�.023-2',0�,-�

60/�*-)'/3*0/�=�6(�+-+0*'(�,-6�-+16(,0*�-2�3'-+:0�,-�,-:1*(.'42���� �(/�.0+12'.(.'02-/�/-�3-2,*@(2�;1-�*-(6'I(*�(� 3*(<J/�,-6�:1-*30����-2� 61)(*�

,-6�:1-*30�/-*'-�=�.02�12�:*030.060�,-�3*(2/+'/'42�;1-�/-(�,-3-.30*�,-�-**0*-/����� /-� ,-C-*@(� -<(61(*� 6(� :0/'C'6',(,� ,-� ,-/(**066(*� -6� /0A3B(*-� �+16:'.� :(*(�

:6(3(A0*+(/��'215��

Page 95: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

� 0+0� /-� :1-,-� <-*� 6(/� -/:-.'A'.(.'02-/� ,-� 12� :*0,1.30� :*0A-/'02(6� /02�+1.E0�+?/�(+:6'(/�=�*-;1'-*-2�,-�12�-;1':0�,-�:*0A-/'02(6-/�:(*(�/1�*-(6'I(.'42�����.023'21(.'42�/-�*-(6'I(�12�C*-<-�-/31,'0�,-�60/�+-,'0/�2-.-/(*'0/D�;1-�:0,*@(�/-*<'*�.0+0�C(/-�:(*(�6(� *-(6'I(.'42� ,-� 12� (2?6'/'/� -.024+'.0� ,-6� :*0=-.30�� �6� -/31,'0� /460� .023-+:6(� -6�:-*/02(6� =� 60/� +-,'0/� 3J.2'.0/� ;1-� .02/',-*0� ;1-� /-*@(2� '+:*-/.'2,'C6-/� :(*(� 6(�*-(6'I(.'42�,-�12�:*0,1.30�.0+-*.'(6D�20�E-�-23*(,0�(�<(60*(*�-6�3'-+:0�2-.-/(*'0�:(*(�/1�.02/-.1.'42����/(&2-)$�-/*/&)(+2�3)()�/$�1/&)((2$$2�1/�$)�3$)*)��0%$�2)(1���63-*2(3'<(�����-(6'I(*�-6�,'/-H0�=�6(�:*0)*(+(.'42�,-6�E(*,B(*-��

�� �2� '2)-2'-*0�-6-.3*42'.0�0�,-� 3-6-.0+12'.(.'02-/��1/�.0+:-3-2.'(/�/-*@(2�-6�,'/-H0�=�6(�.00*,'2(.'42�,-�6(�*-(6'I(.'42�,-�6(�:6(.(�,-6�-+16(,0*���-2,*@(�;1-�(:0*3(*�-5:-*'-2.'(�-2�,'/-H0�,-�E(*,B(*-�C(/(,0�-2�%����=�:*0)*(+(.'42�-2�� ���

��� �2� '2)-2'-*0� 3J.2'.0� -6-.3*42'.0� 0� ,-� 3-6-.0+12'.(.'02-/� :(*(� ,'/-H0� ,-�

(*,B(*-�� 1/� .0+:-3-2.'(/� /-*@(2� ,-� .06(C0*(.'42� .02� -6� ,'/-H(,0*� =�.00*,'2(,0*� ,-6� :*0=-.30� ,-� E(*,B(*-D� *-(6'I(.'42� ,-� :6(20/D� ,-�,0.1+-23(.'42D� .02/3*1..'42� ,-� :*0303':0/D� -2/(=0/D���� -C-*@(� 3-2-*�-5:-*'-2.'(�-2�-6�,-/(**0660�,-�E(*,B(*-��

��� 0/� '2)-2'-*0/� 3J.2'.0/�-6-.3*42'.0/� �0�,-� 3-6-.0+12'.(.'02-/�:(*(�,'/-H0�,-�

/0A3B(*-��1/�.0+:-3-2.'(/�/-*@(2�6(�:*0)*(+(.'42�-2�� ��,-�60/�-+16(,0*-/�,-�+'.*0.023*06(,0*-/� �� �� -C-*@(� (:0*3(*� -5:-*'-2.'(� -2� :*0)*(+(.'42� .02�� ��=�-2�:*0)*(+(.'42�,-�+'.*0.023*06(,0*-/��� �

��� �(�A(C*'.(.'42�,-�6(�:6(.(�,-6�-+16(,0*�/-�.023*(3(*@(�(�03*(�-+:*-/(���

�63-*2(3'<(���� 023*(3(*�-6�,'/-H0�,-6�E(*,B(*-�=�*-(6'I(*�/1�:*0)*(+(.'42��

�� �2� '2)-2'-*0� -6-.3*42'.0� 0� ,-� 3-6-.0+12'.(.'02-/�� -*@(� -6� .00*,'2(,0*� ,-6�:*0=-.30�=�-6�'23-*60.130*�.02�6(�-+:*-/(�;1-�,'/-H-�6(�:6(.(�:(*(�-6�-+16(,0*��-C-*@(� (:0*3(*� -5:-*'-2.'(� -2� ,'/-H0� ,-� E(*,B(*-� C(/(,0� -2� %���� =�:*0)*(+(.'42�-2�� ���

��� 0/� '2)-2'-*0/� 3J.2'.0/�-6-.3*42'.0/� �0�,-� 3-6-.0+12'.(.'02-/�:(*(�,'/-H0�,-�

/0A3B(*-��1/�.0+:-3-2.'(/�/-*@(2�6(�:*0)*(+(.'42�-2�� ��,-�60/�-+16(,0*-/�,-� +'.*0.023*06(,0*-/� �� � =P0� 03*0/� +'.*0.023*06(,0*-/�� �-2,*@(� ;1-� 3-2-*�-5:-*'-2.'(� -2� :*0)*(+(.'42� .02� � �� =� -5:-*'-2.'(� -2� :*0)*(+(.'42� ,-�+'.*0.023*06(,0*-/��

��� �(�A(C*'.(.'42�,-�6(�:6(.(�,-6�-+16(,0*�/-�.023*(3(*@(�(�03*(�-+:*-/(��

���

Page 96: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!#�

��.%+3)0+/-'2�-/*/&)(+2�3)()�$)�(/)$+;)*+,-�1/�$)�3$)*)��0%$:2)(1��

�� �2�K'3�,-�,-/(**0660�:(*(� 6(�%����;1-�/-�A1-*(�(�13'6'I(*�-2�-6�:*0=-.30��-*@(�13'6'I(,0�:0*�60/�:*0)*(+(,0*-/�-2�� ��+'-23*(/�20�-/31<'-*(�,-/(**066(,(�6(�:6(.(��+16C0(*,�

��� �;1':(+'-230� C?/'.0� ,-� 6(C0*(30*'0� ,-� -6-.3*42'.(D� 0/.'60/.0:'0D� A1-23-� ,-�

(6'+-23(.'42D�)-2-*(,0*�,-�/-H(6-/D�.0+:02-23-/�-6-.3*42'.0/D����-*@(�13'6'I(,0�:(*(�*-(6'I(*�+023(>-/�,-�:*1-C(�:(*(�<-*'A'.(*�-6�A12.'02(+'-230�,-6�-+16(,0*��

���26'R)(/�-/*/&)(+2�3)()�$)�/$):2()*+,-�1/�$)�3$)*)��0%$:2)(1��

�� �'.-2.'(/�,-�N'2,0B/�=��AA'.-�:(*(�60/�,-/(**066(,0*-/�,-�E(*,B(*-�=�/0A3B(*-���� ��6'.-2.'(/�,-6�-230*20�,-�,-/(**0660��0,-6'+�:(*(�� ���

��� ��6'.-2.'(�,-�12�:*0)*(+(�,-� ��,-�-6-.3*42'.(�3':0��� ��

��� ��6'.-2.'(�,-�12�:*0)*(+(�,-�/'+16(.'42�-6-.3*42'.(�3':0���� ����� �� 6'.-2.'(� ,-� .(,(� 120� ,-� 60/� -230*20/� ,-� ,-/(**0660� :(*(� �� � ;1-� /-*@(2�

.0+:(3'C6-/�.02��+16:'.�����

�/(&2-)$�-/*/&)(+2�3)()�$)�/$):2()*+,-�1/$�3(27()0)��0%$3+*��

�� �� �2)-2'-*0� '2A0*+?3'.0�� -� -2.(*)(*@(� ,-6� (2?6'/'/� =� 6(� .00*,'2(.'42� ,-6�,-/(**0660�,-��+16:'.��-C-*@(�3-2-*�-5:-*'-2.'(�.0+0�(2(6'/3(�=�:*0)*(+(.'42�-2� LL�=��% ��

��� �� �2)-2'-*0� 3J.2'.0� '2A0*+?3'.0D� .02� :*0)*(+(.'42� -2� LL� =� �% � :(*(� -6�

'23-*A(.-�)*?A'.0�,-�6(�(:6'.(.'42����� ���2)-2'-*0�3J.2'.0�'2A0*+?3'.0�:*0)*(+(,0*�-2� LL�:(*(�6(�:*0)*(+(.'42�20�

*-6(.'02(,(�.02�-6�'23-*A(.-�)*?A'.0���

�0,0/�,-C-*@(2�.020.-*�-6�-230*20�,-�,-/(**0660��'/1(6�31,'0����������26'R)(/�-/*/&)(+2�3)()�$)�/$):2()*+,-�1/$�3(27()0)��0%$3+*��

�� ���'.-2.'(/�,-�N'2,0B/�=��AA'.-���� ���'.-2.'(/�,-��'/1(6�31,'0������

��

Page 97: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!��

��-6()/&'(%*'%()�+-62(0V'+*)���(/�2-.-/',(,-/�,-�6(� '2A*(-/3*1.31*(�'2A0*+?3'.(�:0,*@(2�<(*'(*�+1.E0�-2�A12.'42�,-�6(�'2A*(-/3*1.31*(�-5'/3-23-�-2�6(�E':03J3'.(�-+:*-/(D�(�6(�;1-�/-�6-�,-C-*@(�(H(,'*��

�� �2�� �:(*(�.(,(�3*(C(>(,0*����� �2.0*:0*(.'42�,-�60/�-;1':0/�(�6(�����,-�6(�-+:*-/(�=(�/-(�,-23*0�,-�(6)12(�

/1C*-,�-5'/3-23-�0�-2�21-<(/�/1C*-,-/���

�� �2�/-*<',0*�:(*(�.-23*(6�.0+:(*3',0�:0*�60/�-6-.3*42'.0/�-�'2A0*+?3'.0/D�.02�12(�C(/-�,-�,(30/�,0.1+-23(6�;1-�:-*+'3(�)-/3'02(*�=�.0+:(*3'*� 60/�,0.1+-230/�-23*-� 60/� ,-/(**066(,0*-/�� �/3(� C(/-� ,-� ,(30/� 20/� :-*+'3'*@(� .023*06(*� 6(/�<-*/'02-/� ,-� 60/� ,0.1+-230/D� .0+:(*3'*� .0**-.3(+-23-� 60/� ,0.1+-230/� -23*-�,'/3'23(/�:-*/02(/�-<'3(2,0�+0,'A'.(.'02-/�'2,-/-(,(/D�����

��� �2�/'/3-+(�,-�.0:'(/�,-�/-)1*',(,�-2�-6�/-*<',0*�

��

�(�'2A*(-/3*1.31*(�,-�6(�*-,�,-C-*@(�(/-)1*(*�;1-���

�� �(/�-/3(.'02-/�,-� 3*(C(>0�,-� 60/�-6-.3*42'.0/�-� '2A0*+?3'.0/� 3'-2-2�12�(..-/0�/-)1*0�(��23-*2-3�F/'/3-+(/�.0*3(A1-)0/D�(23'<'*1/D���G�

��� �0/�3*(C(>(,0*-/�,'/:02-2�,-�.0**-0�-6-.3*42'.0�

��� �0/�21-<0/�� i/�3'-2-2�(..-/0�(�'+:*-/0*(/�-2�*-,�

��

���� ���� ��������������������-/,-�-6�:1230�,-�<'/3(�3J.2'.0�6(/�.02.61/'02-/�;1-�E-�0C3-2',0�/02����

�� �6�:*0=-.30�-/�3J.2'.(+-23-�<'(C6-����� -*@(� 2-.-/(*'0� 12� -;1':0�+@2'+0�,-� -23*-� #� =� ��:-*/02(/�� �(*(� (/-)1*(*� 6(�

.02/-.1.'42� ,-6� :*0=-.30� /-*@(� '+:*-/.'2,'C6-� ;1-� -/3(/� :-*/02(/� 31<'-*(2�(+:6@(�-5:-*'-2.'(�-2�6(/�A12.'02-/�(�,-/-+:-H(*���/@�+'/+0�.02/',-*0�;1-�-6�:-*A'6� ,-� (6)120� ,-� 60/� 3*(C(>(,0*-/� 20� /-*'(� A?.'6� ,-� -2.023*(*�� �0*� -/30/�+03'<0/�60/�/1-6,0/�:0,*@(2�*-/163(*�-6-<(,0/��

��� �/� 2-.-/(*'0� 12� /0A3B(*-� =� E(*,B(*-� ,-� ,-/(**0660� ;1-� 20� -/� :*-.'/(+-23-�

C(*(30���

Page 98: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!9�

�� �2,-:-2,'-23-+-23-�,-�;1-�/-�(/')2(*(2�(6�:*0=-.30�+?/�:-*/02(/�.02/',-*0�'+:0/'C6-�/1�*-(6'I(.'42�-2�+-20/�,-��9�+-/-/��

�-/,-�-6�:1230�,-�<'/3(�-.024+'.0�:(*-.-�;1-���

�� 20/� -2.023*(+0/� (23-� 12� :*0=-.30� ;1-� *-;1-*'*@(� 12(� '2<-*/'42� '2'.'(6� ;1-�:0,*@(� (6.(2I(*� A?.'6+-23-� 60/� �D#� +'6602-/� ,-� jD� -23*-� /1-6,0/D� 6'.-2.'(/� ,-�/0A3B(*-�=�-;1':0/���

��� �6�,'2-*0�'2<-*3',0�20�/-�-+:-I(*@(�(�*-.1:-*(*D�.0+0�+@2'+0D�E(/3(��9�+-/-/�

,-/:1J/���

�� �0� -/� 12� :*0,1.30� ,-� .02/1+0� )-2-*(6D� /1� :0/'C6-� +-*.(,0� -/� C(/3(23-�:-;1-H0��

��(*(�:0,-*�.020.-*�6(�<'(C'6',(,�-.024+'.(�,-6�:*0=-.30�=�<(60*(*�/1�*-23(C'6',(,�/-*@(�'+:*-/.'2,'C6-�*-(6'I(*��

�(G� 12�:6(22'2)�A'(C6-�,-�60/�:6(I0/�,-�->-.1.'42�,-6�:*0=-.30��CG� .(6.16(*�,-3(66(,(+-23-�6(�'2<-*/'42�'2'.'(6��

�.G� 12� ,-3(66(,0� (2?6'/'/� -.024+'.0� ,-� 60/� .0/3-/� ,-6� :*0,1.30� =� 12� -/31,'0� ,-6�

:*-.'0� ,-� 60/� :*0,1.30/� ,-� 6(� .0+:-3-2.'(� :(*(� 0C3-2-*� -6� +(*)-2� ,-�C-2-A'.'0/��

�,G� 12�-/31,'0�,-�+-*.(,0�;1-�>1230�.02�-6�+(*)-2�,-�C-2-A'.'0/�20/�:0,*@(�,(*�

12(�',-(�,-6�:6(I0�,-�(+0*3'I(.'42�,-�6(�'2<-*/'42�'2'.'(6�������

Page 99: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�!!�

��

0� ���������-��������������������A ���

�A ����(27()00+-7�:?�/8)03$/�� 1(*3(�-,'.'42D��������130*��01)6(/�����-**=���,'30*'(6����.�*(B� '66��

������ �!>��� �A �� &')-1)(1�� '/:02'C6-� .0+0� ,0.1+-230� -6-.3*42'.0� -2�E33:�PPBBB�'---�0*)P��

��A ��� � $27+*� &?-'Q/&+&� )33(2)*Q�� �*'+-*(� -,'.'42D� �!!��� �130*�� (<',��(=60*���,'30*'(6� E(:+(2�f� (66���

��A �C� �/-7%)G/� /&'V-1)(�1/�1+&/@2�/$/*'(,-+*2�� �*'+-*(� -,'.'42D� �!!9���130*-/���61@/��-*J/D�8()0��0**0>(D�-*(A@2��6.0ID��1)-2'0��'66(*���,'30*'(6��(.��*(B� '66��

�3%-'/&�1/$�*%(&2�1/�32&'7()12�1/�$)�����X/*-+*)&�1/�1+&/@2�1+7+')$�?�&+&'/0)&�*2-6+7%():$/&Y��%12,(.'4��06'3k.2'.(�,-� (3(612=(D�������

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

�� �� �+:()(?� 62(� �+&%)$� �'%1+2� ���� �!!��� �*.E'<0/� ,-� ,0.1+-23(.'42�-6-.3*42'.(� ,-� �'.*0/0A3� :(*(� -6� -230*20� ,-� ,-/(**0660� ������ -� -2.1-23*(�,'/:02'C6-�-2�<-*/'42�,-� �0�-2�<-*/'42�02�6'2-��

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

��2-)0/-'&�1/�3(27()0)*+2�����0,160/�,',?.3'.0/������ D��������130*-/���-*-��03-66(��4:-ID��';1-6��0A'66��*(/(��

��2-)0/-'&�1/�3(27()0)*+2������4,160/�,',?.3'.0/������ D��������130*-/���16'l��'2)1'6642�'��6A02/0D�(<',� (C(2'66(/��(*C(.'6����-7+-?/(+)�1/�3(27()0)(+���4,160/�,',?.3'.0/��%12,(.'4�:-*�(�6(��2'<-*/'3(3��C-*3(�,-� (3(612=(���130*-/���-2-3� (+:,-**'.E�%(6)1-*(/����2-)0/-'&� 1/� *203%')12(&� ��� �4,160/� ,',?.3'.0/�� %12,(.'4� :-*� (� 6(��2'<-*/'3(3� �C-*3(� ,-� (3(612=(D� �!!!�� �130*-/�� �-,*0� ,-��')1-6� �2(/()(/3'D�(23'()0��0,*@)1-I�,-�6(�%1-23-����2-)0/-'&� 1/� *203%')12(&� ���� �4,160/� ,',?.3'.0/�� %12,(.'4� :-*� (� 6(��2'<-*/'3(3� �C-*3(� ,-� (3(612=(D� �!!9�� �130*-/�� �-,*0� ,-��')1-6� �2(/()(/3'D��16'0��13'J**-I��@0/D��1'/��(/30*��J*-ID��0/J�����-,*(I(�0+@2)1-I��

Page 100: Emulador de un microcontrolador PIC 16F84 basado en una fpga

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

� � � � � � � � �

��

�����

��&'(%*'%()� 1/� $)� +-62(0)*+2�� �4,160/� ,',?.3'.0/�� %12,(.'4� :-*� (� 6(��2'<-*/'3(3��C-*3(�,-� (3(612=(D��������130*-/��O(<'-*�%*(2.E��13'J**-ID�O(<'-*��1*)1J/�'��66(D%(30/�OE(A(��

�/2(9)�1/�)%',0)')&�?�$/-7%)G/&�62(0)$/&�����4,160/�,',?.3'.0/��%12,(.'4�:-*�(�6(��2'<-*/'3(3��C-*3(�,-� (3(612=(D��������130*-/���0(2��(2.-66/�'�%603(3/D��2*'.�-/(��0)1-*(/��

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

��+*(2*2-'(2$)12(/&� �+*�� +&/@2� 3(V*'+*2� 1/� )3$+*)*+2-/&�� -)12,(�-,'.'42D��!!!���130*-/���0/J��m��2)160��/(3-)1'D��)2(.'0��2)160��(*3@2-I��

��+*(2*2-'(2$)12(/&� �+*�� +&/@2� 3(V*'+*2� 1/� )3$+*)*+2-/&C� &/7%-1)�3)('/�� �H0� ������ �130*-/�� �0/J� �m� �2)160� �/(3-)1'D� 1/(2(� �0+-*0� 8-/(D��)2(.'0��2)160��(*3@2-I��

��&3/*+6+*)*+2-/&� '=*-+*)&� 1/$� 0+*(2*2-'(2$)12(� ���� ��6���� '/:02'C6-�.0+0� ,0.1+-230� -6-.3*42'.0� -2� A0*+(30� :,A� -2� 6(� B-C� ,-� �'.*0.E':��E33:�PPBBB�+'.*0.E':�.0+�