Microsoft PowerPoint - VHDL06.ppt [호환 모드]

Similar documents
Microsoft PowerPoint - VHDL01_chapter1.ppt [호환 모드]

歯Chap1-Chap2.PDF

Microsoft PowerPoint - additional01.ppt [호환 모드]

MAX+plus II Getting Started - 무작정따라하기

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - VHDL02_full.ppt [호환 모드]

Microsoft PowerPoint - VHDL08.ppt [호환 모드]

Microsoft PowerPoint - VHDL03.ppt [호환 모드]

디지털공학 5판 7-8장

C# Programming Guide - Types

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - VHDL12_full.ppt [호환 모드]

<4D F736F F F696E74202D C31345FB0EDB1DE20BFB5BBF320C8B8B7CE20BCB3B0E82E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - logic2005.doc

PowerPoint Presentation

Microsoft PowerPoint - CH6.ppt [호환 모드]

Microsoft Word - 제6장 Beyond Simple Logic Gate.doc

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter 1-rev

금오공대 컴퓨터공학전공 강의자료

1

T100MD+

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Template

Microsoft PowerPoint - [2009] 02.pptx

Orcad Capture 9.x

Microsoft PowerPoint - chap10-함수의활용.pptx


비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

PowerPoint Presentation

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

제5장 PLD의 이해와 실습

VHDL 기초 VHDL 두원공과대학정보통신미디어계열이무영

OCW_C언어 기초

Microsoft PowerPoint - chap12-고급기능.pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

<C6F7C6AEB6F5B1B3C0E72E687770>

Microsoft PowerPoint - C++ 5 .pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

歯A1.1함진호.ppt

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 1

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

API 매뉴얼

05-class.key

슬라이드 1

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - PL_03-04.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

Frama-C/JESSIS 사용법 소개

중간고사

Microsoft PowerPoint - chap04-연산자.pptx

삼성기초VHDL이론.PDF

C 프로그램의 기본

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

OCW_C언어 기초

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft Word - SRA-Series Manual.doc

설계란 무엇인가?

Microsoft Word - FunctionCall

JUNIT 실습및발표

Microsoft PowerPoint - ICCAD_Analog_lec01.ppt [호환 모드]

Microsoft PowerPoint - hw4.ppt [호환 모드]

C++-¿Ïº®Çؼ³10Àå

ez-md+_manual01

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Microsoft PowerPoint - chap06-2pointer.ppt

슬라이드 1

화판_미용성형시술 정보집.0305

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

JAVA PROGRAMMING 실습 08.다형성

. 고성능마이크로프로세서 LU 와레지스터 파일의구조 (2.). 직접디지털주파수합성기 (FS) 의구조 3. 고성능마이크로프로세서부동소수점연산기 (Floating-Point Unit) 구조 (2) (2.) (2.) 2. 암호화를위한 VLSI 구조와설계의개요 (2.) 다음참

歯03-ICFamily.PDF

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

MR-3000A-MAN.hwp

Microsoft PowerPoint - e pptx

USER GUIDE

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

C++ Programming

SRC PLUS 제어기 MANUAL

PowerPoint Presentation

ºÎ·ÏB

자연언어처리

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Index Process Specification Data Dictionary

ez-shv manual

Transcription:

VHDL 프로그래밍 6. 부프로그램과패키지 한동일 학습목표 부프로그램의종류와차이점과활용방법에대해서배운다. 함수를정의하고호출하는방법을배운다. 프로시저를정의하고호출하는방법을배운다. 부프로그램오버로딩의개념을이해한다. 패키지의사용목적을배운다. 설계파일, 설계단위, 설계라이브러리의개념을이해한다. VHDL 의라이브러리구조를이해한다. 2/39

부프로그램 (subprogram) 부프로그램이란? VHDL 에서사용되는와를총칭하여부프로그램이라고함 별도의모듈로사용되어특정값을계산하는용도 반복되는동작을표현하기위한알고리즘을정의 부프로그램의구조 부프로그램선언 (subprogram declaration) 부프로그램의호출방법정의 부프로그램본체 (subprogram body) 로구성 부프로그램의동작내용서술 3/39 부프로그램 (subprogram) 함수 (function) 형식매개변수는모두입력모드 (in) 리턴값을사용 특정값의계산이나동작을표현 프로시저 (procedure) 형식매개변수는 in, inout, out 모드를가짐 리턴값을가지지않고형식매개변수의 out 모드를이용하여값을출력 프로시저호출은문장 (statement) 을구성 특정값의계산이나동작을표현 4/39

