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

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

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

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

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

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

OBUFDSorm

 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
    );

IBUFDSblog

 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版本請自行實驗吧。ci

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

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

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

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

相關文章
相關標籤/搜索