답변:
배울 점을 말할 수는 없지만 여기에 VHDL 중심 사용자의 대조적 인 점이 있습니다. 가능한 한 공평하게 노력했습니다. 자신의 취향에 따라 선택하는 데 도움이 될 수 있습니다 개발 스타일 측면에서 :
그리고 "현재 사용하지 않는 두 가지 중 하나를 선호합니다"라는 문구를 따르는 유명한 인용문을 명심하십시오.
많은 컴파일 오류가 시작되지만 대부분 예상대로 작동합니다. 이것은 매우 가파른 느낌의 학습 곡선으로 이어질 수 있습니다.
오류는 시뮬레이션에서 나중에 발견됩니다. "일을 마치고 싶은 느낌"에 대한 학습 곡선은 더 얕아 지지만 더 길어집니다 (올바른 은유라면?)
또한 Verilog에게 유리한 점은 고급 검증이 Verilog의 큰 확장 인 SystemVerilog에 점점 더 기울어지고 있다는 것입니다. 그러나 고급 툴은 VHDL 합성 코드와 SystemVerilog 검증 코드를 결합 할 수도 있습니다.
또 다른 접근 방식 : MyHDL -Python의 모든 기능을 VHDL 또는 Verilog를 생성 할 수있는 일련의 합성 확장 기능을 갖춘 검증 언어로 사용합니다.
또는 Cocotb- 검증 가능한 언어로 파이썬의 모든 기능을 제공합니다. 합성 가능한 코드는 학습하기로 결정한 HDL (예 : VHDL 또는 Verilog)로 작성됩니다.
같은 주에 두 가지를 모두 배웠습니다. VHDL은 ADA / Pascal과 같고 Verilog는 C와 같습니다. VHDL은 컴파일을하기에 더 장황하고 더 고통 스럽지만, 컴파일을하면 성공할 확률이 더 좋습니다. 적어도 그것이 내가 찾은 것입니다. C와 같은 Verilog는 발로 자신을 쏠 수 있도록 매우 만족합니다. 항공 우주 / 정부와 같은 일부 산업은 VHDL에 의존하고, 다른 산업은 Verilog에 의존합니다. 두 가지 모두에서 찾은 문제는 테스트 벤치 기능이며 시뮬레이션에서 실리콘 / FPGA로 합성 할 수있는 코드 만 작성하는 법을 배우고 시도 할 때 또 다른 수준의 교육입니다.
정말라는 같은 언어가 CDL은 . 그것은 엄밀히 합성 가능하며, 다른 방법으로 테스트 벤치를 작성하고, 다른 도구로 가져올 수있는 합성 가능 Verilog를 생성합니다. 불행히도 CDL 문서가 부족하기 때문에 Verilog 또는 VHDL보다 사용하기가 얼마나 쉬운지를 보여주기 위해 전 세계에서 샘플을 가져 오기를 희망하지만 그렇게하지는 마십시오. 자체 시뮬레이션 / 테스트 환경이 제공됩니다. CDL 및 GTKWave 를 사용하면 상당한 양의 작업을 수행 할 수 있습니다.
Verilator 라는 또 다른 도구는 Verilog를 깨끗하게 유지하는 데 상당히 단단합니다. 시뮬레이션에 연결하거나 C / C ++에서 테스트 벤치를 생성하는 매우 쉬운 방법을 갖춘 무료 Verilog 시뮬레이터입니다. Verilog도 사용할 수 있으며 제한하지 않습니다. 이 이카루스의 Verilog는 어느 것이 더 크고 더 잘 알려져있다,뿐만 아니라,하지만 난 추천 할 것입니다 Verilator을 당신의 Verilog를 배우고 싶은 경우. VHDL의 경우 GHDL 이 있습니다 .VHDL 에 대한 나의 경험은 Verilator 만큼 좋지는 않지만 적어도 발을 젖히 려고 시도하는 무료 도구가 있습니다. 소프트웨어 프로그래밍 경험이있는 경우 VHDL보다 Verilog를 더 빨리 선택하여 즐길 수 있습니다.
레온에 동의합니다. 둘 다 시도하십시오. fpga4fun 및 기타 웹 페이지에는 유용한 정보가 있으며 해당 페이지 중 일부는 해당 주제에 대해 Verilog 및 VHDL에 해당하는 내용을 모두 제공합니다. 두 언어를 비교하는 데 가장 유용한 페이지가 있습니다. HDL을 사용하는 것이 커리어에서하고 싶은 일이라면 둘 다에 대해 적어도 일부 기능을 사용하는 것이 좋습니다. 하나는 실제로는 좋지만 다른 하나는 완전히 사용할 수는 없습니다.
이 문제에 대해 많은 거룩한 전쟁이 벌어졌습니다. Verilog의 한 가지 단점 은 비 결정적 동작입니다. http://www.sigasi.com/content/verilogs-major-flaw
둘 다 장단점이 있습니다. VHDL은보다 학문적이며 장황하며 복잡합니다. 더 많은 코드를 작성해야하지만 엄격할수록 작동 가능성이 높아집니다. Verilog는 일반적인 디지털 디자인에서는 더 간단하지만 까다로운 버그를 쉽게 만들 수 있습니다. VHDL은 대학에서 더 일반적입니다. Verilog는 큰 반도체 회사에서 더 일반적입니다.
일반적으로 하나 또는 다른 것을 선택하는 것은 사용하는 도구에 의해 결정됩니다. 널리 사용되는 FPGA 도구 중 일부는 VHDL로 더 잘 수행됩니다. 일부 인기있는 ASIC 도구는 Verilog를 통해 더 잘 작동합니다. 따라서 어떤 것이 더 좋을지에 따라 다릅니다.
EE 학교에서 널리 사용되는 Altera FPGA를 사용하여 소규모 프로젝트를 만들고 싶다고 가정 해보십시오. 무료 도구는 두 HDL을 모두 지원합니다. 그러나 사용자 커뮤니티가 주로 VHDL을 사용하고 있음을 알 수 있습니다. 해당 언어를 선택하면 더 많은 예제 코드, 재사용 가능한 모듈 등이 있습니다.
반대로, 심각한 칩 디자인 작업을하는 대기업에서 일하려는 경우 요즘 거의 모든 회사에서 Verilog를 사용합니다. 강력한 합성, 시뮬레이션 및 검증 도구는 Verilog에 최적화되어 있습니다. 그리고 최근에 SystemVerilog-Verilog의 확장 기능으로 고급 시스템 설계 및 검증을 지원합니다.
여기에 더 많은 토론과 여기에 유용한 링크 :
초보자 / 애호가에게는 가장 좋은 조언은 어떤 칩을 가지고 플레이할지 결정하고 공급 업체가 제공하는 예제를 보는 것입니다. 사용하십시오. 숙련 된 디지털 디자이너라면 다른 언어를 배우는 데 며칠이 걸립니다.
짧은 대답 : SystemVerilog를 사용하지만 VHDL도 배우십시오 . 가능하면 Verilog-2001을 피하십시오.
매우 긴 답변 : 현재로서는 Verilog가 Verilog-2001을 의미한다고 가정합니다. 아마도 대부분의 다른 답변도 가정합니다. 가장 좋은 제안은 아마도 둘 다 배우는 것이지만 둘 다 사용하지 않을 것입니다 (답이 끝날 때 이것에 대해 더 자세히 설명하십시오). 주요 차이점은 다음에서 다시 시작할 수 있습니다.
wire
vs reg
)즉, 가장 중요한 개념은 서로 다른 이름 (예 : always
vs process
)으로도 두 언어로 공유되며 HDL 학습의 어려움은 뒤에있는 개념 (예 : 모든 프로세스의 동시성, HW)과 더 관련이 있습니다. 언어 자체보다 관례 등. 차이점을 고려할 때 Verilog 2001과 VHDL 중에서 선택하는 경우 개인적으로 VHDL의 초보자를 처리합니다.
그러나 내가 말했듯이, 당신이 선택할 수있는 힘이 있다면 실제로 VHDL이나 Verilog-2001을 사용하지 않는 것이 좋습니다. 많은 사람들이 생각하는 것과는 달리 SystemVerilog 는 시스템 수준 설계 또는 검증에만 유용한 고급 언어가 아니며 SystemC와 같은 고급 합성 도구에 제공 될 수있는 언어와 거의 공유되지 않습니다.
대신 SystemVerilog는 Verilog 언어 (Verilog-2005 기반, http://en.wikipedia.org/wiki/SystemVerilog 참조 ) 의 전체 업데이트로, Verilog 의 간결성 과 두 가지보다 더 높은 표현력 과 일치하는 완전히 합성 가능한 하위 집합 이 있습니다. Verilog-2001과 VHDL은 제 생각에 두 세계의 최고를 제공합니다.
Verilog-2001, VHDL 또는 둘 다에서 사용할 수없는 SystemVerilog에서 사용 가능한 매우 중요한 구문 / 표현의 예는 다음과 같습니다.
always_ff
, always_latch
, always_comb
설계자가 논리의 다른 종류를 구현 블록 사이 즉시 구별 할 수 있도록하고, 블록 - 위해 always_comb
와 always_latch
- (! 특히 초보자를위한 VHDL 및 Verilog를 무한 버그의 소스) 감도 목록에 가야 자동으로 신호를 추론을logic
Verilog-2001 의 혼동 wire
및 유형을 대체하는 reg
유형logic [N-1:0][M-1:0][P-1:0]
Verilog-2001은 2 차원 버스 만 지원하고 VHDL은 디자이너가 유사한 구조를 구축하기 위해 새로운 유형을 정의하도록 강요하는 반면, 다차원 버스 (예 :)를 쉽게 구축 할 수있는 압축 유형struct
(VHDL과 유사한) 높은 수준의 구성 record
및 interface
일반 구조 (예 : 버스의 포트)를 모델링하는 데 매우 효과적으로 사용될 수있는 높은 수준의 구성연구 목적으로 매우 복잡한 멀티 코어 시스템에서 작업하면서이 모든 차이점을 "피부에서"테스트했습니다. 이제는 많은 도구에서 지원되며 Synopsys 도구 (ASIC 및 FPGA 합성 흐름 모두), Xilinx Vivado (FPGA 합성 용) 및 시뮬레이션 도구와 같은 도구가 지원한다는 사실을 거의 매일 알고 있습니다. MentorGraphics Modelsim, Cadence NCsim 및 Synopsys VCS.
완전히 완성 되려면 하드웨어 디자이너의 도구 상자에 다른 두 가지 중요한 언어가 있습니다 (이 도구의 품질은 많이 다를 수 있음).
지난 13 년간 저의 경력은 80 % ASIC 및 20 % FPGA였습니다.
VHDL은 최초 3.5 년 동안 사용되었으며 나머지는 Verilog였습니다. 나는 Verilog로 전환하는 것을 어렵지 않았으며 위치 (Silicon Valley) 및 속도상의 이유로 오늘 Verilog에서만 코딩했습니다.
또한 성능을 위해 많은 비동기 인터페이스, 래치 및 게이트 레벨 세미 커스텀 디자인을 수행하므로 VHDL은 현재 내 인생에서 거의 사용하지 않습니다. 대신 SystemVerilog와 SystemC가 대규모 엔지니어링 프로젝트를 선택하고 사용하는 데 훨씬 더 유용하다는 것을 알았습니다.
한 단계에서 Verilator (무료! 및 빠른)와 같은 도구는 중요한 시뮬레이션에 필요한 많은 자금을 절약했습니다. VHDL에 대해서는이 옵션이 아직 없습니다. 부유 한 수영장에서 수영을하거나 1M 이상의 게이트 설계를하지 않으면 절대 필요하지 않을 것입니다.
그럼에도 불구하고 VHDL은 견고한 HW 설계 원칙을 개발하기 전에 초보자에게 더 좋습니다. EDA 직원과의 의사 소통을 통해 지난 10 년간 VHDL 개발이 거의 없었으며 오늘날 HLS에 큰 영향을 미치고 있습니다. 따라서 주변에 VHDL 도구 개발자가 많지 않을 것입니다 ...
작년에 제가 공부 한 대학은 초보자를위한 2 개의 공개 과정을 홍보했습니다. 둘 다 VHDL과 다른 Verilog를 사용하여 동일한 내용을 다루었습니다.
물론 두 교수에게 VHDL과 Verilog의 차이점을 물었습니다. 둘 다 최고를 뽑을 수 없었습니다.
그래서 어느 코스가 나에게 더 좋을지 알기 위해 두 코스를 모두 수행해야했습니다. 내 첫 인상이었다 VHDL 더 파스칼과 같은 것입니다 및 Verilog를 더 C와 같은 것입니다 .
그 후 VHDL 만하기로 결정했습니다. 당시 델파이와 협력하고 있었기 때문입니다.
그러나 코스 후에는 FPGA로 일한 적이 없습니다. 이것이 내가 당신을 도울 수있는 최선입니다.
VHDL을 거의 전적으로 사용합니다. 제 경험은 VHDL이 유럽에서 더 일반적이며 미국 Verilog이지만 VHDL은 미국에서도 꾸준히 발전해 왔습니다. VHDL의 강력한 타이핑은 PALASM 또는 Altera의 AHDL과 같은 작은 프로그래밍 가능 논리에 사용되는 구식 하드웨어 디자인 언어처럼 사용하기 때문에 귀찮게하지 않습니다.
VHDL을 사용하는 대부분의 사람들에게 큰 문제는 강력한 유형입니다. 그들은 std_logic_vector (대상의 와이어 모음으로 생각)와 "int"(디자인을 컴파일하는 컴퓨터에 저장된 숫자로 생각) 사이에 할당을 원합니다. 가장 일반적으로 발생하는 가장 성가신 유형 변환은 bit_vector (디자인을 컴파일하는 컴퓨터의 전선 모음에 대한 설명이라고 생각합니다)와 std_logic_vector입니다. 사실 지금 당장 stackexchange로 끌었던 것은 char (컴파일 컴퓨터에 저장된 문자 변수)에서 int 로의 변환을 찾고있었습니다.
그 당시 VHDL과 Verilog의 가장 유명한 충돌은 ASIC & EDA 잡지가 주최 한 디자인 콘테스트였습니다. 구글 "하드웨어 디자인 경연 대회에서 예기치 않은 결과 : Verilog Won & VHDL Lost?-You Be The Judge!"(예 : http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
이 콘테스트는 상당히 복잡한 9 비트 레지스터를 구현하는 것이 었습니다. 그것은 몇 가지 다른 것들뿐만 아니라 카운트 업 / 다운 카운트를 가졌습니다. 그 결과 Verilog 디자이너 9 명 중 8 명은 90 분 후에 코드를 실행했습니다. VHDL 5 명 중 0 명은 아무 일도하지 않았습니다.
다른 사람처럼 VHDL을 사용하지 않습니다. 내가 사용하는 방식에 따라 유형이 자주 사용되지 않습니다. IEEE 서명되지 않은 라이브러리를 사용하여 전날 std_logic 및 std_logic_vector에서 다른 모든 작업을 수행하는 것과 동일한 방식으로 위의 프로젝트를 구현했습니다. 대신 VHDL 디자이너가 int로 작업을 수행하고 형식 변환에서 길을 잃었다 고 생각합니다.
타입 변환에서 길을 잃을 수있는 곳은 (a) 디자인과 (b) 테스트 벤치의 두 가지입니다. 필자는 테스트 벤치 자체를 (거의) 합성 할 수 있도록 std_logic에 테스트 벤치를 작성하는 것이 훨씬 쉽다. "거의"라는 말은 합성 할 수없는 지연된 할당으로 시계를 정의한다는 의미입니다. 그러나 그 (및 의견) 이외의 테스트 벤치를 합성 논리와 구별 할 수는 없습니다.
어쨌든, 배우는 첫 번째 언어를 결정하기 전에 (거의 모든 사람이 선호하지만 거의 모든 사람이 둘 다 사용합니다), 나는 그 대회를 찾아 그에 대한 논평을 읽는 것이 좋습니다.
VHDL에서 관찰 한 문제 중 하나는 매우 장황한 언어이기 때문에 (디자이너의 생각에는) 주석이 필요하지 않다고 믿는 경향이 있다는 것입니다. 물론, 코드 앞에 주석을 작성해야합니다.
나는 2 센트짜리 무게를 측정 할 것이다. 나는 무거운 VHDL 사용자이지만 Verilog는 확실히 그 일을 끝낼 수있다. 시간과 타이핑 비용이 있더라도 언제든지 서로를 래핑 할 수 있습니다.
내가 찾은 것은 원시 VHDL에 유용한 기능이 많이 없다는 것입니다. (또는 OR : 전체 std_logic_vector를 염두에 두십시오). 따라서 디버깅 가능한 합성 기능의 도구 상자를 직접 구축하면 VHDL을 사용할 때 생산성이 크게 향상됩니다.
어쩌면 누군가이 모든 "좋은 기능"을 제공하는 좋은 오픈 소스 라이브러리를 참조 할 수 있습니까?
이전 답변은 두 언어 간의 대비를 거의 다루고 있으며이 기사에서도 요점을 잘 설명합니다. http://www.bitweenie.com/listings/verilog-vs-vhdl/
또한 언급되지 않은 몇 가지 포인트를 더 만들고 싶습니다.
몇 가지 이유로 VHDL을 먼저 배우는 것이 좋습니다. 강력한 타이핑은 초보자가 쉽게 실수 할 수 있도록 도와줍니다. 또한 Verilog를 먼저 사용한 후에 VHDL을 선택하기가 더 어렵다고 들었습니다.
솔직히 말해서, 어느 언어로든 잘못 될 수는 없습니다. 이 업계에서 아주 오랫동안 일하고 있다면 결국 두 언어를 모두 배우게 될 것입니다.