산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> VHDL

FPGA 및 ASIC 시뮬레이션을 위한 Modelsim 사용에 대한 초보자 가이드

튜토리얼 – 초보자를 위한 시뮬레이션을 위한 Modelsim 사용

Modelsim은 VHDL 및 Verilog 설계를 시뮬레이션하는 데 사용되는 Mentor Graphics에서 만든 프로그램입니다. 비즈니스와 교육 분야에서 가장 널리 사용되는 시뮬레이션 프로그램입니다. 이 튜토리얼에서는 먼저 시뮬레이션이 중요한 이유를 설명한 다음 개인적인 용도로 Modelsim Student Edition을 무료로 얻을 수 있는 방법을 보여줍니다.

시뮬레이션은 FPGA 및 ASIC 설계의 중요한 단계입니다. 시뮬레이션을 통해 디자이너는 자신의 디자인을 자극하고 자신이 작성한 코드가 자극에 어떻게 반응하는지 확인할 수 있습니다. 훌륭한 시뮬레이션은 모든 입력 시나리오가 적절하게 처리되도록 보장하기 위해 가능한 모든 설계 상태를 연습합니다. 어딘가에 if 문을 잊어버렸나요? 가능한 모든 사례 진술 할당을 제공하는 것을 기억했습니까? 이는 설계를 시뮬레이션하지 않을 때 발생하기 매우 쉬운 오류 유형입니다. 시작해 보겠습니다.

컴퓨터에 Modelsim을 다운로드하여 설치했습니까? 여기에서 받으세요. 기본 매개변수를 사용하여 설치를 수행합니다. Mentor Graphics에 라이선스를 요청해야 합니다. . 설치가 끝나면 마침을 선택해야 하며 브라우저 창이 라이센스 요청 양식과 함께 열립니다. 브라우저 북마크나 웹에 게시된 링크에서 기존 라이센스 요청 링크를 클릭하면 작동하지 않습니다.

우리가 시뮬레이션할 코드는 아래 VHDL 디자인입니다. 실제 코드는 중요하지 않으므로 Verilog를 배우고 있다면 괜찮습니다! 이 튜토리얼에서는 VHDL을 알 필요가 없습니다. VHDL 코드는 간단한 And Gate를 생성하고 테스트 벤치를 통해 여기에 일부 입력을 제공합니다. 아래 코드를 and_gate.vhd에 복사하고 테스트벤치를 and_gate_tb.vhd에 복사하세요.

and_gate.vhd:

library ieee;
use ieee.std_logic_1164.all;
entity and_gate is
 port (
 input_1 : in std_logic;
 input_2 : in std_logic;
 and_result : out std_logic
 );
end and_gate;
architecture rtl of and_gate is
 signal and_gate : std_logic;
begin
 and_gate <= input_1 and input_2;
 and_result <= and_gate;
end rtl;

and_gate_tb.vhd:

library ieee;
use ieee.std_logic_1164.all;
entity and_gate_tb is
end and_gate_tb;
architecture behave of and_gate_tb is
 signal r_SIG1 : std_logic := '0';
 signal r_SIG2 : std_logic := '0';
 signal w_RESULT : std_logic;
 
 component and_gate is
 port (
 input_1 : in std_logic;
 input_2 : in std_logic;
 and_result : out std_logic);
 end component and_gate;
 
begin
 
 and_gate_INST : and_gate
 port map (
 input_1 => r_SIG1,
 input_2 => r_SIG2,
 and_result => w_RESULT
 );
 process is
 begin
 r_SIG1 <= '0';
 r_SIG2 <= '0';
 wait for 10 ns;
 r_SIG1 <= '0';
 r_SIG2 <= '1';
 wait for 10 ns;
 r_SIG1 <= '1';
 r_SIG2 <= '0';
 wait for 10 ns;
 r_SIG1 <= '1';
 r_SIG2 <= '1';
 wait for 10 ns; 
 end process;
 
end behave;

Modelsim을 열어보겠습니다. 다음과 같은 창이 나타납니다

Modelsim 메인 창

시뮬레이션을 실행하려면 프로젝트를 생성해야 합니다. 파일 -> 새로 만들기 -> 프로젝트를 클릭합니다. 왼쪽에 창이 나타납니다. 새 프로젝트의 위치를 ​​선택하고 이름을 and_gate로 지정합니다. Modelsim의 프로젝트는 파일 확장자가 .prj입니다. 다른 설정은 기본값으로 둡니다. 이는 모든 코드가 "작업" 라이브러리로 컴파일된다는 의미입니다.

