16. Verilog HDL의 산술 연산과 Incomplete Specification
반응형
Verilog의 정수 산술 연산
Verilog에서 정수의 산술 연산을 아주 쉽게 할 수 있다. 아래는 32비트 2진수의 덧셈 연산을 수행하는 모듈이다.
module add32 (a, b, sum);
input [31:0] a, b;
output [31:0] sum;
assign sum = a + b;
endmodule
Carry를 갖는 덧셈
아래는 carry in과 carry out이 있는 32비트 가산기이다.
module add32_carry (a, b, cin, sum, cout);
input [31:0] a,b;
input cin;
output [31:0] sum;
output cout;
assign {cout, sum} = a+b+cin; //overflow를 cout에 담는다.
endmodule
Verilog의 Boolean 연산
Bitwise 연산
비트 벡터에서 각 비트에 대한 연산을 수행한다.
~(4'b0101) = {~0,~1,~0,~1} = 4'b1010
4'b0101 & 4'b0011 = 4'b0001
~a | NOT |
a&b | AND |
a|b | OR |
a^b | XOR |
a~^b | XNOR |
논리 연산
참 혹은 거짓의 1비트 결과를 출력한다.
!(4'b0101) = ~1 = 1'b0
!a | NOT |
a && b | AND |
a || b | OR |
Reduction 연산
입력 벡터의 각 비트를 하나의 입력으로 간주하여 연산한다.
&(4'b0101) = 0&1&0&1 = 1'b0
&a | AND |
~& | NAND |
| | OR |
~| | NOR |
^ | XOR |
Incomplete Specification
Don't Care condition을 다룰 때 조심해야한다. 3to1 MUX를 예로 들어보자.
Select 신호가 각각 1, 2, 3 일 때는 각 입력에 맞게 출력해주면 된다. 그러나, Select가 4일 때는 어떻게 해야할까?
module maybe_mux_3to1 (a, b, c, sel, out);
input [1:0] sel;
input a,b,c;
output out;
reg out;
always @ (a or b or c or sel)
begin
case (sel)
2'b00: out = a;
2'b01: out = b;
2'b10: out = c;
endcase
end
endmodule
위 코드에서 sel이 11일 경우, out에는 이전에 저장된 값이 그대로 남아있게 된다. 이를 해결하기 위해 out에 기본값을 넣어줄 수 있다.
out = 1'bx;
case (sel)
~~
endcase
case(sel)
2'b00: out = a;
~~
default: out = 1'bx;
endcase
반응형
'학부 수업 > 디지털시스템' 카테고리의 다른 글
18. 3 상태 버퍼 (Tristate Buffer) (0) | 2020.05.24 |
---|---|
17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit) (0) | 2020.05.23 |
15. Verilog HDL을 이용한 7-seg display Decoder 구현 (0) | 2020.05.23 |
14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL) (0) | 2020.05.22 |
13. 멀티플렉서와 디멀티플렉서 (Multiplexer and Demultiplexer) (0) | 2020.05.16 |
댓글
이 글 공유하기
다른 글
-
18. 3 상태 버퍼 (Tristate Buffer)
18. 3 상태 버퍼 (Tristate Buffer)
2020.05.24 -
17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)
17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)
2020.05.23 -
15. Verilog HDL을 이용한 7-seg display Decoder 구현
15. Verilog HDL을 이용한 7-seg display Decoder 구현
2020.05.23 -
14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)
14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)
2020.05.22