산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

Verilog 모듈의 기본 구조를 학습하고, Verilog 'wire' 데이터 타입과 벡터 형태 사용 예제를 보며, VHDL과의 차이점을 간략히 살펴봅니다.

이 기사에서 Verilog 모듈의 기본 구조를 학습하고, Verilog 'wire' 데이터 타입과 벡터 형태 사용 예제를 보며, VHDL과의 차이점을 간략히 살펴봅니다.

Verilog와 VHDL은 디지털 회로를 기술하는 데 일반적으로 사용되는 두 언어입니다. AAC에는 VHDL 기본 개념을 다루는 기술 기사 시리즈가 있습니다. 이 기사는 Verilog 시리즈의 출발점 역할을 합니다.

Verilog와 VHDL 둘 다 필요한가?

논의를 시작하기 전에 분명한 질문에 답해 보겠습니다: 이 두 언어를 정말 둘 다 알아야 할까요?

Verilog와 VHDL 모두 복잡한 디지털 회로 설계에 사용할 수 있는 강력한 도구입니다. 이 두 HDL 사이에는 차이가 있지만, 하나를 마스터해 자유롭게 선택해 사용할 수 있습니다. 그러나 저는 어느 시점에서 두 언어의 기본 이해가 도움이 될 것이라고 생각합니다. 때로 설계자로서 프로젝트 코딩 아이디어를 얻기 위해 샘플 코드 세그먼트가 필요합니다. 인터넷을 몇 시간 동안 뒤져 겨우 찾았는데 익숙하지 않은 HDL로 작성되어 이해가 안 될 수 있습니다. 언어에 대한 기본 이해 없이는 그 기법을 완전히 이해하지 못할 수 있습니다.

Verilog의 진화

Verilog는 1984년 초 Gateway Design Automation에서 설계되었습니다(VHDL이 미 국방부에 의해 시작된 지 약 3년 후). 국방부의 지원으로 VHDL은 1987년 IEEE 표준이 되었습니다. Verilog는 1995년까지 현장에 등장하지 않았습니다. 오늘날 VHDL과 Verilog 모두 인기 있는 HDL이며 FPGA 설계 도구는 보통 두 언어를 모두 지원합니다.

'Verilog'라는 단어는 'verification(검증)'과 'logic(논리)'의 합성어입니다. 이 언어가 처음에 시뮬레이션과 검증 도구로 제안되었기 때문입니다. Verilog 개념과 문법을 시작해 봅시다.

예제 1

첫 예제로 그림 1에 묘사된 회로의 Verilog 코드를 작성해 보겠습니다.

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

그림 1. Circuit_1

두 입력과 한 출력이 있습니다. 포트는 모두 1비트 폭입니다. 회로 기능은 두 입력을 AND하여 결과를 out1 포트에 출력하는 것입니다.

Circuit_1 모듈에 대한 가능한 Verilog 설명은:

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

1행과 8행

이 두 줄은 'module'과 'endmodule' 키워드를 사용하여 그 사이의 줄(2-7행)이 'Circuit_1'이라는 회로를 설명함을 지정합니다. 이 이름은 임의적이며 나중에 이 회로를 참조할 수 있게 합니다.

2-6행

이 줄들은 'Circuit_1'의 주변 환경과의 인터페이스를 지정합니다. 입력과 출력 포트는 'input'과 'output' 키워드로 설명됩니다. 이 키워드 뒤에는 'wire' 키워드와 포트 이름이 옵니다(그림 1 참조). 'wire' 키워드는 무엇을 지정합니까? 'Wire'는 설계에서 물리적 와이어를 나타내는 Verilog 데이터 타입입니다. Verilog 데이터 타입은 향후 기사에서 더 자세히 다루겠지만, 지금은 a, b, out1이라는 세 와이어가 우리 모듈에 있고 이들이 포트 선언에 지정되어 모듈 인터페이스에 해당함을 압니다.

7행

이 줄은 비트 AND 연산자(&)를 사용하여 회로 기능을 설명합니다. 'assign' 키워드는 a&b를 출력 포트 out1에 배치합니다. 이 유형의 할당을 연속 할당이라고 합니다. 오른쪽 피연산자가 변경될 때마다 할당이 항상 활성 상태라 a&b가 평가되어 out1에 할당되기 때문입니다. 연속 할당을 입력이 변경될 때마다 출력이 지속적으로 업데이트되는 조합 회로로 상상할 수 있습니다. 이 예에서 이 조합 회로는 간단한 AND 게이트입니다. Verilog HDL에는 향후 기사에서 다룰 절차적 할당도 있습니다.

이제 Xilinx ISE 같은 소프트웨어 패키지로 위 코드를 검증할 수 있습니다. 이 소프트웨어의 Verilog 기반 튜토리얼은 여기(PDF)에서 찾을 수 있습니다.

예제 1과 VHDL 코드 비교

그림 2는 Circuit_1 모듈에 대한 Verilog와 VHDL 설명을 보여줍니다.

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

그림 2. Circuit_1에 대한 Verilog와 VHDL 설명 비교.

