VHDL Package & Subprogram

Slides:



Advertisements
Similar presentations
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Advertisements

Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Design of Digital Clock (디지털 시계의 설계)
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
가산기 설계.
제4장 조합논리회로 내용 4.1 조합논리회로 설계 과정 4.2 산술회로 : 가산기(adder)/ 감산기(subtractor)
컴퓨터 프로그래밍 기초 [Final] 기말고사
Multiplexer 설계.
VHDL의 기본 Lecture #5.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
VHDL Package and Sub program
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
10장 함수.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Tail-recursive Function, High-order Function
14장. 포인터와 함수에 대한 이해.
KIM HEESANG PL/SQL 2 KIM HEESANG
공학컴퓨터프로그래밍 Python 염익준 교수.
11장. 1차원 배열.
VHDL Mealy and Moore model
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
VHDL.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
2장. 변수와 타입.
가산기 설계.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 08. 함수.
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
강의 소개 컴퓨터시뮬레이션학과 2017년 봄학기 담당교수 : 이형원 E304호,
Fucntion 요약.
( Windows Service Application Debugging )
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제 6 장 함수(functions).
제 15 강 문자와 코드 shcho.pe.kr.
에어 PHP 입문.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
함수, 모듈.
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
수업 내용 수업 목표 강의 내용 강의 계획서 교과서 및 참고도서 평가 방법 수강생의 학습 방법 제안 강의자료 사이트
VHDL 응용 Lecture #10.
7 생성자 함수.
Presentation transcript:

VHDL Package & Subprogram Lecture #7

VHDL Package & Subprogram 강의 순서 VHDL Library & Package VHDL Subprogram Function Procedure VHDL Package & Subprogram

VHDL Library & Package (1) Library - 저장장소(directory)의 개념 Package - data type, constant, function, procedure 등을 한 장소(File)에 모아 선언한 것 프로그래밍 언어의 라이브러리와 같은 개념 주로 사용되는 Library Work Library 현재 실행 중인 작업을 저장하는 곳 특별히 VHDL파일의 Library를 지정하지 않으면 work Library에 저장된다 IEEE Library std_logic_1164, std_logic_unsigned 등과 같은 package가 저장되어있는 곳 VHDL Package & Subprogram

VHDL Library & Package (2) IEEE Library의 주요 Package 내용 std_logic_1164 ( std1164.vhd, std1164b.vhd ) standard for describing interconnection data types for VHDL std_logic_signed ( signed.vhd, signedb.vhd ) functions that allow to use std_logic_vector types as if they are signed types std_logic_unsigned ( unsigned.vhd, unsignedv.vhd ) functions that allow to use std_logic_vector types as if they are unsigned types std_logic_arith ( arith.vhd, arithb.vhd ) signed and unsigned types, conv_signed and conv_unsigned, arithmetic and comparision function VHDL Package & Subprogram

VHDL Library & Package (3) ieee Library를 사용하겠다고 선언 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Package 이름 = Std_logic_1164, Std_logic_unsigned Library 이름 = ieee Package 의 모든 내용 Work Library인 경우에만 생략가능. 이 경우는 생략해도 좋음. library work; use work.mytest_lib.all; Package 의 모든 내용 Library 이름 = work Package 이름 = mytest_lib VHDL Package & Subprogram

VHDL Library & Package (4) package package_name is Type Declaration; Constant Declaration; Subprogram Declaration; end package_name; package body package_name is Subprogram 구문; Package 선언 Package 몸체 VHDL Package & Subprogram

VHDL Library & Package (5) 자료형 선언(data type declaration) 상수 선언(constant declaration) 신호 선언(signal declaration) 부프로그램 선언(subprogram declaration) 컴포넌트 선언(component declaration) Package 몸체의 내용 자료형 및 상수 선언(data type & constant declaration) 부프로그램 선언 및 몸체(subprogram declaration & body) VHDL Package & Subprogram

VHDL Library & Package (6) VHDL Package & Subprogram

VHDL Library & Package (7) VHDL Package & Subprogram

