1 / 24

AVR MEMORY

AVR MEMORY . References: IAR EWAVR 컴파일러를 이용한 AVR ATmega128 마이크로 컨트롤러 , 도서출판 성안당 AVR ATmega128 정복 , Ohm 사. Index. Introduction ATmega128 Program Memory ATmega128 Data Memory ATmega128 External Interface. ATmega128 의 메모리 구조. 하버드 구조를 가짐 프로그램 메모리 프로그램 코드를 저장하고 실행시키기 위해 필요한 메모리

chase
Download Presentation

AVR MEMORY

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AVR MEMORY References: IAR EWAVR 컴파일러를 이용한 AVR ATmega128 마이크로 컨트롤러, 도서출판 성안당 AVR ATmega128 정복, Ohm사

  2. Index • Introduction • ATmega128Program Memory • ATmega128Data Memory • ATmega128 External Interface

  3. ATmega128의 메모리 구조 • 하버드 구조를 가짐 • 프로그램 메모리 • 프로그램 코드를 저장하고 실행시키기 위해 필요한 메모리 • 데이터 메모리 • 프로그램 실행에 필요한 데이터를 저장하는 메모리 • AVR의메모리 • 레지스터 • 내부 SRAM • EEPROM • 외부 데이터 메모리 메모리 구조 프로그램 메모리 데이터 메모리 플래쉬 메모리 (128KB) 32 범용 REG (32 * 8bit) 내부 SRAM (4KB) 외부 SRAM (~64KB 확장 가능) EEPROM (4KB)

  4. 프로그램 메모리 • 프로그램 메모리 • 프로그램 코드를 저장하고 실행하기 위해 필요한 메모리 • 내부 128KB에 해당하는 플래쉬 메모리 (64K 번지) • 각 번지는 16bit로 이루어져 있음 • 8bit씩두 개가 합해져서 1개의 번지가 16bit로 구성 • 모든 명령어는 16bit 또는 32bit 길이로 구성 됨 • Boot Flash Section과 Application Flash Section 으로 나뉘어져 있음 (Self-Programming 지원) • Application Flash Section : 프로그램 코드를 저장하는 공간 • Boot Flash Section : Boot Loader HEX코드를 저장하는 공간 • BOOT-Loader를 이용하여 ISP 없이도 소프트웨어 업그레이드 가능 16bit

  5. 프로그램 메모리 • 프로그램 메모리의 상수 액세스 • 일반적인 플래시 메모리 사용 시 • 64K * 16bit • 플래시 메모리 내 상수(Constant)액세스 시 • 변수는 SRAM, 상수는 Flash RAM에 저장 • ELPM, SPM 명령어사용 (내부적으로 Z레지스터 사용) • 플래시 메모리의 어드레스가 1bit 좌측으로 시프트 되어 128K * 8bit • Z레지스터는 16bit이므로 216(64K)만큼 엑세스 가능 • RAMPZ 레지스터의 PAMPZ0Bit를 이용하여 Active Page 지정 • (Z레지스터의 상위에 RAMPZ0 bit가 추가 되어 총 17bit 어드레스 접근 가능) • Z레지스터의 LSB가 0이면 하위 바이트 • Z레지스터의 LSB가 1이면 상위 바이트

  6. 프로그램 메모리 • RAM 페이지 선택 레지스터 (RAM Page Z Select REG) • 내부 플래시 메모리의 두 개의 64KB 페이지 선택 • RAMPZ0 = 0 : 0x0_0000 ~ 0x0_FFFF의 페이지 0 영역 선택 • RAMPZ0 = 1 : 0x1_0000 ~ 0x1_FFFF의 페이지 1 영역 선택 $00000 $0FFFF $10000 RAMPZ Z- Register - - - - - - - RAMPZ0 ZH ZL 7 6 5 4 3 2 1 0 7 0 7 0 $1FFFF RAMPZ0 ZH ZL 16 15 8 7 0

  7. 데이터 메모리 ATmega103 호환 모드 ATmega128 일반 모드

  8. 데이터 메모리 • ATmega128 레지스터 • 프로그램이 실행될 때 임시로 데이터를 저장하는 고속 메모리 • 2가지 종류로 나뉘어 짐 • 범용 레지스터 (General Purpose Register) • ALU 연산에 필요한 데이터들을 임시로 저장하는데 사용 • 특수기능 레지스터 (Special Function Register) • 칩의 내부 I/O 제어나 상태보고 등의 특별 기능들을 수행 • ATmega128에 내장된 각종 I/O를 제어하기 위한 64개의 I/O 레지스터 • ATmega128에 새로 추가된 각종 I/O디바이스들을 제어하기 위한 160개의 External I/O 레지스터

  9. 데이터 메모리 • 범용 레지스터 (General Purpose Register) • 32개 R0 ~ R31 • 0x00 ~ ox1F 데이터 메모리 영역에 매핑 • ALU 연산에 필요한 데이터들을 임시로 저장 32 Registers 32 I/O Registers 32 I/O Registers 160 Ext I/O Register Internal SRAM (4096 * 8) Extenal SRAM (0 – 64K * 8) ∙ ∙ ∙

  10. 데이터 메모리 • X Y Z 레지스터 • 데이터 영역의 간접 주소 지정을 위한 주소 포인터로 사용 • R26 ~ R31 (0x1B ~ ox1E)

  11. 데이터 메모리 • I/O 레지스터 • ATmega128에 내장된 I/O 기능들을 제어하기 위해 64개의 I/O 레지스터 제공 • 0x0020 ~ 0x005F 메모리 영역 • IN/OUT 명령은 0x00 ~ 0x3F로 사용 • 실제 메모리에선 0x20 ~ 0x5F지만, IN/OUT 명령에선 -0x20을 하여 사용 • 확장 I/O 레지스터 • ATmega128에 새로 추가된 I/O 기능들을 제어하기 위해 160개의 확장 I/O 레지스터 제공 • 0x0060 ~ 0x00FF 메모리 영역 • IN/OUT 명령 사용 할 수 없음 • ST/STS/STD 또는 LD/LDS/LDD 명령어로 접근 가능 Ext. I/O Mem_Add IN/Out Add

  12. 레지스터 구성 • 상태 레지스터 (Status Register) • ALU 연산 실행 후, 연산 결과에 따라 비트 값 세팅 • I/O 메모리 영역 0x3F(0x5F) 번지에 위치 • Bit 7(I) : Global Interrupt Enable • Bit 6(T) : Bit Copy Storage • BLD와 BST를 이용하여 이 비트와 어떤 레지스터의 한 비트 사이에 비트 복사 가능 • Bit 5(H) : Half Carry Flag • Bit 4(S) : Sign Bit, S= N ∧V • Bit 3(V) : 2’s Complement Overflow Flag • Bit 2(N) : Negative Flag • Bit 1(Z) : Zero Flag • Bit 0(C) : Carry Flag

  13. 데이터 메모리 • 스택 포인터 (Stack Pointer) • 임시 데이터, 지역변수, 인터럽트 또는 서브루틴 실행 후 리턴 주소가 저장되는 스택의 가장 상단의 주소 • 16비트 레지스터 : SPL(ox3E or 0x5E), SPH(ox3D or 0x5D) • 0x3E와 0x3D는 IN/OUT 명령 사용 시 주소 • 스택 포인터는 내부 SRAM 영역 0x100번지 이상을 가리킴 • PUSH : 1 감소, POP 1 증가 • 서브루틴 or 인터럽트 시 : 2증가 • RET/RETI : 2 증가

  14. 데이터 메모리 • 내부 SRAM • 내부 프로그램 코드에 의해 발생되는 데이터를 일시적으로 저장 • 프로그램에서 사용자 변수의 저장영역이나 Stack영역으로 사용 • 4KB의 SRAM 내장 (메모리 번지는 $0100 ~ $10FF까지) • 일반 모드와 ATmega103 호환 모드로 나뉘어 짐 • EEPROM • 전원이 꺼져도 지속적으로 값을 유지 할 필요가 있는 별도의 데이터를 저장하기 위해 사용되는 메모리 • 다른 데이터 메모리 어드레스 영역과 별개의 영역에 할당 • EEAR / EEDR / EECR 레지스터로 1Byte씩 액세스 가능 • 총 용량 4KB로 구성

  15. 데이터 메모리 • 외부 데이터 메모리 • 0x1100-0xFFFF번지에 외부 데이터 메모리를 연결하여 사용 가능 • 외부 SRAM또는 LCD나 ADC와 같은 주변장치의 인터페이스용으로 사용 가능 • 외부메모리 인터페이스 기능 • 주변장치와 적절한 인터페이스를 위한 0-3의 WaitCycle 지정 가능 • 2개의 섹터로 외부 데이터 메모리를 분할하고, 각각 독립적인 Wait Cycle 지정 가능 • 상위 어드레스 바이트를 설정하기 위해, 비트 수 선택 가능 • 데이터 버스의 신호들이 동작 할 때 전류 소비량을 줄이기 위한 BUS-keeper 기능

  16. 데이터 메모리 • 데이터를 저장하기 위한 EEPROM • 전원이 꺼지더라도 지속적으로 그 값을 유지해야 할 필요가 있는 별도의 데이터를 저장하기 위해 사용하는 메모리 • 총 4K Bytes로 구성 • 내부 EEPROM 제어 레지스터 • ATmega128 내부 EEPROM 영역을 접근 • EEAR(EEPROM Address Register) • EEDR(EEPROM Data Register) • EECR(EEPROM Control Register)

  17. 데이터 메모리 • 내부 EEPROM 제어 레지스터 내부 EEPROM의 4KB를 나타내는 주소 내부 EEPROM의 데이터를 쓰거나 읽을 때 사용하는 8bit 데이터 레지스터 내부 EEPROM 컨트롤 레지스터

  18. 외부 인터페이스 • 외부 인터페이스 기능 특성 • 소프트웨어적으로 0 ~ 3개의 Wait Cycle 설정 가능 • ATmega103 모드 : 0 ~ 1개 Wait 설정 가능 • 외부 데이터 메모리 영역 -> 2개 섹터로 분할, 각각 독립 Wait Cycle 설정 • ATmega103 모드 : 지원하지 않음 • 16비트 어드레스 -> 상위 바이트 중 필요 개수만을 어드레스 버스로 동작 • ATmega103 모드 : 지원하지 않음 • 버스 키퍼 기능 설정 -> 데이터 버스의 신호들이 동작할 때, 전류 소비량 감소 • ATmega103 : 지원하지 않음

  19. 외부 인터페이스 • ATmega128의 외부 인터페이스 기본 설계

  20. 외부 인터페이스 • 외부 인터페이스 관련 레지스터 • MCUCR (MCU Control Register, 0x35(0x55)) • SRE(External SRAM/XMEM Enable) • 1이면 외부 메모리 인터페이스 활성화 (AD7-AD0, A15-A8, ALE, /RD, /WR 신호 활성화) • 0이면 외부 메모리 인터페이스 비활성화 (범용 포트로 동작, 데이터 방향 레지스터 사용 가능) • SRW10(Wait-state Select Bit) • XMCRA 레지스터의 SRWn비트와 조합하여 외부 메모리의 상위 섹터의 Wait-State 상태를 설정

  21. 외부 인터페이스 • XMCRA (External Memory Control Register A) • SRL2~0 (Wait state Selector Limit) • 외부 메모리 인터페이스 시, 두 개의 섹터로 분류하여 Wait-State를 다르게 지정 가능 • SRW01, 00 (Wait state Select Bit) • 외부 메모리의 하위 섹터의 Wait-State 설정 • SRW11 (Wait State Select Bit) • 외부 메모리의 상위 섹터의 Wait-State 상태를 설정

  22. 외부 인터페이스 • XMCRA (External Memory Control Register A) Wait State SRL2-0의 설정 SRL2-0값 * 0x2000 = Upper Sector 시작 주소

  23. 외부 인터페이스 • XMCRB (External Memory Control Register B) • XMBK (External Memory Bus-Keeper Enable) • 1이면 AD7-AD0 라인에 bus-keeper 활성화, XMEM 인터페이스가 3-state의 값을 유지하고 있어도 AD7-AD0 값은 이전의 값을 유지 • 0이면 bus-keeper 비활성화 • XMM2~0 (External Memory High Mask) • 외부 메모리의 상위 어드레스 바이트를 몇 개의 bit로 사용할지 설정

  24. 외부 인터페이스 • XMCRB (External Memory Control Register B) 외부 메모리 인터페이스가 설정되었을 때 포트 C 핀의 범용 포트 동작

More Related