KR101453865B1 - 이더넷 컨트롤러 - Google Patents

이더넷 컨트롤러 Download PDF

Info

Publication number
KR101453865B1
KR101453865B1 KR1020107009218A KR20107009218A KR101453865B1 KR 101453865 B1 KR101453865 B1 KR 101453865B1 KR 1020107009218 A KR1020107009218 A KR 1020107009218A KR 20107009218 A KR20107009218 A KR 20107009218A KR 101453865 B1 KR101453865 B1 KR 101453865B1
Authority
KR
South Korea
Prior art keywords
address
register
bank
interface
partial
Prior art date
Application number
KR1020107009218A
Other languages
English (en)
Other versions
KR20100087295A (ko
Inventor
마이클 사이먼즈
Original Assignee
마이크로칩 테크놀로지 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로칩 테크놀로지 인코포레이티드 filed Critical 마이크로칩 테크놀로지 인코포레이티드
Publication of KR20100087295A publication Critical patent/KR20100087295A/ko
Application granted granted Critical
Publication of KR101453865B1 publication Critical patent/KR101453865B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Abstract

본 발명은, I/O 인터페이스를 통해 명령들 및 데이터를 수신하도록 동작하는 제어 유닛; 복수의 레지스터 뱅크들로 분할된 레지스터 블록 내에 배열되며, 그 중 적어도 하나는 컨트롤러의 기능을 제어하는 복수의 레지스터들; 수신된 데이터에 의해 제공되는 직접 어드레스와, 수신된 명령으로부터의 부분 어드레스 및 뱅크 레지스터 내에 저장된 뱅크 어드레스에 의해 제공되는 조합 어드레스와, 복수의 미리 정의된 어드레스들 중에서 수신된 명령에 의해 선택되는 어드레스를 적어도 포함하는 복수의 어드레싱 체계들에 의해 상기 복수의 레지스터들 중 하나에 액세스하기 위한 로직을 포함하는 레지스터 어드레스 유닛;을 포함하는 컨트롤러를 제공한다.

Description

이더넷 컨트롤러{ETHERNET CONTROLLER}
본 발명은 이더넷 컨트롤러에 관한 것이다.
이더넷 컨트롤러, 특히 독립형(stand alone) 이더넷 컨트롤러들은, 모든 타입의 마이크로프로세서 또는 마이크로컨트롤러를 위한 이더넷 네트워크 인터페이스로서 기능할 수 있도록 설계된다. 이러한 컨트롤러는, 매우 큰 메모리를 가질 수 있으며, 직렬 주변장치 인터페이스(SPI)와 같은 전용 인터페이스를 포함할 수 있다. 일부 실시예에 있어서, 이러한 이더넷 컨트롤러는, SPI 버스 또는 다른 가능한 인터페이스 접속을 이용하는 마이크로컨트롤러 내에 집적될 수도 있다. 이더넷 컨트롤러는, 모든 통신 프로토콜들을 처리하고, 입출력되는 메시지들의 중간 저장을 위한 큰 버퍼를 포함한다. 독립형 이더넷 컨트롤러 또는 집적된 이더넷 컨트롤러는, 패킷 필터링뿐만 아니라 입출력되는 데이터 패킷들의 조정을 행한다. 이더넷 컨트롤러는, 고속 데이터 처리량 및 하드웨어를 사용한 체크섬 계산을 위한 내부 직접 메모리 액세스(DMA) 모듈을 더 포함할 수 있다. 이더넷 컨트롤러와 마이크로컨트롤러 또는 마이크로프로세서 사이의 통신은, 인터럽트 드리븐(interrupt driven)에 의해 확립될 수 있다. 마이크로컨트롤러 또는 마이크로프로세서는, SPI 인터페이스를 통해 통신하여 이더넷 컨트롤러를 제어한다. 이를 위해, 이더넷 컨트롤러는, 인터페이스를 통해 수신된 제한된 분량의 명령들을 번역하고 실행하는 시스템 제어 유닛을 포함한다. 다양한 제어 기능들이, 복수의 제어 레지스터들을 통해 제공될 수 있다. SPI 인터페이스를 갖는 이더넷 컨트롤러에 있어서, 명령들은 8-비트 폭을 가지며, 그에 따라, 제한된 수의 비트들(예를 들면, 5 비트)이 레지스터를 어드레스하는 데에 이용될 수 있다. 하지만, 이는 단지 32개의 서로 다른 레지스터들로의 액세스를 허용할 뿐이다. 예를 들어 이더넷 컨트롤러가 100개 이상의 레지스터들을 갖는다면, 모든 레지스터들에 대한 직접 액세스를 위해서는 하나 이상의 명령 바이트가 필요하다.
레지스터들에 대한 고속의 판독 액세스 및 기록 액세스를 제공하기 위하여, 뱅킹 체계(banking scheme)가 자주 이용된다. 하지만, 각각의 뱅크는 레지스터들의 개수가 제한되고, 언제라도 액세스 가능할 필요가 있는 중요 레지스터들은 모든 뱅크들에 미러링(mirroring)될 필요가 있다. 이는, 추가적으로 이용가능한 레지스터들의 개수를 더욱 제한하게 된다.
본 발명의 실시예에 따르면, 이더넷 컨트롤러는, I/O 인터페이스를 통해 명령들 및 데이터를 수신하도록 동작하는 제어 유닛; 복수의 레지스터 뱅크들로 분할된 레지스터 블록 내에 배열되며, 그 중 적어도 하나는 컨트롤러의 기능을 제어하는 복수의 레지스터들; 수신된 데이터에 의해 제공되는 직접 어드레스와, 수신된 명령으로부터의 부분 어드레스 및 뱅크 레지스터 내에 저장된 뱅크 어드레스에 의해 제공되는 조합 어드레스와, 복수의 미리 정의된 어드레스들 중에서 수신된 명령에 의해 선택되는 어드레스를 적어도 포함하는 복수의 어드레싱 체계들에 의해 상기 복수의 레지스터들 중 하나에 액세스하기 위한 로직을 포함하는 레지스터 어드레스 유닛;을 포함한다.
또한, 또다른 실시예에 따르면, 상기 뱅크 레지스터는, 상기 레지스터 블록 내의 단일 어드레스를 갖다. 또다른 실시예에 따르면, 상기 레지스터 어드레스 유닛은, 상기 레지스터 뱅크에 어드레싱하기 위하여 상기 레지스터 뱅크에 연결된 어드레스 레지스터를 포함한다. 또다른 실시예에 따르면, 상기 어드레스 레지스터는 제어가능한 자동 증가 유닛에 연결된다. 또다른 실시예에 따르면, 상기 조합된 어드레스는, 상기 부분 어드레스 및 상기 뱅크 어드레스를 조합하여 생성되고, 여기에서, 상기 부분 어드레스는 최하위 비트들을 형성하고 상기 뱅크 어드레스는 상기 조합된 어드레스의 최상위 비트들을 형성한다. 또다른 실시예에 따르면, 상기 조합 어드레스는, 상기 부분 어드레스를 상기 뱅크 어드레스에 추가함으로써 생성된다. 또다른 실시예에 따르면, 상기 어드레스 레지스터는, 상기 미리 정의된 어드레스들, 상기 직접 어드레스, 및 상기 조합 어드레스 중 하나를 수신하는 제1 멀티플렉서의 출력에 연결된다. 또다른 실시예에 따르면, 복수의 뱅크 어드레스들을 수신하고 상기 뱅크 어드레스를 출력하는 제2 멀티플렉서를 더 포함한다. 또다른 실시예에 따르면, 상기 I/O 인터페이스는 SPI 인터페이스이다. 또다른 실시예에 따르면, 상기 컨트롤러는 이더넷 컨트롤러이다.
또다른 실시예에 따르면, 복수의 레지스터들을 구비한 레지스터 뱅크를 포함하는 컨트롤러의 동작을 제어하기 위한 방법으로서: I/O 인터페이스를 통해 명령을 수신하는 단계; 상기 명령을 디코딩하는 단계 및, 상기 I/O 인터페이스를 통해 직접 어드레스를 수신하거나 상기 명령으로부터 부분 어드레스를 추출하거나 또는 복수의 미리 정의된 어드레스들 중에서 상기 명령을 통해 어드레스를 선택함으로써, 상기 명령에 따라 어드레스를 결정하는 단계; 부분 어드레스를 추출한 경우, 상기 부분 어드레스를 뱅크 레지스터에 저장된 뱅크 어드레스와 결합하는 단계; 판독 액세스 또는 기록 액세스를 위하여 상기 어드레스를 이용하여 상기 레지스터 뱅크에 어드레싱하는 단계;를 포함하는 방법을 제공한다.
또다른 실시예에 따르면, 상기 뱅크 레지스터는, 상기 레지스터 블록 내의 단일 어드레스를 갖는다. 또다른 실시예에 따르면, 상기 부분 어드레스를 결합하는 단계는, 상기 부분 어드레스를 최하위 비트로 하고 상기 뱅크 어드레스를 최상위 비트로 하여 조합하는 단계를 포함한다. 또다른 실시예에 따르면, 상기 부분 어드레스를 조합하는 단계는, 상기 부분 어드레스를 상기 뱅크 어드레스에 추가하는 단계를 포함한다. 또다른 실시예에 따르면, 상기 디코딩하는 단계는, 기록 명령을 디코딩하는 단계를 포함하고, 첫번째 데이터가 상기 어드레스의 상기 레지스터 뱅크에 기록되는 데이터를 상기 I/O 인터페이스를 통해 수신하는 단계 및 상기 어드레스를 증가시킨 후 상기 레지스터 뱅크에 기록되는 추가적인 데이터를 상기 I/O 인터페이스를 통해 수신하는 단계를 더 포함한다. 또다른 실시예에 따르면, 상기 추가적인 데이터를 수신하고 기록하는 단계는, 제어 신호가 상기 I/O 인터페이스를 통해 수신될 때까지 반복된다. 또다른 실시예에 따르면, 상기 제어 신호는 칩 선택 신호이다. 또다른 실시예에 따르면, 상기 디코딩하는 단계는, 판독 명령을 디코딩하는 단계를 포함하고, 또한, 상기 방법은: 첫번째 데이터가 상기 어드레스의 상기 레지스터 뱅크로부터 판독되는 데이터를 상기 I/O 인터페이스를 통해 전송하는 단계 및 상기 어드레스를 증가한 후 상기 레지스터 뱅크로부터 추가적인 데이터를 판독하고 상기 I/O 인터페이스를 통해 상기 추가적인 데이터를 전송하는 단계를 더 포함한다. 또다른 실시예에 따르면, 상기 추가적인 데이터를 판독하고 전송하는 단계는, I/O 인터페이스를 통해 제어 신호가 수신될 때까지 반복된다. 또다른 실시예에 따르면, 상기 제어 신호는 칩 선택 신호이다. 또다른 실시예에 따르면, 상기 I/O 인터페이스는 SPI 인터페이스이다. 또다른 실시예에 따르면, 상기 컨트롤러는 이더넷 컨트롤러이다.
본 발명의 또다른 기술적 장점들은, 첨부한 도면들, 상세한 설명, 및 청구항들에 의해 본 기술 분야의 당업자에게 쉽게 이해될 수 있을 것이다. 본 출원서의 다양한 실시예들은, 개시된 장점들의 단지 일부분만을 포함하는 것일 수 있다. 어떠한 장점도 그 실시예들에서 필수적인 것은 아니다.
비록, 본 발명의 실시예들이, 일례를 참조하여 도시되고 설명되고 정의되었지만, 이러한 참조는 본 발명의 제한을 의미하는 것이 아니고, 그러한 제한을 암시하는 것도 아니다. 개시된 사항은, 형태 및 기능의 측면에서 다양한 수정, 치환 및 균등이 가능하며, 이는 본 발명의 기술 분야에서의 당업자 또는 본 발명에 의해 이익을 취할 수 있는 자에 의해 이루어질 수 있다. 묘사되고 설명된 본 발명의 실시예들은, 단지 예시인 것으로서, 본 발명의 범위의 전부인 것은 아니다.
동일한 구성에 대해서는 동일한 참조 번호를 부여한 첨부 도면들을 참조한 이하의 설명을 통해, 본 개시 및 장점들을 더욱 완전하게 이해할 수 있다.
도 1은, 독립형 이더넷 컨트롤러 또는 마이크로컨트롤러를 위한 집적 모듈 내에서 이용되는, 이더넷 컨트롤러 모듈의 블록도이다.
도 2a 및 2b는, 이더넷 컨트롤러 내의 레지스터들로의 액세스를 위한 제어 로직의 또다른 실시예를 나타낸 도면이다.
도 3은, 실시예에 따른 제어 레지스터의 일례를 나타낸다.
도 4는, 실시예에 따른 이더넷 컨트롤러로 및 여기로부터의 명령/어드레스/데이터의 흐름을 나타낸다.
도 1은, 컨트롤러의 실시예로서, 독립형 이더넷 컨트롤러이거나 또는 예를 들면 마이크로컨트롤러 내에 집적된 이더넷 컨트롤러 모듈일 수 있는 이더넷 컨트롤러(100)에 대한 블록도이다. 이더넷 컨트롤러(100)는, 네트워크상에서 실제적인 아날로그 데이터를 전송하고 수신하기 위한 전송 유닛(TX) 및 수신 유닛(RX)을 갖는 전형적인 물리 계층(PHY)(170)을 포함한다. 이 물리 계층(170)은, 현행의 이더넷 표준(IEEE 802.3)을 구현하기 위한 매체 접근 제어(MAC) 데이터 링크 계층(150)에 연결되어 있다. Mac 계층(150)은, 필터 유닛들, 흐름 제어 및 호스트 인터페이스들을 각각 구비할 수 있는 수신 유닛(135) 및 전송 유닛(145)에 연결되어 있다. 또한, 이더넷 컨트롤러는, 예를 들면 체크섬 평가를 수행할 수 있는 직접 메모리 액세스(DMA) 컨트롤러(140)를 포함할 수 있다. 조정기(arbiter)(130)는, 실제 버퍼(125)와 모듈들(135, 140 및 145) 사이의 연결을 스위칭하도록 구현될 수 있다. 버퍼는 듀얼 포트 버퍼로 설계될 수 있고, 그에 따라, 제한된 어드레스 용량들을 갖는 인터페이스들이 버퍼의 전체 범위에 액세스할 수 있도록 하기 위해, 제어 레지스터들에 의한 액세스를 제공한다. 이를 위해, 복수의 어드레스 및 데이터 레지스터들(120)이, 버퍼(125)에 대한 간접 어드레스를 위해 제공될 수 있다. 버퍼 제어 레지스터들(120)은, 버스 인터페이스(115)에 연결될 수 있으며 또한 직렬 또는 병렬 입력/출력(I/O) 인터페이스(105)에 연결될 수 있다. 직렬 I/O 인터페이스는, 예를 들면, SPI 인터페이스이거나 또는 다른 적절한 내부 회로 인터페이스일 수 있다. 그 결과, I/O 인터페이스는, 예를 들면, 칩 선택 입력핀(CS), 하나 또는 다수의 데이터 입력/출력핀들, 및 클록 입력핀을 포함할 수 있다. 버스 인터페이스(115)는, 이더넷 컨트롤러(100)에 대한 추가적인 제어를 제공하기 위한 추가적인 인터럽트 신호들을 제공할 수도 있다.
이더넷 컨트롤러(100)는, 이더넷 컨트롤러(100)의 각각의 유닛들을 제어하는 시스템 제어 유닛(110)에 의해 내부적으로 제어될 수 있다. 더욱, 후술할 인터페이스(105)를 통해 액세스가능한 복수의 제어 레지스터들(190)이 제공될 수 있다. 버퍼 액세스 레지스터들(120)은, 점선으로 표시된 바와 같이, 제어 레지스터들(190)(CRB)의 일부일 수도 있다. 또한, MAC 계층은, CRB 내의 레지스터들을 통해 액세스가능한 추가적인 레지스터들을 포함할 수도 있다. 패킷 카운터(185)는, 전송된 패킷들의 개수를 카운트하기 위해 제공될 수 있다. Mac 계층(150) 및/또는 전송 로직(135) 및 수신 로직(145)은, 자동 증가 기능을 위하여, 이 패킷 카운터에 연결될 수 있다. 또한, 시스템 제어 유닛(110)은, 이 카운터상에서의 소프트웨어 제어되는 감소 기능을 수행하기 위해, 패킷 카운터에 연결될 수 있다. 카운터 값은, CRB 내의 특수 기능 레지스터에 매핑될 수 있다.
시스템 제어 유닛(110)은, 직렬 또는 병렬 인터페이스(105)로부터 명령들(조작코드(opcode))을 수신하고, 이러한 명령들의 디코딩을 제공한다. 명령들은, 적어도 일부 또는 전체의 레지스터들에 대한 판독 및 기록을 제공할 수 있고, 그에 의해 각각의 컨트롤러에서의 어떠한 기능들의 실행을 유발한다. 특히, 시스템 제어(110)는, 후술하는 바와 같이, 버퍼(125)로의 판독 및 기록 액세스를 수행하도록, 각각의 제어 시퀀스들을 제공할 수 있다. 클록 유닛(160)은, 필수적인 이더넷 전송 클록 신호를 제공한다.
도 2a는, 이더넷 컨트롤러의 기능을 제어하기 위한 복수의 레지스터들로의 액세스를 위한 제어 로직에 대한 실시예의 특정 부분을 상세히 보여준다. 제어 레지스터 유닛(190)은, 4개의 블록으로 나누어진다. 각각의 블록은, 예를 들면, 32 레지스터들을 포함한다. 이렇게, 유닛(190)은, 단일 바이트에 의해 어드레싱될 수 있는 128개의 서로 다른 레지스터들을 포함할 수 있다. 레지스터들에 대한 또다른 분할 및 개수도 적용가능하다. 도 2에 도시된 어드레싱 로직은, 세 가지의 서로 다른 액세스 방법들을 허용한다. 이를 위해, 멀티플렉서(210)는, 세 개의 서로 다른 입력들, 선택 입력(Adr_Select), 및 어드레스 레지스터 또는 어드레스 레지스터 뱅크(190)로 이용되는 랫치(240)에 연결된 하나의 출력을 포함한다. 신호 Adr_Select는, 서로 다른 액세스 방법들을 선택하고, 이더넷 컨트롤러로 보내진 명령으로부터 디코딩된다. 만약 Adr_Select가 도 2에 도시된 입력 1을 선택하면, 제어 레지스터들(190)의 어드레싱은 뱅킹 체계를 이용하여 수행된다. 이 경우, 이더넷 컨트롤러(100)로 보내진 명령은, 레지스터의 부분적 어드레스를 포함하는 한 개의 조작코드로 구성된다. 제어 레지스터 유닛(190) 내의 지정된 레지스터는, 멀티플렉서(220)가 예를 들면 4개의 뱅크 시작 어드레스들 중 하나를 선택하도록 제어한다. 이러한 뱅크 시작 어드레스들(000, 001, 010, 011)은, 최상위 비트들로서 이용되며, 어드레스 신호들 Adr의 남은 5개의 하위 비트들과 결합된다. 이렇게, 본 실시예에 따른 뱅킹 체계는, 명령에 의해 제공된 5비트들과 뱅크 레지스터에 의해 선택된 고정된 상위 3 비트들을 이용한다. 본 실시예에 따르면, 도 2에 도시된 일례에서는 단지 4 뱅크들을 이용하고 있지만, 각각 32 레지스터를 갖는 8 뱅크들이 적용가능하다. 본 발명의 기술 분야의 당업자가 인식하고 있듯이, 명령 바이트 또는 워드의 설계에 의존하여, 다른 뱅크 구조들이 정의될 수도 있다. 뱅크 레지스터는, 제어 레지스터 블록(190) 내에 위치할 수 있으며, 모든 뱅크들 내에서 동일 어드레스로써 이용할 수도 있다. 하지만, 예를 들면, 고정된 어드레스 블록(220) 또는 다른 적절한 위치에 저장되어질 수도 있다.
Adr_Select가 입력 2를 선택한 경우에는, 명령은, 예를 들면 2 바이트를 포함하는데, 첫번째 바이트는 조작코드이고 두 번째 바이트는 제어 레지스터 유닛(190) 내의 레지스터에 대한 실제 어드레스이다. 본 실시예에서는 단지 128 또는 그 이하의 레지스터들이 이용되었지만, 이 체계는 제어 레지스터 유닛(190)의 256개까지의 서로 다른 레지스터들에 대한 직접적인 어드레싱을 허용할 수 있다. 이러한 방식의 어드레싱은 모든 레지스터들에 대하여 액세스가능하도록 할 수 있지만, 이더넷 컨트롤러(100)로 2 바이트들이 전송되어질 것을 요구하기 때문에, 동작 속도를 느리게 할 것이다.
Adr_Select가 입력 3을 선택한 경우에는, 소정 개수의 레지스터들이 단일 바이트 명령을 통해 직접적으로 액세스되어질 수 있다. 뱅크 선택 레지스터, 흐름 제어 레지스터들, 인터럽트 제어 등과 같은 복수의 레지스터들은, 언제라도 액세스가능해야할 필요가 있다. 하지만, 레지스터들에 액세스할 때의 임계적인 동작들이 뱅킹 체계를 통해 바람직하게 수행되는 시간에 맞추어, 그러한 레지스터들은 직접적으로 액세스되지 않을 수도 있다. 그래서, 상술한 바와 같이, 기존의 이더넷 컨트롤러들은, 그러한 임계적인 레지스터들을 각각의 뱅크로 매핑하였다. 하지만, 이러한 구성은, 레지스터 공간을 낭비하게 되며 레지스터 개수를 현저하게 감소시킨다. 그래서, 일 실시예에서는, 동작을 위한 최상위 레지스터들이 식별되고, 그들의 어드레스들이 예를 들면 블록(230)에 저장된다. 이렇게, 레지스터들의 제한된 부분집합을 위하여, 1 바이트 명령들이 판독 및/또는 기록 액세스를 위하여 제공된다. 블록(230)으로부터의 이러한 어드레스들의 선택은, 이더넷 컨트롤러(100)로 전송된 각각의 1 바이트 조작코드를 디코딩함으로써 수행된다. 이러한 어드레싱 체계들 중 어느 것이라도, 임의의 어드레싱가능한 레지스터들의 어느 비트에 대해서 판독/기록 또는 세트하는 데에 이용될 수 있다.
자동 증가 기능은, 자동 증가 유닛(250)을 어드레스 레지스터(240)에 연결함으로써 구현될 수 있다. 자동 증가 유닛(250)은, 레지스터 뱅크(190)로의 액세스가 완료된 이후에, 레지스터(240) 내의 어드레스를 증가시킨다. 이를 위해, 자동 증가 유닛(250)은, 이러한 기능의 활성화 및 비활성화를 위한 제어 입력을 포함할 수 있다. 더욱, 자동 증가 기능은, 레지스터 뱅크(190)의 종료 어드레스에 도달하면 레지스터(240)의 어드레스를 0x0000으로 리셋하는, 랩 어라운드 기능(wrap around function)을 포함할 수 있다.
상술한 바와 같이, 버퍼 제어 레지스터들(120)은, 제어 레지스터 블록(190)의 일부분일 수 있다. 하지만, 버퍼 제어 레지스터들(120)에 액세스하는 제어 로직은, 명령에 의존하는 다른 제어 레지스터들과는 다른 액세스 기능을 수행할 수도 있다. 버퍼 레지스터들에 대한 판독 또는 기록을 위한 구체적인 명령들이 이더넷 인터페이스로 보내지면, 상술한 바와 같이 시스템 제어(110)가 이 레지스터들에 액세스한다. 하지만, 패킷 판독 또는 기록 명령이 이더넷 인터페이스로 보내지면, 이 레지스터들이 상기한 다양한 방법들 중 하나를 이용하여 선택되어질 수 있을지라도, 그들은, 각각의 레지스터로의 판독/기록 기능을 수행하기 위해 어드레싱되어지는 것이 아니라 오히려 패킷 버퍼에 간접적으로 판독 및 기록하기 위해 이용된다. 그 결과, 제어 레지스터 액세스 로직은, 서로 다른 레지스터 액세스 모드들을 구별하도록 설계된다.
도 2b는, 버퍼 제어 레지스터들(120)이 제어 레지스터 블록(190)으로부터 분리되어 있는, 다른 실시예를 나타낸다. 이러한 설계는, 판독/기록 기능을 위해 직접적으로만 어드레싱되어야 하는 모든 레지스터가 제어 레지스터 블록(190) 내에 통합되고, 간접 액세스 및 직접 액세스에 이용될 수 있는 레지스터들은 블록(120)에 배열되도록 함으로써 액세스 로직을 용이하게 구별할 수 있게 한다. 일 실시예에서, 이 레지스터들은, 예를 들면, 최상위 어드레스 비트들로서 "100"을 가짐으로써, 뱅킹 체계로부터 분리될 수 있다. 하지만, 다른 실시예에서, 이 레지스터들은, 예를 들면, 추가적인 5번째 뱅크를 통해 액세스되어질 수도 있다. 도 2b에 도시된 바와 같이, 패킷 버퍼(125)에 액세스하기 위한 특유의 조작코드들에 관하여 이하에 상세하게 설명되어 있는 것처럼, 이러한 레지스터들은 패킷 버퍼 어드레스 레지스터들일 수 있다.
인터페이스(105)를 통한 이더넷 컨트롤러의 통신 및 제어는, 도 4에 도시된 바와 같이, 프로세서 또는 마이크로컨트롤러에 의해 보내진 명령들에 의해 수행된다. 이를 위해 첫번째 바이트(400)(Byte0)가 이더넷 컨트롤러로 보내진다. 이 Byte0은 조작코드를 포함하고, 또한 부분 어드레스(partial address)를 포함할 수 있다. 만약 조작코드가 기록 명령을 엔코딩하면, 하나 또는 복수의 바이트들(410, 420)(Byte1, Byte2, 등..)이, 이어지는 사이클들에서 인터페이스로 보내질 수 있다. 복수의 기록 명령들은, 인터페이스에서 수신된 데이터가 연속적인 어드레스들 내에 기록되는 버스트 모드(burst mode)로 동작하는데, 이때 시작 어드레스는 Byte0 또는 Byte1 내에 제시된 첫번째 어드레스에 의해 정의된다. 이러한 자동 버스트 모드를 종료하기 위하여, 인터페이스에서의 제어 신호가 그러한 자동 버스트 모드를 종료하기 위해 이용될 수 있다. 예를 들면, 칩 선택 신호(CS)가, 버스트의 종료를 표시하기 위해 무효(negate)될 수 있다. 이렇게 하여, 단일 또는 다중 데이터 전송들이, 도 4에 표시된 바와 같은 버스트 전송을 트리거하는 각각의 명령에 이어서 수행될 수 있다.
만약 조작코드가 판독 명령을 엔코딩하면, 하나 또는 복수의 바이트들(430, 440)(Byte1, Byte2, 등..)이, 이어지는 사이클들에서 프로세서 또는 마이크로프로세서로 리턴된다. 다시, 칩 선택 신호가, 얼마나 많은 리턴 데이터가 프로세서로 되돌려 보내질 지를 결정하기 위해 이용될 수 있다. 도 4에 도시된 바와 같이, Byte0은 판독 조작코드를 전송하기 위해 이용된다. Byte0 내에 담겨진 어드레스의 경우에 있어서는, 다음번 바이트(430)가 이더넷 컨트롤러(100)로부터 프로세서 또는 마이크로 컨트롤러로 전송될 것이다. 긴(long) 어드레스의 경우에 있어서는, 이더넷 컨트롤러(100)로 전송된 Byte1은 어드레스를 포함하고, Byte2는 이더넷 컨트롤러(100)로부터 리턴된 첫번째 데이터가 될 것이다. 칩 선택 신호가 프로세서 또는 마이크로컨트롤러에 의해 무효되는 경우에는, 하나 또는 복수의 데이터가 이더넷 컨트롤러(100)에 의해 리턴되어진다. 몇몇의 명령들을 위하여, 자동 증가 기능은 원래 제시된 어드레스를 자동으로 증가시킨다. 하지만, 몇몇의 명령들은, 명확한 선택 및 자동 증가 기능을 요구할 것이다. 이렇게 하여, 이더넷 컨트롤러(100)는, 버스트 모드에서, 지속적인(constant) 어드레스로부터 데이터를 전송할 수 있다.
이어서, 다양한 예시로서의 명령들, 그들의 구조 및 기능이 설명된다. 모든 예시적 명령들은 이어지는 표 1 내지 표 3에 요약되어 있다.
먼저, 특수 기능 레지스터 비트들을 세트/클리어하는 모든 조작코드들의 동작이 설명될 것이다. 도 3은, 이더넷 컨트롤러의 특정 동작들을 제어하는 제어 레지스터(300)의 일례를 보여준다. 특정 비트들의 기능은 각각의 조작코드들과 관련지어 설명될 것이다. 이러한 조작코드들은 다음과 같다.
RESET OPCODE
이 조작코드는, 구성 레지스터 내의 제어 레지스터 비트(SOFTRST)를 세트하며, 이는 디바이스의 소프트 리셋을 유발한다.
FCDIS OPCODE
이 조작코드는, 흐름 제어를 디스에이블시키기 위해, 제어 레지스터(300) 내의 두 개의 레지스터 비트들(8 및 9)을 00(FCDISABLE 모드)으로 세트한다.
FCSINGLE OPCODE
이 조작코드는, 단일 전송을 위한 흐름 제어를 인에이블시키기 위해, 제어 레지스터(300) 내의 두 개의 레지스터 비트들(8 및 9)을 01(FCSINGLE 모드)로 세트한다.
FCMULTIPLE OPCODE
이 조작 부호는, 다중 전송들을 위한 흐름 제어를 인에이블시키기 위해, 제어 레지스터(300) 내의 두 개의 레지스터 비트들(8 및 9)을 10(FCMULTIPLE 모드)으로 세트한다.
FCCLEAR OPCODE
이 조작코드는, 흐름 제어를 중지시키기 위해, 제어 레지스터(300) 내의 두 개의 레지스터 비트들(8 및 9)을 11(FCCLEAR 모드)로 세트한다.
WPKTCDEC OPCODE
이 조작코드는, 제어 레지스터(300) 내의 PKTCDEC 레지스터 비트(7)를 세트하며, 이는 패킷 카운터의 감소를 유발한다.
UDAEN OPCODE
이 조작코드는, 제어 레지스터(300) 내의 UDAEN 레지스터 비트(6)를 세트하며, 이는 사용자 정의 영역 내에서의 어드레스 랩-어라운드를 인에이블시킨다.
UDADIS OPCODE
이 조작코드는, 제어 레지스터(300) 내의 UDAEN 레지스터 비트(6)를 클리어하며, 이는 사용자 정의 영역 내에서의 어드레스 랩-어라운드를 디스에이블시킨다.
DMACOPY OPCODE
이 조작코드는, 제어 레지스터(300) 내의 3개의 DMA 제어 레지스터 비트들(3, 4, 5)을 110으로 세트하며, 이는 $0000의 초기 체크섬 값을 갖고 DMA 복사 동작을 시작시킬 것이다.
DMACOPYU OPCODE
이 조작코드는, 제어 레지스터(300) 내의 3개의 DMA 제어 레지스터 비트들(3, 4, 5)을 111로 세트하며, ECKSUM 레지스터로부터 로드된 초기 체크섬 값을 갖고 DMA 복사 동작을 시작시킬 것이다.
DMACKSUM OPCODE
이 조작코드는, 제어 레지스터(300) 내의 3개의 DMA 제어 레지스터 비트들(3, 4, 5)을 100으로 세트하며, 이는 $0000의 초기 체크섬 값을 갖고 DMA 체크섬 동작(DMA Checksum Only Operation)을 시작시킬 것이다.
DMACKSUMU OPCODE
이 조작코드는, 제어 레지스터(300) 내의 3개의 DMA 제어 레지스터 비트들(3, 4, 5)을 101로 세트하며, 이는 ECKSUM 레지스터로부터 로드된 초기 체크섬 값을 갖고 DMA 체크섬 동작을 시작시킬 것이다.
DMASTOP OPCODE
이 조작코드는, 제어 레지스터(300) 내의 DMASTART 레지스터 비트(2)를 클리어하며, 이는 현재의 DMA 동작을 중지시킨다.
TXSTART OPCODE
이 조작코드는, 제어 레지스터(300) 내의 TXRTS 레지스터 비트(1)를 세트하며, 이는 패킷의 전송을 시작하도록 한다.
TXSTOP OPCODE
이 조작코드는, 제어 레지스터(300) 내의 TXRTS 레지스터 비트(1)를 클리어하며, 이는 패킷의 전송을 중지시킨다.
RXSTART OPCODE
이 조작코드는, 제어 레지스터(300) 내의 RXEN 레지스터 비트(0)를 세트하며, 이는 패킷들의 수신을 인에이블시킨다.
RXSTOP OPCODE
이 조작코드는, 제어 레지스터(300) 내의 RXEN 레지스터 비트(0)를 클리어하며, 이는 패킷들의 수신을 중지시킨다.
SETIRQIE OPCODE
이 조작코드는, 인터럽트 제어 레지스터 내의 IRQIE 레지스터를 세트하며, 이는 인터럽트들을 인에이블시킨다.
CLRIRQIE OPCODE
이 조작코드는, 인터럽트 제어 레지스터 내의 IRQIE 레지스터를 클리어하며, 이는 인터럽트들을 디스에이블시킨다.
다음, 내부 뱅크 선택 레지스터(BANKSEL[1:0])를 판독 또는 기록하는 모든 조작코드들의 동작이 설명된다. 이러한 조작코드들은 다음과 같다:
4개의 뱅크들 중 하나를 선택하기 위한 B0SEL, B1SEL, B2SEL, B3SEL과, 어떤 뱅크가 현재 선택되었는지를 판독하기 위한 RBSEL이 있다. 뱅크 선택 WRITE 명령은 조작코드[7:3]=5'b11000이 이더넷 컨트롤러로 보내진 경우에 수행될 수 있으며, 기록될 값은 조작코드[2:1]에 존재한다. 이는, 하나의 바이트를 가지며 또한 뱅크 선택 레지스터를 모든 뱅크들에 미러링할 필요성도 없이 뱅크 선택 WRITE 조작코드들에 대한 디코딩을 가능하게 한다. 이 명령을 통해, 각각의 선택 레지스터는, 어떤 뱅크가 선택되었는지에 대하여 독립적인 단일 바이트 명령을 가지고, 직접 액세스되어질 수 있게 된다.
다음, SFR 레지스터들에 판독 또는 기록하는 모든 조작코드들의 동작을 설명한다.
RCR OPCODE
이 조작코드는, 뱅크 선택 레지스터 및 Byte0 내의 어드레스(어드레스[4:0])에 의해 지정된 CRB/MAC 레지스터로부터 판독한다. 판독 데이터는 다음 바이트로 리턴되고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠를 수신하기 위하여, 이 명령은 칩 선택(CSn) 핀을 무효화(negate)함으로써 종료되어져야만 한다. 그렇지않으면, 리턴된 다음 바이트는 어드레스[4:0]+1이 될 것이고, 이어서 어드레스[4:0]+2 등으로 될 것이다. 어드레스[4:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
RCRU OPCODE
이 조작코드는, 뱅크 선택 레지스터를 이용하지 않고 CRB/MAC 레지스터로부터 판독한다. Byte1은 그 레지스터의 7-비트 레지스터 어드레스 전체를 포함한다. 판독 데이터는 다음 바이트로 리턴되고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠를 수신하기 위하여, 이 명령은 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 리턴된 다음 바이트는, 어드레스[4:0]+1이 될 것이고, 이어서 어드레스[4:0]+2 등으로 될 것이다. 어드레스[4:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
WCR OPCODE
이 조작코드는, 뱅크 선택 레지스터 및 Byte0 내의 어드레스(어드레스[4:0])에 의해 지정된 CRB/MAC 레지스터에 기록한다. 기록 데이터는 다음 바이트에 나타내어지고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠를 전송하기 위하여, 이 명령은 칩 셀렉트(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 기록된 다음 바이트는 어드레스[4:0]+1이 될 것이고, 이어서 어드레스[4:0]+2 등으로 될 것이다. 어드레스[4:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
WCRU OPCODE
이 조작코드는, 뱅크 선택 레지스터를 이용하지 않고 CRB/MAC 레지스터에 기록한다. Byte1은 그 레지스터의 7-비트 레지스터 어드레스 전체를 포함한다. 기록 데이터는 다음 바이트에 나타내어지고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠를 전송하기 위하여, 이 명령은 칩 셀렉트(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 기록된 다음 바이트는 어드레스[7:0]+1이 될 것이고, 이어서 어드레스[7:0]+2 등으로 될 것이다. 어드레스[7:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
BFS OPCODE
이 조작코드는, 뱅크 선택 레지스터 및 Byte0 내의 어드레스(어드레스[4:0])에 의해 지정된 CRB 레지스터 내의 개별적인 비트들을 세트한다. 세트 마스크는 다음 바이트 내에 나타내어지고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠를 마스크하기 위해, 이 명령은 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 변경된 다음 바이트는 어드레스[4:0]+1이 될 것이고, 이어서 어드레스[4:0]+2 등이 될 것이다. 어드레스[4:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
BFSU OPCODE
이 조작코드는, 뱅크 선택 레지스터를 이용하지 않고 CRB 레지스터 내의 개별적인 비트들을 세트한다. Byte1은 그 레지스터의 7-비트 레지스터 어드레스 전체를 포함한다. 세트 마스크는 다음 바이트 내에 나타내어지고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠 내의 비트들을 세트하기 위해, 이 명령은 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 변경된 다음 바이트는 어드레스[7:0]+1이 될 것이고, 이어서 어드레스[7:0]+2 등이 될 것이다. 어드레스[7:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
BFC OPCODE
이 조작코드는, 뱅크 선택 레지스터 및 Byte0 내의 어드레스(어드레스[4:0])에 의해 지정된 CRB 레지스터 내의 개별적인 비트들을 클리어한다. 클리어 마스크는 다음 바이트 내에 나타내어지고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠 내의 클리어 마스크를 전송하기 위해, 이 명령은 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 변경된 다음 바이트는 어드레스[4:0]+1이 될 것이고, 이어서 어드레스[4:0]+2 등이 될 것이다. 어드레스[4:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
BFCU OPCODE
이 조작코드는, 뱅크 선택 레지스터를 이용하지 않고 CRB 레지스터 내의 개별적인 비트들을 클리어한다. Byte1은 그 레지스터의 7-비트 레지스터 어드레스 전체를 포함한다. 클리어 마스크는 다음 바이트 내에 나타내어지고, 내부 SFR 어드레스 레지스터는 1씩 증가한다. 단일 레지스터 컨텐츠를 위한 클리어 마스크를 전송하기 위해, 이 명령은 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다. 그렇지않으면, 변경된 다음 바이트는 어드레스[7:0]+1이 될 것이고, 이어서 어드레스[7:0]+2 등이 될 것이다. 어드레스[7:0]가 $FF에 도달하면, 뱅크 선택 레지스터에는 영향을 미치지 않으면서 $00으로 롤백할 것이다.
조작코드들 RCR/WCR/BFS/BFC 및 RCRU/WCRU/BFSU/BFCU 조작코드들 사이의 기본적인 차이점은, 어드레스 포맷이다. RCR/WCR/BFS/BFC 조작코드들에 있어서, 내부의 BANKSEL[1:0] 레지스터는, SFR 레지스터 어드레스의 비트들 6:5를 구동한다. RCRU/WCRU/BFSU/BFCU 조작코드들에 있어서는, 7-비트 어드레스 전체는 그 조작코드 이후의 첫번째 바이트에서 전달되고, 뱅크 스위칭을 요구하지 않는다. 이어서, 패킷 버퍼로의 판독 또는 기록하는 모든 조작코드들의 동작이 설명된다.
RBMTX OPCODE
이 조작코드는, ETXRDP 레지스터에 의해 지정된 어드레스에서 패킷 버퍼로부터의 판독을 수행한다. 만약 어드레스 자동 증가가 인에이블된다면, ETXRDP 레지스터는 판독이 수행된 후 다음과 같이 업데이트된다: 만일 판독 어드레스가 TX 버퍼 종료 어드레스와 같다면, TX 버퍼 시작 어드레스는 ETXRDP 레지스터 내로 로드될 것이다. 판독 어드레스가 $FFFF와 같다면, ETXRDP는 판독이 수행된 후 $0000로 롤(roll)할 것이다. 그렇지않으면, ETXRDP 레지스터는 1씩 증가할 것이다. 만약 어드레스 자동 증가가 인에이블되지 않는다면, ETXRDP 레지스터의 컨텐츠는 변경되지 않은 채로 유지될 것이다. 칩 선택 핀이 어설트되는 동안, 이 명령은 유효하고, 그에 의해 상술한 바와 같이 패킷 버퍼로부터의 데이터의 버스트를 허용한다.
RBMRX OPCODE
이 조작코드는, ERXRDP 레지스터에 의해 지정된 어드레스에서 패킷 버퍼로부터의 판독을 수행한다. 만약 어드레스 자동 증가가 인에이블된다면, ERXRDP 레지스터는 판독이 수행된 후 다음과 같이 업데이트된다: 만일 판독 어드레스가 RX 버퍼 종료 어드레스와 같다면, RX 버퍼 시작 어드레스는 ERXRDP 레지스터 내로 로드될 것이다. 판독 어드레스가 $FFFF와 같다면, ERXRDP는 판독이 수행된 후 $0000로 롤할 것이다. 그렇지않으면, ERXRDP 레지스터는 1씩 증가할 것이다. 만약 어드레스 자동 증가가 인에이블되지 않는다면, ERXRDP 레지스터의 컨텐츠는 변경되지 않은 채로 유지될 것이다. 칩 선택 핀이 어설트되는 동안, 이 명령은 유효하고, 그에 의해 패킷 버퍼로부터의 데이터의 버스트를 허용한다.
RBMUDA OPCODE
이 조작코드는, EUDARDP 레지스터에 의해 지정된 어드레스에서 패킷 버퍼로부터의 판독을 수행한다. 만약 어드레스 자동 증가가 인에이블된다면, EUDARDP 레지스터는 판독이 수행된 후 다음과 같이 업데이트된다: 만일 판독 어드레스가 사용자 정의 영역 종료 어드레스와 같다면, 사용자 정의 영역 시작 어드레스는 ETXRDP 레지스터 내로 로드될 것이다. 판독 어드레스가 $FFFF와 같다면, EUDARDP는 판독이 수행된 후 $0000로 롤할 것이다. 그렇지않으면, EUDARDP 레지스터는 1씩 증가할 것이다. 만약 어드레스 자동 증가가 인에이블되지 않는다면, EUDARDP 레지스터의 컨텐츠는 변경되지 않은 채로 유지될 것이다. 칩 선택 핀이 어설트되는 동안, 이 명령은 유효하고, 그에 의해 상술한 바와 같이 패킷 버퍼로부터의 데이터의 버스트를 허용한다. 다시, 이 명령은, 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다.
WBMTX OPCODE
이 조작코드는, ETXWRP 레지스터에 의해 지정된 어드레스에서 패킷 버퍼로의 기록을 수행한다. 만약 어드레스 자동 증가가 인에이블된다면, ETXWRP 레지스터는 판독이 수행된 후 다음과 같이 업데이트된다: 만일 기록 어드레스가 TX 버퍼 종료 어드레스와 같다면, TX 버퍼 시작 어드레스는 ETXWRP 레지스터 내로 로드될 것이다. 기록 어드레스가 $FFFF와 같다면, ETXWRP는 기록이 수행된 후 $0000로 롤할 것이다. 그렇지않으면, ETXRDP 레지스터는 1씩 증가할 것이다. 만약 어드레스 자동 증가가 인에이블되지 않는다면, ETXWRP 레지스터의 컨텐츠는 변경되지 않은 채로 유지될 것이다. 칩 선택 핀이 어설트되는 동안, 이 명령은 유효하고, 그에 의해 상술한 바와 같은 패킷 버퍼 내로의 데이터의 버스트를 허용한다. 다시, 이 명령은, 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다.
WBMRX OPCODE
이 조작코드는, ERXWRP 레지스터에 의해 지정된 어드레스에서 패킷 버퍼로의 기록을 수행한다. 만약 어드레스 자동 증가가 인에이블된다면, ERXWRP 레지스터는 판독이 수행된 후 다음과 같이 업데이트된다: 만일 기록 어드레스가 RX 버퍼 종료 어드레스와 같다면, RX 버퍼 시작 어드레스는 ERXWRP 레지스터 내로 로드될 것이다. 기록 어드레스가 $FFFF와 같다면, ERXWRP는 기록이 수행된 후 $0000로 롤할 것이다. 그렇지않으면, ERXRDP 레지스터는 1씩 증가할 것이다. 만약 어드레스 자동 증가가 인에이블되지 않는다면, ERXWRP 레지스터의 컨텐츠는 변경되지 않은 채로 유지될 것이다. 칩 선택 핀이 어설트되는 동안, 이 명령은 유효하고, 그에 의해 상술한 바와 같은 패킷 버퍼 내로의 데이터의 버스트를 허용한다. 다시, 이 명령은, 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다.
WBMUDA OPCODE
이 조작코드는, EUDAWRP 레지스터에 의해 지정된 어드레스에서 패킷 버퍼로의 기록을 수행한다. 만약 어드레스 자동 증가가 인에이블된다면, EUDAWRP 레지스터는 판독이 수행된 후 다음과 같이 업데이트된다: 만일 기록 어드레스가 사용자 정의 영역 종료 어드레스와 같다면, 사용자 정의 영역 시작 어드레스는 EUDAWRP 레지스터 내로 로드될 것이다. 기록 어드레스가 $FFFF와 같다면, EUDAWRP는 기록이 수행된 후 $0000로 롤할 것이다. 그렇지않으면, EUDARDP 레지스터는 1씩 증가할 것이다. 만약 어드레스 자동 증가가 인에이블되지 않는다면, EUDAWRP 레지스터의 컨텐츠는 변경되지 않은 채로 유지될 것이다. 칩 선택 핀이 어설트되는 동안, 이 명령은 유효하고, 그에 의해 상술한 바와 같은 패킷 버퍼 내로의 데이터의 버스트를 허용한다. 다시, 이 명령은, 칩 선택(CSn) 핀을 무효화함으로써 종료되어져야만 한다.
다음, 패킷 버퍼 포인터 레지스터들에 판독 또는 기록하는 모든 조작코드들(ETXRDP[PKT_ADDR_MSB:0], ETXWRP[PKT_ADDR_MSB:0], ERXRDP[PKT_ADDR_MSB:0], ERXWRP[PKT_ADDR_MSB:0], EUDARDP[PKT_ADDR_MSB:0], EUDAWRP[PKT_ADDR_MSB:0])의 동작이 설명된다.
WTXRDP OPCODE
이 조작코드는, ETXRDP 레지스터의 컨텐츠를 변경하기 위해 이용된다. Byte1은, ETXRDPL 내에 기록되고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ETXRDPH 내에 기록된다. Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
RTXRDP OPCODE
이 조작코드는, ETXRDP 레지스터의 컨텐츠를 판독해내기 위해 이용된다. Byte1은, ETXRDPL의 컨텐츠를 포함하고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ETXRDPH의 컨텐츠를 포함한다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
WRXRDP OPCODE
이 조작코드는, ERXRDP 레지스터의 컨텐츠를 변경하기 위해 이용된다. Byte1은, ERXRDPL 내로 기록되고, 항상 존재해야만 한다. 만약 Byte2가 존재하면, 그것은 ERXRDPH 내로 기록된다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
RRXRDP OPCODE
이 조작코드는, ERXRDP 레지스터의 컨텐츠를 판독해내기 위해 이용된다. Byte1은, ERXRDPL의 컨텐츠를 포함하고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ERXRDPH의 컨텐츠를 포함한다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
WUDARDP OPCODE
이 조작코드는, EUDARDP 레지스터의 컨텐츠를 변경하기 위해 이용된다. Byte1은, EUDARDPL 내에 기록되고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 EUDARDPH 내에 기록된다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
RUDARDP OPCODE
이 조작코드는, EUDARDP 레지스터의 컨텐츠를 판독해내기 위해 이용된다. Byte1은, EUDARDPL의 컨텐츠를 포함하고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 EUDARDPH의 컨텐츠를 포함한다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
WTXWRP OPCODE
이 조작코드는, ETXWRP 레지스터의 컨텐츠를 변경하기 위해 이용된다. Byte1은, ETXWRPL 내에 기록되고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ETXWRPH 내에 기록된다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
RTXWRP OPCODE
이 조작코드는, ETXWRP 레지스터의 컨텐츠를 판독해내기 위해 이용된다. Byte1은, ETXWRPL의 컨텐츠를 포함하고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ETXWRPH의 컨텐츠를 포함한다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
WRXWRP OPCODE
이 조작코드는, ERXWRP 레지스터의 컨텐츠를 변경하기 위해 이용된다. Byte1은, ERXWRPL 내에 기록되고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ERXWRPH 내에 기록된다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
RRXWRP OPCODE
이 조작코드는, ERXWRP 레지스터의 컨텐츠를 판독해내기 위해 이용된다. Byte1은, ERXWRPL의 컨텐츠를 포함하고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 ERXWRPH의 컨텐츠를 포함한다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
WUDAWRP OPCODE
이 조작코드는, EUDAWRP 레지스터의 컨텐츠를 변경하기 위해 이용된다. Byte1은, EUDAWRPL 내에 기록되고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 EUDAWRPH 내에 기록된다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
RUDAWRP OPCODE
이 조작코드는, EUDAWRP 레지스터의 컨텐츠를 판독해내기 위해 이용된다. Byte1은, EUDAWRPL의 컨텐츠를 포함하고, 항상 존재해야만 한다. 만약 Byte2가 존재한다면, 그것은 EUDAWRPH의 컨텐츠를 포함한다. 만약 Byte2를 필요로 하지 않는다면, 칩 선택 핀은 Byte1 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte2 이후의 다음 바이트는, 새로운 명령으로 간주된다.
DEBUGFSM OPCODE
이 조작코드는, 내부 상태 머신들(internal state machines)의 스냅샷을 리턴하고, 팩토리 디버그 및 테스팅만을 위하여 이용될 수 있다. 만약 Byte2 또는 Byte3을 필요로 하지 않는다면, 칩 선택 핀은, 각각 Byte1 또는 Byte2 이후에 무효화되어져야만 한다. 칩 선택의 무효화 이후 또는 Byte3 이후의 다음 바이트는, 새로운 명령으로 간주된다.
Figure 112010027197832-pct00001
Figure 112010027197832-pct00002
Figure 112010027197832-pct00003
레지스터 뱅크 내에 배열되고 기능을 제어하기 위해 이용된 레지스터들에 대한 상술한 액세스 체계가, I/O 인터페이스를 통해 외부 마이크로컨트롤러 또는 프로세서에 의해 제어될 수 있는 이더넷 컨트롤러와 결합하여 설명되었다. 하지만, 본 발명은, 이더넷 컨트롤러들에 한정되는 것이 아니며, 예를 들면 SPI 인터페이스와 같이 I/O 인터페이스를 통해 제어되는 또다른 종류의 독립형 컨트롤러들에 이용될 수도 있다.
100 : 이더넷 컨트롤러

Claims (25)

  1. I/O 인터페이스를 통해 명령들 및 데이터를 수신하도록 동작 가능한 제어 유닛으로서, 상기 명령들은 컨트롤러의 내부 레지스터 블록으로부터 데이터를 읽거나 또는 상기 레지스터 블록에 데이터를 쓰는 지시(instruction)를 포함하는 제어 유닛;
    복수의 레지스터 뱅크들로 분할된 상기 레지스터 블록 내에 배열되며, 적어도 하나의 레지스터는 상기 컨트롤러의 기능을 제어하는 복수의 레지스터들; 및
    적어도 수신된 데이터에 의해 제공되는 직접 어드레스와, 수신된 명령으로부터의 부분 어드레스 및 뱅크 레지스터 내에 저장된 뱅크 어드레스에 의해 제공되는 조합 어드레스와, 및 수신된 명령을 통해 복수의 미리 정의된 어드레스들로부터 선택되는 어드레스를 포함하는 복수의 어드레싱 체계들에 의해 상기 복수의 레지스터들 중 하나에 액세스하기 위한 로직을 포함하는 레지스터 어드레스 유닛을 포함하는 것을 특징으로 하는 컨트롤러.
  2. 제1항에 있어서,
    상기 뱅크 레지스터는, 상기 레지스터 블록 내에 단일 어드레스를 갖는 단일 레지스터인 것을 특징으로 하는 컨트롤러.
  3. 제1항에 있어서,
    상기 레지스터 어드레스 유닛은, 상기 레지스터 뱅크에 어드레싱하기 위하여 상기 레지스터 뱅크와 결합되는 어드레스 레지스터를 포함하는 것을 특징으로 하는 컨트롤러.
  4. 제3항에 있어서,
    상기 어드레스 레지스터는 제어가능한 자동 증분 유닛에 결합되는 것을 특징으로 하는 컨트롤러.
  5. 제1항에 있어서,
    상기 조합 어드레스는, 상기 부분 어드레스 및 상기 뱅크 어드레스를 조합하여 생성되고,
    상기 부분 어드레스는 상기 조합 어드레스의 최하위 비트들을 형성하고 상기 뱅크 어드레스는 상기 조합 어드레스의 최상위 비트들을 형성하는 것을 특징으로 하는 컨트롤러.
  6. 제1항에 있어서,
    상기 조합 어드레스는, 상기 뱅크 어드레스에 상기 부분 어드레스를 추가함으로써 생성되는 것을 특징으로 하는 컨트롤러.
  7. 제3항에 있어서,
    상기 어드레스 레지스터는, 상기 미리 정의된 어드레스들, 상기 직접 어드레스, 및 상기 조합 어드레스 중 하나를 수신하는 제1 멀티플렉서의 출력과 결합되는 것을 특징으로 하는 컨트롤러.
  8. 제7항에 있어서,
    복수의 뱅크 어드레스들을 수신하고 상기 뱅크 어드레스를 출력하는 제2 멀티플렉서를 더 포함하는 것을 특징으로 하는 컨트롤러.
  9. 제1항에 있어서,
    상기 I/O 인터페이스는 SPI 인터페이스인 것을 특징으로 하는 컨트롤러.
  10. 제1항에 있어서,
    상기 컨트롤러는 이더넷 컨트롤러인 것을 특징으로 하는 컨트롤러.
  11. 복수의 레지스터들을 구비한 레지스터 뱅크를 포함하는 컨트롤러의 동작을 제어하기 위한 방법으로서:
    I/O 인터페이스를 통해 명령을 수신하는 단계;
    상기 명령을 디코딩하는 단계 및, 상기 명령에 따라 상기 I/O 인터페이스를 통해 직접 어드레스를 수신하거나 상기 명령으로부터 부분 어드레스를 추출하거나 또는 상기 명령을 통해 복수의 미리 정의된 어드레스들로부터 어드레스를 선택하는 것 중 어느 하나에 의해 어드레스를 결정하는 단계;
    부분 어드레스를 추출한 경우, 뱅크 레지스터에 저장된 뱅크 어드레스와 상기 부분 어드레스를 조합하는 단계;
    판독 액세스 또는 기록 액세스를 위하여, 상기 어드레스를 이용하여 상기 레지스터 뱅크에 어드레싱하는 단계를 포함하는 컨트롤러의 동작 제어 방법.
  12. 제11항에 있어서,
    상기 뱅크 레지스터는, 상기 레지스터 블록 내에 단일 어드레스를 갖는 단일 레지스터인 컨트롤러의 동작 제어 방법.
  13. 제11항에 있어서,
    상기 부분 어드레스를 조합하는 단계는, 상기 부분 어드레스가 조합 어드레스의 최하위 비트를 형성하고 상기 뱅크 어드레스가 상기 조합 어드레스의 최상위 비트를 형성하도록 상기 부분 어드레스와 상기 뱅크 어드레스를 조합하는 것을 포함하는 컨트롤러의 동작 제어 방법.
  14. 제11항에 있어서,
    상기 부분 어드레스를 조합하는 단계는, 상기 부분 어드레스를 상기 뱅크 어드레스에 추가하는 것을 포함하는 컨트롤러의 동작 제어 방법.
  15. 제11항에 있어서,
    상기 디코딩하는 단계는, 기록 명령을 디코딩하는 단계를 포함하고,
    상기 디코딩하는 단계는, 상기 I/O 인터페이스를 통해 상기 어드레스 하에서 상기 레지스터 뱅크에 기록될 제1 데이터를 수신하는 단계 및 상기 I/O 인터페이스를 통해 상기 어드레스를 증분시킨 후 상기 레지스터 뱅크에 기록될 추가적인 데이터를 수신하는 단계를 더 포함하는 컨트롤러의 동작 제어 방법.
  16. 제15항에 있어서,
    상기 추가적인 데이터를 수신하고 기록하는 단계는, 제어 신호가 상기 I/O 인터페이스를 통해 수신될 때까지 반복되는 컨트롤러의 동작 제어 방법.
  17. 제16항에 있어서,
    상기 제어 신호는 칩 선택 신호인 컨트롤러의 동작 제어 방법.
  18. 제11항에 있어서,
    상기 디코딩하는 단계는, 판독 명령을 디코딩하는 단계를 포함하고,
    상기 디코딩하는 단계는, 상기 어드레스 하에서 상기 레지스터 뱅크로부터 판독되고 상기 I/O 인터페이스를 통해 전송되는 제1 데이터를 상기 I/O 인터페이스를 통해 전송하는 단계 및 상기 어드레스를 증분한 후 상기 레지스터 뱅크로부터 판독되는 추가적인 데이터를 상기 레지스터 뱅크로부터 판독하고 상기 I/O 인터페이스를 통해 전송하는 단계를 더 포함하는 컨트롤러의 동작 제어 방법.
  19. 제18항에 있어서,
    상기 추가적인 데이터를 판독하고 전송하는 단계는, 제어 신호가 상기 I/O 인터페이스를 통해 수신될 때까지 반복되는 컨트롤러의 동작 제어 방법.
  20. 제19항에 있어서,
    상기 제어 신호는 칩 선택 신호인 컨트롤러의 동작 제어 방법.
  21. 제11항에 있어서,
    상기 I/O 인터페이스는 SPI 인터페이스인 컨트롤러의 동작 제어 방법.
  22. 제11항에 있어서,
    상기 컨트롤러는 이더넷 컨트롤러인 컨트롤러의 동작 제어 방법.
  23. 이더넷 컨트롤러로서:
    SPI 인터페이스를 통해 명령들 및 데이터를 수신하도록 동작 가능한 제어 유닛;
    복수의 레지스터 뱅크들로 분할된 레지스터 블록 내에 배열되며, 적어도 하나의 레지스터는 컨트롤러의 동작을 제어하는 복수의 레지스터들;
    적어도 수신된 데이터에 의해 제공되는 직접 어드레스와, 수신된 명령으로부터의 부분 어드레스 및 뱅크 레지스터 내에 저장된 뱅크 어드레스에 의해 제공되는 조합 어드레스와, 및 수신된 명령을 통해 복수의 미리 정의된 어드레스들로부터 선택되는 어드레스를 포함하는 복수의 어드레싱 체계들에 의해 상기 복수의 레지스터들 중 하나에 액세스하기 위한 로직을 포함하는 레지스터 어드레스 유닛을 포함하고,
    상기 뱅크 레지스터는, 상기 레지스터 블록 내에 단일 어드레스를 갖는 단일 레지스터인 이더넷 컨트롤러.
  24. 제23항에 있어서,
    상기 레지스터 어드레스 유닛은, 상기 레지스터 뱅크를 어드레싱하기 위하여 상기 레지스터 뱅크와 결합되고 또한 제어가능한 자동 증분 유닛에 결합되는 어드레스 레지스터를 포함하는 이더넷 컨트롤러.
  25. 제24항에 있어서,
    상기 어드레스 레지스터는, 상기 미리 정의된 어드레스들, 상기 직접 어드레스, 및 상기 조합 어드레스 중 하나를 수신하는 제1 멀티플렉서의 출력에 결합되는 이더넷 컨트롤러.
KR1020107009218A 2007-11-21 2008-11-21 이더넷 컨트롤러 KR101453865B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/944,058 2007-11-21
US11/944,058 US7908458B2 (en) 2007-11-21 2007-11-21 Ethernet controller
PCT/US2008/084371 WO2009067677A1 (en) 2007-11-21 2008-11-21 Ethernet controller

Publications (2)

Publication Number Publication Date
KR20100087295A KR20100087295A (ko) 2010-08-04
KR101453865B1 true KR101453865B1 (ko) 2014-10-21

Family

ID=40364388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107009218A KR101453865B1 (ko) 2007-11-21 2008-11-21 이더넷 컨트롤러

Country Status (5)

Country Link
US (1) US7908458B2 (ko)
EP (1) EP2212802B1 (ko)
KR (1) KR101453865B1 (ko)
CN (1) CN101821723B (ko)
WO (1) WO2009067677A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2011096463A1 (ja) * 2010-02-03 2013-06-10 日本ゼオン株式会社 リチウムイオン二次電池負極用スラリー組成物、リチウムイオン二次電池負極及びリチウム二次電池
US9197584B2 (en) * 2013-08-05 2015-11-24 Globalfoundries Inc. Increasing efficiency of data payloads to data arrays accessed through registers in a distributed virtual bridge
US9772970B2 (en) * 2013-08-29 2017-09-26 Atmel Corporation Multi-protocol serial communication interface
WO2015161506A1 (zh) * 2014-04-25 2015-10-29 华为技术有限公司 一种寻址方法及装置
US10515173B2 (en) * 2017-12-29 2019-12-24 Advanced Micro Devices, Inc. Input-output processing on a remote integrated circuit chip
EP3836430A1 (en) * 2019-12-13 2021-06-16 Nokia Solutions and Networks Oy An optical line terminal and a method therefor
CN112667354B (zh) * 2020-12-30 2022-05-06 上海壁仞智能科技有限公司 计算机可读取存储介质、虚拟化寄存器装置及访问该装置的方法
US11630796B2 (en) * 2021-05-07 2023-04-18 Infineon Technologies Ag Serial peripheral interface (SPI) automatic register address incrementation across data frames

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100953607B1 (ko) * 2006-03-30 2010-04-20 후지쯔 마이크로일렉트로닉스 가부시키가이샤 반도체 메모리 및 메모리 시스템

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446726A (en) * 1993-10-20 1995-08-29 Lsi Logic Corporation Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device
US5640399A (en) * 1993-10-20 1997-06-17 Lsi Logic Corporation Single chip network router
US5805927A (en) * 1994-01-28 1998-09-08 Apple Computer, Inc. Direct memory access channel architecture and method for reception of network information
US6192463B1 (en) 1997-10-07 2001-02-20 Microchip Technology, Inc. Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor
US6708268B1 (en) * 1999-03-26 2004-03-16 Microchip Technology Incorporated Microcontroller instruction set
GB2360666B (en) 2000-03-24 2003-07-16 3Com Corp Flow control system for network devices
CN1185829C (zh) 2001-12-19 2005-01-19 华为技术有限公司 一种同步数字系列传输网上控制以太网数据流量的方法
US8032659B2 (en) 2003-01-21 2011-10-04 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US8249097B2 (en) 2003-07-14 2012-08-21 Broadcom Corporation Method and system for an integrated host PCI I/O bridge and dual port gigabit Ethernet controller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100953607B1 (ko) * 2006-03-30 2010-04-20 후지쯔 마이크로일렉트로닉스 가부시키가이샤 반도체 메모리 및 메모리 시스템

Also Published As

Publication number Publication date
KR20100087295A (ko) 2010-08-04
EP2212802B1 (en) 2013-07-17
US20090132751A1 (en) 2009-05-21
US7908458B2 (en) 2011-03-15
CN101821723A (zh) 2010-09-01
WO2009067677A1 (en) 2009-05-28
EP2212802A1 (en) 2010-08-04
CN101821723B (zh) 2013-03-13

Similar Documents

Publication Publication Date Title
KR101453865B1 (ko) 이더넷 컨트롤러
EP1764703B1 (en) A system for providing access to multiple data buffers of a data retaining and processing device
US6393576B1 (en) Apparatus and method for communication between integrated circuit connected to each other by a single line
KR0161101B1 (ko) 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터
JP2584957B2 (ja) ホスト指示結合式の装置
US5826093A (en) Dual function disk drive integrated circuit for master mode and slave mode operations
JP3243615B2 (ja) トグル・モード・インクリメント論理回路を使用した線形およびトグル・モードのバースト・アクセス・シーケンスを制御する方法および装置
EP0550241A1 (en) Bidirectional data storage facility for bus interface unit
JPH11338734A (ja) コンピュ―タシステムおよびこのコンピュ―タシステムを動作させる方法
US10133497B1 (en) SPI command censoring method and apparatus
CN114490460A (zh) 一种用于asic的flash控制器及其控制方法
US6742058B2 (en) Memory controller having a multiplexer selecting either second set of input signals or converted signals from first set of input signals by a bus mode input
CN113760792A (zh) 基于fpga的图像存取的axi4总线控制电路及其数据传输方法
EP4266185A1 (en) Microcontroller chip containing multi-protocol communication interface peripheral and operation method therefor
KR101485081B1 (ko) 간접 액세스가능 메모리를 구비한 컨트롤러
JP2000020488A (ja) コンピュ―タシステムおよびこのコンピュ―タシステムを動作させる方法
CN114641763B (zh) 协议转换器模块系统和使用该协议转换器模块系统的方法
CN109086003B (zh) 降低集成电路功耗的方法及其介质接口控制器
CN113553000B (zh) 降低集成电路功耗的方法及其控制电路
JP2005526335A (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
US5964858A (en) Digital communication unit monitoring
CN117951067A (zh) 数据管理系统、串行通信工具及数据管理方法
Cates et al. An ASIC RISC-based I/O processor for computer applications
GB2341468A (en) Serial port for a host adapter integrated circuit using a single designated terminal
JPH0713854A (ja) 高速メモリ・アクセス方式

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181015

Year of fee payment: 5