上一篇文章中学习了32位浮点数的表示方法。现在正式的采用system verilog来设计一个加法器
设计要求
设计一个32位浮点数加法器,可以实现串行输入的两个标准化的32位浮点数的相加并得到标准化的结果。此外该加法器能处理“特殊”数字:零、正无穷、负无穷和“非数字(NaN)”。
加法器有一个32位输入总线和一个32位输出总线,有一个’ ost '输出,当ost信号高电平有效时,表示计算结束,输出的sum有效。
设计思路
32位浮点数加法运算步骤
第1步:前端处理,得到数符、阶码、尾数 inputa,inputb
第2步:检查全0操作数 zerock
第3步:对阶。使得阶码(即指数)相等 exequal
第4步:尾数进行加(减)法运算,并处理进位 add
第5步:对运算结果规格化处理,还原为IEEE浮点格式 infifl
第6步:舍入操作
第7步:溢出操作
使用状态机完成上述步骤,共有八个状态如下,其中start为初始缓冲状态,over为输出计算结果状态。
{start,inputa,inputb,zerock,exequal,add,infifl,over} state;//8个状态
顶层模块如