Xilinx Vivado器件分配管腳:LVDS差分電平信號如何分配管腳?


引用:https://www.cnblogs.com/YangGuangPu/p/11478487.html

最近在把Quartus Prime 15.1的工程移植到Vivado 2019.1,需要改變的地方還是很多的,先記一下差分信號在FPGA中的收發管腳定義和配置。以LVDS信號為例吧。

在7 Series FPGA & ZYNQ-7000 All Programmable SoC Library Guide for HDL Design(UG768)和7 Series FPGA SelectIO Resource(UG471)文檔里面給出了HDL文件進行管腳分配的辦法:

用OBUFDS原語(Primitive)可以進行單端轉差分輸出,其實使用該原語就是在FPGA IO Bank使用了一個LVDS發送器。

對應的,用IBUFDS原語可以進行差分信號的接收,該原語在IO Bank使用了一個LVDS接收器。

在Vivado環境中Flow Navigator --- PROJECT MANAGER --- Language Templates可以找到,上述原語分別如下:

OBUFDS

復制代碼
    OBUFDS #(
    .IOSTANDARD("DEFAULT"), // Specify the output I/O standard
    .SLEW("SLOW")           // Specify the output slew rate
    ) OBUFDS_inst(
    .O(O),     // Diff_p output (connect directly to top-level port)
    .OB(OB),   // Diff_n output (connect directly to top-level port)
    .I(I)      // Buffer input
    );
復制代碼

IBUFDS

復制代碼
    IBUFDS #(
    .DIFF_TERM("FALSE"),       // Differential Termination
    .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE" 
    .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
    ) IBUFDS_inst(
    .O(O),  // Buffer output
    .I(I),  // Diff_p buffer input (connect directly to top-level port)
    .IB(IB) // Diff_n buffer input (connect directly to top-level port)
    );
復制代碼

上面只貼出了Verilog版本,VHDL版本請自行實驗吧。

從語法上看,上面的原語例化了LVDS發送器和接收器,其中I端口是輸入,IB端口是I的互補差分信號輸入,O端口是輸出,OB端口是O端口的互補差分輸出。

在模塊名和例化名之間,還有警號井號#帶領的一些參數,這些都是和差分收發器具體實現相關的參數,比如具體的IO電平規格(LVDS,DIFF_HSTL等等),輸出差分信號的壓擺率(高/低),接收器端內部負載電阻使能,降低接收器的能耗等參數。

***************************************************************************************************************************************************************************************

和Quartus環境中的差分IO配置相比,Xilinx中的設計過程中需要在HDL文件里面多加東西,增加了嚴謹性但是失去了一定的方便性:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM