인코더는 데이터를 암호화 하는 역할을 하는 회로를 말한다. 여기서 암호화란 2^n의 데이터가 들어오면
n개의 출력선으로 나가는 역할을 한다. 4-to-2인코더는 4개의 입력선이 2개의 출력선으로 압축 시키는 일을 한다.
이와는 반대로 n개의 입력선이 다시 2^n개의 출력선으로 나오는 것을 디코더 라고 한다. 흔히 디코더는 암호를 복호화 시키는 일을 하는 회로를 말한다. 흔히 회로 이름에서 앞에 'de' 글씨가 붙으면 입력선보다 출력선이 많다.
인코더의 모습이다.
다음과 같은 상태표를 가지고 부울대수로 표현하면
이 부울대수를 가지고 verilog 설계를 해보겠다.
처음 설계 코드는 assign문으로 조합회로를 설계할 때 가장 흔히 사용하는 구문을 사용하였다.
첫 코드의 시뮬레이션 여기서 output에 wire를 써줘도 되고 안써줘도 된다.
다음은 always문을 사용하여 behavior-level로 설계를 해보겠다. 보통 always문은 순차회로 설계시 많이 이용하지만
조합회로도 always문을 사용하여 설계시 일관성을 이어갈 수 있다.
당연히 같은 결과가 나온다.
그럼 인코더의 schematic을 살펴보자
behavior-level로 그린 schematic은 예상과는 다른 결과가 나왔다. 그럼 다시 assign문으로 작성한 설계 코드로 schematic을 만들어 본다.
assign문으로 schematic을 그려보니 behavior-level과는 다르게 결과가 나왔다. assign문으로 설계하니 좀 더 and, or게이트들이 자세하게 나타났다. behavior-level로 schematic을 그리면 mux와 latch로 회로를 구성하여 좀 더 복잡해지는
경향이 나타났다. 이는 추상적인 level인 behavior과는 다르게 좀 더 gate-level-netlist에 가까운 assign문을 사용한 설계가 더 명확히 나오는 것을 확인할 수 있었다.
이제는 디코더를 설계 해보자. 디코더는 인코더와 반대의 출력을 인가해주면 된다.
디코더도 마찬가지로 상태표를 보고 설계를 하였다.
시뮬레이셔의 결과
다음은 decoder의 schematic 결과이다.
'디지털논리회로' 카테고리의 다른 글
[Verilog] FSM(유한 상태 머신) (0) | 2020.04.08 |
---|---|
[Verilog] 4-bit fulladder (0) | 2020.04.08 |
[Verilog] D flipflop (0) | 2020.03.27 |
[Verilog] JK flipflop (0) | 2020.03.27 |
[Verilog] 8bit 가산기 (0) | 2020.03.27 |