1. Source code/*This program finds x from range [-1,...,2] which maximise f(x)f(x) = x*sin(10*pi*x)+1.0*/#include<stdio.h>#include<stdlib.h>#include"math.h"#define pi 3.14159265void rngen();void generation();void selection();void crossover();void mutation();void fitness();void findmaxval();int b[50][22],bp[50][22],i,j,k,l,p;double eval[50];double sel[50];double prob[50];void main(){rngen();for(l=0;l<150;l++)generation();// running 150 generationfindmaxval();// finding maximum fitness value}void rngen()//random binary number generaion{for(i=0;i<50;i++){for(j=0;j<22;j++){if(rand()>16384)
SF소설과 영화의 단골소재로 사용되는 로봇은 인간을 닮고 인간처럼 사고하지만 인공적인 피조물의 결정체다. 아직 인간의 친구가 될 수 있는 로봇은 나타나지 않았지만 인간이 하지 못하는 다양한 작업을 하기 위해 산업체에서는 로봇이 적극 활용되고 있다. 로봇이란 말의 어원은 일한다 라는 뜻의 체코어인 ROBOTA에서 유래했다. 체코슬로바키아 극작가 K 차페크가 희곡 을 발표하며 이 용어는 세계적인 관심을 끌게 된다. 그는 작품을 통해 인간을 대신해 일하고 망가지면 폐기 처분되는 존재를 나타내며 로봇이라는 개념에 대해 묘사했다.오늘날 우리가 말하는 과학적인 로봇의 효시가 된 것은 1927년 미국 웨스팅 하우스 전기회사 기사인 R J 웬즐리가 만든 로 기계와 전기 기술을 활용해 전화응답 등 초보적인 기능을 수행했다. 80~90년대 들면서 로봇 연구는 산업용, 의료용, 우주용, 해저용으로 구분돼 발전했다. 산업용 로봇은 오늘날 여러 산업현장에서 널리 활용되고 있다.미래의 로봇은 어떤 모습일까? 영화 A.I에서는 거의 인간과 같은 로봇이 등장한다. 인간의 모습을 하고, 심지어 감정까지 프로그래밍된 로봇이다. 영화의 주요 장면을 보면서 이 영화에서 다루는 미래 로봇기술과, 로봇의 특징 등을 알아보자.{사진1. The Sensory toy(감각장난감) 순차적 뉴론 테크놀로지 사용위 사진은 영화 초반부에 등장하는 로봇이다. 사람의 감정을 느낄 수 있게 만든 신형 로봇으로 순차적 뉴론 테크놀로지를 사용한다. 이는 하나의 뉴론에서 다른 경로를 찾는 방법이다. 이러한 기술로 사랑할 수 있는 로봇을 개발할 수 있다고 한다.이러한 미래의 로봇은 감정을 얼굴에 표현하는데 그 모습이 사람에게 전현 뒤지지 않는다. 다양한 표정들은 인공근육을 사용해 표현된다. MIT 인공지능 연구실에서는 로봇이 상황에 맞는 여러 가지 표정을 나타내는 키스멧(Kismet)이 있다. 키스멧은 사람과 의사소통을 하고 감정을 이해할 뿐만 아니라 자신의 감정을 드러내도록 만들어졌다. 커다랗고 파란 눈 뒤에 있는 카메라가 컴퓨터로 데이터를 보내면 키스멧은 컴퓨터에 있는 소프트웨어를 이용해 사람과 밝은 색깔의 인형 등을 시각적으로 분간할 수 있다. 이 소프트웨어는 또한 소리를 이용해 사람을 분간할 수도 있다. 그 다음엔 프로그램을 따라서 반응을 한다. 실제로 봉제인형을 들고 흔들면 로봇은 행복하다는 듯 반응하기도 한다. 이처럼 감정을 표현하는 기능은 휴머노이드 로봇을 더욱더 인간답게 만들어 주는 기능을 한다. 세계 여러 대학과 기업에서 로봇에게 감정을 넣는 작업이 진행 중이다. 로봇에게 감정이라고 하는 말은 A.I(인공지능)가 발달함에 따라 지능적으로 생각하고 감정을 갖는다면 좋은 쪽으로는 사회의 약자들에게 감정적인 교감을 나눌 수 있는 친구가 될 수 있으며 반대로 터미네이터 같이 분노에 찬 괴물도 될 수 있다. 그 어느 쪽이든 로봇의 감정을 넣는 작업은 계속될 것이다.{사진2. 감정을 갖고 있는 어린이 로봇A.I의 주인공인 David 이다. David은 사랑의 감정을 느낄 수 있도록 만들어졌다. 아이를 잃은 부모들은 이러한 어린이 로봇을 통해 아이를 잃은 슬픔을 잊을 수 있고, 이러한 어린이 로봇은 늙지도 않고, 식사도 안하며, 말도 잘 듣는다.{{사진3. 위험회피시스템미래의 로봇에는 위험회피시스템이 내장되어 있다. 사람이 위험을 느끼는 것과 동일한 상황이 되면 사람과 유사한 행동을 하는 것이다. 이 영화에서 David은 한 어린이의 장난으로 팔이 칼에 찔린다. 물론 아픔을 느끼지도 못하고, 피도 나지 않지만, 위험회피시스템은 그 상황이 생명에 위협을 느끼게 하는 상황이라 판단해 위와 같은 행동을 하게 한다.{사진4. 각인시키기David의 어머니(구매자)는 David이 스스로 자신을 엄마라고 인식하게 할 것인지 아닌지 선택하게 된다. David이 자신을 엄마라고 인식하게 한다면 오직 자신만을 사랑하게 되고, 친자식과 같이 행동하게 된다. 이때 사용하는 방법은 각인시키기 라는 방법이고, 사진4 에서와 같은 특수 문장을 읽어줌으로써 각인시키기를 완료한다.{사진5. 폐기처분쓸모가 없어진 로봇은 주인으로부터 버려진다. 이렇게 버려진 로봇들은 끼리끼리 모여서 도시의 어두운 곳에 거주한다. 시간이 가면 갈수록 로봇의 숫자는 많아지고 결국 이 세상이 로봇의 세상이 될 것을 두려워한 인간은 버려진 로봇들을 수거해 없엔다. 없에는 과정은 공연과도 같이 많은 구경꾼들 앞에서 행해진다.{사진6. 로봇의 대량 생산David은 자신의 창조자의 인도에 의해 자신이 생산된 곳으로 돌아오게 된다. 그 곳에서 자신과 같은 모습을 가진 많은 로봇을 보고 충격을 받는다. 로봇은 똑같은 모습으로 대량생산이 가능하기 때문에, 인간과 흡사하게 생각할 수 있는 로봇이 개발된다고 하더라도, 그 정체성 문제가 발생할 것이다.
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY delay IS GENERIC(N_DLY: INTEGER := 4; N_BIT: INTEGER := 10); PORT(rstn: IN STD_LOGIC; clk: IN STD_LOGIC; xi_in: IN SIGNED(N_BIT-1 DOWNTO 0); xq_in : IN SIGNED(N_BIT-1 DOWNTO 0); yi_out : OUT SIGNED(N_BIT-1 DOWNTO 0); yq_out: OUT SIGNED(N_BIT-1 DOWNTO 0));END;ARCHITECTURE be OF delay IS TYPE table_signed IS ARRAY (NATURAL RANGE <>) OF SIGNED(N_BIT-1 DOWNTO 0); SIGNAL xi_reg: table_signed(0 TO N_DLY-1); SIGNAL xq_reg: table_signed(0 TO N_DLY-1);BEGIN PROCESS(rstn, clk) BEGIN IF rstn = `0` THEN FOR i IN 0 TO N_DLY-1 LOOP xi_reg(i) <= (OTHERS => `0`); xq_reg(i) <= (OTHERS => `0`); END LOOP; ELSIF clk`EVENT AND clk = `1` THEN xi_reg <= xi_in & xi_reg(0 TO N_DLY-2); xq_reg <= xq_in & xq_reg(0 TO N_DLY-2); END IF; END PROCESS; yi_out <= xi_reg(N_DLY-1); yq_out <= xq_reg(N_DLY-1);END;--
FPGA를 이용한 통신시스템 구현목차1. 서론1.1 연구목적1.1.1 동기1.1.2 졸업작품 진행도1.2 기존연구1.2.1 OFDM 이론1.2.2 HDL(Hardware Description Language)1.2.3 FPGA를 이용한 설계 흐름2. 본론2.1 Xilinx ML310 Board Specification2.1.1 ML310 Board2.1.1 Virtex2pro2.2 Ethernet MAC 연구2.2.1 Ethernet MAC 원리2.2.2 Ethernet MAC 스케메틱 및 핀배치2.3 OFDM MODEM 구현2.3.1 OFDM MODEM의 원리2.3.2 OFDM MODEM 구현2.3.2.1 Mapper & Demapper2.3.2.2 IFFT & FFT2.4 UART 구현2.4.1 FPGA UART 구현2.4.1.1 UART 송신부2.4.1.2 UART 수신부2.4.2 PC 파트 OFDM Client 구현2.4.2.1 MFC 소개2.4.2.2 MFC를 이용한 시리얼통신2.4.2.3 OFDM Client 구현3. 결과3.1 OFDM 블록의 MATLAB 시뮬레이션3.2 OFDM MODEM의 HDL 시뮬레이션 및 합성3.3 UART 송수신기의 HDL 시뮬레이션 및 합성3.4 PC 파트 OFDM Client 송수신 동작 결과3.5 FPGA 보드 Implementation4. 결론5. 참고문헌5.1 HDL 참고문헌5.2 FPGA 참고문헌5.3 EthernetMAC 참고문헌5.4 OFDM 이론 참고문헌5.5 OFDM MODEM 참고문헌5.6 UART 참고문헌5.7 MFC 참고문헌6. 졸업작품 후기7. 부록 - 소스코드7.1 OFDM MODEM7.1.1 UART BaudGen7.1.2 UART 송신부7.1.3 UART 수신부7.1.4 QPSK Mapper7.1.5 QPSK Demapper7.1.6 FFT/IFFT7.2 OFDM Client표 목차...........웨어 설계용 언어의 일종이기 때문에, C언어와 연계하여 시뮬레이션을 수행할 수 있고, 다른 설계자가 기술한 HDL을 이해하거나 재사용하는데 매우 용이하다. 그리고 게이트 수준으로 설계하는 것과 달리, 시스템의 사양이 변화했을 경우 시스템의 구조를 쉽게 변경할 수도 있다. 또한 제조 공정에 특화된 Library에 독립적으로 설계가 가능함으로 인해, 어느 제조 공정에도 적용 가능하다는 장점을 가진다. 특히 시스템을 하드웨어와 소프트웨어로 구분할 때에도 하드웨어 부분 및 ASIC 부분은 HDL언어로, 소프트웨어 부분은 C언어로 설계하여 통합 검증이 가능함으로 인해, 게이트로 구현하기 전에 전체 시스템을 컴퓨터에서 시험할 수 있게 되었다. 이러한 방식은 보다 빠르게 시스템의 문제점을 찾아내고 쉽게 오류를 정정할 수 있도록 도와준다. 이것은 시스템의 동작에 대한 신뢰도를 크게 향상시킬 수 있고, 나중에 실제로 시스템을 구현했을 때의 오류를 미연에 방지함으로써 설계시간을 단축시킬 수 있는 효과가 있다.HDL을 이용해 통신시스템을 구현하고 PC와의 통신을 통해 동작을 검증하는 것이 우리조의 목표이다.1.1.2 졸업작품 진행도{주단위 진행사항3월4월5월6월7월8월9월Verilog 언어 학습ModelSim Tool 학습Verilog 모듈설계 &시뮬레이션 실습OpenCores.org 소스 분석Ethernet MAC 학습Ethenet MAC 소스분석 & 시뮬레이션ISE Tool 학습ISE 상에서 프로젝트 생성 및 합성 실습Xilinx Virtex2pro FPGA Device 학습Xilinx ML310 Development board 학습Ethernet MAC 합성 및 ImplementationOFDM 이론 학습OFDM 알고리즘 MATLAB 시뮬레이션VHDL 언어학습 및 FFT 블록 HDL구현UART 블록 HDL구현MFC를 이용해 OFDM Client 제작합성 및 디버깅최종보고서 작성1.2 기존연구1.2.1 OFDM 이론1) OFDM 개요무선채널에서 데이터를 고속으로 전송할 경우 AlgorithmsRadix-2 Decimation-in-Time(DIT) FFT AlgorithmRadix-2 Decimation-in-Frequency(DIF) FFT AlgorithmRadix-4 Decimation-in-Frequency(DIF) FFT AlgorithmRadix-{2^{ 2 }Decimation-in-Frequency(DIF) FFT Algorithm- 이중에서 우리가 구현한 방식은 Radix-2 DIF FFT Algorithm 이다.1) Radix-2 FFT Algorithm is?- {N=r _{1} r _{2} r _{3} .....r _{v}- {r _{1} =r _{2} =r _{3} =.....=r _{v}- r = 2인 Algorithm ( {N=2 ^{v})2) Derivation of a radix-2 DIF AlgorithmDecimation-In-Frequency Algorithm- M=2, L=N/2- x(n)을 절반으로 나눈다.{where, {W _{N} ^{kN/2} =(-1) ^{k}{- k를 even number와 odd number로 구분{W ^{2} _{N} =W _{N/2}이므로{- if {g _{1} (n)```and```g _{2} (n)is defined as{- then{- 반복수행을 통해 Algorithm을 구현- When N = 8{- Computation complexity는 DIT와 같다.- DIT 와 DIF는 서로 전치 관계3) R2SDF system structure1 Basic structure{- Pipelin 구조를 사용해서 설계하였고, 구현방식은 위 그림에서와 같이 R2SDF(Radix-2 Single-Path Delay Feedback) 방식을 사용했다.{{->Control signal(sel)- When '0' ,shift-register로입력- When '1'BF 연산후 출력4) Each stage structure1 Stage 1 structure{> Rom : Compnt는 CScom이라는 시리얼 통신 클래스에서 시리얼 통신을 세팅하고, 시작과 전송과 종료동작을 정의한다. CScom 클래스에의 ComStart 함수는 CreateFile 함수를 통해 COM포트에 시리얼 통신 핸들을 만든다. 또한 DCB를 정의하는데, ComStart 함수에서 세팅한 DCB항목은 다음과 같다.dcb.BaudRate = CBR_9600;dcb.ByteSize = 8;dcb.Parity = EVENPARITY;dcb.StopBits = ONESTOPBIT;ComStart 함수에서 CreateFile함수 , DCB 를 통해 시리얼 통신을 시작했다면, ComEnd 함수에서는 PurgeComm 함수를 통해 시리얼 통신을 종료한다. 시작과 종료 동작을 기술한 함수 외에 송신과 수신을 정의한 WriteCmd, ReadCmd 함수가 있다. WriteCmd 함수는 ComStart 함수에서 생성한 핸들에 WriteFile 함수를 사용해 문자를 입력한다. ReadCmd 함수는 이와 반대의 동작, 즉 ComStart 함수에서 생성한 핸들에 ReadFile 함수를 사용해 수신된 문자를 변수에 저장한다.2.4.2.3 OFDM Client 구현OFDM Client의 최종 버전은 Dialog Box형태로 만들었다. Dialog Box를 사용해 버튼, Edit창, List Box 등을 쉽게 생성할 수 있고 동작 함수도 편리하게 제작할 수 있었다. 이미지를 화면에 출력하기 위해서 Dialog에 View Class를 얹어서 사용했다. OFDM Client에는 Edit 창 1개, List Box 1개, OFDM버튼, 받기 버튼, 보내기 버튼, View 창 1개(이미지 영역 2부분) 가 포함되었다. OFDM 버튼을 누르면 Dialog Box내의 왼쪽에 보이는 이미지가 시리얼 통신을 통해 전송된다.(그림2-16) 받기 버튼을 누르면 시리얼 통신을 통해 수신한 데이터가 List Box에 표시된다. Edit창에 data를 키보드로 입력하고 보내기 버튼을 누르면 키보드로 입력한 data가x256 이미지는 각 픽셀당 8bit의 형식으로 이루어져 있다. 각 픽셀은 unsigned char 형태로 저장되어 전송된다. 수신측 데스크탑 PC의 하이퍼 터미널은 수신한 데이터를 유니코드로 인식하기 때문에 영문 또는 숫자 뿐만 아니라 알 수 없는 문자로 표현된다.(2) 단문 전송이번엔 짧은 문자열을 전송함으로써 OFDM Client의 기능을 시뮬레이션했다. JEONMOONJIN 이라는 문자열을 노트북 PC에서 실행한 OFDM Client의 Edit Box에 입력하고 보내기 버튼을 눌렀다. 보내기 버튼을 누르면 시리얼 통신을 통해 문자열을 송신하게 되는데, 데스크탑 PC의 OFDM Client에서 받기 버튼을 눌르면 List Box에 수신된 문자열이 표시된다. 그 결과는 다음과 같다.{3.5 FPGA 보드 Implementation지금까지 설계하고 시뮬레이션한 모든 블록을 TOP 모듈에 포함시켜 Synthesis 한 후 Implementation을 거쳐 Configuraion을 했다. UART 수신부- QPSK Mapper - IFFT - FFT - QPSK Demapper - UART 송신부 를 FPGA에 프로그래밍 해서 노트북 PC의 OFDM Client에 연결한 후 동작을 확인하려 했지만, 원하던 이미지는 수신되지 않았다. 각 블록은 제 동작을 하지만 통합한 후 동작을 확인 할 수 없는 결과가 나타난 것이다. 전체 블록은 포기하고 송신부의 블록만으로 다시 합성,프로그래밍 했다. UART 수신부- QPSK Mapper - IFFT 만으로 이루어진 블록의 입력은 PC에서 수신하도록 하고, 출력은 ML310 보드에서 제공하는 8개의 LED에 나타나게 했다. 8개의 LED로는 동작을 파악할 수 없는 것이 당연할 것이다. 별다른 대체 장치가 없기 때문에 LED출력을 연결했다. OFDM Client에서 송신데이터를 입력하고 보내기 버튼을 누르자 LED가 깜빡거리는 것을 확인할 수 있었다. 1개의 알파벳을 보내자 LED에 그 알파벳의 아스키코드가 점등되는 것을 확인
- Source Code-% This M-file program simulates the Autocorrelation function of AWGNclearUniform1 = rand(1000,1);Uniform2 = rand(1000,1);% Gaussian Noise Generationfor i=1:1:1000, Gaussian(i) = sqrt(-2*log(Uniform1(i)))*cos(2*pi*Uniform2(i));end%hist(Gaussian,100)acf(1:1000)=0;% Calculating the Autocorrlation function for i=1:1:1000, for j=1:1:i, acf(i) = acf(i) + Gaussian(j) * Gaussian(1000-i+j); endendfor i=1001:1:1999, acf(i) = acf(2000-i);% This M-file program simulates the Autocorrelation function of Random CodeclearUniform = rand(1000,1);% Random Code Generationfor i=1:1:1000, if Uniform(i) > 0.5 RandomCode(i) = 1; else RandomCode(i) = -1; endend%hist(RandomCode)acf(1:1000)=0;% Calculating the Autocorrlation function for i=1:1:1000, for j=1:1:i, acf(i) = acf(i) + RandomCode(j) * RandomCode(1000-i+j); endendfor i=1001:1:1999,