프로그래밍/Verilog 5

베릴로그 문법 (4) always 구문

- always 구문 설명always 구문은 initial 구문과 마찬가지로 reg에 값을 할당할 때 사용합니다. 다음 예시를 실행해볼까요?module top(); parameter period_clk = 10; reg clk; initial clk = 1'b0; reg resetn; initial resetn = 1'b0; always #(period_clk*0.5) clk = ~clk; initial begin #(period_clk); resetn = 1'b1; end initial begin #500 $display("//////////////"); $display("//sim_finish//"); $display("/////////////..

베릴로그 문법 (3) 인스턴스와 계층 구조

- 인스턴스인스턴스화는 이미 완성된 모듈을 가져오는 것을 말합니다. 어떤 경우에 인스턴스화를 할까요?? 1. testbench이전 글에서 testbench는 시뮬레이션을 하기 위한 환경이라고 말씀을 드렸습니다. 시뮬레이션을 하는 이유는 DUT(Device Under Test)의 기능을 확인하거나 검증하기 위해서 합니다. 그러기 위해서는 testbench에 DUT를 가져와야겠죠?? 이럴 때 모듈을 인스턴스화합니다. 2. 구조 설계아래 그림은 UART라고 하는 통신 IP의 block diagram 예시입니다.  UART 모듈 내부에 기능별로 여러 component들이 있죠?? 이러한 구조를 계층 구조(hierarchy)라고 합니다. 하나의 모듈의 위의 component를 모두 구현할 수 있지만, 이럴 경우 ..

베릴로그 문법 (2) initial 구문과 testbench, 절차 할당과 연속 할당

- initial 구문initial 구문은 주로 testbench(시뮬레이션을 위한 환경이라고 보시면 됩니다)에서 시뮬레이션을 위해 사용하는 구문으로, 논리 회로 합성에 사용되지 않습니다. initial 구문 안에는 절차형 할당들이 들어가며, 때문에 reg 값 할당을 작성해 주면 됩니다.한 initial 구문 안에서 작성된 절차형 할당은 문장의 순서에 따라 시뮬레이션이 진행됩니다. 이게 무슨 의미인지는 예시를 보면서 이해해 봅시다. - Testbench 작성지난 글에서 top.v를 작성했었습니다.module top (); //reg 선언 reg a; //1. reg control initial begin a = 1; #100 a = 0; #100 a = 1; e..

베릴로그 문법 (1) 기본 구성

이 글에서는 verilog 기본 문법을 살펴보겠습니다. 먼저 알아야 할 것은 한 문장의 끝은 세미콜론(;)으로 마무리해야 한다는 겁니다. - Verilog 기본 문법module module_name (port_list); //선언 reg reg_name; wire wire_name; parameter parameter_name; //회로 설명 part 인스턴스화 always 문 initial 문 function, task 정의 assign 문 endmodule 하나하나 알아볼까요? 1. 모듈 선언module: 기본 설계 단위입니다. module - endmodule, 한 파일에 여러 개의 module이 들어갈 수 있지만 한 개의 module만 작성하는 것을 추천합니다.po..

베릴로그 개요와 시뮬레이션 환경 세팅

- HDL(Hardware Description Language) 이란?HDL은 기본적인 소자에서 실제 반도체 chip에 이르기까지 디지털 시스템의 설계와 검증에 사용되는 하드웨어 기술 언어로, 회로의 기능과 timing에 대해 기술할 수 있습니다. 소프트웨어 설계 언어가 아니라 하드웨어 설계 언어이기 때문에 일반적인 컴퓨팅 언어와 차이가 있습니다. - HDL을 사용하는 이유그렇다면 왜 반도체는 설계도가 아닌 HDL로 설계하는 걸까요? 회로도 예시를 가져와봤습니다. 여러 component와 and gate도 보이는데요, 요즘의 칩은 과거에 비해 성능이 월등히 좋습니다. 그렇기 때문에 기본적으로 억대의 트랜지스터로 이루어져 있습니다. 이걸 일일이 그리는 것은 불가능하겠죠?? 예전에는 논리 게이트를 일일이 ..