sram加减法

根据sub判断加减法,sub=1,表示减法,=0,表示加法。

减法时,减数应该“求反加1”转化成加法;

把1024位减法转化为32bit减法;

cin_reg初值为1,当大数减小数时,cin=1,则下一个32bit减法直接加cin_reg实现求反加1,;

如果cin=0,表示有借位,则下一个32bit减法的求反加1再减去一个借位,相当于加0,因此直接用cin就可以表示。

注意先用(1)求反,否则在(2)中实现的话会将32位扩展成33位,第33位也被求反!

(1)assign add_b = sub ? ~Q_b : Q_b;
(2)assign {cin,data_a} = (state == write) ? (Q_a + add_b + cin_reg) :{cin_reg,32'b0};

在时钟上升沿cin_reg <= cin;

posted on 2012-06-23 14:48  好记性不如烂笔头  阅读(318)  评论(0编辑  收藏  举报

导航