포스트

임베디드 스터디 - Verilog vs VHDL

임베디드 스터디 - Verilog vs VHDL

Verilog vs VHDL

  • 두 개 모두 HDL이라는 공통점이 있지만, 여러모로 다른 점이 많다.
구분VerilogVHDL
문법 스타일C 계열Ada 계열
타입 시스템느슨함엄격함
코드 양간결함장황함
대소문자구분함구분 안 함
표준IEEE 1364IEEE 1076
주 사용 지역미국·아시아유럽·방산·항공우주
  • Verilog와 VHDL로 설계한 D-FF를 비교해보면 차이점이 명확히 보인다.
    • Verilog posedge clk = VHDL rising_edge(clk)
    • Verilog module/endmodule = VHDL entity+ architecture
    • Verilog always = VHDL process
    • VHDL은 library/use 선언이 필수
1
2
3
4
// Verilog
module dff(input clk, d, output reg q);
    always @(posedge clk) q <= d;
endmodule
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity dff is
    Port ( clk : in  STD_LOGIC;
           d   : in  STD_LOGIC;
           q   : out STD_LOGIC);
end dff;

architecture Behavioral of dff is
begin
    process(clk)
    begin
        if rising_edge(clk) then
            q <= d;
        end if;
    end process;
end Behavioral;

VHDL의 타입 구분

  • VHDL은 타입 구분이 엄격한 점에서 DO-254(항공 하드웨어 설계 표준)에서 자주 선호되는 것을 볼 수 있다.
    • Verilog는 타입 불일치, 비트 불일치에 대해 경고로만 표시
    • VHDL는 타입, 비트 불일치할 경우 합성 불가로 표시한다.
1
2
3
4
// Verilog: 경고만 뜨고 합성 진행, 상위 비트 잘림
wire [3:0] a;
wire [7:0] b;
assign a = b;  // 경고만, b[3:0]만 연결됨
1
2
3
4
-- VHDL: 4비트에 8비트 연결 시 컴파일 에러
signal a : STD_LOGIC_VECTOR(3 downto 0);
signal b : STD_LOGIC_VECTOR(7 downto 0);
a <= b;  -- 컴파일 에러 — 타입 불일치
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.