일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- 소프티어
- 나무박멸
- ICER
- 수영대회결승전
- 코드트리
- ARM
- 왕실의기사대결
- BFS
- 루돌프의반란
- DenseDepth
- Calibration
- 슈퍼컴퓨터클러스터
- dfs
- ros
- 구현
- ISER
- 이진탐색
- 시뮬레이션
- 순서대로방문하기
- 마이크로프로세서
- 토끼와 경주
- DP
- 삼성기출
- 싸움땅
- 3Dreconstruction
- 포탑부수기
- 마법의숲탐색
- 조합
- 코드트리빵
Archives
- Today
- Total
from palette import colorful_colors
[verilog] 1:4 DEMUX 구현 (디멀티플렉서, Demultiplexer) 본문
dmux14.v 파일
module dmux14(y0, y1, y2, y3, in, sel);
input [3:0] in;
input [1:0] sel;
output reg [3:0] y0, y1, y2, y3;
always @(*) begin
case(sel) //일반 모듈에서도 당연히 숫자 부여 가능.
2'b00 : begin y0 = in; y1 = 0; y2 = 0; y3 = 0; end //begin문으로 묶어주면 c언어에서 {}와 같은 역할!!!! 중요.
2'b01 : begin y0 = 0; y1 = in; y2 = 0; y3 = 0; end
2'b10 : begin y0 = 0; y1 = 0; y2 = in; y3 = 0; end
2'b11 : begin y0 = 0; y1 = 0; y2 = 0; y3 = in; end
endcase
end
endmodule
/* 다르게 짠 코드
module demux14(in0, sel, out0, out1, out2, out3);
input [3:0] in0;
input [1:0] sel;
output reg [3:0] out0, out1, out2, out3;
always @(*) begin
case(sel)
2'b00 : begin
out0 <= in0;
out1 <= 4'b0000;
out2 <= 4'b0000;
out3 <= 4'b0000;
end
2'b01 : begin
out0 <= 4'b0000;
out1 <= in0;
out2 <= 4'b0000;
out3 <= 4'b0000;
end
2'b10 : begin
out0 <= 4'b0000;
out1 <= 4'b0000;
out2 <= in0;
out3 <= 4'b0000;
end
default : begin
out0 <= 4'b0000;
out1 <= 4'b0000;
out2 <= 4'b0000;
out3 <= in0;
end
endcase
end
endmodule
dmux_tb.v 파일
`timescale 1ns / 1ns
module dmux14_tb;
integer i; //for문을 위해 integer 변수 선언
reg [3:0] in; //4bit 입력 4개 선언
reg [1:0] sel; //2bit select 선언
wire [3:0] y0, y1, y2, y3; //4bit 출력 하나 선언
dmux14 u1 (.y0(y0), .y1(y1), .y2(y2), .y3(y3), .in(in), .sel(sel));
initial begin
in = 4'b1101; sel = 0;s
//y0 = 0; y1 = 0; y2 = 0; y3 = 0;
sel =$random;
//input들의 initial value: a~b는 0000~1111로 할당, sel은 00~11로 할당
for(i = 1 ;i<20; i=i+1)
#2 sel = $random;
end
initial begin
$dumpfile("output.vcd");
$dumpvars(0);
end
endmodule
'EE 학부과목 > verilog' 카테고리의 다른 글
[verilog] d-flipflop 구현 (0) | 2023.03.13 |
---|---|
[verilog] 16bit ALU구현 (0) | 2023.03.13 |
[verilog] 4:1 MUX 구현 (멀티플렉서, multiplexer) (0) | 2023.03.13 |
[verilog] Full Adder, 4bit Adder 구현 (2) | 2023.03.13 |
[verilog] NAND 구현 (0) | 2023.03.13 |