부프로그램 (subprogram) 부프로그램선언의 BNF 정의 subprogram_declaration ::= subprogram_specification i ; subprogram _ specification ::= procedure_specification function_specification procedure_specification i ::= procedure designator subprogram_header [ [ parameter ] ( formal_parameter_list ) ] formal_parameter_list ::= parameter_interface_list interface_ list ::= interface_ element {; interface_ element } interface_element ::= interface_declaration 5/39 부프로그램선언 부프로그램선언의 BNF 정의 - 계속 function_p specification ::= [ pure impure ] function designator subprogram _ header [ [ parameter ] ( formal_parameter_list ) ] return type_mark subprogram_header ::= [ generic ( generic_list ) [ generic_map_aspect ]] ] designator ::= identifier operator _ symbol operator_symbol ::= string_literal 6/39

부프로그램선언 부프로그램선언의예 procedure iic_stop (signal data_bit, scl_level: out std_logic); procedure to_bitvector (variable input : in integer; variable output : out bit_vector); procedure writeheader (file F : text; Width, Height : in integer); procedure writergb (file F: text; R, G, B: in integer); impure function NOW return eu delay y_ length; function "and" (L, R : std_logic_vector) return std_logic_vector; function to_ integer (input : std d_ logic) return eu integer; function to_integer (input : bit_vector) return integer; function to_ integer (input : std d_ logic c_vector) return eu integer; 7/39 부프로그램선언 프로시저의일반적인선언 procedure + 지정어 + 형식매개변수선언 함수의일반적인선언 function + 지정어 + 매개변수선언 + return + 리턴형 pure function : 순수함수 같은매개변수입력에같은값리턴 함수의기본값으로 pure 예약어생략가능 impure function : 비순수함수 같은매개변수입력에다른값리턴 예 : 현재의시간을리턴하는함수 impure 예약어를반드시사용해야함 8/39

부프로그램선언 형식매개변수 (formal parameter) 의클래스 file : 입출력관련모드정보불필요 constant, signal, variable : 사용환경에의해서결정됨 프로시저형식매개변수의모드 (mode) in 모드의기본클래스 : constant inout, out 모드의기본클래스 : variable 함수형식매개변수의모드 (mode) in 클래스를지정하지않을경우에는 constant 로가정 9/39 부프로그램본체 부프로그램본체의 BNF 정의 subprogram_body ::= subprogram_specification is subprogram_declarative_part subprogram_statement_part end [ subprogram_kind ] [ designator ] ; subprogram_declarative_part part ::= { subprogram_declarative_item } subprogram_statement_part statement part ::= { sequential_statement } subprogram_kind ::= procedure function 10/39

부프로그램본체 부프로그램본체의 BNF 정의 계속 subprogram_declarative_item item ::= subprogram_declaration subprogram_body package_declaration subprogram_instantiation_declaration package_body package_instantiation_declaration type_declaration subtype_declaration constant_declaration variable_declaration file_declaration alias_declaration attribute_declaration attribute_specification use_clause group_template_declaration group_declaration 신호 (signal), 공유변수 (shared variable) 선언불가 11/39 부프로그램 (subprogram) 함수의예 function TO_INTEGER (input : std_logic) return integer is variable result : integer := 0; variable weight : integer := 1; if input ='1' then else end if; return result; end TO_INTEGER; result := weight; result := 0; -- if unknowns, default to logic 0 12/39

부프로그램 (subprogram) 프로시저의예 procedure writergb (file F: text; R, G, B: in integer) is variable L : line; write(l, R, RIGHT, 3); write(l, string'(" ")); write(l, G, RIGHT, 3); write(l, string'(" ")); write(l, B, RIGHT, 3); writeline(f, L); end writergb; 13/39 부프로그램 (subprogram) 부프로그램을활용한설계예 함수와프로시저를이용한반가산기의설계예제 14/39

부프로그램 (subprogram) 함수를이용한설계예 library IEEE; use IEEE.std_logic_1164.all; entity HalfAdder is port( end HalfAdder; A, B: in std_logic; S, C : out std_logic); architecture func of HalfAdder is function XOR_GATE ( A, B: std_logic) return std_logic is return A xor B; end XOR_GATE; function AND_GATE ( A, B: std_logic) return std_logic is return A and B; end AND_GATE; S <= XOR_GATE(A, B); C <= AND_GATE(A, B); end func; 15/39 부프로그램 (subprogram) 프로시저를이용한설계예 library IEEE; use IEEE.std_logic_1164.all; entity HalfAdder is port( AB:in A, std_logic; procedure AND_GATE S, C : out std_logic); (signal A, B: in std_logic; end HalfAdder; signal O : out std_logic) is architecture proc of HalfAdder is O <= A and B; procedure XOR_GATE end AND_GATE; (signal A, B: in std_logic; signal O : out std_logic) is O <= A xor B; XOR_GATE(A, B, S); AND_GATE(A, B, C); end XOR_GATE; end proc; 16/39

