Verilog HDL 구문들 ( assign, always, case, initial, 반복문, time scale, self-cheacking test bench, @, 블록문 )
조합 회로와 순차 회로를 구현하는 구문을 크게 2가지로 나눌 수 있다. assign과 always구문이다. assign - 조합회로 대부분의 경우 assign을 사용한다 - 조건 ? 참 : 거짓의 문장을 자주 사용한다 - 출력의 연결은 wire문으로 지정해줘야 한다. always 한 번만 실행되는 것이 아니라, 조건이 만족할 때마다 동작한다. 조건에는 에지와 레벨이 있다. - if , else, case 등등과 같은 구문은 always 구문 안에서만 사용해야 한다. - @ 는 ~~ 할 때라고 해석하면 된다. - sensitivity_list 신호가 변할 때, "..."를 하라는 의미다. 그래서 모든 입력에 대해서는 "*"를 적어준다. - 초기화 값을 정의하기에 좋다. - 반드시 reg로 출력을 정의해야 ..
2022. 2. 15.
Verilog HDL module ( 모듈, 연결, 합성, 인스턴스, instance, 여러개, 탑모듈, named mapping, ordered mapping )
module 합성을 하기 전에 먼저 module이란 뭔지 알아야 한다. module이란, verilog에서 기본적인 블록 단위로 c언어의 함수와 비슷하다. 아래 그림처럼 도식화할 수 있다. module_name = module의 이름을 적어준다. port_list = 입출력을 말한다. 어떤 입출력이 들어가는지 쭉 적으면 된다. port 선언 = 뭐가 입력, 출력인지 정의한다. 파란색 박스 = 아래 사용할 변수를 선언한다. 빨간색 박스 = 실제로 동작할 코드를 작성한다. module 연결 아래 그림에서 stage 1과 stage 2 모듈을 만들고 top 모듈을 만들어보자. 즉, stage 1과 stage 2를 연결시켜보자. stage 1은 입력이 a, b, c, clk 출력이 ff1으로 이루어져 있다. 이..
2022. 2. 15.