본문 바로가기

반응형

전체목록

(125)
[Verilog HDL] 14. APB interface APB는 주로 peripheral device같은 작은 디바이스를 버스에 연결하기 위하여 사용되는 AMBA bus 표준의 하나이다. Protocol이 간단하기 때문에 구현하는 로직도 작아 파워도 적게 소모되는 장점이 있다. 하지만 고속 데이터 전송에는 적합하지 않기 때문에 주로 hardware IP의 레지스터를 읽고 쓰는데 사용되는 protocol이다. APB protocol spec은 아래 링크에서 받아 볼 수 있다. https://web.eecs.umich.edu/~prabal/teaching/eecs373-f12/readings/ARM_AMBA3_APB.pdf 앞서 설계한 레지스터 파일은 IP 안에 포함되게 되는데 이를 버스에 연결하려면 APB interface를 구현해야 한다. APB interf..
[Verilog HDL] 13. Register File 이번 장에서는 레지스터 파일(register file)이 무엇인지 알아보자. 결론부터 말하면 레지스터 파일은 작은 메모리라고 생각하면 된다. 이전 장에서 D flip-flop이 무엇인지 배웠다. D flip-flop (D F/F)은 1bit의 정보를 저장하는 저장소라고 생각할 수 있다. 아래와 같은 심볼로 표시되며 클록의 상승 엣지(positive edge)에서 입력 포트 D로 들어오는 데이터를 출력 포트 Q로 출력한다. Q 값은 D 입력이 변하기 전까지 계속 같은 값을 유지하게 된다. RSTn과 같은 리셋 핀이 있는 경우 RSTn이 '0'일 경우 출력 Q는 '0'으로 초기화 된다. 이러한 D F/F을 여러개 연결한 것을 레지스터(register)라고 한다. 아래의 예는 D F/F 4개를 연결한 것으로 ..
[Verilog HDL] 12. IP, Bus, SoC 지금 까지 설계한 ALU는 특정 기능을 하는 하드웨어 블록이다. 이를 SoC에서 활용할 수 있을 때 우리는 이러한 하드웨어 블록을 IP (Intellectual Property)라고 한다. 소프트웨어와 구별하기 위하여 hardware IP라고도 한다. 그럼 이러한 IP는 SoC 에서 어떻게 이용할까? 기본적으로 IP를 제어하는 또 다른 IP가 필요한데 보통 CPU가 이러한 역할을 담당한다. CPU는 bus를 통해 IP에 access하여 IP에 할당된 특정 주소에 읽고 쓰기를 할 수 있다. 여기서 bus라고 하는 것은 SoC 또는 embedded system에서 데이터가 이동하는 통로이다. CPU나 ALU같은 hardware IP들은 bus를 통해 서로 연결된다. bus를 통해 데이터를 주고 받으려면 서로..
[ACADEMY] 1/9 European Racing Bike (Ducati) 아카데미에서 발매한 바이크 키트입니다. 라이센스 문제 때문에 이름을 사용하지 못했지만 모두 다 아는 듀카티 입니다.^^ 데칼은 모노키오에서 발매한 별매 데칼을 사용했습니다. 바이크는 처음이라 좀 힘들었습니다. 광내기도 어려워서 거의 반광처럼 나왔네요. 이탈리안 레드를 회색 서페이서 위에 바로 칠했더니 좀 어둡게 나왔습니다. 그래도 스케일이 커서 그런지 묵직한 느낌이 나름 괜찮네요.
[Hasegawa] 1/20 MK-07 Robot Battle V 44 Type Mk.44 Ammoknights 하세가와에서 출시한 Mk.44 Ammoknights 입니다. 이번에는 대부분 아크릴 붓도색으로 진행하였습니다. 노란색 부분만 에어브러쉬를 사용했구요. 붓도색이라고 했지만 붓을 사용한 건 일부분이고 대부분 면봉에 아크릴 도료를 뭍혀서 찍어 주듯이 두드리면서 색칠했습니다. 거친 표면의 질감을 표현하기 위해서 이런 방식을 사용했는데, 효과는 좋은 것 같습니다. 이번에는 특별한 웨더링은 하지 않았습니다. 깔끔하지만 거친 모습이 맘에 드네요.^^ 늘 그럿듯이 옛날 DSLR D300으로 쵤영했습니다.
[Verilog HDL] 11. ALU (Arithmetic Logic Unit) 설계 ALU는 CPU에서 덧셈, 뺄셈 등과 같은 산술 논리 연산을 담당하는 하드웨어 블록이다. 지금 까지 배운 덧셈기, 뺄셈기, 시프터를 이용하여 ALU설계를 해보자. 일반적인 ALU의 개념은 아래 링크를 참조한다. https://ko.wikipedia.org/wiki/%EC%82%B0%EC%88%A0_%EB%85%BC%EB%A6%AC_%EC%9E%A5%EC%B9%98 산술 논리 장치 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org 산술논리장치의 일반적인 입출력은 다음과 같이 구성할 수 있다. 1) 입력 operand A : 산술 연산의 대상이 되는 입력 값 operand B : 산술 연산의 대상이 되는 입력 값 opcode OP : 산술 연산의 종류를 결정..
[Verilog HDL] 10. task를 이용한 shifter 설계 이번 장에서 배울 것 task barrel shifter 앞장에서 배운 function과 비슷한 기능을 하는 것이 task이다. function과 마찬가지로 여러개의 code를 묶어서 함수 호출하듯이 불러 쓸 수 있다. 그러나 task문에서는 delay문을 기술할 수 있다. 우선 이번 장에서 설계할 shiter에 대해서 알아보자. shifter는 여러 bit로 구성 된 입력을 원하는 bit 수 만큼 좌/우로 이동 시키는 것을 말한다. 예를 들어 4'b0100을 입력으로 받아 오른 쪽으로 2bit 이동 시키면 4'b0001이 된다. 또는 왼쪽으로 2bit 이동 시키면 4'b0000이 된다. bit 수를 넘어가면 그 값은 사라지게 된다. verilog에서 이런 기능을 하는 shift 연산자가 있는데 오른 쪽..
[Verilog HDL] 9. Function 을 사용한 뺄샘기(Subtractor) 설계 * 이 장에서 배우는 것 function clock gating enable 이번에는 verilog function block을 사용하여 뺄셈기를 설계해 보자. function block은 C언어에서의 함수와 같이 특정 코드 블록을 모아 호출할 수 있는 기능을 제공해 준다. verilog에서는 주로 조합회로를 구현 하기 위해 사용한다. 특정 조합회로를 function으로 구현하면 같은 기능을 필요로 하는 곳에 중복해서 코딩을 할 필요 없이 function을 호출하면 된다. 뺄셈기의 기본 설계 개념은 시퀀셜 가산기와 동일하다. 아래는 완성된 뺄셈기 코드이다. module subtractor ( input clock, input resetn, input en, input wire [7:0] a, input ..

반응형