VHDL Library & Package (8) Package를 이용한 VHDL Description 작성 예: 다음의 게이트 회로에 대해 VHDL package를 이용하여 VHDL description을 작성한다 VHDL Package & Subprogram

VHDL Library & Package (9) Package를 이용한 VHDL Description 작성 예: 컴포넌트로 사용할 게이트에 대한 VHDL description을 작성하고 컴파일한다 VHDL Package & Subprogram

VHDL Library & Package (10) VHDL Package & Subprogram

VHDL Library & Package (11) Package를 이용한 VHDL Description 작성 예: Gate package description을 작성하고 컴파일하여 VHDL package ‘gate_package’를 만든다 Package 파일명: gate_package.vhd 주의 - 패키지 파일은 현재 작업중인 working directory 내에서 작성한다 VHDL Package & Subprogram

VHDL Library & Package (12) Package를 이용한 VHDL Description 작성 예: 제시된 게이트 회로에 대한 VHDL description을 작성하고 컴파일한다 VHDL 파일명: logic_system.vhdl Working directory 내의 ‘gate_package’ 패키지 사용을 선언 ‘logic_system’에 대한 구조적 표현 방식의 VHDL Description VHDL Package & Subprogram

VHDL Library & Package (13) Package를 이용한 VHDL Description 작성 예: 타이밍 시뮬레이션 결과 : VHDL Package & Subprogram

VHDL Package & Subprogram 서브프로그램 이름과 매개 변수를 이용하여 호출함으로써 서브프로그램을 실행하고 계산된 결과를 반환 받는다 VHDL Subprogram Procedure VHDL 문장의 일반화 VHDL 문장과 같은 방법 사용 Function VHDL 수식의 일반화 VHDL 수식에서 호출하여 사용 VHDL Package & Subprogram

Subprogram 개요 (2) VHDL Subprogram Procedure와 Function의 비교 : 항목 반환값 문자에 의해 호출되고, 매개 변수를 통해 여러 개의 값을 반환 할 수 있다 수식에 의해 호출되고, 반환 값은 단 하나로서 함수 이름을 통해 반환된다 매개변수모드 in, out, inout in 수식 계산 수식의 중간 사용 불가능 지연없는 계산에 쓰이는 수식의 중간 사용이 가능 대기문 사용 가능 사용 불가능 문장 모드 순차문 VHDL Package & Subprogram

VHDL Package & Subprogram Architecture 몸체 내의 선언부 Process 문장 내의 선언부 Package 문장 내의 선언부 정의 위치에 따라 호출 범위가 결정됨에 유의 Subprogram 호출 서브프로그램 이름과 실제 매개 변수를 이용하여 호출함으로써 서브프로그램을 실행하고 계산 결과를 반환 받을 수 있다 호출 방법 및 반환값 – 비교표 참조 VHDL Package & Subprogram

VHDL Package & Subprogram 순차 호출(Sequential Call) – process 또는 subprogram 내에서 순차문을 사용하여 호출 병행 호출(Concurrent Call) – architecture 내의 병행 처리문을 사용하여 호출 VHDL Package & Subprogram

VHDL Package & Subprogram Subprogram 정의에서 모드 in으로 정의된 매개 변수는 ‘상수’ 객체로 가정하고, 모드 out 또는 inout으로 정의된 매개 변수는 ‘변수’ 객체로 가정한다 Procedure는 매개 변수를 통해 결과값을 반환  반환 매개 변수는 모드 out 으로 정의  반환 매개 변수를 ‘변수’ 객체로 가정  병행 호출 시에는 procedure 내부와 외부에서 동시에 매개 변수에 해당하는 실 변수를 변환 가능하여 예외적인 결과를 유발  procedure는 순차 호출만 사용하도록 한다 Function는 모든 매개 변수가 모드 in으로 정의  모든 매개 변수를 상수로 가정  매개 변수에 대한 동시 변환이 발생하지 않는다  순차 호출 및 병행 호출이 가능 VHDL Package & Subprogram

