module floatingpoint32(en,A,B,C
);
input en;
input[31:0] A,B;
output[31:0] C;
reg[31:0] C;
reg[7:0] AE,BE,CE,DE;
reg AS,BS,CS,DS;
reg[24:0] AF,BF,CF;
reg[7:0] index;
integer in;
integer tem;
always @(A or B)//上升沿触发
begin
if(en==1)
begin
AE=A[30:23]; // 阶码8位 用的是移码表示 +127 01111111
AF={2'b01,A[22:0]};//把缺省的1给补上 同时考虑做加法时 有可能产生进位 所以补齐23+1+1 共25位
AS=A[31]; // 最高位 即符号位
BE=B[30:23];
BF={2'b01,B[22:0]};
BS=B[31];
//如果某一方阶码大,则符号位一定是在大的一方
if (A[30:0]==0) //如果A是0,则结果就是B了
begin
CS=BS;
CE=BE;
CF=BF;
end
else if(B[30:0]==0) //如果B是0,则结果就是A了
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余4页未读,立即下载
- 1
- 2
- 3
前往页