임베디드 스터디 - Verilog vs VHDL
임베디드 스터디 - Verilog vs VHDL
Verilog vs VHDL
- 두 개 모두 HDL이라는 공통점이 있지만, 여러모로 다른 점이 많다.
| 구분 | Verilog | VHDL |
|---|---|---|
| 문법 스타일 | C 계열 | Ada 계열 |
| 타입 시스템 | 느슨함 | 엄격함 |
| 코드 양 | 간결함 | 장황함 |
| 대소문자 | 구분함 | 구분 안 함 |
| 표준 | IEEE 1364 | IEEE 1076 |
| 주 사용 지역 | 미국·아시아 | 유럽·방산·항공우주 |
- Verilog와 VHDL로 설계한 D-FF를 비교해보면 차이점이 명확히 보인다.
- Verilog
posedge clk= VHDLrising_edge(clk) - Verilog
module/endmodule= VHDLentity+architecture - Verilog
always= VHDLprocess - VHDL은
library/use선언이 필수
- Verilog
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 라이센스를 따릅니다.