VHDL Package & Subprogram Function (1) Function 지연 시간 없이 계산 결과를 반환하는 부프로그램 오직 하나의 반환값을 가지며, 내부에서 return 문장을 이용하여 결과를 반환 입력 매개 변수는 모두 모드 in 으로 정의 선언문에서는 Variable만 선언이 가능 지연 시간 없이 반환함으로 function 내부에서는 대기문을 사용할 수 없다 Function 호출은 수식 문장 중간에서 호출 VHDL Package & Subprogram

VHDL Package & Subprogram Function (2) Function 선언 및 몸체 정의 형식 Function 선언 형식 : function 함수_이름(매개변수_리스트) return 반환값_자료형; Function 몸체 형식 : function 함수_이름(매개변수_리스트) return 반환값_자료형 is { 선 언 문 } begin { 순 차 문 } end 함수_이름 VHDL Package & Subprogram

VHDL Package & Subprogram Function (3) Architecture의 선언부에 function을 작성 library ieee; use ieee.std_logic_1164.all; entity func_test is port( a, b : in std_logic_vector(7 downto 0); y : out std_logic_vector(7 downto 0) ); end func_test; architecture a of func_test is function and2_8bit(x,y: in std_logic_vector) return std_logic_vector is variable temp : std_logic_vector(7 downto 0); begin temp := x and y; return(temp); end and2_8bit; y <= and2_8bit(a,b); end a; adder2_8bit 는 8비트 병렬가산기임. 함수 선언 함수 호출 VHDL Package & Subprogram

VHDL Package & Subprogram Function (4) Process의 선언부에 function을 작성 library ieee; use ieee.std_logic_1164.all; entity func_test2 is port( a, b : in std_logic_vector(7 downto 0); y : out std_logic_vector(7 downto 0) ); end func_test2; architecture a of func_test2 is begin process(a,b) function and2_8bit(x,y: in std_logic_vector) return std_logic_vector is variable temp : std_logic_vector(7 downto 0); temp := x and y; return(temp); end and2_8bit; y <= and2_8bit(a,b); end process; end a; adder2_8bit 는 8비트 병렬가산기임. 함수 선언 함수 호출 VHDL Package & Subprogram

File 이름 : Mytest_lib.vhd Function (5) Package에서 function을 작성 함수 선언 library ieee; use ieee.std_logic_1164.all; package mytest_lib is function and2_8bit(x,y: in std_logic_vector) return std_logic_vector; end mytest_lib; package body mytest_lib is function and2_8bit(x,y: in std_logic_vector) return std_logic_vector is variable temp : std_logic_vector(7 downto 0); begin temp := x and y; return(temp); end and2_8bit; File 이름 : Mytest_lib.vhd library ieee; use ieee.std_logic_1164.all; use work.mytest_lib.all; entity func_test3 is port( a, b : in std_logic_vector(7 downto 0); y : out std_logic_vector(7 downto 0) ); end func_test3; architecture dataflow of func_test3 is begin y <= and2_8bit(a,b); end dataflow; File 이름 : func_test3.vhd 함수 호출 VHDL Package & Subprogram

VHDL Package & Subprogram Function (6) Function 사용 예: 두 개의 입력 X와 Y를 비교하여 큰 값을 출력하는 크기 비교 회로를 Package에 function를 선언하여 설계한다 VHDL Package & Subprogram

VHDL Package & Subprogram Function (7) Function 사용 예: Package 내에 크기 비교 함수를 구현하고 컴파일한다 Package 파일명: mag_comp_pack.vhd VHDL Package & Subprogram

VHDL Package & Subprogram Function (8) Function 사용 예: 크기 비교 회로의 VHDL description 작성 및 컴파일 파일명: mag_comp4.vhd VHDL Package & Subprogram

VHDL Package & Subprogram Function (9) Function 사용 예: 타이밍 시뮬레이션 결과: VHDL Package & Subprogram

VHDL Package & Subprogram Procedure (1) Procedure 반복적으로 사용되는 VHDL 코드를 모듈로 나누어 작성하기 위해 사용하는 서브프로그램 출력 매개변수를 이용하여 여러 개의 계산 결과를 반환 매개 변수의 mode는 입,출력(in, out, inout) 모두 가능 선언부에서는 Variable만을 선언가능 일반적으로 순차문에 의해 순차 호출 병행 호출은 사용하지 않는다 VHDL Package & Subprogram

