본문 바로가기

반응형

APB

(7)
[Verilog HDL] 20. 제어 가능한 ALU IP 만들기 - 최종 테스트 앞에서 수정한 레지스터 파일을 ALU core와 연결하여 최종 ALU IP를 만들어 보자. ALU core 에 필요한 모든 입출력은 apb_regfile module에서 만들어 주기 때문에 apb_regfile과 alu module을 연결하고 apb_regfile의 APB interface 신호들을 top으로 연결해 주면 alu_ip module이 완성된다. 최종 alu_ip module의 code는 아래와 같다. 파일 이름은 alu_ip.v로 저장한다. module alu_ip #( parameter ADDR_WIDTH=8, parameter DATA_WIDTH=16 ) ( input wire PCLK, input wire PRESETn, input wire [ADDR_WIDTH-1:0] PADDR, ..
[Verilog HDL] 19. 제어 가능한 ALU IP 만들기 - register file 수정 레지스터 map을 정의했으면 이에 맞게 register file을 만들어 주어야 한다. 이전에 만든 register file은 일반적인 register file이었고 이번에는 SFR의 목적에 맞게 수정해 주어야 한다. 전 장에서 만든 레지스터 맵을 보면 CPU가 read/write 할 수 있는 레지스터도 있고 ALU의 동작 상태에 따라 ALU에서 write하는 레지스터도 있다. 이러한 레지스터는 status와 result에 해당한다. 이런 특수한 목적에 맞게 수정된 register file은 아래와 같다. module regfile #( parameter ADDR_WIDTH=8, parameter DATA_WIDTH=16 ) ( input wire CLK, input wire RSTn, input wir..
[Verilog HDL] 18. 제어 가능한 ALU IP 만들기 - 레지스터 맵 HW IP (Intellectual Property)는 SoC에서 사용 가능한 HW block을 의미한다. SoC에서 사용 가능하다는 것은 CPU에서 IP에 대한 제어를 할 수 있다는 것이다. 즉 software에서 HW IP를 제어하고 필요한 기능을 수행할 수 있어야 하는 것이다. APB interface에서 살펴 보았듯이 SoC 에서 HW IP는 bus를 통해 CPU와 연결되어 있고 그 중 간단한 bus interface중 하나가 APB이다. 이번 장에서는 ALU에 APB register file을 추가하여 ALU 기능을 수행 하기 위한 register를 만들고 CPU에서 이 register file을 read/write 함으로써 ALU의 필요한 기능을 수행할 수 있도록 해보겠다. 일단 ALU를 제어..
[Verilog HDL] 17. chatGPT를 이용한 APB register file 설계하기 요즘 한창 유행인 chatGPT를 이용하여 APB register file을 코딩해 보았다. 일단 무작정 chatGPT에게 APB register를 코딩해 달라고 무식하게 질문한다. ㅎ 그런데 이녀석이 APB 신호는 전혀 없는 register file을 코딩해 준다. 나를 뭘로 알고? 그래서 apb protocol을 따르지 않는다고 다시 질문했더니 바로 잘못을 인정하고 다시 코딩해 준다. ㅋㅋ 근데 이상하다? pwrite 신호가 없다 그래서 다시 따졌다! 그랬더니 역시 바로 인정하고 다시 코딩해준다. 근데 뭔가 좀 이상하다. 이번에는 penable신호가 없다. 그래서 다시 따져 물었다. 그랬더니 다시 사과하고 코딩해준다. 사과는 무지 잘한다. ㅋ 이번에는 맞으려나? 근데 pstrb는 뭐냐? 뜬근없이? 그..
[Verilog HDL] 16. FSM을 이용한 APB register file 설계 자 드디어 APB inteface를 갖는 register file을 설계할 때가 되었다. APB interface logic을 설계하기 위해서 우리는 FSM에 대해서 배울 것이다. FSM은 Finite State Machine의 약자로 하드웨어의 제어 로직을 만들 때 많이 사용하는 구조이다. 어떤 기능을 하는 하드웨어 로직을 제어 하기 위해서는 그 하드웨어가 어떤 상태에 있는지를 정의할 수 있어야 한다. 그래야 각 상태별로 필요한 제어 신호를 만들어 낼 수 있다. FSM은 유한한 하드웨어 상태를 정의하고 입/출력과 현재 상태에 따라 필요한 제어신호를 만들고 다음 상태는 어떤 상태가 되는지를 정의하는 하드웨어 로직이다. 우리가 설계하고자 하는 FSM의 목적은 APB bus protocol을 register..
[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] 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를 통해 데이터를 주고 받으려면 서로..

반응형