칭찬하러 가기 !!!


맨 위를 클릭해서 하기 그림 과 같이 칭찬버튼 클릭해주세요 ^^ 


'풍요로운 삶의 힘' 카테고리의 다른 글

대학 교직원의 연봉, 근무환경, 복지는?  (19) 2017.12.04
다이어트  (9) 2017.12.01

[FPGA] FPGA 기술의 장점


FPGA 기술의 장점

1. 성능

2. 시장 출시 시간 : Time to Market

3. 비용

4. 안정성

5. 장기 유지 관리


1. 성능

- FPGA는 하드웨어 병렬성을 활용하여 순차적인 실행의 패러다임을 분리하고 클럭 주기당 더 많은 작업을 수행함으로써 디지털 신호 프로세서 (DSP)의 연산 능력을 능가한다. 하드웨어 레벨에서 입출력 (I/O) 컨트롤은 보다 신속한 응답시간 및 특화된 기능을 제공하여 어플리케이션 요구사항을 긴밀히 만족시킨다. 앞으로 복잡한 일을 더 짧은 시간에 해결해야하는 요구가 커지있으며, 병렬처리방식은 Multi-Core나 GPU 등 고정된 HW에 SW레벨에서 기능을 구현하는 접근법도 있다.


2. 시장 출시 시간 : Time To Market

– FPGA 기술은 시장 출시시간에 대한 부담이 증대되고 있는 현 시점에서 유연성 및 신속한 프로토타입 성능을 제공한다. 맞춤형 ASIC 디자인의 긴 제조 과정을 거치지 않고도 아이디어나 개념을 테스트하고 하드웨어에서 검증할 수 있다. 그 다음, 계속해서 변경사항을 실행하고 FPGA 디자인을 반복하는 일이 몇 주일이 아닌 단 몇 시간 만에 가능하다. 또한 상용 (COTS) 하드웨어는 사용자 프로그래밍 가능한 FPGA 칩에 이미 연결된 다른 유형의 I/O와도 사용할 수 있다. 또한 High Level의 설계 툴과 Low Level의 설계 툴(HDL)을 상호 보완적으로 사용한다면 특화된 기능의 세밀한 설계 구현하면서 추상화된 기능으로 빠른 설계가 가능하다. 이를 통해서 재사용성이 높은 IP를 구현하고 설계시간을 단축한다.


3. 비용

– 맞춤 ASIC 디자인의 초기 개발(NRE) 비용은 FPGA 기반 하드웨어 솔루션의 비용을 월등히 능가한다. ASIC에 대한 막대한 초기 투자는 연간 수천 개의 칩을 배송하는 OEM 업체로서는 어쩔 수 없는 일이지만 여러 엔드 유저들은 개발시 수십, 수천 개 시스템을 위한 맞춤 하드웨어 기능이 필요하다. 프로그래밍 가능한 실리콘칩은 제조 비용이 들지 않거나 조립을 위한 리드 타임이 길다는 것을 의미한다. 시간이 지날수록 시스템 요구사항 변경에 따라 FPGA 디자인을 점진적으로 변경하는 비용은 ASIC를 새로 구축하는 데 드는 대규모 예산에 비교하면 아무 것도 아니다.


4. 안정성

– 소프트웨어 툴이 프로그래밍 환경을 제공하는 반면 FPGA 회로는 프로그램이 매우 “견고하게” 실행된 형태이다. 프로세서 기반의 시스템은 여러 프로세스간 태스크 스케쥴링 및 리소스 공유를 위해 여러 계층의 추상화를 포함한다. 드라이버 계층은 하드웨어 리소스를 컨트롤하며 운영 시스템은 메모리 및 프로세서 대역폭을 관리한다. 어떠한 프로세서 코어든지 하나의 지침이 한번에 실행되며, 프로세서 기반 시스템은 시간 결정적 태스크의 위험 상태에서 서로를 선점한다. 운영 시스템을 사용하지 않는 FPGA는 병렬 실행 및 모든 태스크에 전용인 결정성 있는 하드웨어로 안정성 문제를 최소로 줄여준다.


5. 장기 유지 관리

 – FPGA 칩은 현장에서 업그레이드가 가능하며 ASIC 재설계와 관련된 시간 및 비용이 필요하지 않다. 예를 들어, 디지털 통신 프로토콜은 시간에 따라 변경할 수 있는 스펙을 갖고 있으며, ASIC 기반의 인터페이스는 유지 보수 및 향후 호환성 문제가 있을 수 있다. 반면 재구성 가능한 FPGA 칩은 향후에 필요하다면 변경 가능하다. 제품 또는 시스템이 노후화되면 하드웨어를 재설계하거나 보드 레이아웃을 변경할 필요 없이 기능적으로 개선시킬 수 있다.


알고리즘을 S/W 툴을 활용하여 시뮬레이션하고 S/W 구현부분과 H/W 구현부분을 분리하여 상호 보완적으로 동작하므로 목적하는 기능을 구현할 수 있다.


* 아래 출처 내용이 아주 조금만 수정되었습니다.

출처 : http://zone.ni.com/devzone/cda/tut/p/id/8118#toc1



출처: http://hopecus.tistory.com/1 [꿈꾸는 자::]

'세상을 바꿀 힘 > Tech' 카테고리의 다른 글

Python_3  (4) 2017.12.09
Python_2  (5) 2017.11.25
FPGA  (2) 2017.11.23
Python_1  (5) 2017.11.18

Python_3


https://docs.google.com/document/d/1zO2vk8f0-Op7LczR-O_Buhv3b029H-Ivjrasch6QfrM/edit


