VHDL 책 보고 정리중.
나중에 verilog도 한번 봐야겠다.
일단 프로그래머 입장에서 보는 차이라고 해야하나?
연산자가 의외로 많이 다르다 -ㅁ-
C | VHDL |
== |
= |
= |
<= |
!= |
/= |
주석(comment)는 한줄짜리만 있고 여러줄 짜리는 없는 듯 하다.
C |
VHDL |
// |
-- |
동작적 모델링 - process() - 순차기술문(sequential) case-when signal - 병행기술문(concurrent) (?) 데이터 흐름 모델링 - when-else with-select-when 구조적 모델링 - component port map |
signal은 내부 회로(entity)간의 연결시 사용
architecture design of vhdl_test is signal k : std_logic_vector(2 downto 0) begin end |
process는 k의 값이 변할때 마다 수행(트리거?)
process(k) end begin |
case-when c의 switch-case에 비슷한 구성이고
default:는 when others => null에 대응된다.
case k is when "000" => out <= 1; out2 <= 2; when "000" => D <= "00000001"; when others => null; end case; |
with-select-when은 모든 조건에 대해서 테스트 해야 한다.
(case-when 처럼 when others가 먹히지 않는 듯)
문장의 끝이 아니라 ;가 아닌 ,로 표시됨에 주의
with s select y <= i(0) when "00", y <= i(1) when "01", y <= i(2) when "10", y <= i(3) when "11"; |
if - elsif - else 이며 위의 연산자에서 보았듯 =는 할당(assign)이 아닌 비교(equal) 이다.
조금 익숙하게(?) elseif 정도는 좀 해주지 -_-
if diff = -2 then ; elsif diff = -1 then ; else ; endif; |
동기클럭사용
falling 과 rising edge에 대응하는 if문
-- clk : std_logic; rising_edge(clk) if(clk'event and clk='1') then |
falling_edge(clk) |
when-else는 일종의 우선순위를 가지고 위에서 부터 비교해서 가장 위의 것이 실행된다.
(머.. if-else랑 무슨 차이가 있으려나?)
architecture ... begin y <= i(0) when S="00" else i(1) when S="01" else i(2) when S="10" else i(3); |
[링크 : http://www.hanbit.co.kr/store/books/look.php?p_code=B5175626637]
+
2017.12.27
:= 는 변수에 할당
<= 는 signal에 할당
=> 는 case 문에 대한 건데.. others => 라고 쓰는 부분들이 있어서 찾아 봐야 할 듯..
[링크 : https://stackoverflow.com/questions/7988098/vhdl-difference-between-and]
'Programming > VHDL' 카테고리의 다른 글
xilinx vivado HLx / HLS (0) | 2017.12.24 |
---|---|
VHDL과 verilog (0) | 2017.12.11 |
VHDL 문법 관련 (0) | 2017.12.08 |
VHDL 문법 (0) | 2017.12.07 |
xilinx fpga with vhdl verilog (0) | 2017.12.02 |