부프로그램 (subprogram) 부프로그램오버로딩 (overloading) 서로다른시그니처를이용하여하나의지정어를여러개의부프로그램에서사용 시그니처 (signature) 형식매개변수의개수 형식매개변수들의형과순서 함수인경우리턴값의형 연산자오버로딩 (operator overloading) 함수선언시지정어가연산자일경우연산자오버로딩이용가능 17/39 부프로그램 (subprogram) 부프로그램오버로딩예및호출예 -- Declarations of overloaded dsubprograms: procedure Dump (F: inout Text; Value: Integer); procedure Dump (F: inout Text; Value: String); procedure Check (Setup: Time; signal D: Data; signal C: Clock); -- a procedure procedure Check (Hold: Time; signal C: Clock; signal D: Data); -- b procedure -- Calls to overloaded subprograms: Dump mp(sys_output, t 12); -- OK Dump (Sys_Error, "Actual output does not match expected output"); -- OK Check (Setup=>10 ns, D=>DataBus >DataBus, C=>Clk1); -- OK, a procedure Check (Hold=>5 ns, D=>DataBus, C=>Clk2); -- OK, named association, b procedure Check (15 ns, DataBus, Clk) ; -- OK, positional association, a procedure 18/39

부프로그램 (subprogram) 해결함수 (resolution function) 하나의신호에여러개의소스로부터값이입력될때최종적으로하나의값으로조정해주는함수 연결논리합 (wired-or), 버스구조에많이사용 대표적인해결함수 :std std_logic_1164 패키지의 resolved function 해결된신호 (resolved signal) 해결함수가선언된신호 대표적인해결된신호 : std_logic 19/39 해결함수 해결함수의예 function resolved ( s : std_ulogic_vector ) return std_ulogic is variable result : std_ulogic := 'Z'; -- weakest state default if (s'length = 1) then return s(s'low); else end resolved; end if; return result; for i in s'range loop result := resolution_table(result, s(i)); end loop; 20/39

해결함수 해결함수의예 constant resolution_table : stdlogic_table := ( - - U X 0 1 Z W L H - ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- U ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), - - X ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), - - 0 ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), - - 1 ( 'U', 'X', '0', '1', 'Z', ' W', 'L', 'H', 'X' ), -- Z ( 'U', 'X', '0', '1', ' W', ' W', 'W ', 'W ', 'X' ), -- W ( 'U', 'X', '0', '1', 'L', 'W ', 'L', ' W', 'X' ), - - L ( 'U', 'X', '0', '1', 'H', ' W', 'W ', 'H', 'X' ), -- H ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) - - - ); 21/39 해결함수 std_logic 신호의정의 type std_ulogic is ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care ); function resolved ( s : std_ulogic_vector ) return std_ulogic; subtype std_logic is resolved std_ulogic; 22/39

패키지 (package) 패키지란? 단일목적을위한선언 (declaration) 들의모임 공통적으로사용되는선언이나자원을공유하기위한용도 패키지의구조 패키지선언 (subprogram declaration) 패키지의가시적인부분정의 패키지선언으로완료되고본체부분이필요없을수도있음 패키지본체 (subprogram body) 로구성 부프로그램의숨겨진동작을처리 23/39 패키지 (package) VHDL 표준라이브러리에서제공하는패키지들 standard( 자동으로선언됨 ) textio env std_logic_1164 std_logic_arith std_logic_signed std_logic_unsigned std_logic_textio std_logic_misc 24/39

패키지 (package) 패키지선언의 BNF 정의 package_declaration ::= package identifier is package_header package_declarative_part end [ package ] [ package_simple_name _ p _ ] ; package_header ::= [ generic_clause ] [ generic_map_aspect ; ] package_declarative_part ::= { package_declarative_item _ } 25/39 패키지 (package) 의선언 패키지선언의 BNF 정의 - 계속 package_declarative_item item ::= subprogram_declaration subprogram_instantiation_declaration package_declaration package_instantiation_declaration type_declaration subtype_declaration constant_declaration signal_declaration variable_declaration file_declaration alias_declaration component_declaration attribute_declaration attribute_specification disconnection_specification specification use_clause group_template_declaration group_declaration 26/39

패키지 (package) 의선언 패키지선언의예 package gfx_pkg is end gfx_pkg; -- graphic primitive type primitives is (pointp, rectp, textp, text2p, srcbltp); -- iic control value constant sda_start: time := 560 ns; constant sda_stop: time := 560 ns; -- memory read/write constant MEM_WRITE : std_logic := '1'; constant black_pxl : std_logic_vector(7 downto 0) := "00010000"; function IPF_ABS1( data : in bit_vector ) return bit_vector; procedure iic_start (signal data_bit, scl_level: out std_logic); 27/39 패키지 (package) 패키지본체를위한 BNF 정의 package_body ::= package body package_simple_name is package_body_declarative_part _p end [ package body ] [ package_simple_name ] ; package_body_declarative_part ::= { package_body_declarative_item _ } 28/39