maria DB 연동하기

[ 마리아 DB 연동 ]


1.

http://dev.mysql.com/downloads/connector/python/


에서 마리아  DB  connector 설치


다른 방법

http://downloads.mysql.com/archives/c-python/


select version : 1.2.2

select platform : Platform Independent를 선택하고 zip파일을 다운받아 압축을 푼다


이어서 cmd 창을 열고, 압축을 푼 폴더에서


> python setup.py install


하면 Python 폴더의 C:\Python34\Lib\site-packages에

mysql 폴더가 생기고 파일이 복사된다.

이 때  C:\Python34와  C:\Python34\Scripts 는 반드시 path 설정이 돼 있어야 한다



2. 마리아 DB 다운로드


https://downloads.mariadb.org/mariadb/5.5.50/

에서 운영체제에 맞는 버전 선택해서 다운로드 설치


- Maria DB 설치 화면






- mysql 클라이언트 실행

>mysql -u root -p


- database 목록보기

>show databases;


- database 만들기

>create database db이름 ;


- database use

>use 데이터 베이스 이름 ;


- table list

>show tables;


- table 구조 보기

>desc 테이블 이름 ;


-  계정 생성방법

>create user '사용자이름'@'접속ip' identified by '비밀번호' ;

- 권한 부여

>grant all privileges on db이름.* to '사용자이름'@'접속ip' ;

- 권한 설정 새로 고침

>flush privileges;



CREATE TABLE member(num INTEGER  AUTO_INCREMENT   PRIMARY KEY,

name TEXT, addr TEXT );


- 데이터 입력

INSERT INTO member (name,addr) VALUES( '김구라' , '노량진');


- 데이터 수정

UPDATE member SET name=?,addr=? WHERE num=? ;


- 데이터 삭제

DELETE FROM member WHERE num=?;


- 데이터 SELECT


SELECT num,name,addr FROM member;






#-*- coding: utf-8 -*-

import mysql.connector
from mysql.connector import errorcode

# DB 접속 정보를 dict type 으로 준비한다.

config={
        "user":"gura",  # 계정
        "password":"1234", # 비밀번호
        "host":"127.0.0.1", # 접속 아이피
        "database":"acorn", # database 명
        "port":3306 # port 번호 
    }

try:
    # Maria DB 연결객체 
    conn=mysql.connector.connect(**config) # config dict type 매칭
    
    # member 테이블에 저장할 정보라고 가정
    name1 = u"원숭이"
    addr1 = u"상도동"
    
    #실행할 sql 문 준비하기
    sql="INSERT INTO member (name,addr) values(%s, %s)"
    
    # %s 에 바인딩할 내용을 tuple type 에 담는다.
    sql_arg=(name1, addr1)
    
    # db 에 select, insert, update, delete 작업을 할 객체
    cursor=conn.cursor()
    
    # 수행하기
    cursor.execute(sql, sql_arg)
    
    conn.commit() # DB 에 실제 반영하기
    print "member 테이블에 회원정보를 저장 했습니다."
except mysql.connector.Error as err:
    # 예외가 발생했을때 수행할 작업
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print "아이디 혹은 비밀번호가 틀려요"
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print "DB 오류"
    else:
        print "기타 오류"
    # DB 작업 취소 
    conn.rollback()
else:
    print "정상 수행 했습니다."
finally:
    # cursor 닫기 
    cursor.close()
    # 연결 객체 닫기 
    conn.close()
#-*- coding: utf-8 -*-

import mysql.connector
from mysql.connector import errorcode

# DB 접속 정보를 dict type 으로 준비한다.

config={
        "user":"gura",  # 계정
        "password":"1234", # 비밀번호
        "host":"127.0.0.1", # 접속 아이피
        "database":"acorn", # database 명
        "port":3306 # port 번호 
    }

try:
    # Maria DB 연결객체 
    conn=mysql.connector.connect(**config) # config dict type 매칭
    
    #삭제할 회원의 번호라고 가정
    num1=5
   
    #실행할 sql 문 준비하기
    sql="DELETE FROM member WHERE num=%s"
    
    # %s 에 바인딩할 내용을 tuple type 에 담는다.
    sql_arg=(num1,)
    
    # db 에 select, insert, update, delete 작업을 할 객체
    cursor=conn.cursor()
    
    # 수행하기
    cursor.execute(sql, sql_arg)
    # 영향을 받은 row 의 갯수 읽어오기 
    row_count=cursor.rowcount
    print row_count
    conn.commit() # DB 에 실제 반영하기
    
    if row_count > 0:
        print "member 테이블에 회원정보를 삭제 했습니다."
    else: 
        print num1, "번 회원정보는 존재 하지 않습니다."
        
except mysql.connector.Error as err:
    # 예외가 발생했을때 수행할 작업
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print "아이디 혹은 비밀번호가 틀려요"
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print "DB 오류"
    else:
        print "기타 오류"
    # DB 작업 취소 
    conn.rollback()
else:
    print "정상 수행 했습니다."
finally:
    # cursor 닫기 
    cursor.close()
    # 연결 객체 닫기 
    conn.close()

2017/11/25 - [세상을 바꿀 힘/Tech] - Python_2

2017/11/18 - [세상을 바꿀 힘/Tech] - Python_1



'세상을 바꿀 힘 > Tech' 카테고리의 다른 글

FPGA  (6) 2017.12.18
Python_2  (5) 2017.11.25
FPGA  (2) 2017.11.23
Python_1  (5) 2017.11.18

+ Recent posts