오른쪽 그림과 같이 기존 파일 추가를 클릭합니다. and_gate.vhd 및 and_gate_tb.vhd를 다운로드한 위치로 이동하여 두 항목을 모두 프로젝트에 추가합니다. 다른 설정은 기본값으로 유지하세요. 완료되면 확인을 클릭하세요.

Modelsim 프로젝트 창 – 프로젝트에 추가된 파일

이제 파일이 프로젝트에 성공적으로 추가되었습니다. 위의 Modelsim 프로젝트 창 그림에서 두 개의 파란색 물음표가 보이시나요? 이는 Modelsim이 아직 파일을 컴파일하지 않았음을 의미합니다. 소스 파일을 컴파일해야 합니다. 이렇게 하려면 and_gate.vhd를 마우스 오른쪽 버튼으로 클릭하고 컴파일을 클릭한 다음 모두 컴파일을 클릭합니다. 아래 스크린샷과 같이 콘솔 창에 컴파일이 성공했다는 메시지가 녹색으로 표시되어야 합니다.

성공적인 컴파일 결과

시뮬레이션을 시작하려면 메뉴 모음에서 시뮬레이션을 클릭한 다음 시뮬레이션 시작을 클릭하세요. 그러면 시뮬레이션 시작 창이 열립니다. work 옆의 더하기 기호를 클릭한 다음 and_gate_tb 옆의 더하기 기호를 클릭하세요. 테스트 벤치 수준에서 설계를 시뮬레이션하려면 and_gate가 아닌 and_gate_tb를 선택해야 합니다. and_gate_tb가 강조 표시되면 확인을 클릭하세요.

Modelsim 시뮬레이션 창 – 시뮬레이션 준비

거의 다 왔어요! 시뮬레이션이 준비되어 기다리고 있습니다. 이제 Modelsim을 사용하는 대부분의 시간은 파형 보기를 보는 데 사용됩니다. 파형 보기에는 설계의 모든 신호에 대한 웨이브(2진수 0과 1, 16진수, 2진수, 열거 유형 등)가 포함되어 있습니다. 이는 모듈이 다양한 자극에 어떻게 반응하는지 보여줍니다. 다음 그림은 파형 보기의 모양을 보여 주지만 먼저 모니터링할 신호를 추가해야 합니다. 이 예에서는 테스트 벤치의 모든 신호를 모니터링합니다. 이렇게 하려면 마우스 오른쪽 버튼을 클릭하세요. SIM 창의 and_gate_tb에서 Add Wave를 클릭하세요. . Modelsim의 다른 창에서 신호를 클릭하여 파형 창으로 끌 수도 있습니다.

여기에 파형 창이 있습니다. 모든 테스트 벤치 신호가 모니터링할 수 있는 신호로 추가되었습니다. 시뮬레이션을 실행하려면 작은 종이 조각과 100ns 시간 옆에 있는 아래쪽 화살표가 있는 아이콘을 클릭하세요. 그러면 100나노초 동안 시뮬레이션이 실행됩니다. 신호가 어떻게 변하는지 지켜보세요! 축하해요! 첫 번째 Modelsim 시뮬레이션을 만들었습니다!

이 튜토리얼에서는 Modelsim에서 자신만의 프로젝트를 생성하고, 프로젝트에 파일을 추가하고, 소스 파일을 컴파일하고, 시뮬레이션을 시작하고, 파형을 보는 방법을 보여주었습니다. 이제 이 웹 페이지의 모든 예제를 살펴보고 직접 시뮬레이션을 실행할 준비가 되었습니다. 탐색하려면 페이지 상단의 사이드바를 사용하세요.


VHDL

  1. VHDL에서 유한 상태 기계를 만드는 방법
  2. 통합 로직 분석기(ILA) 및 가상 입출력(VIO) 사용
  3. TEXTIO를 사용하여 BMP 파일 비트맵 이미지 읽기
  4. VHDL에서 링 버퍼 FIFO를 만드는 방법
  5. 시뮬레이션 중에 Modelsim에서 VHDL 변수를 보는 방법
  6. TEXTIO를 사용하여 테스트 벤치에서 자극 파일 읽기
  7. VHDL에서 시간을 지연시키는 방법:Wait For
  8. VHDL에서 프로시저를 사용하는 방법
  9. FPGA 핀에서 PWM을 사용하는 RC 서보 컨트롤러
  10. 변수 - VHDL 예