美文网首页
编码总结

编码总结

作者: 暮阳晨鼓 | 来源:发表于2019-12-23 22:49 被阅读0次

    1. BCD码

    BCD码:也叫做二一十进制编码(binary coded decimal),几种常见的BCD码有8421码,2421码,余3码,余3循环码,其中余3码和余3循环码都是无权码。
    余3循环码:余3循环码可看成将格雷码首尾各3种状态去掉后得到的,相邻两个编码只有一位不同。优点:1. 构成计数器时每次状态转换中只有一个触发器发生翻转,译码时不会出现竞争-冒险现象。2. 用与数值传递时,如果有一位传输错误,传递的数值与原值相比差1,不会出现更大的误差。

    2. 格雷码

    Gray码是一种循环码,因为它最大值和最小值也只有一位不同。优点:1.译码时不会有竞争-冒险现象 缺点:不能直接进行算术运算

    2.1 二进制转格雷码

    二进制码转换成二进制格雷码,其法则是保留二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。


    image.png
    module bi2gray(
        bi_code,
        gray_code
    );
    input wire [7:0] bi_code;
    output wire [7:0] gray_code;
    
    always @ (*)
        gray_code = (bi_code >>1)^bi_code;
    

    2.2 格雷码转二进制

    雷码转换成二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。


    image.png
    module gray2bi(gray_code, bi_code);
    
    parameter DATA_WIDTH = 8;
    input wire [DATA_WIDTH-1 : 0] gray_code;
    output reg [DATA_WIDTH-1 : 0] bi_code; 
    integer i;
    always @(*) begin
        bi_code[DATA_WIDTH-1] = gray_code[DATA_WIDTH-1];
        for (i=DATA_WIDTH-1; i>0; i=i-1)
            bi_code[i-1] = bi_code[i]^gray_code[i-1];
    end
    
    endmodule
    

    3. 独热码

    独热码:one-hot code,简单地说就是只有一个比特为1,其余位都为0。优点:译码电路简单,节约组合逻辑资源,其次状态跳变时只有一个寄存器翻转,减少了竞争-冒险现象。

    4. 原码、反码和补码

    4.1 定义

    原码:正数是其二进制本身;负数是符号位为1,数值部分取X绝对值的二进制。
    反码:正数的反码和原码相同;负数是符号位为1,其它位是原码取反。
    补码:正数的补码和原码,反码相同;负数是符号位为1,其它位是原码取反,未位加1。(或者说负数的补码是其绝对值反码未位加1)
    移码:将符号位取反的补码(不区分正负)


    image.png

    4.2. 根据补码求源码

    如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
    如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1;其余各位取反,然后再整个数加1。
    或者先减1,再取反;

    4.3 补码加减法

    在做补码加减法时,只需将符号位和数值部分一起参与运算,并且将符号位产生的进位丢掉即可
    补码加法公式
      [X+Y]补 = [X]补 + [Y]补
    补码减法公式
      [X-Y]补 = [X]补-[Y]补 = [X]补 + [-Y]补
    其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.

    4.4 补码运算溢出条件

    当两个正数相加的结构为负数或者两个负数相加的结果为正数时为溢出条件
    0的补码:0000_0000
    1的补码:0000_0001
    -1的补码:1111_1111
    -128的补码:1000_0000
    127的补码:0111_1111

    4.5为何要使用源码、反码和补码

    源码:不适合计算机做加减运算
    反码:+0和-0的表示不一致

    5. 浮点数表示

    定义:浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡(因此被称为浮点数)。
    N = M X R^E,其中,M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的 基数 ,E(Exponent)被称为阶的 阶码 。计算机中一般规定R为2、8或16,是一个确定的常数,不需要在浮点数中明确表示出来。


    image.png

    (1) 尾数用原码,且隐藏尾数最高位。
    原码非0值浮点数的尾数数值最高位必定为 1,因此可以忽略掉该位,这样用同样多的位数就能多存一位二进制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。当然,在取回这样的浮点数到运算器执行运算时,必须先恢复该隐藏位。
    (2) 阶码使用“移码”,基固定为2
    32: 1-8-23
    64: 1-11-52


    image.png
    image.png image.png

    参考链接:https://blog.csdn.net/shuzfan/article/details/53814424

    相关文章

      网友评论

          本文标题:编码总结

          本文链接:https://www.haomeiwen.com/subject/yfxtoctx.html