Chapter 1. 실험 목적Verilog 문법 중 Blocking, Non Blocking의 개념에 대해 이해한다. 7-segment decoder 을 이용해 60초 기준으로 1초마다 FPGA starter Kit가 바뀌는 Verilog를 설계하고 실행해본다.Chapter 2. 관련 이론Verilog에 사용되는 Blocking과 Non-blocking 구문을 헷갈리기 쉬워서 제대로 개념 숙지를 해야 한다.Blocking (=)은 순차적 block에 열거된 순서대로 수행되고, Non-blocking (<=)은 순차적 block에서 앞선 문장이 끝나지 않아도 작동할 수 있게 해주는 문법이다. Blocking은 value = (일어나는 동작)을 뜻하고, 괄호의 동작이 끝날 때까지 block 하는 역할이고, Non-blocking은 value <= (일어나는 동작)을 뜻하고 괄호 속 동작의 여부를 고려하지 않고 문장을 실행한다.조합회로 (combinational logic)의 assign, function문에는 blocking을 사용하고, 순차회로 (sequential logic)의 always문와 latch design에서 Non-blocking을 사용한다. 만약, 조합회로를 always문으로 구현할 때는 Non-blocking을 사용한다. 또한, 같은 always문에 blocking과 Non-blocking을 혼용할시 오류가 나므로 유의해야 한다. 이번 실험에서는 always문을 사용하므로 Non-blocking을 사용한다. Non-blocking은 두 개의 절차로 진행되는데, RHS(right hand side) -> LHS(left hand side) 순서이다. Blocking 구문들이 다 처리된 뒤, Non-blocking 구문들의 값을 확인할 수 있기에 Non-blocking 구문의 값을 확인하기 위해서는 $monitor, $strobe 등의 task를 사용해야 한다.
Chapter 1. 실험 목적Verilog HDL 1 실험 시간에서 배운 기초적인 Verilog 사용법을 응용하는 시간을 가진다. Half Adder과 Full Adder, sequential circuit인 D Flip-Flop과 SR Flip-Flop을 Verilog 로 표현하는 실험이다.Chapter 2. 관련 이론Verilog HDL (Hardware Description Language)인 베릴로그는 IEEE 1364에서 표준화된 것으로, 전자회로 및 시스템에 사용되는 하드웨어 기술 언어이다.Verilog는 CLK에 따라 동시동작 하므로 동시성을 표현할 수 있고, 컴파일 과정이 우리가 알던 기존의 프로그래밍언어와는 다르지만 기본적인 문법은 C언어와 유사하다.반가산기를 뜻하는 Half Adder (HA)와 전가산기 Full Adder (FA)는 가산기의 한 종류이다.
Chapter 1. 실험 목적Verilog HDL과 VHDL의 차이를 파악한다. 또한, Verilog HDL의 기본적인 시작 방법과 프로젝트 생성 후 값 설정하기, gate 연결하기 등과 같은 기본적인 요소를 숙지하고 추후 다양한 기능들로 원하는 회로를 구성해 응용해볼 수 있는 실험 목적을 지닌다.Chapter 2. 관련 이론Verilog 베릴로그는 IEEE 1364로 표준화된 것으로, 전자회로 및 시스템에 사용되는 하드웨어 기술 언어이다. Verilog HDL (Hardware Description Language)라고 불리고, VHDL(VHSIC Hardware Description Language)과는 다른 것을 유의해야 한다.VHDL은 디지털 회로 및 혼합 신호를 표현하는 하드웨어 기술 언어이다. FPGA나 집적 회로 등의 전자공학 회로를 설계하는 언어로, 회로도를 작성하는 대신 언어적인 형태로 전자 회로의 기능을 구성할 수 있다.
Chapter 1. 실험 목적JK Flip Flop을 포함한 소자들을 이용해 10진 카운터를 설계한 뒤, truth table을 확인한다. 또한, 7-segment를 추가로 연결해 출력되는 결과값을 알아본다.Chapter 2. 관련 이론이번 실험에서는 10진 카운터를 다양한 소자들을 사용해 설계하는 실험이다.주어진 소자들 중 74LS112 소자는 JK Flip-Flop에 해당하는 소자이다.JK Flip Flop은 SR FF에 and gate를 추가한 FF이다. SR FF에서 (1,1)을 사용하지 못하는 한계점을 극복하는 Flip-Flop으로 set, reset이 (1,1)일 때 output 값이 toggle 즉, 반전 된다.S(set) R (reset) FF과 마찬가지로, J는 set K는 reset을 뜻한다.JK Flip-Flop의 timing diagram은 다음과 같다.다른 FF과 마찬가지로 output 값에서 time delay가 발생한다.
Chapter 1. 실험 목적소자들을 이용해 기본 레지스터와 시프트 레지스터를 설계한 뒤, timing diagram을 확인한다. 입출력 방식에 의한 분류와 데이터 이동 방식에 의한 분류에서 각 방식의 특성을 익히다.Chapter 2. 관련 이론D Flip-Flop은 다음과 같다. SR FF에 Not gate를 추가한 것으로, (0,1)과 (1,0) 값만 사용하고 싶을 때 input 낭비 없이 사용할 수 있다.D에 0이 입력되면 Q에는 1이 출력되고 Q’에는 0이 출력된다. 반대로, 1이 입력되면 Q에는 0이 출력되고 Q’에는 1이 출력된다.D FF의 timing diagram은 T FF의 timing diagram과 큰 차이가 있다.다른 FF는 모두 positive edge로 clock이 0에서 1로 바뀌는 시점에 작동하지만, T FF은 negative edge로 clock이 1에서 0으로 바뀌는 시점에 작동하는 것을 유의하고 timing diagram을 그려야 한다.