대부분의 VHDL 디자인은 클럭 로직을 사용합니다. , 동기 논리라고도 함 또는 순차 논리 . 클럭된 프로세스는 마스터 클럭 신호에 의해서만 트리거되고 다른 입력 신호가 변경될 때는 트리거되지 않습니다. 클럭 로직의 기본 구성 요소는 플립플롭이라는 구성 요소입니다. . 다양한 변형이 있으며 이 튜토리얼에서는 네거티브 리셋이 있는 포지티브 에지 트리거 플립플롭에 중점을 둘 것입니다. 플립플롭은 샘플 앤 홀드 회로로, 클록 신호의 상승 에지가 도착할 때 입력에서 출력으로 값을 복사합니다. 그런 다음 출력은 클록의 다음 상승 에
기본 VHDL 자습서 시리즈의 자습서 12-17을 완료한 후 이 VHDL 퀴즈로 진행 상황을 테스트하세요! 서명된 유형에 대한 설명으로 옳은 것은? 부호 없는 유형보다 높은 값을 나타냄 맨 왼쪽 비트는 1입니다. 값은 음수여야 합니다. 오버플로는 런타임 오류 옳은! 잘못된! - 이 동시 프로세스에 해당하는 것은 무엇입니까? 옳은! 잘못된! - 이 코드를 실행한 후 출력은 어떤 값을 갖게 될까요? 0000 0001 UUUU XXXX
이전 자습서에서는 wait for를 사용했습니다. 시뮬레이션에서 시간을 지연시키는 명령문. 그러나 생산 모듈은 어떻습니까? wait for 문을 사용할 수 없습니다. 회로의 전자에게 주어진 시간 동안 일시 중지하도록 말할 수 없기 때문에 시뮬레이션에서만 작동합니다. 그렇다면 디자인 모듈에서 어떻게 시간을 추적할 수 있습니까? 답은 단순히 클럭 사이클을 계산하는 것입니다. 모든 디지털 설계는 알려진 고정 주파수에서 진동하는 클록 신호에 액세스할 수 있습니다. 따라서 클럭 주파수가 100MHz라는 것을 알면 1억 클럭 사이클을 세어
절차는 코드 반복을 방지하는 데 도움이 되는 VHDL의 하위 프로그램 유형입니다. 때로는 설계 전반에 걸쳐 여러 위치에서 동일한 작업을 수행해야 할 필요가 있습니다. 모듈을 생성하는 것은 사소한 작업에는 과도할 수 있지만 절차가 필요한 경우가 많습니다. 프로시저는 모든 선언적 영역 내에서 선언할 수 있습니다. 절차의 범위는 선언된 모든 곳, 아키텍처, 패키지 또는 프로세스로 제한됩니다. 프로시저를 호출할 때마다 호출된 위치에 프로시저 코드가 삽입된 것처럼 작동합니다. 프로시저는 함수처럼 값을 반환하지 않지만 out을 선언하여 값
유한 상태 기계(FSM)는 출력이 입력의 현재 상태뿐만 아니라 과거 입력 및 출력 값에 따라 달라지는 메커니즘입니다. VHDL에서 일종의 시간 종속 알고리즘을 생성해야 할 때마다 또는 FPGA에서 컴퓨터 프로그램을 구현하는 문제에 직면한 경우 일반적으로 FSM을 사용하여 해결할 수 있습니다. VHDL의 상태 머신은 상태 신호 값에 의해 출력이 제어되는 클럭 프로세스입니다. 상태 신호는 이전 반복에서 발생한 일의 내부 메모리 역할을 합니다. 이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다. 이 교차로의 신호등 상
함수는 자주 사용되는 알고리즘을 구현하는 데 사용할 수 있는 VHDL의 하위 프로그램입니다. 함수는 0개 이상의 입력 값을 사용하며 항상 값을 반환합니다. 반환 값 외에도 함수를 프로시저와 구분하는 것은 Wait 문을 포함할 수 없다는 것입니다. 이는 함수가 항상 시뮬레이션 시간을 0으로 소비한다는 것을 의미합니다. 다른 프로그래밍 언어의 함수나 메서드에 익숙하다면 VHDL 함수를 이해하기 쉬워야 합니다. VHDL에서는 반환 값을 생략하거나 void를 반환할 수 없으며, 함수는 항상 무언가를 반환해야 하고 반환 값은 무언가에 할당
불순한 함수는 범위 내의 모든 신호를 읽거나 쓸 수 있으며 매개변수 목록에 없는 신호도 읽을 수 있습니다. 함수에 부작용이 있다고 말합니다. . 부작용이 의미하는 바는 함수가 동일한 매개변수로 호출될 때마다 동일한 값을 반환한다는 보장이 없다는 것입니다. 함수가 매개변수 목록에 없는 신호를 읽을 수 있는 경우 반환 값도 이러한 그림자 매개변수에 따라 달라질 수 있습니다. 또한 함수는 반환 값에서 할당되지 않은 외부 신호를 변경할 수 있습니다. 이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다. 순수 함수를 선언할
프로시저에서 외부 신호를 구동할 수 있습니다. 신호가 프로시저 범위 내에 있는 한 매개변수 목록에 나열되지 않더라도 읽기 또는 쓰기를 위해 액세스할 수 있습니다. 아키텍처의 선언적 영역에 선언된 프로시저는 외부 신호를 구동할 수 없습니다. 이는 단순히 컴파일 시간에 해당 범위에 신호가 없기 때문입니다. 반면에 프로세스 내에서 선언된 프로시저는 프로세스가 볼 수 있는 모든 신호에 액세스할 수 있습니다. 이 블로그 게시물은 기본 VHDL 자습서 시리즈의 일부입니다. 이러한 절차는 동일한 작업이 여러 번 발생하는 프로세스에서 알고
기본 VHDL 자습서 시리즈의 4부를 완료한 후 이 VHDL 퀴즈로 진행 상황을 테스트하세요! VHDL에서 실시간을 어떻게 측정합니까? 사용하여 1ns 대기 문 계산하여 시계 주기 악용하여 전파 지연 옳은! 잘못된! - 어떤 문장이 참인지 프로시저는 대기 문을 포함할 수 없습니다. 프로시저 매개변수 항상 입력입니다 사용 시 프로시저에서 return 키워드는 값이 없어야 합니다. 옳은! 잘못된! - 이 화재 제어 시스템의 근본적인 결함을 설명하는 설명은 무엇입니까? 재설정 누락 주 신
연결 목록은 동적 데이터 구조입니다. 연결 리스트는 요소의 총 개수를 미리 알 수 없을 때 사용할 수 있습니다. 메모리에 포함된 항목 수에 따라 메모리가 늘어나고 줄어듭니다. 연결 목록은 객체 지향 프로그래밍 언어의 클래스를 사용하여 가장 편리하게 구현됩니다. VHDL에는 사용자로부터 구현의 복잡성을 추상화하는 데 사용할 수 있는 몇 가지 개체 지향 기능이 있습니다. 이 기사에서는 액세스 유형, 레코드 및 보호 유형을 사용하여 VHDL에서 연결 목록을 구현합니다. 모든 연결 목록 코드를 작성할 새 VHDL 패키지를 만들 것입니다
자가 점검 테스트벤치는 출력을 수동으로 검사하기 위해 작업자에 의존하지 않고 테스트 대상 장치(DUT)의 정확성을 검증하는 VHDL 프로그램입니다. 자체 검사 테스트벤치는 완전히 자체적으로 실행되며 마지막에 OK 또는 Failed 메시지를 출력합니다. 모든 VHDL 모듈에는 자체 검사 테스트벤치가 연결되어 있어야 합니다. 모든 모듈이 언제든지 의도한 동작을 하는지 확인할 수 있는 것이 중요합니다. 예를 들어, DUT, 하위 모듈 또는 인터페이스 모듈을 변경할 때. 우리 모두는 물건이 깨질 수 있다는 것을 알고 있으며 이러한 문제를
대화형 테스트벤치는 테스트벤치가 실행되는 동안 작업자가 테스트 대상 장치(DUT)에 대한 입력을 제공하는 시뮬레이터 설정입니다. 대부분의 경우 이는 시뮬레이터 콘솔에 명령을 입력하여 DUT에 자극을 제공하는 것을 의미합니다. 항상 자체 검사 테스트벤치를 만들어야 하지만 대화형 테스트벤치는 훌륭한 보완책이 될 수 있습니다. 자체 검사 테스트벤치의 코드를 변경하는 것보다 대화형 테스트벤치로 임시 테스트를 수행하는 것이 더 쉽습니다. 종종 실험실에서 테스트벤치에서 시험해보고 싶은 문제를 발견하게 될 것입니다. 대화형 테스트벤치를 사용
순환 버퍼는 순차 프로그래밍 언어로 대기열을 생성하는 데 널리 사용되는 구성이지만 하드웨어에서도 구현할 수 있습니다. 이 기사에서는 블록 RAM에서 FIFO를 구현하기 위해 VHDL에서 링 버퍼를 생성할 것입니다. FIFO를 구현할 때 많은 설계 결정을 내려야 합니다. 어떤 종류의 인터페이스가 필요합니까? 자원에 제약이 있습니까? 덮어쓰기 및 덮어쓰기에 탄력적이어야 합니까? 대기 시간이 허용됩니까? FIFO를 생성하라는 요청을 받았을 때 떠오르는 질문 중 일부입니다. 온라인에는 많은 무료 FIFO 구현과 Xilinx LogiCO
제한된 무작위 검증은 테스트 대상 장치(DUT)에 대한 의사 무작위 트랜잭션 생성에 의존하는 테스트벤치 전략입니다. 목표는 DUT와의 무작위 상호 작용을 통해 미리 정의된 여러 이벤트의 기능 범위에 도달하는 것입니다. OSVVM(Open Source VHDL Verification Methodology)은 제한된 무작위 테스트벤치를 생성하기 위한 여러 편리한 패키지를 포함하는 무료 VHDL 라이브러리입니다. 우리는 특히 이 기사에서 사용할 RandomPkg 및 CoveragePck에 관심이 있습니다. 이 라이브러리의 기능에 대해
지난 6개월 동안 작업한 VHDL 및 FPGA 과정이 완료되기 시작했음을 알리게 되어 기쁩니다. 이 과정은 현재 베타 버전이며 올 가을에 처음으로 시작할 계획입니다. FPGA 과정은 누구를 위한 것입니까? FPGA 과정은 다른 프로그래밍 언어에 대한 지식이 있지만 VHDL 및 FPGA가 처음인 개발자를 대상으로 합니다. 이 과정은 초급 또는 중급 수준에서 고급 VHDL 코딩 구성을 이해하고 사용할 수 있도록 안내합니다. 이 과정은 FPGA 개발 업무를 맡은 전문 소프트웨어 엔지니어에게 적합합니다. 또한 하드웨어 설계에 관심이 있
AXI 모듈을 인터페이스하기 위한 로직을 처음 생성해야 했을 때 AXI 인터페이스의 특성에 약간 짜증이 났습니다. 일반적인 사용 중/유효, 전체/유효 또는 비어 있음/유효 제어 신호 대신 AXI 인터페이스는 준비 및 유효라는 두 개의 제어 신호를 사용합니다. 나의 좌절은 곧 경외심으로 바뀌었습니다. AXI 인터페이스에는 추가 제어 신호를 사용하지 않고 흐름 제어가 내장되어 있습니다. 규칙은 충분히 이해하기 쉽지만 FPGA에서 AXI 인터페이스를 구현할 때 고려해야 할 몇 가지 함정이 있습니다. 이 기사에서는 VHDL에서 AXI F
블록 RAM을 초기 값으로 채우는 편리한 방법은 ASCII 파일에서 2진 또는 16진 리터럴을 읽는 것입니다. 이것은 VHDL에서 ROM(읽기 전용 메모리)을 만드는 좋은 방법이기도 합니다. 결국 RAM과 ROM은 FPGA에서 같은 것이고 ROM은 읽기만 하는 RAM입니다. 이 기사 전체의 예에서는 다음 상수와 RAM 유형이 VHDL 파일의 선언적 영역의 시작 부분에 선언되었다고 가정합니다. constant ram_depth : natural := 256;constant ram_width : natural := 32;type ra
파일에서 신호 값을 읽는 것은 테스트 중인 기기(DUT)에 대한 자극을 생성하는 또 다른 방법입니다. 테스트벤치 시퀀스와 타이밍은 VHDL 테스트벤치에서 한 줄씩 읽는 자극 파일에 하드 코딩되어 있습니다. 이를 통해 테스트 개체에 공급하려는 파형의 패턴을 쉽게 변경할 수 있습니다. 때때로 DUT를 통과시키려는 매우 구체적인 테스트 패턴이나 이벤트 시퀀스가 있습니다. ASCII 파일에서 각 신호가 가져야 하는 신호 값과 변경해야 하는 상대 시뮬레이션 시간을 지정하여 이를 달성할 수 있습니다. 이러한 전략에서 VHDL 테스트벤치의
이미지 파일을 비트맵 형식으로 변환하면 VHDL을 사용하여 그림을 읽는 가장 쉬운 방법이 됩니다. BMP 래스터 그래픽 이미지 파일 형식에 대한 지원은 Microsoft Windows 운영 체제에 내장되어 있습니다. 따라서 BMP는 VHDL 테스트벤치에서 사용할 사진을 저장하는 데 적합한 이미지 형식입니다. 이 기사에서는 BMP와 같은 바이너리 이미지 파일을 읽고 시뮬레이터의 동적 메모리에 데이터를 저장하는 방법을 배웁니다. 이미지를 그레이스케일로 변환하기 위해 예제 이미지 처리 모듈을 사용할 것입니다. 이것은 테스트 중인 장치(
이 비디오는 FPGA 및 프로그래머블 로직 기술에 대한 소개 프레젠테이션입니다. 2019년 11월 19일 태국 방콕에서 7 Peaks Software가 주최한 이벤트에서 45분간의 강연을 했습니다. 프레젠테이션의 주요 내용은 다음과 같습니다. 05:07 누가 FPGA를 사용합니까? 09:06 FPGA란 무엇입니까? 12:13 정적 RAM을 사용하여 논리 게이트를 에뮬레이트하는 방법 17:47 일반적인 FPGA 기본 요소 19:51 가장 저렴하고 비싼 FPGA 20:53 FPGA 평면도 24:30 VHDL 28:05 합성 및 장
VHDL