[컴퓨터] VHDL / 부동소수점 가산기 / floating point adder 전체 소스코드 (IEEE754)
페이지 정보
작성일 23-05-22 10:51
본문
Download : Floating_Point_Adder.zip
숫자의 부동소수점 표현은 두 부분으로 구성되어 있다.
이를 VHDL 언어로 기술하기 위해서는 IEEE 부동소수점 형식에 대한 이해가 필요하며
때문에 0이 아닌 이상에는 Bit_Man_1은 1이 될 것이다. overflow가 생긴 경우, 지수 조정이 필요 없는 경우,
Result: : Result of or`ing all of the bits of the vector.
두 유효숫자의 차를 계산한다.
설명
두 수의 지수를 비교 후 부호 비트, 지수 부분, 분수 부분을 결정하는 함수
부동소수점 연산기를 설계해보면서 이제까지 습득한 VHDL 문법과 논리적 블록 설계능력을 더욱 향상 시킬 수 있게 된다된다.
큰 지수(in_Exp_1)에서 작은 지수(in_Exp_2)를 뺀 결과를 저장(Exp_Sub)한다.
부동소수점의 연산을 VHDL 언어로 구현함을 목표로 한다.
[컴퓨터] VHDL / 부동소수점 가산기 / floating point adder 전체 소스코드 (IEEE754)
각 단계(stage1~stage7)를 순차적으로 실행
stage_1 : Compare_Exponent
작은 지수가 큰 지수와 같은 값을 갖게 될 때까지 shift해 주는 함수
FUNCTION or_reduce(arg : SIGNED) RETURN STD_LOGIC;
지수 조정이 필요한 경우, 결과 값이 0인 경우로 나뉜다. 첫 번째는 가수라고 하는 부호화된 고정소수점 숫자이고 두 번째는 지수라고 하는 십진 또는 이진 소수점의 위치를 알려주는 부분이다.
Download : Floating_Point_Adder.zip( 69 )
stage_7 : Normal_2
지수 부분이 큰 수를 out_1에 저장하고, 지수 부분이 작은 수를 out_2에 저장한다.
Floating_Point_Adder
최종 결과 값을 저장한다. 이를 VHDL 언어로 기술하기 위해서는 IEEE 부동소수점 형식에 대한 이해가 필요하며 블록화된 구현방식의 설계를 요구한다.
지수가 작았던 수는 stage_2에서 shift를 계산했던 만큼 오른쪽으로 시프트하여 결과 값을 저장 한다.
두 수의 부호비트가 같을 경우와 다를 경우로 나뉜다.
stage_3 : Shift_Man
두 지수의 차이만큼 오른쪽 시프트를 하기 위해서 Shift 변수에 저장한다.
유효자리를 정규화 하는 함수
Result subtype: STD_LOGIC.
stage_4에서 조사한 두 부호비트의 상황에 맞춰 같은 부호이면 두 유효숫자를 더하고, 다른 부호이면
순서
결과 값의 exponent는 처음 기준이 되었던 in_Exp_1으로 설정한다.
레포트 > 공학,기술계열
첫 번째는 가수라고 하는 부호화된 고정소수점 숫자이고
두 수의 부호비트가 다를 경우 유효숫자가 큰 수를 out_Man_1에 저장한다.
어느 비트에서 처음으로 1이 발생했는지에 따라 구분된다.
overflow가 생길 경우를 대비해서 1bit를 확장하여 최상위 비트에 0을 추가한다.
두 유효숫자의 연산 결과를 分析하는 함수
stage_6 : Normal_1
input, output, component definition
최상위 1bit는 sign, 23~30bit는 exponent, 0~22bit는 mantissa로 분리한다.
stage_2 : Compute_Shift
두 입력 값의 지수 부분을 비교한다.
stage_4 : Compare_Man
만약 carry가 발생했다면 exponent에 1을 더해준다.
다. 부동소수점 연산기를 설계해보면서 이제까지 습득한 VHDL 문법과 논리적 블록 설계능력을 더욱 향상 시킬 수 있게 된다. 선행하는 1은 유효자리에 숨겨져 있기
stage_5 : AddSub_Man
블록화된 구현방식의 설계를 요구한다.
부동소수점의 연산을 VHDL 언어로 구현함을 목표로 한다.
숫자의 부동소수점 표현은 두 부분으로 구성되어 있다
두 번째는 지수라고 하는 십진 또는 이진 소수점의 위치를 알려주는 부분이다.
부동소수점, 가산기, vhdl, ieee754, 부동소수점가산기, 플로팅포인트, floating, adder
연산 결과에 따라 지수 조정을 해야 한다.
유효숫자 계산할 때 맨 앞자리에 Bit_Man_1을 계산해서 추가한다.