VHDL Package & Subprogram Procedure (2) Procedure 선언 및 몸체 정의 형식 Procedure 선언 형식 : procedure 함수_이름(매개변수_리스트); Procedure 몸체 형식 : procedure 함수_이름(매개변수_리스트) is { 선 언 문 } begin { 순 차 문 } end 함수_이름 VHDL Package & Subprogram

Andor2_8bit는 8비트 입력신호 a,b에 대한 and, or출력을 내보냄.. Procedure (3) Architecture의 선언부에 procedure을 작성 library ieee; use ieee.std_logic_1164.all; entity proc_test is port( a, b : in std_logic_vector(7 downto 0); and_out, or_out : out std_logic_vector(7 downto 0) ); end proc_test; architecture a of proc_test is procedure andor2_8bit( a,b : in std_logic_vector; y1,y2 : out std_logic_vector) is begin y1 := a and b; y2 := a or b; end andor2_8bit; process(a,b) variable tand_out, tor_out : std_logic_vector(7 downto 0); andor2_8bit(a, b, tand_out, tor_out); and_out <= tand_out; or_out <= tor_out; end process; end a; Andor2_8bit는 8비트 입력신호 a,b에 대한 and, or출력을 내보냄.. Procedure 선언 Procedure 호출 VHDL Package & Subprogram

Andor2_8bit는 8비트 입력신호 a,b에 대한 and, or출력을 내보냄.. Procedure (4) Process의 선언부에 procedure 을 작성. library ieee; use ieee.std_logic_1164.all; entity proc_test2 is port( a, b : in std_logic_vector(7 downto 0); and_out, or_out : out std_logic_vector(7 downto 0) ); end proc_test2; architecture a of proc_test2 is begin process(a,b) procedure andor2_8bit( a,b : in std_logic_vector; y1,y2 : out std_logic_vector) is y1 := a and b; y2 := a or b; end andor2_8bit; variable tand_out, tor_out : std_logic_vector(7 downto 0); andor2_8bit(a, b, tand_out, tor_out); and_out <= tand_out; or_out <= tor_out; end process; end a; Procedure 선언 Andor2_8bit는 8비트 입력신호 a,b에 대한 and, or출력을 내보냄.. Procedure 호출 VHDL Package & Subprogram

File 이름 : Mytest1_lib.vhd Procedure (5) Package에서 procedure 을 작성 File 이름 : Mytest1_lib.vhd library ieee; use ieee.std_logic_1164.all; package mytest1_lib is procedure andor2_8bit( a,b : in std_logic_vector; y1,y2 : out std_logic_vector); end mytest1_lib; package body mytest1_lib is y1,y2 : out std_logic_vector) is begin y1 := a and b; y2 := a or b; end andor2_8bit; Procedure 선언 library ieee; use ieee.std_logic_1164.all; use work.mytest1_lib.all; entity proc_test3 is port( a, b : in std_logic_vector(7 downto 0); and_out, or_out : out std_logic_vector(7 downto 0) ); end proc_test3; architecture a of proc_test3 is begin process(a,b) variable tand_out, tor_out : std_logic_vector(7 downto 0); andor2_8bit(a, b, tand_out, tor_out); and_out <= tand_out; or_out <= tor_out; end process; end a; File 이름 : proc_test3.vhd VHDL Package & Subprogram Procedure 호출

VHDL Package & Subprogram Procedure (6) Procedure 사용 예: 4비트의 2진수 2개를 더하는 병렬 이진 가산기를 Package 내에 procedure을 정의하여 구현한다 Package 내에 병렬 이진 가산을 수행하는 procedure 정의하고 컴파일 (파일명: add_pack.vhd) VHDL Package & Subprogram

VHDL Package & Subprogram Procedure (7) Procedure 사용 예: 병렬 이진 가산기의 VHDL description 정의 및 컴파일 파일명: bin_adder.vhd VHDL Package & Subprogram

VHDL Package & Subprogram Procedure (8) Procedure 사용 예: 타이밍 시뮬레이션 결과: VHDL Package & Subprogram