본문 시작
병렬레지스터 설계1
- 권오근
- 조회 : 6941
- 등록일 : 2010-12-06
module parallel_register(D, Q, CLK, PR, CLR, HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7);
input CLK, PR, CLR;
input [3:0] D;
output [3:0] Q;
output [6:0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7;
wire [3:0] Q;
assign HEX7 = 7"b1111111;
assign HEX6 = 7"b1111111;
assign HEX5 = 7"b1111111;
assign HEX4 = 7"b1111111;
assign HEX3 = 7"b1111111;
assign HEX2 = 7"b1111111;
assign HEX1 = 7"b1111111;
D_FF bit0 (CLK,D[0],CLR,PR,Q[0]);
D_FF bit1 (CLK,D[1],CLR,PR,Q[1]);
D_FF bit2 (CLK,D[2],CLR,PR,Q[2]);
D_FF bit3 (CLK,D[3],CLR,PR,Q[3]);
seg_decoder_4_7 Digit_A(Q, HEX0);
endmodule
//########### D-F/F ###############################
module D_FF(clk, d, rb, sb, q);
input clk, d, rb, sb;
output q;
reg q;
initial begin
q <= 0;
end
always @(posedge clk or negedge rb or negedge sb)
begin
if(rb==0) //if(!rb)
q <= 0;
else if(sb==0) //else if(!sb)
q <= 1;
else
q <= d;
end
endmodule
//########################################
module seg_decoder_4_7 (B, H);
input [3:0] B;
output [6:0] H;
reg [6:0] HOUT;
assign H = HOUT;
always @ (B)
case(B)
4"b0000 : HOUT = 7"b1000000;
4"b0001 : HOUT = 7"b1111001;
4"b0010 : HOUT = 7"b0100100;
4"b0011 : HOUT = 7"b0110000;
4"b0100 : HOUT = 7"b0011001;
4"b0101 : HOUT = 7"b0010010;
4"b0110 : HOUT = 7"b0000011;
4"b0111 : HOUT = 7"b1111000;
4"b1000 : HOUT = 7"b0000000;
4"b1001 : HOUT = 7"b0011000;
4"b1010 : HOUT = 7"b0001000;
4"b1011 : HOUT = 7"b0000011;
4"b1100 : HOUT = 7"b1000110;
4"b1101 : HOUT = 7"b0100001;
4"b1110 : HOUT = 7"b0000110;
default : HOUT = 7"b0001110;
endcase
endmodule
input CLK, PR, CLR;
input [3:0] D;
output [3:0] Q;
output [6:0] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7;
wire [3:0] Q;
assign HEX7 = 7"b1111111;
assign HEX6 = 7"b1111111;
assign HEX5 = 7"b1111111;
assign HEX4 = 7"b1111111;
assign HEX3 = 7"b1111111;
assign HEX2 = 7"b1111111;
assign HEX1 = 7"b1111111;
D_FF bit0 (CLK,D[0],CLR,PR,Q[0]);
D_FF bit1 (CLK,D[1],CLR,PR,Q[1]);
D_FF bit2 (CLK,D[2],CLR,PR,Q[2]);
D_FF bit3 (CLK,D[3],CLR,PR,Q[3]);
seg_decoder_4_7 Digit_A(Q, HEX0);
endmodule
//########### D-F/F ###############################
module D_FF(clk, d, rb, sb, q);
input clk, d, rb, sb;
output q;
reg q;
initial begin
q <= 0;
end
always @(posedge clk or negedge rb or negedge sb)
begin
if(rb==0) //if(!rb)
q <= 0;
else if(sb==0) //else if(!sb)
q <= 1;
else
q <= d;
end
endmodule
//########################################
module seg_decoder_4_7 (B, H);
input [3:0] B;
output [6:0] H;
reg [6:0] HOUT;
assign H = HOUT;
always @ (B)
case(B)
4"b0000 : HOUT = 7"b1000000;
4"b0001 : HOUT = 7"b1111001;
4"b0010 : HOUT = 7"b0100100;
4"b0011 : HOUT = 7"b0110000;
4"b0100 : HOUT = 7"b0011001;
4"b0101 : HOUT = 7"b0010010;
4"b0110 : HOUT = 7"b0000011;
4"b0111 : HOUT = 7"b1111000;
4"b1000 : HOUT = 7"b0000000;
4"b1001 : HOUT = 7"b0011000;
4"b1010 : HOUT = 7"b0001000;
4"b1011 : HOUT = 7"b0000011;
4"b1100 : HOUT = 7"b1000110;
4"b1101 : HOUT = 7"b0100001;
4"b1110 : HOUT = 7"b0000110;
default : HOUT = 7"b0001110;
endcase
endmodule
- 이전자바 수업자료
- 다음 병렬입력 병렬출력 레지스터