Verilog HDL Multiplexor (멀티플렉서, mux, 예제)
여러 개의 신호 중에 하나를 선택하여 출력으로 내보낸다. sel 신호는 4개의 입력 중에 하나를 선택하여 보낸다. 아래 예시의 경우 sel [1:0] == 2'b01 이면 y = b가 된다. verilog로 구현해보자, 회로만 보고 코드를 짜는 연습을 하면 좋은 거 같다. module mux(a, b, c, d, sel, y); input [15:0] a, b, c, d; input [1:0]sel; output [15:0]y; reg [15:0]y; always @(*) case(sel) 2'b00 : y = a; 2'b01 : y = b; 2'b10 : y = c; 2'b11 : y = d; endcase endmodule 입력은 a, b, c, d, sel이고 출력은 y값으로 정해져 있다. alwa..
2022. 2. 16.
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.