디지털 방송 및 실습[과제 2] CLCD제어정보통신공학과2010160101 윤희진2013.04.11담당교수님 : 김한종 교수,박천주 연구원님1. CLCD 제어 시나리오8bit mode를 이용하여 user pattern을 CLCD에 표시하기표시하고 싶은 패턴은 아래와 같다.WELCOME heejinはじめまして2. clcd.h파일 작성# cd /home //home 디렉터리로 이동# cd bob //bob 디렉터리로 이동# cd project //project 디렉터리로 이동# gedit clcd.h //clcd.h라는 c헤더 파일 생성3. clcd.c소스 작성# cd /home //home 디렉터리로 이동# cd bob //bob 디렉터리로 이동# cd project //project 디렉터리로 이동# gedit clcd.c//clcd.c라는 c소스 파일 생성4.실행결과1. clcd1.h 소스 작성# cd /home //home 디렉터리로 이동# cd bob //bob 디렉터리로 이동# cd project //project 디렉터리로 이동# gedit clcd1.h // clcd1.h라는 c헤더 파일 생성# cp ./clcd.c ../src/Main.c //clcd.c소스파일을 src 디렉터리에 Main.c라는 이름으로 복사# cd ..# make clean //기존 컴파일 결과 제거# make //컴파일projexe.bin파일을 RS232통신 프로그램을 이용하여 키트에 전송3. clcd1.c 소스 작성# cd /home //home 디렉터리로 이동# cd bob //bob 디렉터리로 이동# cd project //project 디렉터리로 이동# gedit clcd1.c // clcd1.c라는 c헤더 파일 생성# cp ./clcd1.c ../src/Main.c //clcd1.c소스파일을 src 디렉터리에 Main.c라는 이름으로 복사# cd ..# make clean //기존 컴파일 결과 제거# make //컴파일projexe.bin파일을 RS232통신 프로그램을 이용하여 키트에 전송3. 실행결과이번 실습은 clcd제어를 통한 8bit 모드제어, 4bit 모드제어를 해보았다. 실습 키트의 clcd Controller회로는 아래와 같다.XXVssVDDV0RSR/WEDB0DB1DB2DB3DB4DB5DB6DB7사용안함위와 같은 비트를 0과 1로 제어하면서 clcd 제어가 가능하였다. 실습과정에서 8bit mode는 잘 작동되었으나, 4bit mode는 문자패턴이 깨지는 현상이 발견되었다. 개선하려고 노력했지만 시간과 이해의 정도가 충분하지 못하여 개선하지 못하였다. clcd제어를 통해 다양한 문자패턴을 입력할 수 있다는 것을 알았고, 실생활에 clcd제어를 적용하여 버스카드를 찍으면 화면에 버스이용금액과 남은 잔돈을 clcd에 표현하는 것과 같은 clcd의 다양한 적용범위도 있다는 것을 생각해 볼 수 있었다.
통신회로 및 실습과제 [5] 블록문이 있는 네스티드 if문 설계, 2X4 디코더 설계, 4비트 단위의 2x1 데이터 셀렉터 설계하기정보통신공학과2010160101 윤희진2013.05.211. 소스작성-Verilog Module-Synthesize – XST-Verilog Test Fixture-실행결과< if문을 사용한 2X4 디코더 설계>1.소스 작성- Verilog Module-Synthesize – XST-Verilog Test Fixture-Behavioral Check Syntax – Simulate Behavioral Model-실행결과< 4비트 단위의 2X1 데이터 셀렉터 >1.소스 작성- Verilog Module-Synthesize – XST-Verilog Test Fixture-Behavioral Check Syntax – Simulate Behavioral Model-실행결과- 키트 실행결과*실습결과 및 고찰이번 실습은 블록문을 사용한 네스티드 if문과 if문을 사용한 2x4디코더 설계하기와, 데이터셀렉터 설계하기였다. 첫 번째 과제와 두 번째 과제는 쉽게 해결할 수 있었는데, 세 번째 과제를 해결할 때 너무 fnd위주로 생각하여 잘못된 접근방법으로 문제를 풀다가 시간을 많이 지체하는 실수를 하였다. 다른 방법으로 다시 설계 해보니 결과값이 나와서 다행이었다. 다음부터는 책을 읽어보고 과제를 해야겠다고 생각했다.
통신회로 및 실습과제 [4] 전가산기 겸 전감산기, 2의 보수 로직, 16진수-BCD코드 변환, 16진수-ASCII코드, 블록문이 있는 네스티드 if문 설계정보통신공학과2010160101 윤희진2013.04.301.소스 작성- Verilog Module-Synthesize – XST-Verilog Test Fixture-Behavioral Check Syntax – Simulate Behavioral Model1. 소스작성-Synthesize – XST-Verilog Test Fixture-Behavioral Check Syntax – Simulate Behavioral Model1. 소스작성-Synthesize – XST-Verilog Test Fixture-Behavioral Check Syntax – Simulate Behavioral Model1. 소스작성-Verilog Module-Synthesize – XST-Verilog Test Fixture-실행결과< 블록문이 있는 네스티드 if문 설계>1. 소스작성-Verilog Module-Synthesize – XST-Verilog Test Fixture-실행결과*실습결과 및 고찰이번 실습은 전가산기 겸 전감산기, 2의 보수 로직, 16진수-BCD코드 변환, 16진수-ASCII코드, 블록문이 있는 네스티드 if문 설계하기 였다. 전가산기 겸 전감산기는 SEL변수를 추가하여 0일 때 전가산기 1일 때 전감산기 역할을 하는 회로를 구성하는 것이었고, 2의 보수 로직은 산술연산자를 사용하여 1의 보수를 취한 다음 마지막 비트에 1을 추가하여 간단한 2의 보수를 구현해 보았다. 16진수를 BCD코드로 변환하는 것은 A,B,C,D,E,F와 같은 16진수를 0~9까지는 그대로 출력하고 A~F는 마지막 두 비트에서 10을 빼서 BCD코드로 변환하는 실습이었다. 그리고 16진수에서 ASCII코드로 변환하는 것은 십진수 30을 더해서 변환할 수 있었다. 마지막으로 블록문이 있는 네스티드 if문을 이용한 멀티플렉서 구현은 함수를 써서 IN[0~3]을 각각 출력하는 실습이었다. 마지막 과제가 부분적으로 코드를 제시하고 있어서 생각을 해볼 필요가 있는 실습과제였다. 함수를 사용하는 부분을 더 연습하여 익숙해져야겠다고 생각했다.
통신회로 및 실습과제 [3] 기본 게이트, 3_입력 게이트, “bufif0”,”notif1”,”notif0”를 이용한 설계정보통신공학과2010160101 윤희진2013.04.091.기본 게이트 소스 작성- Verilog Module-Synthesize – XST-Verilog Test Fixture-set as top module -> Synthesize – XST -> Create Schematic Symbol-Schematic- 실행결과BUFFER, INVERTER입력출력X0Y0Y1001110AND,OR입력출력X2X1Y2Y*************1111NAND, NOR입력출력X4X3Y4Y*************1100XOR, XNOR입력출력X6X5Y6Y*************11102. 3_입력 게이트 설계-Verilog Module-Verilog Test Fixture-set as top module -> Synthesize – XST -> Create Schematic Symbol-실행결과입력출력X2X1X0Y0Y1Y2Y3**************************01입력출력X2X1X0Y0Y1Y2Y*************01*************03. “bufif0”를 이용하여 설계하기그림 2-17에서 제어신호 “OE=0”일 때 동작하고, “bufif0” 연산자를 사용하고, 입력 신호 X0~X3, 출력신호 Y0~Y3은 “비트”로 선언해서 다시 설계한 후, “0,1,x,z”값으로 시뮬레이션 하여 기능을 확인한 다음, 실험하기 에서와 같은 방법으로 기능을 확인해보자.-Verilog Module-Verilog Test Fixture-실행결과입력출력OE=0일 때 출력OE=1일 때 출력X00Y00zX11Y11zX2xY2xzX3zY3xz4. “notif1”를 이용하여 설계하기그림 2-17에서 제어신호 “OE=1”일 때 동작하고, “notif1” 연산자를 사용하고, 입력 신호 X0~X3, 출력신호 Y0~Y3은 “비트”로 선언해서 3-스테이트 인버터가 되도록 다시 설계한 후, “0,1,x,z”값으로 시뮬레이션 하여 기능을 확인한 다음, 실험하기 에서와 같은 방법으로 기능을 확인해보자.-Verilog Module-Verilog Test Fixture-실행결과입력출력OE=0일 때 출력OE=1일 때 출력X00Y0z1X11Y1z0X2xY2zxX3zY3zx5. “notif0”를 이용하여 설계하기그림 2-17에서 제어신호 “OE = 0”일 때 동작하고, “notif0” 연산자를 사용하고, 입력 신호 X0~X3, 출력 신호 Y0~Y3는 “비트”로 선언해서 3-스테이트 인버터가 되도록 다시 설계한 후, “0,1,x,z” 값으로 시뮬레이션 하여 기능을 확인한 다음, 실험하기 에서와 같은 방법으로 기능을 확인해보자.-Verilog Module-Verilog Test Fixture-실행결과입력출력OE=0일 때 출력OE=1일 때 출력X00Y01zX11Y10zX2xY2xzX3zY3xz*실습결과 및 고찰이번 실습은 FPGA/CPLD내부의 인버터, 버퍼, AND, OR, XOR 등의 기본 게이트들을 논리 연산자를 이용하여 설계한 후 Schematic방법을 사용하여 설계하는 것과, 3입력의 NAND, NOR, XOR, XNOR의 게이트들을 비트처리 연산자를 이용하여 설계하는 것을 하였고, “bufif0”, ”notif1”, ”notif0”을 이용하여 버퍼와 인버터 설계를 해보았다. 실습과정을 통해 논리 연산자는 비트처리 연산자보다 더 간단한 것 같았고, bufif0, notif1, notif0은 xilinx에서 제공하는 함수와 같다는 것을 알게 되었다. 벡터 연산자로 하면 소스가 더욱 짧아져서 큰 회로를 설계할 때, 유용하게 사용될 것 같았다. 과제의 양이 많아 실습시간이 길었지만 결과 값이 잘 나와서 재미있었다.