1. 개 요
가. Quartus 프로그램을 이용하여 Verilog HDL 언어를 사용하여 4-to-1 멀티플렉서를 구성한다.
나. 논리적으로 오류가 있는 멀티플렉서 코드의 Simulation 결과를 살펴보고 이를 올바르게 수정한다.
다. 수정된 멀티플렉서 코드를 Simulation하여 예측한 값과 같은 결과를 출력하는지 확인한다.
2. 알고리즘
가. 멀티플렉서란?
‣ 멀티플렉서(multiplexer)는 데이터 선택회로(data selector)라고도 하며, 2n개의 입력 데이터로부터 정보를 받아들여 N개의 선택입력에 의해 선택된 정보가 단일 출력선을 통하여 신호를 전송하는 회로로서, 선택되는 한 개의 입력선은 선택입력의 비트 조합에 의해서 결정된다.
나. 4-to-1 멀티플렉서(Four-way multiplexer)
1) 4-to-1 멀티플렉서는 아래 그림처럼 AND와 OR 게이트와 함께 구현된다.
|
|
|
< 4-to-1 멀티플렉서 > |
2) 출력은 선택입력(S1, S0)이 00이라면 입력 w와 같고, 01이라면 x와 같으며, 10이라면 y와 같고, 11이라면 z와 같다. 선택입력 조합에 각각에 대해 하나의 AND 게이트가 있는데, 디코더 회로와 매우 유사하다. 또한 멀티플렉서들은 또한 동작(enable)입력을 갖고 있어서 동작입력이 활성화되지 않으면 출력이 0이 된다.
|
select(S1, S0) |
output | |
|
0 |
0 |
w |
|
0 |
1 |
x |
|
1 |
0 |
y |
|
1 |
1 |
z |
|
< select 신호에 따른 output > | ||
3. 코 드
가. 잘못된 코드
|
module mux_4(a,b,c,d,e,sel); input a,b,c,d; input [1:0] sel; output e; reg e; always@(a,b,c,d,sel) begin case(sel) 00:e=a; 01:e=b; 10:e=c; 11:e=d; endcase end endmodule |
|
module multiplexer(a, b, c, d, o, sel); input a, b, c, d; input [1:0] sel; output o; reg o; always@(a or b or c or d or sel) case(sel) 2'b 00 : o = a; 2'b 01 : o = b; 2'b 10 : o = c; 2'b 11 : o = d; default : o = a; endcase endmodule |
4. 파형 및 분석
가. 잘못된 파형
나. 수정된 파형
다. 분 석
1) 실험에서 사용한 소스코드는 우리가 예측하고 있는 멀티플렉서의 파형을 보여주고 있지 않다. 컴파일이 정상적으로 되었으므로 문법적인 오류보다는 논리적인 오류에서 문제가 있음을 알 수 있다.
2) 논리적인 문제가 발생한 곳은 always@ 구문과 그 내부의 case 부분이다.
3) always@ 구문에서의 각 input은 or형식으로 분리하여야 한다. 즉 (a, b, c, d, e, sel)이 아니라 (a or b or c or d or sel) 형식이 아래 case에서 사용될 각 input에 대해서 올바른 설정을 할 수 있다.
4) 또한 case 내부의 00, 01, 10, 11은 우리가 사용하고자 하는 형태는 2진수이나 프로그램은 10진수로 인식을 하고 있다. 따라서 2진수를 표현하기 위해서 각각의 수에 2‘b라는 구문을 넣어줌으로써 원하고자 하는 형식으로 input을 output에 저장할 수 있다.
5) 수정된 코드에 따른 파형은 예측한 결과와 일치하며 딜레이로 인해서 파형이 약간 밀린 점을 제외하면 select에 의해서 input이 output으로 제대로 출력됨을 알 수 있다. (select의 주기는 160ns이며 a는 20ns, b는 40ns, c는 80ns, d는 160ns를 사용하였다)
※ 참고 문헌
가. 디지털 시스템(인터비젼 / Alan B. Marcovitz 저)
나. 디지털 시스템 및 설계(양서각 / 이채봉, 정완영 공저)
다. HDL Chip Design(Doone Publications / Douglas J Smith 저)
'레포트 자료' 카테고리의 다른 글
| 컴퓨터구조 설계 및 실험 - ripple carry adder(가산기) 및 감산기 (5) | 2009/01/29 |
|---|---|
| 컴퓨터구조 설계 및 실험 - D Flip-Flop & Decoder (1) | 2009/01/29 |
| 컴퓨터구조 설계 및 실험 - Multiplexer(멀티플렉서) (0) | 2009/01/29 |
| 자료구조(Data Structure) - Binomial Heap 과제 (1) | 2009/01/29 |
| 자료구조(Data Structure) - Graph 과제 (0) | 2009/01/29 |
| 자료구조(Data Structure) - BST(Binary Search Tree) 과제 (1) | 2009/01/29 |


multiplexer.zip



