본문 바로가기
Circuit Design

[Project] 전자전기컴퓨터설계실험2 -Verilog

by jae_walker 2018. 5. 3.

0. 과목 개요

 

- 본 설계실험 과목은 디지털 하드웨어 설계 및 구현에 대한 실험실습 과목으로서, 선수과목은 디지털논리설계, 마이크로프로세서이다. 

Verilog HDL로 디지털회로를 설계하여 FPGA에서 구현하는 실습이 주 내용이며, 초기 2주동안 TTL 로직과 breadboard를 이용한 기초적인 디지털회로 실습도 진행한다. 구체적으로, 가산기(adder) 등의 조합회로, FSM 등의 순차회로, 그리고 LCD 등의 출력제어회로를 Verilog HDL로 설계하여 FPGA로 실습하며, 1인 1조로 진행된다. 

 

 


 

 

1주차 - Introduction & TTL gates Lab on Breadboard

 

1) 이론

- TTL (Transistor Transistor Logic) : 다수의 트랜지스터에 의해 논리 게이트를 구성하는 IC. 대부분 74시리즈를 많이 사용한다.

- ASIC (Application Specific IC) : 특정한 제품에 사용할 목적으로 설계된 비메모리 반도체 칩. 주문형 반도체라고도 한다. 제품의 고집적화, 소형 경량화, 성능 향상, 부품 최적화, 공정의 단순화가 가능하다는 장점이 있느나, 고객의 주문에 맞추어서 설계해야 하기 때문에 초기 개발 비용과 시간이 많이 소요되며, 수정이 어렵고 수량이 적을 시 생산 단가가 올라간다.

- FPGA (Field-Programming Gate Array) : 현장 프로그램 가능 게이트 어레이. 프로그램이 가능한 논리 소자와 프로그래밍 가능 내부선이 포함되어 있어 Breadboard에 TTL을 연결해 회로를 만드는 것처럼 프로그래밍으로 회로를 만들 수 있다. 저집적도, 저속도, 고전력 동작의 단점이 있지만 수정 및 프로그래밍이 가능하고 초기 개발 비용과 시간이 적게 든다. 따라서, 프로토타입 및 제품 개발이나 이미 설계된 하드웨어를 반도체로 생산하기 직전 최종적으로 동작 및 성능을 검증하기 위해 제작하는 중간 개발물 형태로 많이 사용된다.

ㄴ주요 구성 : Programmable I/O Block (내부 논리와 외부 칩 선의 연결을 담당, verilog의 input/output 선언 및 매핑 관련 부분) + Configurable Logic Block + Programmable Routing Resource (특정 연결을 끊거나 잇는 프로그래밍, verilog의 wire 관련 부분)

ㄴ Configurable Logic block : FPGA의 기본 셀. LUT(게이트 역할. 프로그래밍 가능하게 하기 위해서 모든 Truth table을 미리 쭉 넣어놓고 4개의 입력에 따라 원하는 논리소자의 Truth table의 값을 출력) + FF(Data transfer)

 

 

2) 실험내용

- Breadboard에 직접 TTL 소자를 연결해서 OR, XOR, Half Adder 회로 구성하고, output이 Truth table대로 나오는지 검증.

 

 


 

 

2주차 - Xilinx ISE and Schematic Design

 

1) 이론

- Xilinx ISE (Xilinx Integrated Software tool Environment) : HDL, Verilog 등의 하드웨어 기술 언어나 Schematic을 이용하여 하드웨어를 설계, 컴파일, 시뮬레이션할 수 있고 설계파일을 프로젝트화해서 관리할 수도 있다.

- Verilog : 전자회로 및 시스템에 사용되는 HDL(Hardware Description Language, 하드웨어 기술 언어). 소프트웨어 기술 언어인 C언어와 언어적 유사성은 크지만, 기본적으로 괄호 대신 begin과 end를 사용하고 클락과 타이밍에 대한 개념이 포함되어 있다는 점이 가장 큰 차이점.

- Schematic : text 형식의 코드가 아닌 diagram을 이용하여 설계하는 방식.

 

- Half-Adder : 하위 carry를 포함하지 않는 adder. 단순히 두 개의 입력을 더해서 sum과 carry를 출력.

- Full-Adder : 하위 carry를 포함하여 두 개의 입력을 더한 sum과 carry를 출력하는 adder.

