• 2023. 8. 19.

    by. 도 현

    반응형

    Quartus II는 ALTERA에서 제공하는 디지털 회로 설계 소프트웨어이다. Quartus II를 이용해서 그래픽으로 회로를 설계할 수 있을 뿐만 아니라 VHDL이나 Verilog-HDL과 같은 텍스트에 의해 프로그래밍 방식으로 설계를 할 수도 있다. 간단한 회로를 Verilog-HDL을 이용하여 설계하고 설계된 회로를 검증하기 위해 시뮬레이션한다.

     

    1. 디코더(Decoder) 설계

    디코더는 입력에 가해지는 n비트의 2진 코드를 최대 2^n개의 서로 다른 정보로 바꿔주는 조합회로이다. 만일 n비트 디코드 정보가 다 사용되지 않거나 무관조건(don't care condition)을 가진다면 디코더의 출력 수는 2^n개 보다 적게 될 수 있다. 

     

    새로운 프로젝트 생성

    Quartus II를 실행하고, 그림과 같이 File - New Project Wizard 메뉴를 선택하여 새로운 프로젝트를 생성한다. 첫 단계로 프로젝트 관련 파일들이 저장될 경로, 프로젝트 이름, Top-Level Entity 등을 설정한다. 다음으로 프로젝트에 필요한 파일들을 추가하거나, 사용자 라이브러리에 있는 파일들을 참조하기 위한 설정을 해준다. 이 부분은 여러 사람들이 각각의 프로젝트를 나누어 설계하고, 최종 top 프로젝트에서 하나로 모아 설계하는 과정에서 유용하게 사용될 수 있다. 이 단계는 Default 세팅으로 다음 단계로 넘어간다.

    다음으로 Target 디바이스를 설정하는 단계로써, EasyFPGA-Combo는 Cyclone II EP2C50F672C8 디바이스가 장착되어 있으므로 선택하면 된다. Quartus II에는 설계입력, 합성, 시뮬레이션 등의 작업을 수행하는 툴들이 기본적으로 포함되어 있다. 그러나 Quartus II가 FPGA 디바이스 지원을 목적으로 만들어진 소프트웨어이므로 단계별 설계 작업에서 최대의 성능을 발휘하지 못할 수 도 있다. 합성, 시뮬레이션, 타이밍 분석 등의 작업에서 Quartus II 보다 성능이 우수한 다른 EDA 툴과 연동해서 작업이 가능하며, 이를 위해서는 EDA Tool Setting 대화창에서 설정해야한다. 타 회사의 EDA 툴을 사용하려면 사용자의 컴퓨터에 해당 툴이 설치되어 있어야 한다.

     

    HDL 코드 작성

    HDL 기반의 설계입력을 위해서는 Text Editor 창을 활성화한다. File - New 메뉴를 선택하면 New 대화창이 활성화 되며, 여기에서 Verilog HDL File을 선택하면 된다. Text Editor 창에서 설계하고자 하는 내용을 입력하면 된다.

     

    2. 실험결과

    Quartus II Simulator를 이용한 시뮬레이션

    Quartus II Simulator는 기능 시뮬레이션과 타이밍 시뮬레이션을 모두 지원한다. 기능 시뮬레이션은 단지 회로를 논리적 동작만은 검증하며, 타이밍 시뮬레이션은 타깃 디바이스에 매핑된 회로의 지연특성을 고려하여 검증한다. Quartus II의 시뮬레이션은 기본적으로 타이밍 시뮬레이션으로 설정되어 있다. 따라서 시뮬레이션 설정에 대한 변경 없이 실행시키면 타이밍 시뮬레이션이 실행된다. 일반적으로 기능 시뮬레이션을 통해 설계된 회로의 동작을 먼저 검증한 후, 타이밍 시뮬레이션을 통해 타깃 디바이스에서의 동작을 검증하는 2단계 과정으로 수행된다. 시뮬레이션을 위해서는 회로에 대한 컴파일이 완료되어야 하며, 컴파일의 Fitting 단계에서 생성되는 타이밍 정보가 포함된 Netlist가 시뮬레이션에 사용된다. 기능 시뮬레이션을 위해서는 Quartus II의 Generate Functional Simulation Netlist 명령어를 사용하여 타이밍 정보가 포함되지 않은 netlist를 생성해야 한다. 타이밍 시뮬레이션을 위해서는 Quartus II 메뉴에서 File - New를 선택하여 Other Files에서 Vector Waveform File을 선택한다. 시뮬레이션 입력파형을 생성할 수 있는 Waveform 창이 활성화되면, 시뮬레이션할 회로의 입/출력 포트를 불러온다. Name 필드에서 마우스 왼쪽 버튼을 더블 클릭하여 Insert Node or Bus 창이 활성화되면, Node Finder  버튼을 클릭한다. Node Finder 대화창에서 우측 상단의 List 버튼을 클릭하면 좌측 하단의 Nodes Found 필드에 설계된 회로의 입/출력 포트들이 나열된다. 나열된 포트들 중에 필요한 포트를 찾아서 선택한 후, 대화창 중앙의 버튼을 이용하여 우측의 Selected Nodes 필드로 옮긴다. 포트 선택이 완료되었으면 OK 버튼을 눌러 대화창을 닫는다.

    이상의 과정을 거치면 Waveform 창에 읽어 들인 포트들이 표시된다. 이제 시뮬레이션 입력파형을 설정해 주어야 한다. 포트를 선택한 후, 마우스 오른쪽 버튼을 눌러 팝업 메뉴가 나타나면 메뉴에서 Value를 선택하여 원하는 파형을 줄 수 있다. 모든 입력신호에 대한 파형설정이 완료되면, Waveform 창에 설정된 파형 정보를 파일로 저장한다(decoder.vwf). 저장된 waveform 파일을 시뮬레이터의 입력으로 사용하기 위해서는 Simulator Setting을 설정해야 한다. Quartus II 메뉴의 Assignments - Settings를 실행시키고 Category 필드에서 Simulator Settings를 선택한 후, Simulation input 필드에 저장된 Waveform 파일(decoder.vwf)을 지정한다. 입력 파형에 대한 정의가 완료되면, Processing - Start Simulation을 통해 시뮬레이션을 실행한다.

    반응형