*신*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 5
검색어 입력폼
  • Nand 연산을 이용한 Xor 게이트 구현과 간단한 Adder 구현
    디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부디지털 시스템 설계 및 실험 결과보고서디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부작성자 :고려대 전기전자전파 공학부실험조 : 12조학번 :실험일 : 2009. 3. 17실험제목Nand 연산을 이용한 Xor 게이트 구현과 간단한 Adder 구현실험목표1. NAND GATE를 이용한 XOR GATE설계2. FULL-ADDER설계실험결과□ 실험과정1. Quartus Ⅱ 4.0 프로그램을 실행한다.2. New Project를 만들어, 디렉토리 경로와 프로젝트 이름을 설정한다.3. 우리가 사용할 HBE-Combo 보드에 FPGA 칩인 Altera 사의 ACEX 중에 1K로, Device Family설정에서 설정 해준다.4. Target Device는 EP1k100QC-208-3으로 맞춰준다.5. Verilog HDL File에서 Verilog 코드를 작성한다.(xor Gate,Full-Adder)6. 컴파일하고 제대로 동작하는지 확인하기 위해 시뮬레이션을 한다.7. Netlist를 형성한 후 시뮬레이션 할 데이터를 만든다.(pin number 115,114,113 191,190)8. 시뮬레이션 할 값을 지정한 후 시뮬레이션을 한 다음 결과를 확인한다.9. FPGA와 보드의 핀 연결을 하고 FPGA에 올려서 테스트해본다.□ Nand Gate를 이용한 Xor Gate 설계▶ 회로 분석- 이 회로는 xor 게이트를 논리 게이트를 이용해서 구현해 놓은 것이다.- 기존의 nand게이트를 4개를 적절한 연관성을 이 용하여 연결하여 구현하였다.- 이 회로는 nand Gate의 성질을 이용한 회로로 두 input이 모두 1인경우를 제외하고는 output은 전부 1을 얻을 수 있다는 성질을 가지고 있다.- 기본적으로, 두 input 에 1또는 0의 같은 수를 신호로 보내주면 Xor 연산이기 때문에, output 값은 신호를 내보내지 않거나 0의 값이 신호로 얻어진다.- 두 input에 서로 다른 수를 신호로 넣어주게 되면 output 값은 1의 값을 신호로 얻을 수 있다.▶ Verilog code 및 시뮬레이션 결과module GATE(A,B,C);// 함수 선언input A,B;// input 설정output C;//output 설정wire W1,W2,W3;//중간 전달 매개체를 wire로 설정nand (W1,A,B);nand (W2,A,W1);nand (W3,B,W1);nand (C,W2,W3);//순서에 맞게 연산endmodule▶ 시뮬레이션 결과에 따른 진리표A(input)B(input)C(output)110101011000- 하지만 이 값은 어디까지나 functional한 값이지 실제 회로가 구동할때에는 input과 output이 같은 시간대에 논리적으로 부합하는 값이 반드시 공존 할 수는 없다는 것을 알 수 있었다.▶ 실제 delay time에 초점을 맞춘 시뮬레이션 그래프- 위의 그래프를 보면 약 10.5 ns 만큼의 시간이 연산과정에 소모 되었음을 알 수 있다.▶ FRGP 실제 구동 결과A=1 B=1A=0 B=1A=0 B=0A(=115 pin)B(=114 pin)C(=191 pin)110101011000- 위의 사진에서 볼 수 있는 것처럼 1번 입력시 불이 들어왔다.- 2번입력을 주어도 OR GATE와 같이 LED에 불이 들어왔다.- 위의 사진에서 확인 할 수 있듯이 XOR GATE의 특징인 두 개의 입력값이 1일경우(여기에서 button을 누르는 것은 1이다.) 0으로 나타났다.(즉, LED에 불이 들어오지 않았다.)- coding시 주의사항.→ module 함수명(A, B, C) 입력변수는 A, B 출력을 C 로 지정해 준다.두 개의 NAND GATE를 연결하는 선 역할을 하는 WIRE는 다음과같이 지정wire w1, w2, w3;(단, 주의 할 점은 wire는 입력과 출력으로 지정하지 않는 것이다.)2. FULL-ADDER설계▶ Half adder- 2진연산의 특성상 두 input에 같은 신호가 들어가면 output 값이 나오지 않는다(즉, value=0)- 두 input에 서로 다른 신호가 들어가면 output에 신호가 얻어진다.(value=1)- S는 xor연산을 하게 된다.즉, S = X ? Y-carry는 and연산을 하여 신호를 내보낸다.즉, C = X ? Y▶ Verilog code 및 시뮬레이션 결과module ADDER(X,Y,C,S);// 함수선언input X,Y;//input설정output C,S;//output설정xor (S,X,Y);and (C,X,Y);//연산endmodule▶ 시뮬레이션 결과에 따른 진리표XYSC*************000- 하지만 이 수치는 어디까지나 functional한 결과일 뿐이다.? Full-Adder- half-adder두개를 서로 이어서 기존의 input이 2개 였던 것을 3개로 만들었고, 이에 결과 값은 기존의 S 값과 carry이 얻어진다.- half-adder를 통해 먼저 2개의 input을 xor연산하 고 또다시 다른 input (carry에 해당)과 다시 xor연 산을 한다. 따라서 얻어지는 S값은,S = (X ? Y) ? C- C값 또한 and연산 후 또 다른 and연산으로 얻어진 값 과 or연산하여 얻어진다. 즉,C = A?B + B?C + C?A▶ Verilog code 및 시뮬레이션 결과module FADDER(S,C0,C1,X,Y);//함수선언input C0,X,Y;//input 설정output S,C1;//output 설정wire W1,W2,W3;//중간 전달 매개체 설정xor (W1,X,Y);and (W2,X,Y);xor (S,C0,W1);and (W3,W1,CO);or(C1,W2,W3);//연산endmodule▶ 시뮬레이션 결과에 따른 진리표XYSC0C*************10000000▶ FRGP 실제 구동 결과X(=115 pin)Y(=114 pin)S(=191 pin)C0(=113 pin)C1(=191 pin)1*************000000- 시뮬레이션 결과와 똑같은 결과를 얻었다.- 보드에서 입력 carry의 값은 항상 0이어야 한.- 1만 입력하거나 2만 입력 했을 때 첫 번째 LED 에 불이 들어왔다.- 1과 2 둘다 입력했을 때 두 번째 LED 에 불이 들어왔다.- 1과 2 그리고 입력carry(value=3) 를 모두 입력 시켰을 때 두 개의 LED 전부 불이 들어왔다.- 여기서 두 번째 LED 에 불이 들어오는 경우는 더한 값이 자릿수를 넘어가기 때문에 그 다음 자 리의 의미로 불이 들어오는 것이다.토의- 이 실험을 통해 실제로 nand gate를 이용한 xor게이트를 구현해 보았다. 뿐만 아니라 실제로 adder를 구현하여 half-adder는 시뮬레이션을, full-adder는 실제로 FRGP보드에 옮겨 실행 에 옮겨 보았다.-회로가 굉장히 간단하기 때문에 결과값은 무난하게 나왔는데, xor게이트 구현의 경우 두 input 이 1인경우나 0인 경우(신호를 주지 않는다)에는 결과값 즉 신호가 결과로 얻어지지 않았고, 서 로 다른 신호 X=1 Y=0, 또는 X=0 Y=1을 받았을때에는 결과 값 으로 신호가 얻어질수 있었다.- adder의 구현의 경우 단 1자리의 계산이지만 ,1+1=0 그리고 Carry=1, 1+0 = 0+1=1, 0+0=0을 얻을 수 있었다. 여기서 주목 해야 할 점은 C=0이지만 output으로 얻어지는 Carry의 값은 좀 더 큰 숫자들을 연산할 때, 바로 다음 가산기의 C의 역할을 하게되어 연산을 할수 있게 된다. 즉, 우리가 1bit full-adder를 이용하여 수 bit의 가산기를 구현한다고 하면, 전체적인 개념은 가산기를 bit의 숫자만큼 병렬로 이어놓은 것이 될 것이고, 각 가산기는 각각의 자리의 숫자를 의미한다. 따라서 여기서의 carry의 역할은 매우 중요한데, 1+1=0으로 얻어지지만 실제로는 2의 값을 갇는다. 따라서 이를 2진수로 표현하기 위해서는 10이라는 숫자를 표기해야 한다. 때문에 carry를 이용하면 바로 다음자리수의 연산이 시작될 때 carry가 이 숫자들과 함께 연산을 하게 됨으로써 정확한 연산을 할수 있게 되는 것이다. 하지만 가장 첫번째의 carry는 항상 0으로 가산기 상에서는 의미가 없다.
    공학/기술| 2009.05.07| 5페이지| 1,000원| 조회(791)
    미리보기
  • decoder를 이용한 각종 시스템 구현
    디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부디지털 시스템 설계 및 실험 결과보고서디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부작성자 : 고려대 전기전자전파 공학부실험조 : 12조학번 :실험일 : 2009. 4. 7실험제목decoder를 이용한 각종 시스템 구현실험목표1.BCD to Excess-3 code converter2.BCD to 7-segment decoder3.Traffic light controller실험결과□ Minterm1. Verilog codemodule Minterm(X,M);//함수 선언input [3:0]X;output [15:0]M;//input/output 설정 input은 4BIt 배열, output 16Bit 배열and (M[0],~X[3],~X[2],~X[1],~X[0]);and (M[1],~X[3],~X[2],~X[1],X[0]);and (M[2],~X[3],~X[2],X[1],~X[0]);and (M[3],~X[3],~X[2],X[1],X[0]);and (M[4],~X[3],X[2],~X[1],~X[0]);and (M[5],~X[3],X[2],~X[1],X[0]);and (M[6],~X[3],X[2],X[1],~X[0]);and (M[7],~X[3],X[2],X[1],X[0]);and (M[8],X[3],~X[2],~X[1],~X[0]);and (M[9],X[3],~X[2],~X[1],X[0]);and (M[10],X[3],~X[2],X[1],~X[0]);and (M[11],X[3],~X[2],X[1],X[0]);and (M[12],X[3],X[2],~X[1],~X[0]);and (M[13],X[3],X[2],~X[1],X[0]);and (M[14],X[3],X[2],X[1],~X[0]);and (M[15],X[3],X[2],X[1],X[0]);// Minterm 연산endmodule- 이번 시스템의 가장 기본이 되는 모듈이 Monterm 이기 때문에 위와 같이 구성하여 Module 화 하e는 5+3=8 이고, 2진으로는 1000이다. 이 Excess-3 code converter는 10진 뺄셈을 구현하는데에 유용하게 사용 될 수 있다. 각 BCD숫자는 4개의 bit으로 구성되는데 가장 최상위 bit에서부터 제일 최하위 bit순서로 A, B, C, D로 표시한다. Excess-3 code는 4개 의 bit로 구성되는데 가장 최상위 bit에서부터 제일 최하위 bit순서로 W, X, Y, Z로 표시한다.1. Verilog coding- 우선 BCD to Excess-3 code converter를 coding하기위해 Minterm module 을 불러와 Minterm을 이용하여 다양한 연산을 한다.module Excess(X,Y);input [3:0]X;output [3:0]Y;wire [15:0]M; //Minterm이 wire의 역할을 하게 된다.Minterm A1(.X(X),.M(M)); //미리 coding해 놓았던 Minterm을 불러온다.or B1(Y[0],M[0],M[2],M[4],M[6],M[8]);or B2(Y[1],M[0],M[3],M[4],M[7],M[8]);or B3(Y[2],M[1],M[2],M[3],M[4],M[9]);or B4(Y[3],M[5],M[6],M[7],M[8],M[9]);//Y[0],Y[1],Y[2],Y[3]을 각각 Z, Y, X, W로 설정하여 연산endmodule2. 시뮬레이션 결과- 위의 simulation에서 관찰할 수 있듯이 ‘0’일때는 ‘3’을 출력하고 ‘1’일 때는 ‘4’ 를 출력함을 알 수 있다.3. RTL 회로□ BCD to 7-segment decoder- BCD to 7-segment decoder는 BCD에서 10진수를 받아들이고 그 숫자를 나타내는 segment 를 선택하여 적당한 출력을 발생하는 조합회로이다.- 각각의 input의 크기에 대하여 a~g까지 각각의 segment에 대한 신호 값을 동시에 출력- 즉, 하나의 변수에 대하여 각input에 따른 신호 값을 지정한다.module 할 수 있다.Minterm A1(.X(X),.M(M));or C1(Y[0],M[2],M[3],M[4],M[5],M[6],M[8],M[9]);or C2(Y[1],M[0],M[4],M[5],M[6],M[8],M[9]);or C3(Y[2],M[0],M[2],M[6],M[8]);or C4(Y[3],M[0],M[2],M[3],M[5],M[6],M[8],M[9]);or C5(Y[4],M[0],M[1],M[3],M[4],M[5],M[6],M[7],M[8],M[9]);or C6(Y[5],M[0],M[1],M[2],M[3],M[4],M[7],M[8],M[9]);or C7(Y[6],M[0],M[2],M[3],M[5],M[6],M[7],M[8],M[9]);endmodule- BCD to 7-segment decoder 역시 Excess 3 code converter와 마찬가지로 Minterm module을 이용하여 Ecesse-3와 같은 방식으로 Code를 작성한다.- 잘못 출력된 화면- 오류를 수정한 화면* 오류를 수정하기 위한 코드output [7:0]COM;assign COM=8'b11111110;- 위의 coding을 작성하지 않을 시 위의 첫 사진과 같이 COMBO에 출력되게 된다.- 위의 값을 coding해 주었을 때의 결과사진- 입력을 BCD로 ‘0110’을 입력하면 10진수인 ‘6’이 출력이 된다.- 코드를 분석해 보면 COM이라는 output Port를 설정하여 각각의 입력되는 신호 값이 1이면 출력되지 않고 0이 되었을 때 출력이 된다. 따라서 위의 코드를 작성하지 않으면 처음의 그림처 럼 8개의 자리에 전부 같은 숫자가 출력된다.2. 시뮬레이션 결과- input에 각각 0부터 15까지 신호를 넣어 주었다.- output COM은 최 하위 자리만 0을 신호로 받아 한자리의 숫자로 COMBO상에 나타낸다.□ Traffic light controller- 이것 역시 Minterm module을 이용하여 각각의 output 변수에 결과값을 연산하여 조건에 맞는 신호를 A1(.X(X),.M(M));or T1(GNS,M[8],M[9],M[10],M[11],M[12],M[13]);or T2(RNS,M[0],M[1],M[2],M[3],M[4],M[5],M[6],M[7],M[15]);or T3(YNS,M[14]);or T4(GEW,M[0],M[1],M[2],M[3],M[4],M[5]);or T5(REW,M[7],M[8],M[9],M[10],M[11],M[12],M[13],M[14],M[15]);or T6(YEW,M[6]); // 각각의 Minterm을 이용하여 output 연산endmodule- input 값을 시간의 값으로 설정하고, output값을 각각의 경우에따른 신호로 설정( 북-남 3가지 신호, 동-서 3가지 신호)- BCD to 7segment의 원리를 이용하여, 하나의 시점, 즉 하나의 input을 신호로 넣어 주었을 때, 이때 켜지는 불을 신호 1로서 데이터를 설정- 또한 문제의 조건에 맞도록 설정하면, ‘Green은 30초, Yellow는 5초, Red는 45초’로 가정 하였기 때문에 처음 데이터 값을 (GNS, RNS, YNS, GEW, REW, YEW)순으로늘어놓는 다면 초기값으로 100010이 output데이터 값으로 나온다.- Truth TableinputoutputDecimal digitD[0]D[1]D[2]D[3]RedYellowGreenRedyellowGreenNorth-SouthSouth-North0000*************00**************************010*************00***************************************01******************************************************************************- input을 시간의 축으로 설정하고 각각의 input당 5초라는 시간으로 지정한다.- output 값으로 동-서와 북-남의 방향의 신호를 모두 output으로 설정한다.- 조건에 맞는여 디지털 시스템에서 배운 Excess-3와 BCD to 7segment, 그리고 Traffic Light Controller를 구현하였다.- Decoder는 하나의 데이터를 받았을 때 거기에 따라 할당되어지는 output값을 출력하게 되는 시스템이다. 그 원리는 Minterm을 이용하는 것인데, 출력하고자 하는 데이터를 카노 맵을 통해 줄여서 각각의 연산을 하는 방법도 있지만, Minterm Module을 이용하면, 출력하고자 하는 output에 대하여 Minterm Expansion을 이용하여 좀 더 쉽게 접근할 수 있다. 즉,f(A,B,C,D) = ∑ Minterm = 1으로서 표현이 가능하다.- 위의 Minterm module을 만들었다면, 다음의 시스템을 좀더 효과적으로 구성할 수 있다. Excess-3의 경우 원래의 input에 3을 더하여 출력하는 시스템 인데, 각각의 자리를 하나의 변수 로 설정하면, 위의 Minterm Expansion의 방법으로 각 자리수를 표현한다. 따라서 이를 통해 Excess-3시스템을 구현 하여 input+3의 결과를 4Bit 데이터로서 얻을 수 있었다.-BCD to 7segment의 경우 숫자를 나타내는 계기판의 각각의 segment를 변수로 설정하고 각각의 pin을 잡아서 나타낸 것이다. 따라서 경우에 따라 각각의 output이 신호를 출력하는 경우를 이용하면 7segment 시스템이 7Bit 데이터를 이용하여 숫자를 Combo 상에 출력한다.- Traffic Light Controller의 경우 위에서 언급한 것처럼 input을 시간의 축으로써 입력한다. 따라서 각각의 시간이 변화함에 따라 신호를 output으로써 설정하여 신호가 바뀌는 것을 표현한 것이다. 즉, 각각의 input이 주어지는 시점마다의 output 데이터값을 신호가 출력되는 모습으로 출력하게 되는 것이다. 때문에 시스템의 구현은 위의 경우와 같다. 하지만 6Bit 데이터를 이용하며, input이 끝까지 돌아가면 처음의 input 0000으로 돌아와있다.
    공학/기술| 2009.05.07| 7페이지| 1,000원| 조회(245)
    미리보기
  • 7-Segment Decoder using Decimal to BCD Converter
    7-Segment Decoder using Decimal to BCD ConverterDecimal to BCD Converter를 Codingmodule Deci_to_BCD(X, In);input [9:0]X;output [3:0]In;wire [9:0]M; //assign 함수로 지정해준 [9:0]M이 wire로서 동작하게 된다.(Minterm이 아니다!)assign M[0]=X[0]&~X[1]&~X[2]&~X[3]&~X[4]&~X[5]&~X[6]&~X[7]&~X[8]&~X[9];assign M[1]=~X[0]&X[1]&~X[2]&~X[3]&~X[4]&~X[5]&~X[6]&~X[7]&~X[8]&~X[9];assign M[2]=~X[0]&~X[1]&X[2]&~X[3]&~X[4]&~X[5]&~X[6]&~X[7]&~X[8]&~X[9];assign M[3]=~X[0]&~X[1]&~X[2]&X[3]&~X[4]&~X[5]&~X[6]&~X[7]&~X[8]&~X[9];assign M[4]=~X[0]&~X[1]&~X[2]&~X[3]&X[4]&~X[5]&~X[6]&~X[7]&~X[8]&~X[9];assign M[5]=~X[0]&~X[1]&~X[2]&~X[3]&~X[4]&X[5]&~X[6]&~X[7]&~X[8]&~X[9];assign M[6]=~X[0]&~X[1]&~X[2]&~X[3]&~X[4]&~X[5]&X[6]&~X[7]&~X[8]&~X[9];assign M[7]=~X[0]&~X[1]&~X[2]&~X[3]&~X[4]&~X[5]&~X[6]&X[7]&~X[8]&~X[9];assign M[8]=~X[0]&~X[1]&~X[2]&~X[3]&~X[4]&~X[5]&~X[6]&~X[7]&X[8]&~X[9];assign M[9]=~X[0]&~X[1]&~X[2]&~X[3]&~X[4]&~X[5]&~X[6]&~X[7]&~X[8]&X[9];assign In[3]=M[8]|M[9];assign In[2]=M[4]|M[5]|M[6]|M[7];assign In[1]=M[2]|M[3]|M[6]|M[7];assign In[0]=M[1]|M[3]|M[5]|M[7]|M[9];endmoduleMinterm generatormodule Minterm (In,K); //BCD_to_Seven Segment Decoder를 위한 wire의 역할을 하게 된다.input [3:0]In;output [9:0]K;and B0(K[0],~In[3],~In[2],~In[1],~In[0]);and B1(K[1],~In[3],~In[2],~In[1],In[0]);and B2(K[2],~In[3],~In[2],In[1],~In[0]);and B3(K[3],~In[3],~In[2],In[1],In[0]);and B4(K[4],~In[3],In[2],~In[1],~In[0]);and B5(K[5],~In[3],In[2],~In[1],In[0]);and B6(K[6],~In[3],In[2],In[1],~In[0]);and B7(K[7],~In[3],In[2],In[1],In[0]);and B8(K[8],In[3],~In[2],~In[1],~In[0]);and B9(K[9],In[3],~In[2],~In[1],In[0]);endmodule7-Segment Decoder를 Codingmodule Deci_to_Seven(X,S,COM);input [9:0]X;output [6:0]S;wire [3:0]In;wire [9:0]K;output [7:0]COM;assign COM=8'b11111110;Deci_to_BCD K1(.X(X),.In(In)); //Deci_to_BCD에서 input ‘X’는 ‘X’로 output ‘In’의 값은 ‘In’으로 지정된다.Minterm K2(.In(In),.K(K)); //Minterm에서 input ‘In’는 ‘In’로 output ‘K’의 값은 ‘K’로 지정된다.or Z0(S[0],K[2],K[3],K[4],K[5],K[6],K[8],K[9]);or Z1(S[1],K[0],K[4],K[5],K[6],K[8],K[9]);or Z2(S[2],K[0],K[2],K[6],K[8]);or Z3(S[3],K[0],K[2],K[3],K[5],K[6],K[8],K[9]);or Z4(S[4],K[0],K[1],K[3],K[4],K[5],K[6],K[7],K[8],K[9]);or Z5(S[5],K[0],K[1],K[2],K[3],K[4],K[7],K[8],K[9]);or Z6(S[6],K[0],K[2],K[3],K[5],K[6],K[7],K[8],K[9]);endmoduleDecimal to Seven Segment Decoder의 WaveformDecimal to Seven Segment Decoder Hierarchy위의 그림에서 볼 수 있듯이 Decimal to Seven Segment decoder는 wire 역할을 하는 Minterm 과 Decimal to BCD coding에 의해서 연결이 됨을 알 수 있다.Decimal to Seven Segment decoder가 최상위 계층으로 올라가고 Decimal to BCD 가 최하위 계층으로 내려가 Decimal이 입력이 되고, Seven Segment 가 출력으로서 나오게 된다.
    공학/기술| 2009.05.07| 3페이지| 1,000원| 조회(853)
    미리보기
  • verilog coding을 이용한 Adder&Subtractor
    디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부디지털 시스템 설계 및 실험디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부작성자 : 전기전자전파 공학부 □□□ 학번 : ○○○○○○○○○○실험조 : ○○조 실험일 : 2009.3.24실험제목Adder/Subtractor실험목표1. 4Bit Adder를 설계한다.2. 8Bit Adder/Subtractor를 설계한다.실험준비물Altera Quartus II 4.0 software, HBE-COMBO 보드배경지식1. 4Bit Adder2. 8Bit Adder/Subtractora. 8Bit Adderb. 8Bit SubtractorHaving an n-bit adder for A and B, then S = A + B. Then, assume the numbers are in two's complement. Then to perform B ? A, two's complement theory says to invert each bit with a NOT gate then add one. This yields , which is easy to do with a slightly modified adder.실험방법4Bit Adder/******************************************************************************Half Adder******************************************************************************/module HalfAdder(X, Y, S, COUT);input X, Y;output S, COUT;assign S = X ^ Y;assign COUT = X & Y;endmodule/******************************************************************************Full Adder******************************************************************************/module FullAdder(X, Y, CIN, S, COUT);input X, Y, CIN;output S, COUT;wire s1, c1, c2;HalfAdder U1_HA(.X(X), .Y(Y), .S(s1), .COUT(c1));HalfAdder U2_HA(.X(s1), .Y(CIN), .S(S), .COUT(c2));assign COUT = c2 | c1;endmodule/******************************************************************************4Bit Adder with carry-in******************************************************************************/module add4c(AIN, BIN, CIN, SUM, COUT);input [3:0] AIN, BIN;input CIN;output [3:0] SUM;output COUT;wire [2:0] carry;FullAdder U1_FA(.X(AIN[0]), .Y(BIN[0]), .CIN(CIN), .S(SUM[0]), .COUT(carry[0]));FullAdder U2_FA(.X(AIN[1]), .Y(BIN[1]), .CIN(carry[0]), .S(SUM[1]), .COUT(carry[1]));FullAdder U3_FA(.X(AIN[2]), .Y(BIN[2]), .CIN(carry[1]), .S(SUM[2]), .COUT(carry[2]));FullAdder U4_FA(.X(AIN[3]), .Y(BIN[3]), .CIN(carry[2]), .S(SUM[3]), .COUT(COUT));endmodule8Bit Adder/Subtractor/******************************************************************************8Bit Adder with carry-in******************************************************************************/module add8c(AIN, BIN, CIN, SUM, COUT);input [7:0] AIN, BIN;input CIN;output [7:0] SUM;output COUT;wire carry;add4c U1_ADD(.AIN(AIN[3:0]), .BIN(BIN[3:0]), .CIN(CIN), .SUM(SUM[3:0]), .COUT(carry));add4c U2_ADD(.AIN(AIN[7:4]), .BIN(BIN[7:4]), .CIN(carry), .SUM(SUM[7:4]), .COUT(COUT));endmodule/******************************************************************************8Bit Adder/Subtractor******************************************************************************/module addsub8(AIN, BIN, IS_SUB, SUM, COUT);input [7:0] AIN, BIN;input IS_SUB;output [7:0] SUM;output COUT;wire [7:0] cmpl = BIN^{8{IS_SUB}};add8c U_ADD(.AIN(AIN), .BIN(cmpl), .CIN(IS_SUB), .SUM(SUM), .COUT(COUT));endmodule4. Verilog Coding
    공학/기술| 2009.05.07| 2페이지| 1,000원| 조회(684)
    미리보기
  • Minterm 값 출력 및 Parity bit를 통한 에러 검출
    디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부디지털 시스템 설계 및 실험 결과보고서디지털 시스템 설계 및 실험 KEEE209 전기전자전파 공학부작성자 : 고려대 전기전자전파공학부실험조 : 12조학번 :실험일 : 2009. 3. 31실험제목Minterm 값 출력 및 Parity bit를 통한 에러 검출실험목표1. 세 변수에 대한 Minterm을 출력하는 회로를 설계한다.2. 위의 1번 회로를 이용하여 3Bit Data에 대한 Parity Bit을 생성하는 회로를 설계한다.3. Parity Bit을 포함하는 4Bit Data의 오류를 검사하는 회로를 설계한다.실험결과□ Minterm- 일반적으로 최적화값 이라 한다.- 각각의 변수에 신호가 들어 왔을 때, 각각의 변수를 이용하여 AND연산을 하여 하나의 항을 만드는데 이를 Minterm 이라 한다.- 이런 식으로 3비트의 신호를 받는다면 각각의 신호마다 8가지 minterm이 존재하게 되고 여기서 가장 최적화된 minterm 이 하나씩 존재 한다.- 따라서 minterm module을 만들면, 이런 식의 n개의 변수 에 대하여 2의 n 제곱의 양만큼의 minterm 값은 내보내는 module이 될 것이다.▶ verilog codemodule Minterm(X,M);input [2:0]X;output [7:0]M;wire [2:0]A;not (A[0],X[0]);not (A[1],X[1]);not (A[2],X[2]);and(A[2],A[1],A[0]);and(A[2],A[1],X[0]);and(A[2],X[1],A[0]);and(A[2],X[1],X[0]);and(X[2],A[1],A[0]);and(X[2],A[1],X[0]);and(X[2],X[1],A[0]);and(X[2],X[1],X[0]);endmodule▶ 시뮬레이션 결과- 이런 식으로 1부터 8에 해당하는 2진수 신호를 주었을 때, 각각의 Minterm은 8개씩 존재(즉, 가 능한 모든 조합), 8개의 조합중 하나의 조합만이 최적화된 조합으로 1을 output으로 내보낸다.□ Parity Generator- 데이터를 송?수신 할 때 에러를 검출할수 있는 코드로, 짝수 패리티와 홀수 패리티를 가지고 있다.- 에러를 검출 할 수는 있지만 수정할 수는 없다.- 전송과정에서 특정한 비율만큼 데이터가 손실되도 검출이 되지 않을 수도 있다.▶ Odd Parity- 전송하고자 하는 전체 2진 데이터에서 “1”의 개수가 홀수개가 되도록 추가된 bit- 데이터에서 “1”의 개수가 홀수개이면 Parity 값은 0이되고 짝수개 이면 Parity 값은 1이된다.- 홀수 Parity를 이용한 비트 체크방식은 중간 전송 과정에서 짝수개 만큼의 데이터가 손실되어도 검출되지 않을수 있다.▶ Even Parity- 전송하고자 하는 전체 2진 데이터에서 “1의 개수가 짝수가 되도록 추가된 bit- 데이터에서 “`1”의 개수가 홀수개 이면 Prity값은 1을 갖고, 짝수개 이면 Parity값은 0을 갖는다.- verilog codemodule Parity_Gen(X,P);input [2:0]X;output P;wire [7:0]m;Minterm X1(.X(X),.M(m));assign P=m[1]+m[2]+m[4]+m[7];endmodule▶ 시뮬레이션 결과- Even Parity를 생성하는 모듈로 입력된 input을 가지고 Minterm을 생성하고 이중 특정 Minterm (M1,M2,M4,M7) 즉, 1의개수가 홀수개인 데이터의 Minterm값을 모두 더한값이 Parity가 된다.- 1의 개수가 홀수일 때 1일나오는 경우는 다음의 식과같다P = X ? Y ? Z- 따라서 이를 카노맵상에 나타난 기술을 바탕으로 간추린 결과 M1,M2,M4,M7의 합의 값과 같다는 것을 확인- 하나의 데이터에 대하여 Minterm=1인경우는 한가지 이기 때문에 1의개수가 짝수라면 M1,M2,M4,M7는 모두0을 나타낼것이고, Minterm=0이된다.- 반대로 1의 개수가 홀수라면 Minterm=1인 경우가 8개중 한가지 이므로 M1,M2,M4,M7중에 하나일 것이다, 따라서 M1,M2,M4,M7의 합은 무조건 1이된다.□ Error 검출- 서로간에 데이터를 전송할 경우 데이터 손실이 일어나게 되는데, 이러한 것을 확인하고 수정할수 있도록 해 주는 것이 이 Error 검출 module 이다.- 즉, 데이터를 전송 받았을 때, 이 데이터의 input으로 만든 Parity와 받아서 가지고 온 Parity 가 같다면 에러가 나타나지 않는다.- 하지만 이러한 Parity 검출의 문제점은 중간에 데이터가 손실 되었음에도 불구하고 “1”의 개수가 짝수 혹은 홀수 그대로를 유지 하고 있다면, 데이터가 손실 되었음에도 에러가 검출되지 않는다.▶ verilog codemodule Error(X,P,E);input [2:0]X;input P;output E;wire W;wire [2:0]C;Parity_Gen K1(.X(X),.P(W));assign C[0]=W;assign C[1]=P;assign C[2]=0;Parity_Gen K2(.X(W),.P(P));endmodule▶ 시뮬레이션 결과- 받은 데이터로부터 Parity를 생성하고 이 생성된 Parity와 이미 생성되어온 Parity가 같다면 데이 터에 이상이 없는 것으로 인식이되는 것이다.- 즉, 처음 받은 데이터로 Parity 모듈을 이용하여 Parity를 생성하고 이 값과 이미 생성되어온 Parity 와 임의의 입력변수 0을 같이 Parity 생성 모듈로 연산을 하면, Parity 생성모듈이 XOR 연산이기 때문에 원하는 값을 얻을수 있다.- 1의 개수가 짝수이고 P=0 이면 에러가 검출되지 않고, 1의 개수가 혹수이고, P=1이어도 에러가 검출되지 않는다.- 1의 개수가 작수이고 P=1인 경우, 1의개수가 홀수이고 P=0이 나타난다면 에러가 검출되어 데이터 가 변형 되었다는 것을 알 수 있다.토의- 이번 실험을 통해 Decoder를 이용한 Minterm 생성과 이를 이용한 Parity 생성모듈, 에러 검출 코드까지 구현하였다.-Minterm 모듈은 이 모듈을 통해 각각의 데이터 마다 8개의 Minterm을 얻을수 있고, 이 8개의 Minterm 중에는 그 데이터에 최적화된 Minterm이 하나 존재하고 그값은 1을 갖는다.-Parity 생성 모듈의 경우 Even Parity를 생성하는 모듈로 기본적으로 XOR연산 과 같은 역할을 한다. 따라서 이를 카노맵을 통해 구현해서 1의 개수가 짝수개인 경우를 제외하고 나면 결국 M1,M2,M4,M7만 남게 된다. 따라서 Minterm의 특성상 이들중 어느 두 개의 값이 상이 동시에 1일수 없기 때문에 M1,M2,M4,M7을 다 더하면 Parity 값을 바로 구할수 있다.-에러 검출 코드의 경우 기본적인 개념은 위에서 언급했듯 받은 데이터 중에서 받은 패리티와 받은 데이터를 이용하여 만든 패리티가 같으면 에러가 검출되지 않는다. 따라서 Parity 모듈을 이용하여 받은 데이터를 이용하여 Parity를 생성하고 받은 Parity와 임의의 입력변수 0을 함께 다시 Parity 모듈을 이용하여 연산하면 이때의 output이 E값이 된다. 따라서 받은 Parity와 생성된 Parity값이 같다면 XOR연산과 같기 때문에 E값은 0이 되고, 그 반대의 경우에는 1이 된다.
    공학/기술| 2009.05.07| 4페이지| 1,000원| 조회(587)
    미리보기
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 04일 월요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:03 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감