실험3. Basic Gates in Verilog결과보고서담당 교수 : 교수님학과 : 전자전기컴퓨터공학부학번 :이름 :제출한 날짜 :1. 실험주제 : Introduction to Verilog HDL2. 실험목적 : 여러가지 Verilog HDL 언어의 기본 사용법을 익힌다.- 비트 단위 연산자를 이용하는 방법- Gate Primitive를 사용하는 방법- Behavioral modeling을 이용한 설계방법(if, for 문 등을 사용)- 설계한 로직을 시뮬레이션 하기 위한 테스트 벤치의 작성방법을 익힌다.3. 배경이론 및 사전조사HDL(Hardware description language) 하드웨어 기술을 표현하는 언어로써 디지털 시스템의 기능 및 하드웨어 특징을 컴퓨터의 고급 언어에 접합하여 원하는 회로를 기술한 수 있도록 하는 언어를 말한다.HDL을 사용함으로써 초기 설계과정에서의 설계오류를 쉽게 수정할 수 있고 합성에 의한 회로도 빠르게 설계 및 변경이 가능하게 되어 설계 시간을 단축시킬 수 있다. 또 우수하고 광범위한 하드웨어 기술 능력으로 상위 수준의 설계도 선택적 최적화 기법을 이용한 합성 역시 설계할 수 있다. 상위레벨 설계도구의 사용으로 인해 설계 생산성이 향상되며 설계시간의 단축에 따른 설계비용이 감소한다는 장점도 있다. 현재 IEEE 표준인 동시에 미국 정부의 공인 HDL이고 전세계적으로 설계 및 설계정보 교환의 수단으로 사용이 확대되고 있다. 결과적으로 HDL 언어의 구조적 설계기능을 이용한 전체 설계의 기능별 분할 설계 및 문서화에 용이하다.HDL에는 두가지 종류가 있다. 하나는 VHDL로 미국방성 주도로 개발하였고 엄격한 문법이 특징이고 나머지 하나는 Verilog HDL로 반도체 업계주도로 개발하였고 유연한 문법이 특징이다. 이 중 이번 실험에 사용하는 언어는 Verilog HDL이다. Verilog HDL은 1983년 Gateway Design Automation사에서 하드웨어 기술언어인 HiLo와 C언의 특징을 기반으로 개발해서호한다.결과적으로 두 언어의 합성 가능한 하위 집합을 보면 기능면에서 매우 유사하지만 Verilog로 작성된 코드는 VHDL로 작성된 동일한 코드보다 성능이 훨씬 뛰어나다.보조자료 Verilog-HDL 문법 pdf 자료를 읽으시오.Verilog에서 다음의 constant의 의미와 실제로 비트로 표현했을 때 어떻게 나타나는지 조사하시오.Verilog HDL의 어휘규칙 중 수 표현에 관한 규칙은 다음과 같다. Verilog는 정수형으로 10진수, 16진수, 8진수, 2진수로 나타낼 수 있으며 형식은 다음과 같다.여기서 [size_constant]는 값의 비트 크기를 나타내는 상수로 0이 아닌 unsigned 10진수가 사용되며 생략될 수 있다. Unsigned 수는 32비트로 표현되며 상위비트가 x 또는 z인 unsized unsigned 상수는 그 상수가 사용되는 수식의 비트 크기만큼 확장된다.‘는 진수(base)를 지정하는 문자이며 d, D, h, H, o, O, b, B가 사용되며 signed를 나타내기 위해 문자 s 또는 S가 함께 사용될 수 있다.는 unsigned 숫자를 사용하여 값을 표현하며 ‘에 적합한 숫자들로 구성한다.4’b1001를 실제로 비트로 표현한다면 4비트이고 2진수로 1001을 나타낸 것이므로 9가 된다.5’D3을 실제로 비트로 표현한다면 5비트이고 10진수로 3을 나타낸 것이므로 3이 된다.3’b01x를 실제로 비트로 표현한다면 3비트이고 2진수지만 수 끝에 x가 붙어있으므로 LSB(Least Significant Bit, 최하위 비트)가 정해지지 않았으므로 정확한 숫자를 나타낼 수가 없다.4’h4를 실제로 비트로 표현한다면 4비트이고 16진수로 4를 나타낸 것이므로 4가 된다.Verilog에서 wire 형과 reg 형의 차이점을 조사하시오.기본적으로 wire는 선을 reg는 레지스터를 떠올리면 편할 수 있다. wire 형은 다른 element들을 연결해주는 데 사용된다. 즉 물리적인 연결선으로 다뤄지며 특정 값을 저장할 수는 없다. Verilog Module을 선택하고 이름을 넣고 코딩을 한다.3. 테스트 벤치에서 initial begin ~ end 블록을 수정하여 시간에 따른 입력 값의 변화에 대한 정보를 변경한다.4. 테스트벤치 모듈에서 시뮬레이션을 실행시켜 잘 되는지 확인한다.5. Pin 할당은 다음과 같이 한다. (a : Button SW1(p63), b : Button SW2(p67), x : LED1(p191))6. 장비에서 동작이 잘 되는지 확인한다.나. Gate Primitive를 이용한 Two-input AND 케이트 설계1. File > New project에서 새 프로젝트를 ‘my_and3’의 이름으로 생성한다.2. Source type을 Verilog Module을 선택하고 이름을 넣고 코딩을 한다.3. 테스트 벤치에서 initial begin ~ end 블록을 수정하여 시간에 따른 입력 값의 변화에 대한 정보를 변경한다.4. 테스트벤치 모듈에서 시뮬레이션을 실행시켜 잘 되는지 확인한다.5. Pin 할당은 실험 가와 같다. (a : Button SW1(p63), b : Button SW2(p67), x : LED1(p191))6. 장비에서 동작이 잘 되는지 확인한다.다. Behavioral modeling을 이용한 Two-input AND 케이트 설계1. File > New project에서 새 프로젝트를 ‘my_and4’의 이름으로 생성한다.2. Source type을 Verilog Module을 선택하고 이름을 넣고 코딩을 한다.3. 테스트 벤치에서 initial begin ~ end 블록을 수정하여 시간에 따른 입력 값의 변화에 대한 정보를 변경한다.4. 테스트벤치 모듈에서 시뮬레이션을 실행시켜 잘 되는지 확인한다.5. Pin 할당은 실험 가와 같다. (a : Button SW1(p63), b : Button SW2(p67), x : LED1(p191))6. 장비에서 동작이 잘 되는지 확인한다.라. 3가지 방법으로 Two-input XOR 케이트 설계1. Fil는 사진이다.-LED가 작동했을 때(불이 켜졌을 때)실험 전 예측했던 대로 두 개의 스위치를 모두 눌렀을 때 LED에 불이 들어왔다. 밑에 첨부한 사진들은 실제로 AND 게이트 회로를 만들어서 모든 스위치를 눌렀을 때의 LED의 상태를 보여주는 사진이다.나. Gate Primitive를 이용한 Two-input AND 케이트 설계실험 전 예측)만약 Combo박스에 잘 연결되어 있고 ucf파일에 입출력 장치와 핀 번호 정보를 잘 입력했다면 장비가 동작해 LED에 불이 들어올 것이다. 실험결과를 시뮬레이션한 결과나 실험으로 인해 나올 수 있는 모든 경우의 수는 실험 가와 같다.실험 결과)실험 전 예측했던 대로 실험 가와 같았다.다. Behavioral modeling을 이용한 Two-input AND 케이트 설계실험 전 예측)만약 Combo박스에 잘 연결되어 있고 ucf파일에 입출력 장치와 핀 번호 정보를 잘 입력했다면 장비가 동작해 LED에 불이 들어올 것이다. 실험결과를 시뮬레이션한 결과나 실험으로 인해 나올 수 있는 모든 경우의 수는 실험 가와 같다.실험 결과)실험 전 예측했던 대로 실험 가와 같았다.라. 3가지 방법으로 Two-input XOR 케이트 설계실험 전 예측)만약 Combo박스에 잘 연결되어 있고 ucf파일에 입출력 장치와 핀 번호 정보를 잘 입력했다면 장비가 동작해 LED에 불이 들어올 것이다. 아래자료들은 세가지 방법으로 시뮬레이션으로 돌려본 결과와 실험으로 인해 나올 수 있는 모든 경우를 예측한 표이다.SW1(a)SW2(b)LED1(X)실험1안누름안누름꺼짐실험2안누름누름켜짐실험3누름안누름켜짐실험4누름누름꺼짐실험 결과)-LED가 작동하지 않았을 때(불이 꺼졌을 때)실험 전 예측했던 대로 3가지 방법 모두 두 개의 스위치를 모두 누르거나 누르지 않았을 때 LED에 불이 들어오지 않았다. 밑에 첨부한 사진들은 왼쪽부터 실제로 AND 게이트 회로를 만들어서 스위치를 모두 누르지 않거나 눌렀을 때의 LED의 상태를 보여주는 사진이다.LED가 작동했을제로 Full Adder 회로를 만들어서 3개 중 2개만 눌렀을 때의 LED의 상태를 보여주는 사진이다.- LED1(Cout), LED9(S)모두 작동할 때실험 전 예측했던 대로 3개의 스위치 모두 눌렀을 때 LED1, LED9에 불이 들어왔다 밑에 첨부한 사진들은 실제로 Full Adder 회로를 만들어서 3개 모두 눌렀을 때의 LED의 상태를 보여주는 사진이다.6. 토의실험 모두 예상했던 것과 같은 결과가 나왔다. 실험과정에서 헷갈렸던 부분이 있었는데 실험에서 스위치를 킨다는 것을 콤보박스에서는 누른다는 개념으로 이해해야 하는 점이었다. 스위치를 누르면 5V의 공급전압이 GND로 가지 않고 LED에 공급되는 것이고 스위치를 누르지 않으면 5V의 공급전압이 LED로 가지 못하고 GND로 흘러 전압강하가 발생한다. 따라서 LED에 5V의 전압이 공급될 때 “스위치를 눌렀다” 라고 정의하고 LED 안의 설계된 논리도에서는 1로 볼 수 있는 것이다. 반면에 LED가 전압을 공급받지 못하고 GND로 강하될 경우 “스위치를 누르지 않았다” 라고 정의하고 LED 안의 설계된 논리도에서는 0으로 볼 수 있는 것이다. 전압이 LED에 들어오는 지의 유무와 LED의 작동여부를 숫자 1,0으로 표현하여 재정리해봤다.AND 게이트 실험)스위치1스위치2LED1 작동여부실험 1111실험 2100실험 3010실험 4000실제로 스위치1, 스위치2를 입력, LED를 출력으로 봤을 때 실험결과가 AND 게이트의 입력에 따른 출력의 결과와 일치한다.XOR 실험)스위치1스위치2LED1 작동여부실험 1110실험 2101실험 3011실험 4000실제로 스위치1, 스위치2를 입력, LED를 출력으로 봤을 때 실험결과가 XOR 게이트의 입력에 따른 출력의 결과와 일치한다.4-bit XOR 실험)실제로 버스 스위치1~8과 스위치 1을 4비트 XOR 게이트의 입력, LED1을 4비트 XOR 게이트의 출력으로 봤을 때 실험결과가 4비트 XOR 게이트의 입력에 따른 출력의 결과와 일치한다.Full Add