본문 바로가기

카테고리 없음

[Verilog] 2장. 모듈 및 테스트벤치 생성부터 시뮬레이션까지 - 개베

 

 

 

설치된 실행파일을 실행

 

 

 

Welcome창은 닫고 다음과 같은 화면이 출력

 

 

 

프로젝트 생성 : File -> New -> Project

 

 

 

적절한 새 프로젝트 이름 설정

 

 

 

새 파일 만들기 : Create New File 클릭

 

 

 

① 적절한  파일 이름 설정 (.v - Verilog 파일 확장자)

 Verilog 언어를 사용 (※VHDL -> Verilog 변경※)    

 

 

 

생성한 프로젝트에 추가된 파일을 확인

 

 

 

Add items to the Project 창은 종료

 

 

 

추가된 파일을 더블 클릭하면

코드 작성할 수 있는 공간 생성

 

 

 

Verilog 언어로 AND 모듈을 설계

 

 

 

Verilog 코드 작성

module AND(input a,b, ouput y);    // 모듈선언, 모듈이름, 모듈 입출력조건(입력 A,B  출력 Y)
    assign y = a*b;                         // 두 입력을 곱하여 출력
endmodule                                  // 모듈종료

Verilog언어로 코드를 작성 후 Ctrl+s를 눌러 저장

AND모듈을 설계하였다.

 

작성한 AND모듈의 기능 테스트를 위하여 테스트벤치 작성

테스트벤치 코드 또한 Verilog 파일이므로 새 파일 추가적으로 생성

 

 

 

테스트벤치 (새 파일) 생성 : 마우스 우클릭 -> Add to Project -> New File

 

 

 

① 파일 이름 : 모듈이름_testbbench 설정(AND_testbench.v)       

Verilog 언어를 사용 (※VHDL -> Verilog 변경※)  -> OK          

 

 

 

추가된 파일을 확인 - AND_testbench.v

 

 

 

마찬가지로 추가된 파일을 더블 클릭하면

코드 작성할 수 있는 공간 생성

 

 

 

Verilog_testbench 코드 작성

`timescale 1ns / 1ns         // 시간설정 (단위 / 해상도[정밀체크시 ex(1ns/100ps)])
module testbench;           // 모듈 선언 및 이름
reg A,B;                         // 전달받을 데이터를 저장 (계속 사용)
wire Y;                          // 전달받을 데이터를 저장하지않음  (일회성)

AND chip_and(A,B,Y);        // AND모듈호출, 호출이름:chip_and, 인풋아웃풋 

initial                // 구문으로 순차적으로 신호를 인가할 때 사용 (한번만 수행)
begin               // 구문 시작 {
A=0;B=0;#50;     // #50ns 뒤에 A단자로 0입력, B단자로 0입력 (현재시간 0ns)
A=0;B=1;#50;     // #50ns 뒤에 A단자로 0입력, B단자로 1입력 (현재시간 50ns)
A=1;B=0;#50;     // #50ns 뒤에 A단자로 1입력, B단자로 0입력 (현재시간 100ns)
A=1;B=1;#50;     // #50ns 뒤에 A단자로 1입력, B단자로 1입력 (현재시간 150ns)
end                 // 구문 종료 }

endmodule       // 모듈 종료

Verilog언어로 코드를 작성 후 Ctrl+s를 눌러 저장

AND_testbench모듈을 설계하였다.

 

 

 

저장이 완료되었다면 파일이름의 * 표시가 사라짐

 

 

 

Compile(상단 탭) -> Compile All 클릭하여 컴파일

(컴파일 - 입력 창의 텍스트 데이터를 Verilog 언어 데이터로 변환)

 

 

 

 

 왼쪽 (컴파일 전)                                                                         오른쪽 (컴파일 완료)

컴파일이 완료되면 ? -> √  처럼 기호가 바뀜

// 에러가 출력될 경우 코드 작성에서 실수한 부분이 있을 것 //

// 에러 Log를 더블클릭하여 읽고 문제 코드를 수정 //

 

 

 

컴파일된 코드 AND모듈을 테스트벤치로 시뮬레이션

시뮬레이션 경로 : Simulate(상단 탭) -> Start Simulation

 

 

 

시뮬레이션 설정 : Work[+]탭 확장 -> Ctrl + (AND, testbench) 선택 -> OK

 

 

 

 

시뮬레이션 파형 보기 : Simulation 생성 완료 -> testbench 마우스 우측 클릭 -> add wave 클릭

 

 

 

테스트벤치 파형 측정을 50ns * 4 = 200ns 로 설계하였음으로

확대버튼을 3번 눌러 측정 단위를 낮춰줌                           

 

 

 

측정 단위가 200ns 인것을 확인                          

② Run 버튼을 눌러 100ns 단위로 파형 측정을 시작   

③ 버튼을 한번 더 눌러 200ns 측정                        

 

 

 

테스트벤치 입력을 AND모듈에 적용한 시뮬레이션 파형 결과 확인

 

 

 

 

시뮬레이션 파형결과 출력

(첫번째 사진 ①마크 왼쪽) Cursor 1 우클릭으로 커서값을 조정

 

출력파형 결과

①  25ns 일때 파형 값은    A=0, B=0, Y=0
②  75ns 일때 파형 값은    A=0, B=1, Y=0                         
125ns 일때 파형 값은   A=1, B=0, Y=0                      
175ns 일때 파형 값은   A=1, B=1, Y=1

테스트벤치에서 인가한 신호가 잘 출력되었음을 결과로 확인

AND모듈을 거쳐 생성된 Y값이 정상적인지 AND모듈의 진리표를 확인할 예정

 

 

 

AND모듈의 진리표와 출력파형 결과가 일치함을 확인

 

 

 

시뮬레이션 종료 : 하단 Transcript에 quit -sim 입력

 

-END-

 

 

 

다음 장은 디지털 모듈들을 설계..?를 할 예정