Float 계산 회로의 Verilog-HDL 구현에 대해 - 2.5 (공통화)

Float 계산 회로의 Verilog 구현



~ FPGA에 올리고 싶다 ~
올레올레 구현이므로 잘못되어도 몰라요

가산회로편
Float 계산 회로의 Verilog-HDL 구현에 관하여 - 그 1

디버그 툴 작성편
Float 계산 회로의 (ry-그 1.1(float값의 16진수 표기)

보충과 LeadingZeros편
플로팅 컴퓨팅 회로의 Verilog-HDL 구현 - 1.5 (LeadingZeros)

감산회로편
Float 계산 회로의 Verilog-HDL 구현에 대해 -그 2(감산편)

회로 공통화와 타이밍 조정편
Float 계산 회로의 Verilog-HDL 구현에 대해 - 그 2.1 (가산 회로의 공통화와 타이밍 조정)

목적



float 공부
float32의 하드웨어 구현

긍정적이고 부정적인 가감산을 균일하게 처리하는 가감산 회로 생성

이번에는 0을 고려하지 않습니다.

사양




이하 상세

값 계산 정책



제 2 인수와 오퍼레이터의 배타적 논리합을 취득해, 제 2 인수의 부호로 한다



모든 계산을 가산 표기로 한다

큰 값의 부호를 결과 출력 부호로 한다.



글쎄, 그렇게 될거야.

가산과 감산의 판정은 큰 값과 작은 값의 부호의 배타적 논리합으로 한다



글쎄, 그렇게 될거야.

1. 값 비교



숫자 비교를 수행하고 큰 값을 vb (값 큰), 작은 값을 vs (값 작은)에 저장합니다.
가산 회로와 달리 코드 이야기가 관련되어 있기 때문에 완전히 크고 작은 것을 분리하고 싶습니다.
//TIM1
reg [31:0] vb;
reg [31:0] vs;

always @(posedge clk) begin
    if (v2[30:23] < v1[30:23]) begin
        vb <= v1;
        vs <= {v2[31] ^ op, v2[30:0]};
    end else if (v1[30:23] < v2[30:23]) begin
        vb <= {v2[31] ^ op, v2[30:0]};
        vs <= v1;
    end else if (v2[22:0] < v1[22:0]) begin
        vb <= v1;
        vs <= {v2[31] ^ op, v2[30:0]};
    end else begin
        vb <= {v2[31] ^ op, v2[30:0]};
        vs <= v1;
    end
end

제 2 인수의 부호와 오퍼레이터의 배타적 논리합을 취한다 (-(-v) 의 배제)

2, 3. 생략



부호가 지워지지 않도록 적절히 보호

4. 계산


//TIM4
reg [7:0] vexp3;
reg [24:0] r;

always @(posedge clk) begin
    op3 <= opb2;
    vexp3 <= vexp2;

    if (opb2 ^ ops2) begin
        r <= vb3 - vs3;
    end else begin
        r <= vb3 + vs3;
    end                                                                        
end

2치의 부호가 다른 경우는 감산한다(부호는 큰 쪽을 유지하기 때문에 절대치의 계산이군)

5, 6. 생략



순조롭게 만들기 (특히 코멘트 없음)

시뮬레이션 결과



4302_A666 = 130.65
42E8_4CCD = 116.15

C2E8_4CCD = -116.17
C302_A666=-130.65


값 1
값 2
연산자

결과


123.4
7.25
+

130.65

123.4
-7.25
+

116.15

-123.4
7.25
+

-116.15

-123.4
-7.25
+

-130.65





7.25
123.4
+

130.65

7.25
-123.4
+

-116.15

-7.25
123.4
+

116.15

-7.25
-123.4
+

-130.65





123.4
7.25
-

116.15

123.4
-7.25
-

130.65

-123.4
7.25
-

-130.65

-123.4
-7.25
-

-116.15





7.25
123.4
-

-116.15

7.25
-123.4
-

130.65

-7.25
123.4
-

-130.65

-7.25
-123.4
-

116.15


있어요.

좋은 웹페이지 즐겨찾기