數值計算中Bcd碼校驗電路的分析與設計
reg [4:0] TEM P_RESULT;
本文引用地址:http://m.ptau.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校驗模塊。由上面仿真結果可知,此種電路速度較快,硬件電路簡單。適合實時處理系統(tǒng)。
DIY機械鍵盤相關社區(qū):機械鍵盤DIY
評論