UART 통신이기 때문에 기본적으로 통신 프로토콜이다. SoC가 독립적으로 동작할 수 있지만, 외부의 대상과 데이터를 주고 받기 위해서는 통신 프로토콜이 필요하다. 프로토콜은 두 가지의 종류가 있다. [Serial Communication : 직렬 통신] - 매 순간마다 한 비트 단위로 데이터를 송수신한다. - 한 라인에서 독립적으로 보낼 수 있다. - 하나의 라인으로 동작하기 때문에 하드웨어를 구성할 때 필요한 리소스가 적다. - UART, SPI, I2C(I square C), USB, Ethernet, etc. [Parallel Communication : 병렬 통신] - 한 번에 멀티플 비트를 송수신한다. - 각각의 신호 사이에 Cross Talk 또는 Noise 등이 존재하기 때문에 신뢰가 떨어..
지난 챕터에서 SoC를 이루는 3요소로 프로세서, 페리프럴, 버스를 소개했습니다. 이 요소들을 인체기관으로 빗대어보어 각기 대응하면 뇌, 감각·운동기관, 신경기관이라고 소개했었습니다. - 코어가 명령을 내리고 페리프럴에게 잘 전달하고, 페리프럴이 연산을 수행한 후, 그에 대한 리스폰스를 다시 코어에게 전달하는데 이 때마다 전달을 할 수 있게 해주는 역할이 바로 '버스'입니다. 만일, 버스가 없다면 프로세서와 페리프럴이 1:1 대응을 하여 모든 입력과 출력이 동작하게 될 것입니다. 그렇게 된다면 프로세서에서 처리할 인풋과 아웃풋이 매우 많아지겠죠. 하지만 이 때 버스를 이용한다면 공통적인 패스(Path)를 만들기 때문에, 그러한 1:1 대응을 할 필요가 없어지게 된다는 것입니다. Master Read / ..
) Cortex - M0 - 32 bit의 RISC 구조의 프로세서입니다. (Reduced Instruction Set Computing) 위 구조와 반대되는 것이 CISC 구조입니다. (Complex Instruction Set Computing) RISC 프로세서는 명령어를 동일하게 만들고 레지스터 위치를 동일하게 만들어 하드웨어를 제작할 때 용이하게 하는 구조입니다. SISC 프로세서는 각각의 명령어는 독립적인 길이와 위치를 가지고 있어, 프로그램 만들 때 효율적인 구조입니다. - 폰 노이만 아키텍처 (Von Neumann Architecture) 인스트럭션과 데이터를 하나의 메모리에 포함되어 있는 구조입니다. 위 아키텍쳐와 반대되는 것이 하버드 아키텍처입니다. (Harvard Architectur..
) System On Chip SoC는 하나의 반도체 칩 내부에 시스템을 집어넣은 것을 말한다. SoC의 구성 3요소 프로세서[Processor] ( Core라고도 함 ) 뇌 : 중요한 명령을 하달 페리프럴[Peripheral] ( IP, 주변장치 ) 감각, 운기관 : 동작 버스[Bus] 일련의 신경계 ) SoC 내부 구성요소 - 기본 SoC이며 실제로는 이보다 더 많은 Peripheral이 존재합니다. ) 해당 그림에서는 System Bus와 Peripheral Bus가 존재하는 Multiple Bus입니다. 시스템 버스에 물린 Peripheral(이하 Peri)은 RAM, UART, VGA, GPIO, TIMER, 7-SEGMENT DISPLAY가 물려있는 것을 볼 수 있고, 페리 버스에는 WATCH..
[Concurrency : 동시성] - Verilog HDL은 Description Language이기 때문에, 동시에 각각의 코드 블럭이 실행된다. 예로, module AND( inputA, B, outputC ); wire w; NANDU1(A, B, w); NANDU2(w, w, C); endmodule 여기서 동시에 수행되는 부분은 NAND U1과 NAND U2 부분이다. Continuous Assignments와 Procedural Blocks같은 것들이 동시적으로 수행된다. 즉, 순서가 바뀌어도 동시에 수행되기 때문에 결과는 같다. [Continuous Assignments] assign ~ ; 의 형태로 기술되는 것을 Continuous Assignments라고 한다. Combinationa..
기본적으로 C에서 사용하는 연산자를 따라가는 편이다. 그렇다해도 나는 Verilog 사용자가 C를 보면서 공부하는건 아닌거 같아서 따로 정리하고자 한다. [Relational Operations : 비교 연산자] 메인으로 사용되는 표현식 A > B A가 B보다 큰가? >= A >= B A가 B보다 크거나 같은가?