- Ripple carry counter : Full-adder 여러 개를 연결해놓은 형태. 하위 Full-adder의 carry가 연쇄적으로 상위 단계의 Full-adder로 넘어간다.

 

 









 Half Adder Full Adder  4-bit Ripple counter

 

 

2) 실험내용

- Schematic을 이용하여 Half adder, Full adder, 4-bit Ripple Carry Counter 회로 디자인 및 시뮬레이션, FPGA 보드에서 검증.

 

 


 

 

3주차 - Verilog Programming

 

1) 이론

- HDL 기반 설계의 장점

ㄴ 프로그래밍을 이용한 하드웨어 설계로써, 설계 오류의 수정이 용이하고 합성에 의한 회로 생성과 설계 변경이 용이. 

ㄴ 특정 설계기술이나 공정과 무관하게 동일한 설계가 가능. 

ㄴ 모듈 코드를 보관하고 있으면 재사용이 가능하므로 설계 비용과 시간을 절약할 수 있음.

- Verilog module의 구성

- Verilog 문법

ㄴ net 자료형 : 논리 게이트나 모듈 등의 하드웨어 요소들 사이의 물리적 연결을 나타내기 위해 사용하는 자료형.

(ex. wire - 선을 서로 연결할 때 / wor - wire+OR / wand - wire+AND)

ㄴ reg 자료형 : register 자료형. 다른 데이터가 할당될 때 까지 데이터 값을 저장한다. 저장하는 데이터 형태에 따라 자료형 다르게 사용.

(ex. reg - 부호 없는 정수 저장 / integer - 부호 있는 정수 저장 / time - 시뮬레이션 시간을 저장 / real - 실수 저장)

ㄴ vector 표현 : net과 reg 자료형은 여러 개의 비트를 가진 하나의 변수로 선언할 수 있다.

(ex1. wire [15:0] a_wire  // a_wire라는 wire 변수는 0~15까지의 16bit 폭을 가진다.)

(ex2. reg [15:7] result  // result라는 reg 변수는 7~15까지의 8bit 폭을 가진다.)

ㄴ array 표현 : 여러 개의 변수를 묶어 배열로 표현할 수 있다.

(ex1. reg result [15:0]  // result라는 array는 16개의 reg 변수를 원소로 가진다.)

(ex2. reg [7:0] result [15:0]  // result라는 array는 16개의 reg 변수를 원소로 가지며, 각 원소는 8bit의 폭을 가진다.)

ㄴ parameter : 변수가 아닌 상수값을 지정하는데 사용됨. defparam문 또는 모듈 인스턴스 문의 parameter overriding에 의해 값을 변경실킬 수 있다. 자료형과 범위를 지정할 수 있지만, 범위가 지정되지 않은 경우에도 적합한 크기와 비트폭을 default로 가진다.

 

- Verilog 설계 방식

ㄴ Structural Modeling : Gate Primitive 방식이라고도 불림. 하드웨어의 동작을 게이트의 연결 형태로 서술하는 방식. Schematic을 코드로 표현한다고 볼 수 있을 듯.

ㄴ Behavioral Modeling : 게이트나 하드웨어 소자 구성에 관계없이 회로나 시스템의 동작내용을 기준으로 서술하는 방식.

 

2) 실험내용

- 2주차 때 했던 실험을 Schematic이 아닌 Verilog 프로그래밍으로 구현해본다. 이 때, Structural modeling과 Bahavioral modeling의 두 가지 방식으로 각각 디자인해보고 어느 것이 더 효율적인지 비교해본다.

- ex. Full adder

 

 

 


 

 

4,5주차 - Combinational Logic Design

 

1) 이론

- 조합논리회로 (Combinational Logic) : 출력을 계산하고 있는 그 시점에서 회로 입력값만으로 결정되는 회로.

(ex. adder, subtractor, comparator, MUX,  converter 등)

- 순차논리회로 (Sequential logic) : 출력이 그 시점의 회로 입력값 뿐만 아니라 회로의 상태(즉, 과거의 입력에 따라 결정된 값)에 따라서도 결정되는 회로. 과거의 값을 기억하고 있어야 하기 때문에 저장 기능을 가지고 있어야 한다. 

(ex. Flip-flop, latch, register, FSM 등)

 

- Binary Code 

ㄴ BCD : Binary Coded Decinal. 10진 숫자를 동등한 2진수로 대체하여 표기하는 것. 

ㄴ Excess-3 : BCD 코드에 0011(10진수에서 3)을 더한 코드.

ㄴ Gray : ...?

 

2) 실험내용

- behavioral 방식으로 half adder, full adder, half substractor, full subtractor, 4-bit comparator를 디자인, 시뮬레이션, 검증.

- behavioral 방식으로 2:1 MUX, 4:1 MUX, Excess-3 to BCD converter, BCD to Excess-3 converter를 디자인, 시뮬레이션, 검증.

 

 


 

 

6,7주차 - Sequential Logic Design

 

1) 이론