보시다시피 VHDL로 코딩할 때 일부 라이브러리를 포함해야 합니다. 이 라이브러리는 데이터 타입과 연산자 정의를 제공합니다. 이러한 라이브러리 추가와 VHDL의 일반적인 형식을 고려하면 VHDL 코드가 더 장황합니다. 그러나 이 장황함이 단점만은 아닙니다. 예를 들어 VHDL의 라이브러리 관리 기능은 상위 시스템 모델링 시 유용할 수 있습니다. 향후 기사에서 이 두 HDL의 장단점을 가끔 논의하겠습니다.

Verilog는 4값 시스템을 가집니다

대부분의 Verilog 데이터 타입에 사용되는 네 가지 기본 값이 있습니다. Listing 1에서 정의된 와이어는 다음 값 중 하나를 가질 수 있습니다:

VHDL std_logic 데이터 타입은 아홉 가지 다른 값을 가질 수 있지만 일반적으로 사용되는 값은 '0', '1', 'Z', '-'(돈케어)입니다.

예제 2

또 다른 예로 그림 3에 표시된 회로(Circuit_2라고 함)의 Verilog 코드를 작성해 보겠습니다.

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

그림 3. Circuit_2

다음 Verilog 코드가 이 회로를 설명합니다:

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

위 코드의 요소는 Example 1과 유사하지만, 코드 10행에 내부 신호가 정의되어 있습니다. 이 연결의 데이터 타입을 지정하기 위해 'wire' 키워드가 사용됩니다. 위에서 논의한 바와 같이 'wire' 데이터 타입은 설계에서 물리적 와이어로 변환됩니다.

위 코드는 또한 새로운 Verilog 비트 연산자를 사용합니다: NOT용 ~, OR 연산용 |. 또 다른 유용한 비트 연산자는 XOR 연산용 ^입니다. 그림 4는 Circuit_2 모듈에 대한 Verilog와 VHDL 설명을 모두 보여줍니다. 이러한 비교는 두 언어의 차이점과 유사점을 보는 데 도움이 됩니다.

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

그림 4. Circuit_2에 대한 Verilog와 VHDL 설명 비교.

예제 3

세 번째이자 마지막 예제로 그림 5에 표시된 회로도의 Verilog 코드를 제공하겠습니다.

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

그림 5. 예제 3 회로도.

파란 입력 포트와 빨간 입력 포트 사이에 특정 관계가 있음을 알 수 있습니다: 해당 입력이 AND 연산자로 결합됩니다. 결과는 출력 포트에 할당됩니다. 이런 경우 신호를 그룹화하여 벡터로 다룰 수 있습니다. 이는 코드를 간결하고 읽기 쉽게 만듭니다.

Verilog의 벡터 개념을 사용하면 Listing 1의 코드를 위 회로를 설명하도록 쉽게 확장할 수 있습니다(아래 Listing 3 코드 참조).

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

벡터의 인덱스 범위는 오름차순([0:2] 위 사용) 또는 내림차순([2:0])일 수 있습니다. 위에서는 오름차순 형식을 사용했지만, 내림차순 형태가 보통 덜 오류가 발생합니다. 이는 내림차순 스타일이 이진수의 최좌측 위치가 가장 높은 인덱스를 가짐에 대한 우리의 인식과 일치하기 때문입니다. 벡터는 VHDL에서도 사용됩니다.

그림 6은 Listing 3 코드의 ISE 시뮬레이션을 보여줍니다.

Verilog 입문: 첫 하드웨어 기술 모듈 만들기

그림 6. 예제 3 코드의 ISE 시뮬레이션.

이 기사에서 VHDL과 Verilog 둘 다 배우는 것이 좋다는 점, Verilog 모듈의 기본 구조, Verilog 'wire' 데이터 타입과 벡터 형태를 익혔습니다. 또한 VHDL과 Verilog의 차이점을 간략히 다루었습니다. Verilog 시리즈의 다음 기사에서는 Verilog로 조합 회로 설계하는 방법을 논의할 것입니다.

임베디드

  1. Code-Ready Containers: Red Hat OpenShift로 클라우드 네이티브 프로세스 자동화 실전 가이드
  2. 세라믹 3D 프린팅 실용 가이드: 기술, 소재, 설계 팁
  3. TJBot 시작하기: 나만의 AI 로봇 제작, 설정, 음성 제어
  4. 라즈베리 파이 3에 RAK 831 LoRa 게이트웨이 배포 단계별 가이드
  5. 라즈베리 파이 3에 RAK831 모듈로 LoRa 게이트웨이 구축하기 - 단계별 가이드
  6. 이노디스크 웨비나: 에지 AI 추론 마스터하기 - 실행 가능한 인사이트 실전 가이드
  7. 이글 그룹 소개: 고품질 금속 가공의 파트너
  8. Cat® 기계 최적화: My.Cat.com 완벽 활용 가이드
  9. Docker로 PLCnext에 Node-RED 배포하기: 단계별 가이드
  10. PLCnext에서 Go 애플리케이션 빌드하기: 초보자 가이드