fpga系列 HDL:FPGA实现双极性编码

双极性码

双极性码是一种数字信号编码方式,用正、负和零三种电平表示二进制数据。单极性码会积累直流分量,这样就不能使用变压器在数据通信设备和所处环境之间提供良好绝缘的交流藕合,直流分量还会损坏连接点的表面电镀层;双极性码的直流分量大大减少,这对数据传输是很有利的。常见双极性码包括AMI(Alternate Mark Inversion)码和HDB3(High-Density Bipolar 3)码。

  • AMI码:用交替的正负电平表示“1”,“0”则用零电平表示。
    在这里插入图片描述

  • HDB3码:在AMI基础上,通过插入特定的“破坏”脉冲来避免长串零电平,确保同步。

FPGA实现双极性编码:通过加入符号位指示极性

  • 以下是使用 Verilog 实现双极性码(以 AMI 编码为例)的代码示例:

AMI 编码的 Verilog 实现

module AMI_Encoder (
    input wire clk,          // 时钟信号
    input wire reset,        // 复位信号
    input wire data_in,      // 输入二进制数据
    output reg [1:0] ami_out // 输出 AMI 编码(2位:符号位 + 数据位)
);

    reg last_bit;  // 上一个输入比特
    reg polarity;  // 当前极性(0: 负,1: 正)

    always @(posedge clk or posedge reset) begin
        if (reset) begin
            // 复位时初始化
            ami_out <= 2'b00;  // 输出零电平
            last_bit <= 1'b0;
            polarity <= 1'b0;
        end else begin
            if (data_in == 1'b1) begin
                if (last_bit == 1'b1) begin
                    // 如果上一个比特也是1,则翻转极性
                    polarity <= ~polarity;
                end
                // 输出当前极性的1
                ami_out <= {polarity, 1'b1};
                last_bit <= 1'b1;
            end else begin
                // 输入为0,输出零电平
                ami_out <= 2'b00;
                last_bit <= 1'b0;
            end
        end
    end

endmodule
  1. 输入输出

    • data_in:输入的二进制数据(0 或 1)。
    • ami_out:输出的 AMI 编码,用 2 位表示:
      • ami_out[1]:符号位(0 表示负,1 表示正)。
      • ami_out[0]:数据位(0 表示零电平,1 表示非零电平)。
  2. 逻辑实现

    • 当输入为 1 时,交替输出正负电平。
    • 当输入为 0 时,输出零电平。
    • 使用 polarity 寄存器记录当前极性(正或负),并在连续输入 1 时翻转极性。

FPGA实现双极性编码:放大器实现

  • 通过类似“双相编码”的形式实现,“-1”码用“01”两个相位表示,“1”码用“10”两个相位表示,“0”码用“00”表示,但是两个数据同时输出,作为放大器的同向和反向输入端的输入。

CG

  • 数字信号编码格式图:https://cs.nju.edu.cn/yafeng/DataComTue/1035.pdf
  • 实际上运算放大器存在失调电压,即运算放大器的两个输入端电压完全相同,输出不为0 V,但是一般都非常小,可忽略

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值