Hardware 4

[Verilog] #3-1 Structural Modeling (Gate level Modeling)

Structural Modeling Verilog로 코드를 구현하는 방법 중에서 가장 먼저 소개할 방법은 Structural Modeling이다. 이 방법은 논리 게이트를 사용하여 모델을 구현하는 가장 낮은 레벨(Low level)의 코딩방식이다. 디지털 논리회로 과목에서 배우는 논리회로를 이용하여 실제로 회로도를 그리듯이 프로그래밍 한다. 코드가 매우 직관적이며 다른 방법에 경우 합성(synthesis)이과 구현(Implementaion) 과정에서 불필요한 회로가 포함되는 최적화 문제가 발생할 수 있지만, 지금 소개하는 방법은 코드가 결과에 그대로 반영된다. 따라서 본인의 능력이 되고 시간이 많다면 Structural Modeling으로 회로를 최적화하여 구현하는 것도 방법이다. Structural M..

Hardware/FPGA 2020.12.09

[Verilog] #2 테스트벤치 (Testbench)

테스트벤치 (Testbench) 테스트벤치란 우리가 베릴로그로 구현한 HDL 모델이 올바르게 동작하는지 검증하기 위한 시물레이터이다. 구현한 모듈에 입력 신호를 넣고 출력 신호를 wire로 연결하면 입력 신호의 변화에 따른 출력 신호를 확인할 수 있다. 보통은 시험하는 모듈의 이름 앞에 tb를 붙인다. ex) tb_adder 테스트벤치에는 입출력 포트가 없으며 initial block을 이용하여 SW처럼 순서대로 시간에 따른 동작을 구현하게 된다. initial 구문 일반적으로 베릴로그로 작성된 코드를 시뮬레이션하게 되면 코드가 동시에 동작하지만 initial block 내부에 있는 코드는 시간 순서에 따라서 위에서 아래로 진행된다. 이러한 특징으로 initial block은 절자적인(procedural..

Hardware/FPGA 2020.12.07

[Verilog] #1 모듈 (Module)

Port Declaration 모듈을 설명하기 앞서서 기본적인 내용인 포트에 대해서 설명하려고 한다. 지난시간에도 설명하였지만, 모듈의 입출력 타입은 3가지가 존재한다. input: input ports output: output ports inout: bidirectional ports (필자는 용역을 여러번 해봤지만, 아직까지 inout을 써보지 못했다.) input의 경우 외부에서 들어오는 형태는 상관이 없지만, 내부에서는 net(wire)타입이여야 한다. inout의 경우 외부에서 net타입으로 들어와야하고 모듈 내부에서도 net타입이여야 한다. output의 경우 내부에서는 reg나 net 상관없지만 외부에서는 net으로 받아야 한다. 기본적으로 변수들은 wire로 설정되는데 출력단에서 값을 유..

Hardware/FPGA 2020.12.07

[Verilog] #0 베릴로그(Verilog)란? / 데이터 타입(Data Types)

베릴로그(Verilog)란? 베릴로그(Verilog)는 전자 회로 및 시스템에 쓰이는 하드웨어 기술 언어(HDL, Hardware Description Language)다. 회로를 설계할 때 사용하는 언어로, 하드웨어는 순차적으로 돌아가지 않고 Clock에 따라서 동시에 동작하므로 시간과 동시성(concurrency)을 표현할 수 있고 컴파일 과정이 일반적인 프로그래밍언어와 다르다. VHDL(VHSIC Hardware Description Language)도 있는데 위에서 설명한 Verilog HDL는 다르므로 주의하자! 기본적인 문법은 C언어와 유사하다. if, for, while과 같은 제어문을 사용할 수 있고 세부적인 문법에서는 차이점이 존재하지만 대부분 유사하게 사용가능하고 연산자도 거의 비슷하게..

Hardware/FPGA 2020.12.07