Xilinx FPGA 原语解析(三):OBUFDS差分输出缓冲器(示例源码及仿真)

目录

前言:

一、原语使用说明

二、原语实例化代码模版

三、使用示例

1.设计文件代码

2.仿真文件代码

3.仿真结果


前言:

主要参考 Xilinx 官方文档《Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for HDL Designs》UG768 (v14.7) October 2, 2013。


一、原语使用说明


OBUFDS 是支持低压差分信号的单输出缓冲器,用于将单端信号转换为差分信号,适用于需要差分信号驱动的应用场景,如高速数据传输和时钟信号传递。

它的输出表示为两个不同的端口(O和OB),一个被视为"主端口",另一个被视为"从端口",两端口电平极性相反。
端口示意图如下:

逻辑表和端口描述:

  • I : 单端输入信号;O : 差分输出信号正端;OB: 差分输出信号负端
  • OBUFDS 将输入信号 I 转换为差分对,输出 OOB。当输入 I 为高电平时,输出 OOB 会形成一对极性相反的差分信号O=1、OB=0;当输入 I 为低电平时,O=0、OB=1。

二、原语实例化代码模版


打开Vivado左侧导航栏中的"Language Templates",搜索"IBUFDS",找到可直接调用的原语模块实例化代码

参数说明:

-IOSTANDARD 指定输入/输出电平标准

  • "DEFAULT": 使用 FPGA 工具默认的 I/O 标准。

  • 其他值: 如:**"LVCMOS33""LVDS_25""HSTL_I"**等根据具体的应用需求选择适当的 I/O 标准。

**-SLEW 指定输出驱动程序的转换速率。它**影响信号的上升和下降速度,即信号从低电平到高电平和从高电平到低电平的过渡速率。

  • "SLOW": 输出信号的转换速率 较慢,有助于减少电磁干扰(EMI),适用于较低频率或需要降低 EMI 的应用。
  • "FAST": 输出信号的转换速率较快,提供更高的速度,适用于高速信号传输,但可能会增加 EMI。

三、使用示例


1.设计文件代码

复制代码
// OBUFDS: Differential Output Buffer
module example_obufds (
    input wire  I,     // 单端输入信号
    output wire O,     // 差分输出信号正端
    output wire OB     // 差分输出信号负端
);

    // OBUFDS 实例化
    OBUFDS #(
        .IOSTANDARD("DEFAULT"), // 指定输出 I/O 标准
        .SLEW("SLOW")          // 指定输出斜率为慢
    ) OBUFDS_inst (
        .O (O),  // 差分输出信号正端
        .OB(OB), // 差分输出信号负端
        .I (I)   // 单端输入信号
    );

endmodule

2.仿真文件代码

复制代码
`timescale 1ns / 1ps
module tb_example_obufds();

    // 测试平台中的信号定义
    reg data_in;        // 单端输入信号
    wire data_out_p;    // 差分输出信号正端
    wire data_out_n;    // 差分输出信号负端

    // 实例化 example_obufds 模块
    example_obufds uut (
        .data_in(data_in),
        .data_out_p(data_out_p),
        .data_out_n(data_out_n)
    );

    // 初始块,用于生成测试信号
    initial begin
        // 初始化信号
        data_in = 0;

        // 生成测试信号
        #10;
        data_in = 1;

        #10;
        data_in = 0;

        #10;
        data_in = 1;

        #10;
        data_in = 0;

        #10;
        data_in = 1;
		
        #10;
        data_in = 0;

        #10;
        data_in = 1;

        #10;
        $stop; // 停止仿真
    end

endmodule

3.仿真结果

相关推荐
-木槿昔年-1 天前
【米尔-安路MYD-YM90X创意秀】飞龙派学习和PS串口实践
学习·fpga开发
Aaron15881 天前
基于RFSOC+VU13P+GPU架构在雷达电子战的技术
人工智能·算法·fpga开发·架构·硬件工程·信号处理·基带工程
jifengzhiling1 天前
伺服驱动器中DSP与FPGA高效协同架构解析
fpga开发·foc电机控制
太爱学习了1 天前
FPGA图像处理之:图像畸变矫正原理及matlab与fpga实现
图像处理·matlab·fpga开发
技术性摸鱼2 天前
FPGA选型参数
fpga开发
FPGA_小田老师2 天前
ibert 7 Series GT:IBERT远近端(内外)环回测试
fpga开发·ibert·gt测试·近端pcs环回·近端pma环回·远端pcs环回·远端pma环回
尤老师FPGA2 天前
【无标题】
fpga开发
175063319452 天前
VIVADO VLA VIO 硬件调试 降采样
fpga开发
FPGA小迷弟2 天前
基于FPGA开发高速ADC/DAC芯片笔记
图像处理·fpga开发·数据采集·fpga·adc
ZYNQRFSOC3 天前
基于XCKU5P纯逻辑 NVME测试
fpga开发