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

Verilog 하드웨어 설명 언어 시작하기

이 기사에서는 Verilog 모듈의 기본 구조를 연구하고 Verilog "와이어" 데이터 유형을 사용하는 몇 가지 예를 살펴보겠습니다. 벡터 형식이며 VHDL과 Verilog의 몇 가지 차이점에 대해 간략히 설명합니다.

이 기사에서는 Verilog 모듈의 기본 구조를 연구하고 Verilog "와이어" 데이터 유형과 해당 벡터 형식을 사용하는 몇 가지 예를 살펴보고 VHDL과 Verilog의 몇 가지 차이점에 대해 간략하게 설명합니다.

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

Verilog와 VHDL이 모두 필요한가요?

토론을 시작하기 전에 이 두 가지 언어를 모두 알아야 합니까? 라는 분명한 질문에 답하겠습니다.

Verilog와 VHDL은 모두 복잡한 디지털 회로를 설계하는 데 사용할 수 있는 강력한 도구입니다. 이 두 HDL 간에는 약간의 차이점이 있지만 마스터하고 사용할 둘 중 하나를 자유롭게 선택할 수 있습니다. 그러나 언젠가는 두 언어에 대한 최소한의 기본적인 이해가 있으면 도움이 될 것이라고 믿습니다. 때로는 디자이너로서 프로젝트 코딩에 대한 아이디어를 얻기 위해 샘플 코드 세그먼트가 필요합니다. 우리는 몇 시간 동안 그물을 서핑하고 마침내 필요한 것을 찾았지만 우리에게 의미가 없었습니다. 그것은 우리에게 완전히 낯선 HDL로 작성되었습니다. 언어에 대한 기본적인 이해가 없으면 기술을 완전히 이해하지 못할 수 있습니다.

Verilog 진화

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

Verilog라는 단어는 "verification"과 "logic"의 합성어로, 시뮬레이션 및 검증 도구로 처음 제안된 언어이기 때문입니다. Verilog 개념과 구문을 시작하겠습니다.

예시 1

첫 번째 예로서 그림 1과 같은 회로에 대한 Verilog 코드를 작성해 보겠습니다.

그림 1. Circuit_1

2개의 입력과 1개의 출력이 있습니다. 포트의 너비는 모두 1비트입니다. 회로의 기능은 두 입력을 AND하고 그 결과를 out1 포트에 넣는 것입니다.

Circuit_1 모듈에 대한 가능한 Verilog 설명은 다음과 같습니다.

1행과 8행

이 두 줄은 "module"과 "endmodule"이라는 키워드를 사용하여 그 사이의 줄(2~7줄)이 모두 "Circuit_1"이라는 회로를 설명하도록 지정합니다. 이 이름은 임의적이며 나중에 이 회로를 참조할 수 있습니다.

2~6행

이 라인은 주변 환경과 "Circuit_1"의 인터페이스를 지정합니다. 입력 및 출력 포트는 "입력" 및 "출력" 키워드를 사용하여 설명됩니다. 이 키워드 뒤에는 "wire"라는 또 다른 키워드와 포트 이름이 옵니다(그림 1 참조). 키워드 "wire"는 무엇을 지정합니까? "와이어"는 설계에서 물리적 와이어를 나타내는 Verilog 데이터 유형입니다. Verilog 데이터 유형에 대해서는 향후 기사에서 더 자세히 논의할 것이지만 현재로서는 우리 모듈에 3개의 와이어, b 및 out1이 있다는 것을 알고 있으며 이들은 포트 선언에 지정되어 있으므로 다음과 같습니다. 모듈 인터페이스.

7행

이 줄은 비트 AND 연산자, 즉 &를 사용하여 회로의 기능을 설명합니다. 키워드 "assign"은 출력 포트 out1에 &b를 넣습니다. 이러한 유형의 할당을 연속 할당이라고 합니다. 오른쪽에 있는 피연산자가 변경될 때마다 할당이 항상 활성화되어 있고 &b가 평가되어 out1에 할당되기 때문에 그렇게 부릅니다. 입력에 따라 출력이 지속적으로 업데이트되는 조합 회로로 연속 할당을 상상할 수 있습니다. 이 예에서 이 조합 회로는 단순한 AND 게이트입니다. Verilog HDL에는 향후 기사에서 논의될 절차적 할당도 있습니다.

이제 Xilinx ISE와 같은 소프트웨어 패키지를 사용하여 위의 코드를 확인할 수 있습니다. 여기(PDF)에서 이 소프트웨어의 Verilog 기반 자습서를 찾을 수 있습니다.

