1
real
데이터 형식을 사용하는 시스템 Verilog에서 부동 소수점 숫자를 사용하고 싶습니다. 다음 코드를 시도했지만 작동하지 않는 것 같습니다. 나는 2.500000
을 기대하는 2.000000
을 얻고 있습니다.Verilog의 부동 소수점 구분
모듈 :
module real_check(input [31:0]a, [31:0]b,
output real c);
assign c = a/b;
endmodule
테스트 벤치 :
module tb_real_check();
real c;
reg[31:0] a, b;
real_check dut(a, b, c);
initial
begin
a <= 5;
b <= 2;
#50;
$display("Answer : %f ", c);
end
endmodule
특정 비트 부동 소수점을 원한다면 어떻게해야합니까? float point = 0.5를 원한다면 4 비트 너비가 필요하다. 4'b0100과 같은 것을 얻을 수 있습니까? 나는 Newton-Raphson division을위한 lookup table을 만들고 있습니다. 이 테이블은 D가 8 비트 2 진수이고 영역이 [0.5, 1] 인 128 개의 24 비트 값 X = 48/17 - 32/17 * D를 포함합니다. 내가 조회 테이블을 자동으로 생성하는 .sv 코드를 작성하는 데 어려움을 겪고 있습니다. –
@ ShuaiyuJiang 당신은 지정된 정밀도를 가진 부동 소수점을 의미합니까? 그래서 32 비트의 정밀도 (단 정밀도) 대신에 4 비트가 있습니까? –
죄송합니다, 질문을 간략하게하겠습니다. 나는 24 비트 출력 논리 a [23 : 0]과 a = 48/17 (예를 들어)를 원했다. 논리 유형을 사용하는 경우 나머지는 잘 렸기 때문에 대답은 2가됩니다. 내가 진술을 사용하려고 "진짜", 그리고 난 = 2.823529 ..... 가지고 질문은, 내가 실제로 이진 논리가 아닌 실제 번호를 원하는 거기에 어떤 방법을 내가 48/17? 맙소사, 내 영어 발표가 안좋아. 무슨 뜻인지 이해해 줄래? 싸구려 –