- Latch : Level-triggered. 

ㄴ SR Latch (NOR Gate Latch) : 입력(Set, Reset) / 출력(Q(t+1)). SET이 H일 때 Q(t)=1, RESET이 H일 때 Q(t)=0, 둘다 H일 때는 부정, 둘다 L일 때는 Q(t+1)=Q(t)

ㄴ S'R' Latch (NAND Gate Latch) : 입력(Set', Reset' / 출력(Q(t+1)). SR Latch의 두 입력에 INV붙은 형태.

ㄴ D Latch : EN이 H일 때, D(t+1)=D(t)

 

- Flip-Flop : Edge-triggered.

ㄴ SR FF :  SR Latch와 동일

ㄴ JK FF : SR FF에서 S와 R이 모두 H일 경우에 Q값이 정해질 수 없는 단점을 보완하기 위해서 만든 FF. 모두 1일 경우 Q(t=1)=~Q(t)

ㄴ T FF : T가 L일 때는 Q(t+1)=Q(t), T가 H일 때는 Q(t+1)=~Q(t)

ㄴ D FF : CLK이 edge일 때, D(t+1)=D(t)

 

- Register : 플립플롭(특히, D FF) 그룹으로 만든 데이터 저장 및 전송 장치.

ㄴ SIPO(Serial-Input Parallel-Output) Register : 직렬 데이터를 병렬 데이터로 변환. (=Shift register :단방향 또는 양방향으로 매 클락마다 한 단계씩 데이터를 이동시킴)

ㄴ PISO(Parallel-Input Serial-Output) Register : 병렬 데이터를 직렬 데이터로 변환.

 

- FSM (Finite State Machine) : 외부 입력과 CLK에 의해 state가 바뀌고, state에 의존하여 출력값이 결정된다.

ㄴ Mealy Machine : 현재 상태와 입력 조건에 의해서 state가 변경되고 동시에 출력값도 생성됨.

ㄴ Moore Machine : 입력은 state를 바꾸는 데만 사용되고 결과에 영향을 미치지는 않음. 출력값은 state에 의해서만 결정된다.

 







Mealy Machine의 예시 Moore Machine의 예시

 

- Counter : FF의 CLK에 인가되는 주기적인 신호의 개수를 카운트하는 논리 회로. CLK의 주파수를 분주하여 시간을 계산할 수 있기 때문에 디지털 시스템 설계시에 매우 중요한 부분이다.

ㄴ Asynchronous (비동기식) : FF마다 CLK에 인가되는 신호가 서로 다르다. 첫번째 FF(LSB)만 CLK에 동기되고 나머지는 바로 앞 단의 FF 출력을 CLK 입력으로 받아들인다. -> neg edge-triggered이면 up 카운터, pos edge-triggered이면 down 카운터

ㄴ Synchronous (동기식) : 모든 FF이 하나의 입력 CLK에 의해서 출력이 동기됨. 비동기식이 Ripple 형태이기 때문에 delay가 존재하는 문제를 모든 FF에 하나의 CLK을 인가하는 것으로 해결함.

 

2) 실험내용

- 4-bit SIPO Shift Register

 

 

- 8-bit up/down counter with synchronous reset

 

- Moore Machine 응용회로 : 자판기 회로

 

 


 

 

8주차 - 7 Segment와 Piezo 제어 프로그래밍

 

 


 

 

Project - Digital Clock

'Circuit Design' 카테고리의 다른 글

집적설 정리  (0) 2018.05.06
MOSFET - 기본 구조 및 동작, Threshold voltage  (3) 2018.05.04
전자회로와 Microelectronics  (0) 2018.04.18
Solid state circuit Keywords  (0) 2018.04.13
Digital circuit Keyword  (0) 2018.04.12