数值计算中Bcd码校验电路的分析与设计
reg [4:0] TEM P_RESULT;
本文引用地址:https://www.eepw.com.cn/article/84260.htmalways @(data_i or cy_i or en )
if(en == 0)
begin
cy_o=cy_i;
data_o=data_i;
z_o=z_i;
end
else
begin
if(data_i[3]&&data_i[1] ||(data_i[3]&&data_i[2]) || cy_i==1)
TEMP_RESULT = {1'b0,data_i } + {1'b0,4'b0110 } + cy_i;
else
begin
TEMP_RESULT[3:0]=data_i;
TEMP_RESULT[4]=cy_i;
end
data_o = TEMP_RESULT[3:0];
z_o = | TEMP_RESULT[3:0];
cy_o = TEMP_RESULT[4];
end
例如:两个十进制数2189+8075的正确结果应为11064,可是,相加运算后的结果为FEH,为此应进行BCD调整。将为经校验的相加结果 0010,1001,1000,1001(十进制2989)+1000,0000,0111, 0101(十进制8075)=1010,1001,1111,1110代人上述BCD校验模块,可得仿真结果如图四。
有图可知data_o为1064 且进位输出为1,即总的结果为11064,这与2989+8075=11064的结果是一致的。
结束语
本文通过对Bcd码算法和并/串行BCD校验电路的分析,提出了一种高效,快速的BCD校验模块。由上面仿真结果可知,此种电路速度较快,硬件电路简单。适合实时处理系统。
DIY机械键盘相关社区:机械键盘DIY
评论