예 1과 VHDL 코드 비교

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

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

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

Verilog에는 4가지 가치 시스템이 있습니다.

대부분의 Verilog 데이터 유형에는 4가지 기본 값이 사용됩니다. Listing 1에 정의된 와이어는 다음 값 중 하나를 사용할 수 있습니다.

<울>
  • 0:논리 낮음 또는 거짓 조건
  • 1:논리 높음 또는 참 조건
  • z:고임피던스 상태의 경우(삼중 상태 버퍼의 출력을 설명하는 데 사용할 수 있음)
  • x:신경쓰지 않거나 알 수 없는 값의 경우(입력이 초기화되지 않았거나 두 개 이상의 충돌하는 출력이 함께 연결된 경우)
  • VHDL std_logic 데이터 유형은 9가지 다른 값을 가질 수 있지만 일반적으로 사용되는 값은 '0', '1', 'Z' 및 '-'입니다('-'는 상관 없음을 나타냄).

    예시 2

    또 다른 예로, 그림 3에 표시된 회로(Circuit_2로 레이블 지정)에 대한 Verilog 코드를 작성해 보겠습니다.

    그림 3. Circuit_2

    다음 Verilog 코드는 이 회로를 설명합니다.

    위 코드에 사용된 요소는 코드의 10행에 내부 신호가 정의되어 있다는 점을 제외하고 예제 1과 유사합니다. "wire" 키워드는 이 연결의 데이터 유형을 지정하는 데 사용됩니다. 위에서 논의한 바와 같이 "와이어" 데이터 유형은 설계에서 물리적 와이어로 변환됩니다.

    위의 코드는 또한 몇 가지 새로운 Verilog 비트 연산자를 사용합니다. ~ for NOT 및 | OR 연산용. 또 다른 유용한 비트 연산자는 XOR 연산에 대한 ^입니다. 그림 4는 Circuit_2 모듈에 대한 Verilog 및 VHDL 설명을 모두 보여줍니다. 이러한 비교를 통해 두 언어 간의 차이점과 유사점을 파악할 수 있습니다.

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

    예시 3

    세 번째이자 마지막 예에서는 그림 5에 표시된 회로도에 대한 Verilog 코드를 제공합니다.

    그림 5. 예 3의 개략도.

    보시다시피 파란색 입력 포트와 빨간색 입력 포트 사이에는 특정 관계가 있습니다. 해당 입력은 AND 연산자와 결합됩니다. 결과는 출력 포트에 할당됩니다. 이러한 경우 신호를 그룹화하고 벡터로 처리할 수 있습니다. 이렇게 하면 코드가 간결하고 가독성이 높아집니다.

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

    벡터의 인덱스 범위는 오름차순(위에서 사용된 [0:2]) 또는 내림차순([2:0])일 수 있습니다. 위에서 오름차순 형식이 사용되었지만 일반적으로 내림차순 형식을 사용하는 것이 오류가 덜 발생합니다. 이는 내림차순 스타일이 이진수의 가장 왼쪽 위치에 가장 높은 인덱스가 있다는 우리의 인식과 일치하기 때문입니다. 벡터는 VHDL에서도 사용됩니다.

    아래 그림 6은 목록 3에 있는 코드의 ISE 시뮬레이션을 보여줍니다.

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

    이 기사에서 우리는 VHDL과 Verilog를 모두 배우는 것이 좋은 아이디어라고 논의했고 Verilog 모듈의 기본 구조를 연구했으며 Verilog "와이어" 데이터 유형과 그 벡터 형식에 익숙해졌습니다. 또한 VHDL과 Verilog의 몇 가지 차이점에 대해서도 간략하게 설명했습니다. Verilog 시리즈의 다음 기사에서는 Verilog의 조합 회로 설계에 대해 설명합니다.


    임베디드

    1. 코드 준비 컨테이너:클라우드에서 프로세스 자동화 도구 시작하기
    2. 세라믹 3D 프린팅 시작하기
    3. TJBot 시작하기
    4. RAK 831 Lora Gateway 및 RPi3 시작하기
    5. RAK831 LoRa 게이트웨이 및 RPi3 시작하기
    6. 가장자리에서 AI 추론을 시작하는 방법
    7. Eagle Group 시작하기:알아야 할 사항
    8. My.Cat.com 시작하기
    9. Node-RED 및 Docker 시작하기
    10. Go on PLCnext 시작하기