패키지본체 패키지본체를위한 BNF 정의 계속 package_body_declarative_item _ ::= subprogram_declaration subprogram_body package_declaration package_body type_declaration subtype_declaration constant_declaration variable_declaration file_declaration alias_declaration attribute_declaration attribute_specification use_clause group_template_declaration p _ group_declaration 패키지선언내의선언 본패키지를사용하는모든설계단위에서사용가능 패키지본체내의선언 패키지본체내부에서만사용되며패키지외부에서는보이지않음 29/39 패키지본체 패키지본체의예 package body TriState is constant CYCLE_TIME: TIME := 100 ns; function BitVal (Value: Tri) return Bit is end; constant Bits : Bit_Vector := "0100"; return Bits(Tri'Pos(Value)); function TriVal (Value: Bit) return Tri is return Tri'Val(Bit'Pos(Value)); end; end package body TriState; 30/39

설계라이브러리 VHDL 의라이브러리구조 Synopsys y Library Xilinx Library User Defined Library Design File VHDL Analyzer Work Library mux tb_mux adder tb_adder STD Library standard textio env 31/39 IEEE Library std_logic_1164 std_logic_arith 설계라이브러리 설계단위 (design unit) 독립적으로컴파일되고관리될수있는서술내용 엔티티선언, 아키텍처본체, 구성선언, 패키지본체등 설계단위가복수개가모여설계파일 (design file) 형성 설계라이브러리 (design library) 컴퓨터파일시스템내의저장장소 컴파일된설계단위들은설계라이브러리 (design library) 에저장됨 VHDL 문법과무관 VHDL 개발환경별로정의 32/39

설계라이브러리 설계파일 (design file) 의 BNF 정의 design_file ::= design_unit { design_unit } design_unit ::= context_clause library_unit library_unit ::= primary_unit ::= primary_unit secondary_unit entity_declaration configuration_declaration package_declaration context_declaration secondary_unit ::= architecture_body package_body 33/39 설계라이브러리 라이브러리단위 (library unit) 문장서술순서에따라해석되고컴파일완료된설계단위 주라이브러리단위 : 독립적으로해석됨 구성선언 (configuration declaration) 패키지선언 (package declaration) 정황선언 (context declaration) 보조라이브러리단위 : 주라이브러리단위의 body 아키텍처본체 (architecture body) 패키지본체 (package body) 34/39

설계라이브러리 정황선언 (context t declaration) 의 BNF 정의 context_declaration ::= context identifier is context_clause end [ context ] [ context_simple_name ] ; context_clause clause ::= { context_item } context_item ::= library_clause use_clause context_reference context_reference ::= context selected_name {, selected_name }; IEEE Standard 1076-2008 버전부터추가된사양 이전버전부터사용되던정황절 (context clause) 을설계단위로다룰수있는방법제공 35/39 설계라이브러리 정황선언 (context t declaration) 의예 context t project oject_context t is library project_lib; use project_lib.project_defs.all; library IP_lib; context IP_lib.IP_context; end context project_context; 정황절 : 바로다음에오는설계단위에서참조할라이브러리를연결시키는작업수행 library 절을먼저선언한후 use 절을이용하여필요한패키지를연결 library 절 : 해당설계단위에서참조할라이브러리의논리적이름정의 use 절 : 앞서선언된라이브러리내의필요패키지연결 36/39

설계라이브러리 설계라이브러리의 BNF 정의 library_ clause ::= library logical _ name_ list ; logical_name_list ::= logical_name {, logical_name } logical_name l ::= identifierifi 설계라이브러리의선언예 library IEEE; library STD, WORK; -- 정황선언이외의모든설계단위에암시적으로포함됨 37/39 설계라이브러리 설계라이브러리의구분 작업라이브러리 (working library) 생성된라이브러리단위를저장하는파일시스템상의저장장소 오직하나의라이브러리만이작업라이브러리가됨 자원라이브러리 (resource library) 설계단위들을해석할때참고할수있는라이브러리단위들을보유하고있는파일시스템상의저장장소 임의의개수의라이브러리가자원라이브러리가될수있음 예 : work, std, IEEE, 등 38/39

설계라이브러리 STD 라이브러리 standard 패키지와정황선언을제외한모든설계단위에자동적으로선언되는라이브러리 암시적인선언내용 library STD, WORK; use STD.STANDARD.all; STD 라이브러리내의패키지들 standard textio env 39/39