PICmicro MID-RANGE MCU FAMILY CPU 와 ALU HIGHLIGHTS 이섹션은다음과같은주제를다룹니다 : 5.1 소개... 5-2 5.2 범용명령어형태... 5-4 5.3 중앙처리유닛 (CPU)... 5-4 5.4 명령어클럭... 5-4 5.5 산술논리유닛 (ALU)... 5-5 5.6 STATUS 레지스터... 5-6 5.7 OPTION_REG 레지스터... 5-8 5.8 PCON 레지스터... 5-9 5.9 설계팁... 5-10 5.10 관련어플리케이션노트... 5-11 5.11 개정히스토리... 5-12 2007 Microchip Technology Inc. Advance Information DS31005A-page 1
PICmicro MID-RANGE FAMILY 5.1. 소개 중앙처리유닛 (CPU) 은프로그램메모리 ( 명령어 ) 의정보를사용하기위해디바이스의동작을제어합니다. 이많은명령어들은데이터메모리에대해동작합니다. 데이터메모리에대해동작하기위해서산술논리유닛 (ALU) 이필요합니다. 추가적으로산술적이고, 논리적인수행을위해 ALU 는상태비트를제어합니다 (STAUS 레지스터에서찾을수있습니다 ). 어떤명령어들의결과는결과의상태로상태비트의값을가지도록합니다. CPU 가인식하는기계코드는표 5-1 에나타나있습니다 (MPASM 이이들코드를생성하기위한명령어니모닉뿐만아니라 ). 2007 Microchip Technology Inc. Advance Information DS31005A-page 2
PICmicro MID-RANGE MCU FAMILY Note 1: I/O레지스터가기능자체 ( e.g., MOVF PORTB, 1) 로수정될때, 사용된값은핀에나타나는값입니다. 예를들어, 데이터래치가입력으로설정된핀에서 1이고외부디바이스에의해로우라면데이터는 0 으로기록됩니다. 2: 만약 TMR0 레지스터에서명령어가실행된다면 (and, where applicable, d = 1), Timer0 모듈에할당될경우프리스케일러는클리어됩니다. 3: 프로그램카운터 (PC) 가수정되거나조건테스트가참이면명령어는 2 사이클이요구됩니다. 두번째사이클은 NOP로써실행됩니다. 2007 Microchip Technology Inc. Advance Information DS31005A-page 3
PICmicro MID-RANGE FAMILY 5.2. 일반적인명령어포맷 Mid-Range MCU 명령어는 Figure 5-1에서보여지듯이 4개의범용포맷으로나뉘어질수있습니다. 볼수있듯이명령어에서오피코드는 3비트에서 6비트로다양합니다. 이다양한오피코드의크기는 35개의명령어들이실행될수있도록합니다. 5.3. 중앙처리유닛 (CPU) CPU는디바이스의 뇌 로간주될수있습니다. 이것은실행과명령어의디코딩을위한명령어의패치를하고명령어를실행합니다. CPU는때때로 ALU와함께완벽한명령어의실행을위해동작합니다 ( 산술과논리연산에서 ). CPU는프로그램어드레스버스, 데이터메모리어드레스버스를제어하고스택의접근을제어합니다. 5.4. 명령어클럭 각명령어사이클 (T CY ) 은 4 개의사이클을의미합니다 (Q1-Q4). Q 사이클시간은디바이스오실레이터사이클타임과같습니다 (TOSC). Q 사이클은디코드, 읽기, 데이터처리, 쓰기, 기타등등각명령어사이클을위한타이밍 / 지정를제공합니다. 아래의다이어그램은명령어사이클 Q 사이클의관계를나타냅니다. 4 개의사이클은다음과같은명령어사이클 (TCY) 로일반화됩니다 : Q1: 명령어디코드사이클또는강제적으로동작하지않음 Q2: 명령어데이터읽기사이클또는동작하지않음 Q3: 데이터처리 Q4: 명령어데이터쓰기사이클또는동작하지않음각명령어들은명령어들에대한자세한 Q 사이클을보여줍니다. 2007 Microchip Technology Inc. Advance Information DS31005A-page 4
PICmicro MID-RANGE MCU FAMILY 5.5. 산술논리유닛 (ALU) PICmicro MCU는 8비트 ALU와 8비트동작레지스터가있습니다. ALU는범용목적산술과논리유닛입니다. 이것은동작레지스터와레지스터파일의데이터들사이의산술과불린 (Boolean) 을수행합니다. ALU 는 8 비트길이이고, 덧셈, 뺄셈, 시프트논리연산의능력이있습니다. 달리언급되지않는다면산술연산은 2 진보수를의미합니다. 두 - 오퍼랜드명령어는일반적으로한오퍼랜드가동작레지스터입니다 (W 레지스터 ). 다른오퍼랜드는파일레지스터또는중간상수입니다. 단일오퍼랜드명령어는오퍼랜드가 W 레지스터이거나파일레지스터입니다. W 레지스터는 ALU 연산을위한 8 비트동작레지스터입니다. 이것은접근가능한레지스터가아닙니다. 명령어실행에따라 ALU 는 STATUS 레지스터의캐리 (C), Digit 캐리 (DC), 제로 (Z) 비트에영향을미칩니다. C 와 DC 는빌림비트와 digit 빌림비트로써각각의뺄셈에서동작합니다. SUBLW, SUBWF 명령어를위한예제를참고하십시오 2007 Microchip Technology Inc. Advance Information DS31005A-page 5
PICmicro MID-RANGE FAMILY 5.6. STATUS 레지스터그림 5-1에보여지는 STATUS 레지스터는 ALU의산술상태와, RESET상태와데이터메모리의데이터뱅크선택을포함합니다. 데이터메모리뱅크선택은이레지스터에의해제어되기때문에모든뱅크에이것이필요합니다. 또한레지스터는각뱅크의같은상대위치 ( 오프셋 ) 에있습니다 ( 메모리구성 섹션의자료 6-5 레지스터파일배치 를참조하십시오 ). STATUS 레지스터는다른레지스터들과같이어떠한명령어의목적지가될수있습니다. 만약 STATUS 레지스터가 Z, DC 또는 C비트의영향을끼치는명령어의목적지라면이세비트에쓰기는비활성화됩니다. 이비트들은디바이스의논리에따리설정되거나클리어됩니다. 게다가 STATUS 레지스터는목적지로서의도한것과다른차이가있습니다. 예를들어, CLRF STATUS는상위세비트를클리어하고 Z비트를설정합니다. 이것을 STATUS 레지스터를 000u u1uu가됩니다 ( 여기서 u= 변하지않음 ). 그러므로오직 BCF, BSF, SWAPF and MOVWF이 STATUS 레지스터를변경하는데이용되는것이권장됩니다. 왜냐하면이러한명령들은 Z, C 또는 DC 비트는영향을미치지않기때문입니다. 상태비트들에영향을미치지않는명령어들이표 5-1에있습니다. Note 1: 어떤디바이스는 IRP, RP1 (STATUS<7:6>) 비트가필요하지않습니다. 이러한비트는 섹션 5 에서는사용되지않습니다. CPU 와 ALU 는클리어를유지해야합니다. 이것은향후 출시되는디바이스의상위오피코드에호환에영향을미치기때문에이러한비트의범용목적 R/W 비트로서의사용은권장되지않습니다. Note 2: C 와 DC 비트는빌림, digit 빌림으로각각뺄셈에서동작합니다. 2007 Microchip Technology Inc. Advance Information DS31005A-page 6
PICmicro MID-RANGE MCU FAMILY bit 7 IRP: 레지스터뱅크선태비트 ( 간접어드레싱에사용 ) 1 = Bank 2, 3 (100h - 1FFh) 0 = Bank 0, 1 (00h - FFh) 디바이스를 Bank0 와 Bank1로하기위해선 IRP 비트를클리어상태로유지함 bit 6:5 RP1:RP0: 레지스터뱅크선택비트 ( 직접어드레싱에사용 ) 11 = Bank 3 (180h - 1FFh) 10 = Bank 2 (100h - 17Fh) 01 = Bank 1 (80h - FFh) 00 = Bank 0 (00h - 7Fh) 각뱅크를 128 바이트. 디바이스를 Bank0 와 Bank1로하기위해선 IRP 비트를클리어상태로유지함 bit 4 TO: 타임-아웃비트 1 = 전원공급후, CLRWDT 명령어또는 SLEEP 명령어 0 = A WDT 타임-아웃발생 bit 3 PD: 전원차단비트 1 = 전원공급후또는 CLRWDT 명령에의해 0 = SLEEP 명령어의실행함으로써 bit2 Z: Zero 비트 1 = 산술또는논리연산의결과가 zero 0 = 산술또는논리연산의결과가 not zero bit 1 DC: Digit 캐리 / 빌림비트 (ADDWF, ADDLW, SUBLW, SUBWF 명령어 ) ( 빌림극성의유지를위해 ) 1 = 발생결과의 4번째하위비트로부터의캐리아웃 0 = 발생결과의 4번째하위비트로부터의캐리아웃없음 bit 0 C: 캐리 / 빌림비트 (ADDWF, ADDLW, SUBLW, SUBWF 명령어 ) 1 = 발생결과의최상위비트로부터의캐리아웃 0 = 발생결과의최상위비트로부터의캐리아웃없음 Note: 빌림극성이유지됨. 뺄셈은두번째오퍼랜드의이진보수를더함으로써실행됨. 회전명령어 (RRF, RLF) 에서이비트는소스레지스터의상위또는하위비트와함께로드됨 2007 Microchip Technology Inc. Advance Information DS31005A-page 7
PICmicro MID-RANGE FAMILY 5.7. OPTION_REG 레지스터 OPTION_REG 레지스터는읽기와쓰기가가능하고, PORTB 의 TMR0/WDT 프리스케일러, 외부 INT 인터럽트, TMR0와 weak 풀-업을설정하는다양한제어비트를포함하는레지스터입니다. bit 7 RBPU: PORTB 풀-업활성화비트 1 = PORTB 풀-업비활성화 0 = PORTB 풀-업각포트래치값에의해활성화 bit 6 INTEDG: 인터럽트에지선택비트 1 = INT 핀의상승에지인터럽트 0 = INT 핀의하강에지인터럽트 bit 5 T0CS: TMR0 클럭소스선택비트 1 = T0CKI 핀천이 ( 변화 ) 0 = 내부명령어사이클클럭 (CLKOUT) bit 4 T0SE: TMR0 소스에지선택비트 1 = T0CKI 핀이하이에서-로우로천이할때증가 0 = T0CKI 핀이로우에서-하이로천이할때증가 bit 3 PSA: 프리스케일러할당비트 1 = WDT에프리스케일러를할당 0 = Timer0 module에프리스케일러를할당 bit 2-0 PS2:PS0: 프리스케일러율선택비트 Note: TMR0 레지스터의 1:1 프리스케일러할당을위해서프리스케일러를워치독타이머에할당하십시오 2007 Microchip Technology Inc. Advance Information DS31005A-page 8
PICmicro MID-RANGE MCU FAMILY 5.8. PCON Register 전원제어 (PCON) 레지스터는사용자가디바이스리셋을구별하도록하는 TO와 PD 비트와함께하는플래그비트를포함합니다. Note 1: BOR 는전원리셋에대해알지못합니다. 그러므로이것은사용자에의해설정되어야 하고리셋후에 BOR 이클리어인지, 브라운 - 아웃 (brown-out ) 이발생했는지체크되어야합니다. BOR 상태비트는브라운아웃회로가비활성 ( 설정워드의 BODEN 비트를 클리어함으로써 ) 인지예측할수없고, 신경쓰지않습니다. Note 2: 후에전원 - 리셋이감지를위해전원리셋이감지된후 POR 비트를클리어하는것이 권장됩니다 bit 7 MPEEN: Memory Parity Error Circuitry Status bit 비트는 MPEEN 설정비트값을나타냅니다. bit 6:3 실행되지않음 : '0' 으로읽음 bit 2 PER: 메모리패리티에러리셋상태비트 1 = 에러가발생하지않음 0 = 프로그램메모리패치패리티에러발생 ( 전원리셋이발생후반드시소프트웨어에에서설정해야함 ) bit 1 POR: 전원공급리셋상태비트 1 = 전원공급리셋이발생하지않음 0 = 전원공금리셋이발생함 ( 전원리셋이발생후반드시소프트웨어에에서설정해야함 ) bit 0 BOR: 브라운-아웃 (Brown-out) 리셋상태비트 1 = 브라운-아웃 (Brown-out) 리셋이발생하지않음 0 = 브라운-아웃 (Brown-out) 리셋발생 ( 브라운-아웃 (Brown-out) 리셋발생후반드시소프트웨어에에서설정해야함 ) 2007 Microchip Technology Inc. Advance Information DS31005A-page 9
PICmicro MID-RANGE FAMILY 5.9. 설계팁 질문 1: 내프로그램알고리즘이적절하게동작하지않습니다. 답 1: 1. 명령어의목적지가파일레지스터 (d=1) 대신 W 레지스터 (d=1) 로되었을수있습니다. 2. 레지스터뱅크선택비트 (RP1:RP0 or IRP) 적절하게선택되지않았을수있습니다. 또한인터럽트가사용되었다면레지스터뱅크선택비트가인터럽트핸들러가존재할때적절하게복구되지않았을수있습니다. 질문 2: STATUS 레지스터플래그를수정할수없습니다. 답 2: 만약 STATUS 레지스터가 Z, DC, 또는 C 비트에영향을끼치는명령어의목적지라면이들비트로의쓰기는비활성화입니다. 이들비트는디바이스논리를기초로설정또는클리어됩니다. 그러므로 STAUS 레지스터의비트를수정하기위해선 BCF와 BSF명령어의사용이권장됩니다. 2007 Microchip Technology Inc. Advance Information DS31005A-page 10
PICmicro MID-RANGE MCU FAMILY 5.10. 관련어플리케이션노트 이섹션은매뉴얼에서이섹션과관련된어플리케이션노트를나열하였습니다. 이어플리케이션노트는 Mid-Range MCU family에대해서만특별하게쓰여진것 은아닙니다 (Base-Line또는 High-End families를위해쓰여졌을수있습니다.). 그 러나개념이유사하여사용될수있습니다 ( 수정과제한의가능성과함께 ). 현재 CPU또는 ALU와관련된어플리케이션노트는다음과같습니다 : 타이틀어플리케이션노트 # Fixed Point Routines AN617 IEEE 754 Compliant Floating Point Routines AN575 Digital Signal Processing with the PIC16C74 AN616 Math Utility Routines AN544 Implementing IIR Digital Filters AN540 Implementation of Fast Fourier Transforms AN542 Tone Generation AN543 Servo Control of a DC Brushless Motor AN532 Implementation of the Data Encryption Standard using the PIC17C42 AN583 PIC16C5X / PIC16CXX Utility Math Routines AN526 Real Time Operating System for PIC16/17 AN585 2007 Microchip Technology Inc. Advance Information DS31005A-page 11
PICmicro MID-RANGE FAMILY 개정히스토리 개정 A 이것은기본 CPU, ALU 설명의초기개정입니다 2007 Microchip Technology Inc. Advance Information DS31005A-page 12