목차
목차
1장. 작품과제 필요성
2장. 작품과제 해결 방안 및 과정
3장. 개념설계 및 상세설계
3장. 1절 시스템블럭도
3장. 2절. 각 블록 설명
3장. 2절. 1 Hamming encoder/decoder
3장. 2절. 2 BPSK Modulator/Demodulator
3장. 2절. 3 Error Rate Calculation
3장. 2절. 4 Display
3장. 2절. 5 시뮬레이션 BER 값의 결과 비교
3장. 3절 소프트웨어 설계
3장. 3절. 1 Verilog Encoder
3장. 3절. 2 Hamming decoder
3장. 3절. 4 Hamming encoder test-bench
3장. 3절. 5 Hamming code 시뮬레이션 결과
4장. 결론
1장. 작품과제 필요성
2장. 작품과제 해결 방안 및 과정
3장. 개념설계 및 상세설계
3장. 1절 시스템블럭도
3장. 2절. 각 블록 설명
3장. 2절. 1 Hamming encoder/decoder
3장. 2절. 2 BPSK Modulator/Demodulator
3장. 2절. 3 Error Rate Calculation
3장. 2절. 4 Display
3장. 2절. 5 시뮬레이션 BER 값의 결과 비교
3장. 3절 소프트웨어 설계
3장. 3절. 1 Verilog Encoder
3장. 3절. 2 Hamming decoder
3장. 3절. 4 Hamming encoder test-bench
3장. 3절. 5 Hamming code 시뮬레이션 결과
4장. 결론
본문내용
/No 2(dB)의 BER/에러 개수>
다) Eb/No 3(dB) : 에러 개수 25
<그림4-8. Eb/No 3(dB)의 BER/에러 개수>
라) Eb/No 4(dB) : 에러 개수 15
<그림4-9. Eb/No 4(dB)의 BER/에러 개수>
Eb/No값이 늘어남에 따라 BER와 에러 개수가 감소하는 것을 볼 수 있다.
4장. 3절 하드웨어 설계
4장. 3절. 1 Verilog encoder
<표4-1. Verilog encoder>
module hamm_enc(in,out,reset);
input [7:0] in;
output [11:0] out;
input reset;
reg [11:0] out;
integer i, j;
always@(in or reset) begin
if(reset)
out = 0;
else begin
i=0; j=0;
while((i<11)||(j<7)) begin
while(i==0||i==1||i==3||i==7)
begin
out[i]=0;
i=i+1;
end
out[i]=in[j];
i=i+1;
j=j+1;
end
// Parity-bit를 계산하여 12bit의 Hamming code를 생성
if(^(out&12'b0101_0101_0101))
out[0]=~out[0];
if(^(out&12'b0110_0110_0110))
out[1]=~out[1];
if(^(out&12'b0000_0111_1000))
out[3]=~out[3];
if(^(out&12'b0111_1000_0000))
out[7]=~out[7];
end
end
endmodule
8bit의 입력 값에 대해 4bit의 Parity-bit를 추가하여 XOR을 통해 Hamming code를 만드는 과정이다.
4장. 3절. 2 Hamming decoder
<표4-2. Verilog decoder>
module hamm_dec(in,out,reset);
input[11:0] in;
output[7:0] out;
input reset;
reg[7:0] out;
reg r1, r2, r4, r8;
reg [3:0] r;
reg[11:0] IN;
integer i, j;
always@(in or reset) begin
if(reset)
out=0;
else begin
// Parity-bit를 비교하여 오류가 발생한 자리를 구함
r1=^(in&12'b0101_0101_0101);
r2=^(in&12'b0110_0110_0110);
r4=^(in&12'b0000_0111_1000);
r8=^(in&12'b0111_1000_0000);
r = {r8,r4,r2,r1};
IN=in;
IN[r-1]=~IN[r-1];
i=0; j=0;
while((i<11)||(j<7)) begin
while(i==0||i==1||i==3||i==7)
begin
i=i+1;
end
out[j]=IN[i];
i=i+1;
j=j+1;
end
end
end
endmodule
수신된 값을 XOR로 비교하여 오류가 발생한 자리수 r을 구해 원래의 입력 값으로 정정하는 과정이다.
4장. 3절. 4 Hamming encoder test-bench
<표4-3. Verilog encoder test-bench>
module hamm_enc_tb;
reg [7:0] in;
reg reset;
wire [11:0] out;
integer i;
hamm_enc uut (.in(in),
.out(out),
.reset(reset));
initial begin
reset = #10 1;
reset = #10 0;
in = 0;
for (i=0; i<255; i=i+1)
in = #10 in + 1;
end
endmodule
4장. 3절. 4 Hamming decoder test-bench
<표4-4. Verilog decoder test-bench>
module hamm_dec_tb;
reg [11:0] in;
reg reset;
wire [7:0] out;
integer i;
hamm_dec u0 (.in(in),
.out(out),
.reset(reset));
initial begin
reset = #10 1;
reset = #10 0;
in = 0;
for (i=0; i<1024; i=i+1)
in = #10 in + 1;
end
endmodule
4장. 3절. 5 Hamming code 시뮬레이션 결과
가) Hamming encoder
<그림4-10. Hamming encoder 타이밍도>
해밍 코드의 알고리듬에 따라 00101100의 입력이 001011100011의 encoding 된다.
나)Hamming decoder
<그림4-11. Hamming decoder 타이밍도>
해밍 코드의 알고리듬에 따라 오류가 없을 것으로 추정되는 001011100011 뿐만 아니라. 전송 과정 중 오류가 생겼을 것으로 추정되는 001011100001, 00101110010을 decoding결과가 모두 00101100이 된다.
4장. 결론
지금까지 통신관련 분야에 반드시 필요한 오류정정코드의 한 종류인 해밍코드를 Verilog-HDL을 이용하여 설계해보고 성능을 분석해 보았다. Hamming code를 설계하기까지 많은 시행착오가 있었다. 알고리듬의 이해, Simulink 툴 사용의 미숙으로 인한 시행착오 등 이런 문제들을 해결하기 위해 인터넷에서 자료 조사와 서적을 통한 공부로 극복하려고 노력했었다. 그러나 아직 Simulink관련 부분에 많은 학습이 필요 하다고 생각되며, 참고 문헌들을 찾아보고 배움의 자세를 가짐으로써 극복해나가야 할 것이다. 우리가 어려움을 겪을 때마다 교수님께서 많은 도움을 주셔서 어려운 문제들을 잘 해결해 나간 것 같다.
끝으로 지금까지 지도해 주시고 어려울 때마다 많은 도움을 주신 교수님께 감사의 말을 드립니다.
<표5-1. 팀원 역할 분담>
성명
역할
참여도(%)
Verilog-HDL을 이용한 설계
80
Verilog-HDL을 이용한 설계
20
Simulink를 이용한 시뮬레이션
20
Simulink를 이용한 시뮬레이션
80
<표5-2. 비용>
항목
세부항목
소요비용
재료비
시제품가공비
기타 경비
다) Eb/No 3(dB) : 에러 개수 25
<그림4-8. Eb/No 3(dB)의 BER/에러 개수>
라) Eb/No 4(dB) : 에러 개수 15
<그림4-9. Eb/No 4(dB)의 BER/에러 개수>
Eb/No값이 늘어남에 따라 BER와 에러 개수가 감소하는 것을 볼 수 있다.
4장. 3절 하드웨어 설계
4장. 3절. 1 Verilog encoder
<표4-1. Verilog encoder>
module hamm_enc(in,out,reset);
input [7:0] in;
output [11:0] out;
input reset;
reg [11:0] out;
integer i, j;
always@(in or reset) begin
if(reset)
out = 0;
else begin
i=0; j=0;
while((i<11)||(j<7)) begin
while(i==0||i==1||i==3||i==7)
begin
out[i]=0;
i=i+1;
end
out[i]=in[j];
i=i+1;
j=j+1;
end
// Parity-bit를 계산하여 12bit의 Hamming code를 생성
if(^(out&12'b0101_0101_0101))
out[0]=~out[0];
if(^(out&12'b0110_0110_0110))
out[1]=~out[1];
if(^(out&12'b0000_0111_1000))
out[3]=~out[3];
if(^(out&12'b0111_1000_0000))
out[7]=~out[7];
end
end
endmodule
8bit의 입력 값에 대해 4bit의 Parity-bit를 추가하여 XOR을 통해 Hamming code를 만드는 과정이다.
4장. 3절. 2 Hamming decoder
<표4-2. Verilog decoder>
module hamm_dec(in,out,reset);
input[11:0] in;
output[7:0] out;
input reset;
reg[7:0] out;
reg r1, r2, r4, r8;
reg [3:0] r;
reg[11:0] IN;
integer i, j;
always@(in or reset) begin
if(reset)
out=0;
else begin
// Parity-bit를 비교하여 오류가 발생한 자리를 구함
r1=^(in&12'b0101_0101_0101);
r2=^(in&12'b0110_0110_0110);
r4=^(in&12'b0000_0111_1000);
r8=^(in&12'b0111_1000_0000);
r = {r8,r4,r2,r1};
IN=in;
IN[r-1]=~IN[r-1];
i=0; j=0;
while((i<11)||(j<7)) begin
while(i==0||i==1||i==3||i==7)
begin
i=i+1;
end
out[j]=IN[i];
i=i+1;
j=j+1;
end
end
end
endmodule
수신된 값을 XOR로 비교하여 오류가 발생한 자리수 r을 구해 원래의 입력 값으로 정정하는 과정이다.
4장. 3절. 4 Hamming encoder test-bench
<표4-3. Verilog encoder test-bench>
module hamm_enc_tb;
reg [7:0] in;
reg reset;
wire [11:0] out;
integer i;
hamm_enc uut (.in(in),
.out(out),
.reset(reset));
initial begin
reset = #10 1;
reset = #10 0;
in = 0;
for (i=0; i<255; i=i+1)
in = #10 in + 1;
end
endmodule
4장. 3절. 4 Hamming decoder test-bench
<표4-4. Verilog decoder test-bench>
module hamm_dec_tb;
reg [11:0] in;
reg reset;
wire [7:0] out;
integer i;
hamm_dec u0 (.in(in),
.out(out),
.reset(reset));
initial begin
reset = #10 1;
reset = #10 0;
in = 0;
for (i=0; i<1024; i=i+1)
in = #10 in + 1;
end
endmodule
4장. 3절. 5 Hamming code 시뮬레이션 결과
가) Hamming encoder
<그림4-10. Hamming encoder 타이밍도>
해밍 코드의 알고리듬에 따라 00101100의 입력이 001011100011의 encoding 된다.
나)Hamming decoder
<그림4-11. Hamming decoder 타이밍도>
해밍 코드의 알고리듬에 따라 오류가 없을 것으로 추정되는 001011100011 뿐만 아니라. 전송 과정 중 오류가 생겼을 것으로 추정되는 001011100001, 00101110010을 decoding결과가 모두 00101100이 된다.
4장. 결론
지금까지 통신관련 분야에 반드시 필요한 오류정정코드의 한 종류인 해밍코드를 Verilog-HDL을 이용하여 설계해보고 성능을 분석해 보았다. Hamming code를 설계하기까지 많은 시행착오가 있었다. 알고리듬의 이해, Simulink 툴 사용의 미숙으로 인한 시행착오 등 이런 문제들을 해결하기 위해 인터넷에서 자료 조사와 서적을 통한 공부로 극복하려고 노력했었다. 그러나 아직 Simulink관련 부분에 많은 학습이 필요 하다고 생각되며, 참고 문헌들을 찾아보고 배움의 자세를 가짐으로써 극복해나가야 할 것이다. 우리가 어려움을 겪을 때마다 교수님께서 많은 도움을 주셔서 어려운 문제들을 잘 해결해 나간 것 같다.
끝으로 지금까지 지도해 주시고 어려울 때마다 많은 도움을 주신 교수님께 감사의 말을 드립니다.
<표5-1. 팀원 역할 분담>
성명
역할
참여도(%)
Verilog-HDL을 이용한 설계
80
Verilog-HDL을 이용한 설계
20
Simulink를 이용한 시뮬레이션
20
Simulink를 이용한 시뮬레이션
80
<표5-2. 비용>
항목
세부항목
소요비용
재료비
시제품가공비
기타 경비
추천자료
[전자공학] 위성통신을 이용한 PCS (정보통신 이동통신
[전자공학실험] 8051 LED 제어 실험 결과레포트
[전자공학실험] 8051 LCD 제어-LCD로 시계구현
[전자공학실험] 부귀환과 연산증폭기(OPAMP)
[전자공학실험] Latch회로의 동작과 여러종류의 Flip-Flop 이해 실험
부산대 전자전기공학부 3학년 1학기 실험 4bit up 계산기
[전자공학실험] 부울대수의 공리및 정리 결과레포트
[전자공학실험] 회로의간소화및 EX-OR회로
[전자공학] 3D에 대해서
[전기전자공학] P2P[Peer to peer]에 대해
[전자공학 및 실습] PSPICE를 이용한 리플카운터 실습[브레드보드를 이용]
기초 전기전자공학 - 직류 교류 발전기
[기계][기계와 전자정보원][기계와 공장노동][기계와 노동자][기계와 인간공학][산업설비][심...
[전자공학실험1] (결과) OP 앰프 기본원리
소개글