해밍코드 인코더/디코더 설계 및 성능 분석
본 자료는 8페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
해당 자료는 8페이지 까지만 미리보기를 제공합니다.
8페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

해밍코드 인코더/디코더 설계 및 성능 분석에 대한 보고서 자료입니다.

목차

목차

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. 비용>
항목
세부항목
소요비용
재료비
시제품가공비
기타 경비

키워드

  • 가격30,000
  • 페이지수24페이지
  • 등록일2009.12.08
  • 저작시기2009.12
  • 파일형식한글(hwp)
  • 자료번호#565938
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니