Programming/VHDL VERILOG2017.12.10 23:45

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]

신고

'Programming > VHDL VERILOG' 카테고리의 다른 글

VHDL 문법 공부중 1  (0) 2017.12.10
VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
EPCS, EPCQ  (0) 2017.12.03
xilinx fpga with vhdl verilog  (0) 2017.12.02
FPGA / CPLD 차이..?  (0) 2017.11.09
Posted by 구차니

댓글을 달아 주세요