본문 바로가기

반응형

Verilog

(9)
[Verilog HDL] 17. chatGPT를 이용한 APB register file 설계하기 요즘 한창 유행인 chatGPT를 이용하여 APB register file을 코딩해 보았다. 일단 무작정 chatGPT에게 APB register를 코딩해 달라고 무식하게 질문한다. ㅎ 그런데 이녀석이 APB 신호는 전혀 없는 register file을 코딩해 준다. 나를 뭘로 알고? 그래서 apb protocol을 따르지 않는다고 다시 질문했더니 바로 잘못을 인정하고 다시 코딩해 준다. ㅋㅋ 근데 이상하다? pwrite 신호가 없다 그래서 다시 따졌다! 그랬더니 역시 바로 인정하고 다시 코딩해준다. 근데 뭔가 좀 이상하다. 이번에는 penable신호가 없다. 그래서 다시 따져 물었다. 그랬더니 다시 사과하고 코딩해준다. 사과는 무지 잘한다. ㅋ 이번에는 맞으려나? 근데 pstrb는 뭐냐? 뜬근없이? 그..
[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] 5. Testbench module 설계가 끝나면 원하는 동작을 하는지 검증해야 한다. 이를 위해 적당한 입력을 가하고 출력을 모니터 해서 검사하는 코드를 만들어야 하는데 이를 testbench 라고 한다. Testbench는 검증하고자 하는 기능에 따라 여러가지 형태로 코딩할 수 있는데 사용자가 입력을 명시적으로 정의하여 테스트 하는 기법을 direct test라고 하고 입력을 랜덤하게 정의하여 사용하는 것을 random test라고 한다. 일단은 기본적인 direct test의 한 가지 예를 아래에 코딩하였다. `timescale 1ns/1ps // time unit / time resolution --------------(1) module test; // module name reg [7:0] a, b; // reg t..
[Verilog HDL] 4. Adder 설계 앞서 module장에서 adder module의 간략한 형태를 살펴 보았다. adder는 2개의 8bit 입력 A,B를 받아 더해서 8bit 출력 Y로 출력한다. 실제 더하기 기능을 수행 하는 회로를 verilog로 coding 해 보자. verilog에서 더하기 기능에 해당하는 연산자는 +이다. 이 외에 산술 연산을 수행하는 연산자는 C언어와 동일하다. 일단 출력 Y로 결과 값을 출력하기 위하여 출력 값을 저장하는 변수를 선언하여야 한다. 지금 만드는 회로는 cominational logic으로 가정하고 설계한다. 이 때 더하기 결과 값을 sum이라는 변수에 저장한다고 하면 sum이란 변수의 data type을 wire나 reg로 선언할 수 있다. 첫번재로 wire로 선언할 경우를 생각해 보자. 변수 ..
[Verilog HDL] 3. Combinational Logic/Sequential Logic 1. Combinational Logic 입력 신호가 변하면 출력 신호가 바로 변하는 논리 회로이다. 실제 물리적으로는 게이트 지연 시간과 net의 지연 시간이 포함된 지연 시간 이후에 출력 신호가 변하게 된다. 일반적으로 NAND, NOR등 논리 게이트의 조합 회로를 말한다. 아래는 cominational logic의 예이다. A,B,C 입력을 통과한 신호는 각 논리 게이트 조합으로 구성된 회로를 통과하여 Y로 출력된다. 출력에서 입력으로 되돌아 가는 피드백 path가 없고 어떤 상태를 저장하지도 않는다. 단지 입력의 변화만이 출력의 변화를 결정한다. 2. Sequential Logic 현재 상태 값을 저장해두고 그 상태 값이 다시 입력으로 피드백 되어 다음 상태와 출력을 결정하는 회로이다. 즉 저장 ..
[Verilog HDL] 2. Module module은 하드웨어 기능을 구현하는 기본 단위이다. module은 입력 port를 통하여 입력 신호를 받고 이를 처리하여 출력 port를 통하여 module 외부로 출력한다. 아래는 기본적인 module의 구조이다. module adder // adder는 module의 이름 ( input wire [7:0] A, // 8bit 입력 port input wire [7:0] B, // 8bit 입력 port output wire [7:0] Y // 8bit 출력 port ); /* ..... 기능 구현 부분 */ endmodule // module의 마지막 'module'이라는 keyword 뒤에는 항상 module name이 와야 한다. 그리고 괄호 안에 입/출력 port를 정의한다. 여기에 입/출력..
[Verilog HDL] 1. Verilog란? Verilog는 HDL(Hardware Description Language)의 하나로 디지털 논리 회로를 설계 하기 위한 언어이다. 설계라고 했지만 기능 검증을 위한 테스트 벤치 제작 등 검증 용도로도 사용된다. 문법 구조는 C언어와 매우 유사하다. Verilog를 이용하여 디지털 논리 설계를 하여 반도체 chip으로 만드는 과정은 기본적으로 다음과 같다. module 설계 testbenchh 설계 simulation synthesis (합성) placement & layout wafer mask 제작 ASIC chip 제작 일반적으로 chip 제작 과정에서 설계와 기능 검증 까지 설계 혹은 front-end 단계라고 부르고 그 이후 단은 back-end단계라고 부른다. (다른 기준으로 나누는 경우도 ..
Ch4. SystemC 활용하기 - 사용자 정의 인터페이스/채널 앞선 장에서 모듈간 통신을 위해 Interface/port/channel이 필요하다는 것을 배웠다. SystemC에서 제공하는 in/output port와 primitive channel을 이용하여 하드웨어 통신을 모델링할 수 있었다. 그러나 SystemC를 제대로 활용하기 위해서는 이것으론 부족하다. 기존의 RTL level 모델링은 Verilog/VHDL과 같은 HDL이 더 편리할 것이다. 진정 SystemC가 필요한 부분은 좀 더 high level의 모델링과 검증 분야이다. 나중에 이야기할 기회가 있겠지만 SCV(SystemC Verification Standard)와 같은 library로 검증 분야에서 SystemC는 훌륭한 기능을 발휘할 수 있게 되었다.그러면 high level modelin..

반응형