1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.
판매자 | 양치기광녀 | 판매 납포인트 | 무료 | 평점 | 0점 / 총 0명 참여 |
---|
2. 8051의 핀구조 및 타이밍도
칩 내에 ROM을 내장한 것(8051,8751)과 외부에 있는 ROM(8031)으로 동작시키는 것이 있다.
8051의 중요한 특징은 다음과 같다.
(1) 8비트 원 칩 마이크로 컴퓨터
(2) 발진회로 내장
(3) 32비트의 I/O 라인
(4) 64K 바이트의 프로그램 영역
(5) 64K 바이트의 데이터 메모리 영역
(6) 2개의 16비트 타이머/카운터
(7) 5개의 인터럽트 중 2개의 인터럽트 우선 순위 레벨 제어
(8) 전이중(full duplex) 시리얼 포트
(9) 강력한 비트 제어
1. 8051의 핀 기능
(1) 포트 0(P0.0 - P0.7) : 8비트 오픈 드레인 양방향 입출력 단자이다.
포트 0에 "1"을 쓰면, 그 상태에서 하이 임피던스 입력으로 사용 될 수 있다.
외부에 프로그램 메모리와 데이터 메모리를 인터페이스 하였을 때, 하위 어드레스 A0 - A7과 데이터 버스로 사용
된다.
EP-ROM 라이트할 때는 데이터 버스로 사용된다. 이때는 외부 풀업(pull up)저항을 연결하여야 한다.
외부에 메모리를 인터페이스하자 않았을 때는 범용 I/O 포트로 사용할 수 있다. 이때는 외부에 풀업
저항을 연결하여야 한다.
(2) 포트 1(P1.0 - P1.7) : 내부 풀업이 되어 있는 8비트 양방향 입출력 단자이다.
EP-ROM 라이트 할 때는 어드레스 버스 A0 - A7으로 사용한다.
범용 I/O 포트로 사용된다.
(3) 포트 2(P2.0 - P2.7) : 내부 풀업을 갖는 8비트 양방향 입출력 단자이다.
외부 프로그램 메모리 혹은 데이터 메모리와 데이터 전송시, 상위 어드레스 A8 - A15로 사용된다.
EP-ROM 라이트 동안에는 상위 어드레스 버스로 사용된다.
외부에 8비트 어드레스만을 사용하는 기억소자를 인터페이스 하였을 경우에는 원래의 목적대로 포트
2로 사용할 수 있다. 이때 사용하는 명령이 MOVX A, @R0 혹은 MOVX A, @R1 또는 MOVX @R1, A
MOVX A, @R1 이다.
(4) 포트 3(P3.0 - 3.7) : 내부 풀업을 갖는 8비트 양방향 입출력 단자이다. 이 포트는 2개의 기능을 갖고 있다.
(1) RESET : 입력 액티브 하이 (high)
2개의 머신 사이클 동안 'H'가 되어 있어야 유효하다.
(2) ALE/*PROG (Address Latch Enable output/program pulse input)
(a) ALE : 액티브 H, 출력
외부 프로그램 메모리 혹은 데이터 메모리를 인터페이스한 경우, P0는 어드레스 버스 (A0 - A7)겸,
데이터 버스로 사용한다. 즉, 이 신호는 P0가 어드레스 버스 A0 - A7으로 동작하고 있다는 것을 외부
에 알리는 신호이다. 그래서, 보통 이 신호를 어드레스 래치의 래치 신호로 사용한다.
(b) *PROG: 액티브 L, 입력
EP-ROM 라이트 하는 동안 프로그램 펄스 신호로 사용된다.
(3) *PSEN ( program strobe enable) : 출력, 액티브 'L'
외부 프로그램 메모리에서 데이터를 일을 때 리드 신호가 된다. 각 머신 사이클에서 2번 출력되어지며, ALE의 하강 모서리(↓)에서, 포트 0의 값은 어드레스로 사용된다. 데이터 메모리에서 데이터를 리드할 때에는 동작하지 않는다.
(4) *EA/Vpp (external access enable/ V peak-peak)
(a) *EA : 입력, 외부 프로그램 메모리를 사용할 것인가를 결장한다. 즉,
*EA = 0 : 0000 - 0FFFH 영역을 외부 ROM을 사용한다. 이 경우, 1000H 번지 이상을 액세스하면,
자동으로 외부 ROM이 선택된다.
*EA = 1 : 0000 - 0FFFH 영역을 내부 ROM을 사용한다.
(b) Vpp : EP-ROM 라이트 동안 Vpp전원 입력 단자
(5) XTAL1 : 입력, 발진기 증폭기가 인버팅 되어서 입력된다.
(6) XTAL2 : 출력, 발진기 증폭기가 인버팅 되어서 입력된다.
(7) Vss : 접지
(8) Vcc : +5[V]
3. 8051의 타이밍도
8051의 1머신 사이클(machin cycle)은 6 스테이트(12클럭)로 구성되며, 1 스테이트(state)는 두 개의 클럭으로 구성된다. 또, 1 스테이트는 페이스 1(P1)과 페이스 2(P2)의 두 개의 페이스로 나누어지기도 한다.
(1) 1바이트-1사이클인 경우
기계어가 1바이트인 경우 (1 바이트가 OP 코드가 된다.) 이 명령을 실행하는데는 하나의 머신 사이클만 필요하며, S4에서 다음 명령의 OP코드를 일고 있지만, 다음 사이클의 S1에서 똑같은 OP코드를 읽기 때문에, S4에서 리드 사이클은 더미(dummy) 사이클이 된다.
(2) 2바이트-1사이클인 경우
기계어가 2바이트인 경우(1 바이트가 OP 코드 나머지 1바이트는 오퍼런드)에 , 이 명령을 실행하는데 1머신 사이클을 필요로 하는 경우이며, S4에서 오퍼런드를 읽어서 처리를 하게 된다.
(3) 1바이트 2사이클인 경우 (1)
기계어가 1바이트인 경우, 2개의 머신 사이클이 필요한 경우를 나타내며, 처음 사이클의 S4와 다음 사이클의 S1, S4에서는 더미(dummy) 읽기를 한다.
(4) 1바이트 2사이클인 경우 (2)
단 1바이트-2사이클 명령에서 MOVX 명령만은 예외로, 외부 메모리를 액세스하기 때문에 다음 명령의 읽기를 할 수 있다.
8051에서는 거의 전 명령이 2머신 사이클이내에 완료하지만 MUL 명령과 DIV 명령은 4개의 머신사이클이 필요로 한다.
4. 외부 프로그램 메모리 액세스 타이밍
내부 프로그램 메모리를 읽을 때에는 신호는 외부에 출력되지 않지만, 내부적으로는 똑같이 동작하고 있다. 또, 타이밍에 관해서는 외부 ROM을 인터페이스 하여야 하는 8031는 을 출력하고, 8051(8071)을 외부 ROM을 사용할 경우에는, 8031와 8051(8071)의 타이밍은 똑같게 된다. 은 외부 데이터 메모리를 액세스하는 , 신호가 동작할 때는 출력되지 않는다.
프로그램 메모리의 액세스 사이클은 그림에서와 같이 6개의 클럭 사이클로 구성된다. 그림에서 각각 T1, T2, T3, T4, T5, T6로 표시되고 있다.
어드레스는 T3 스테이트에서 CPU에서 출력되고,
메모리에서 데이터 전송은 T5, T6 그리고 다음 사이클의 T1에서 이루어진다.
외부 프로그램 메모리에서 페치할 경우, 8051은 대개 짝수개의 바이트 수를 페치하게 된다. 더욱 홀 수 바이트가 브랜치 및 외부 데이터 메모리 액세스보다 앞에서 실행되면, 전부 페치되어 있던지, 또 실행되지 않은 1바이트가 무시된다.
읽기 사이클은 T2에서 시작되며, 이때 ALE 신호 이 출력된다. 이 ALE 신호의 하강 모서리 를, 버스상에 있는 어드레스 를 8비트 래치 회로의 래치 신호로 사용한다. T5 스테이트에서 어드레스 정보는, 포트 0 버스상에서 제거되고, 프로세서의 구동회로는 하이 임피던스 상태 다 된다. 프로그램 메모리 리드 제어 신호()도, T5에서 출력된다.
신호는 어드레스 정보에 의해서, 지정된 디바이스에 대해서, 데이터 버스에 데이터를 보내라고 알리는 신호이다. 신호보다 다소 늦게, 유효한 데이터 각 버스상에 나타나게 된다 . 그 후, 8051은 신호 레벨을 "H"로 만들고 , 이 신호로 지정되었던 디바이스는, 자신의 출력을 플로팅 상태로 만들고 버스를 개방한다.
5. 외부 데이터 액세스 타이밍
외부 데이터 메모리의 액세스 사이클은 T1- T12까지 12 클럭으로 이루어진다.
외부 데이터 메모리 액세스 사이클은 프로그램 메모리 액세스에 비해서 늦기 때문에, 액세스 시간이 늦은 메모리 혹은 주변 I/O LSI들을 인터페이스가 쉽도록 되어 있다.
읽기 사이클은 T2에서 ALE 신호를 출력함으로써 시작된다. ALE의 하강 모서리 에서는 버스상에 출력된 어드레스 을 래치 회로로 래치시킨다. 그래서 T5 스테이트에서 어드레스는 포트 0에서 제거되고, 프로세서는 버스를 하이 임피던스 상태로 놓는다.
데이터 메모리 일기 제어 신호 는 T7에서 출력되고, 어드레스 정보에 의해서 선택된 디바이스는 데이터를 데이터 버스로 내보내야 한다. 그래서 일정시간이 지난 후 유효 데이터가 버스상에 나타나게 된다. 신호가 다시 "H" 레벨 로 돌아가게 되면, 선택되었던 디바이스는 출력을 플로팅 상태로 만들어서 버스를 개방한다.
라이트 사이클은 ALE신호를 출력하고 , 어드레스 정보를 출력해서 , 버스 사이클을 시작한다. T6 스테이트에서 CPU는 어드레스 정보로 선택된 디바이스로 써넣을 데이터를 버스로 출력한다. 이 데이터는 다음 버스 사이클 T2 스테이트에서 버스 사이클이 끝날 때까지 유지된다 . 써넣기 제어 신호 은 T6 스테이트에서 "L"레벨이 되고 , 버스 사이클이 끝나는 T12 까지 "L"레벨을 유지하게 된다 .
자료출처:http://www.jungtaemin.com/study.html?PHPSESSID=5d9ce605a6274b90aee7bcf9346d0ae4