來源:FPGA從入門到跑路
1.輸入信號
時鐘單端
時鐘差分
單端信號
差分信號
inputclk,//時鐘 inputclk_P,//差分時鐘+端 inputclk_N,//差分時鐘-端 inputDin_S,//單端信號輸入 inputDin_D_P,//差分信號+端 inputDin_D_N,//差分信號-端
2.輸出信號
時鐘單端
時鐘差分
單端信號
差分信號
outputclk_O,//時鐘 outputclk_O_P,//差分時鐘+端 outputclk_O_N,//差分時鐘-端 outputDout_S,//單端信號輸入 outputDout_D_P,//差分信號+端 outputDout_D_N//差分信號-端
3.雙向信號端口
inout是可以輸入也可以輸出的引腳,只能由wire型網(wǎng)線驅(qū)動。
inoutDataBus,//雙向信號
當inout作輸入引腳時需要將此引腳置為高阻態(tài)z。inout端口的實現(xiàn)是使用三態(tài)門。

inout端口的實現(xiàn)
assignDataBus=control?'bz:DataOut;
inout端口DataBus作為輸出的時候值為DataOut,作為輸入時為高阻態(tài)。
4.IO相關(guān)原語
輸入:
IBUF
輸入緩沖器。
單端輸入信號的處理舉例:
wireDin; IBUF#( .IOSTANDARD("DEFAULT")//SpecifytheinputI/Ostandard )IBUF_Din( .O(Din),//Bufferoutput .I(Din_S)//Bufferinput(connectdirectlytotop-levelport) );
IBUFDS
專用差分輸入時鐘緩沖器(Dedicated Differential Signaling Input Buffer with Selectable I/O Interface)。將差分時鐘轉(zhuǎn)換成單端時鐘作為全局時鐘,需要添加例化此原語。IBUFDS是一個輸入緩沖器,支持低壓差分信號(如LVCMOS、LVDS等)。在IBUFDS中,一個電平接口用兩個獨特的電平接口(I和IB)表示。一個可以認為是主信號,另外一個可以認為是從信號。主信號和從信號是同一個邏輯信號,但是相位相反。

IBUFDS
使用方式如下:
IBUFDS#( .DIFF_TERM("FALSE"),//DifferentialTermination .IBUF_LOW_PWR("TRUE"),//Lowpower="TRUE",Highestperformance="FALSE" .IOSTANDARD("DEFAULT")//SpecifytheinputI/Ostandard )IBUFDS_inst( .O(O),//Bufferoutput .I(I),//Diff_pbufferinput(connectdirectlytotop-levelport) .IB(IB)//Diff_nbufferinput(connectdirectlytotop-levelport) );
IBUFG
輸入全局緩沖,是與專用全局時鐘輸入管腳相連接的首級全局緩沖。所有從全局時鐘管腳輸入的信號必須經(jīng)過IBUF元,否則在布局布線時會報錯。 IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多種格式的IO標準。
IBUFGDS
IBUFG的差分形式,當信號從一對差分全局時鐘管腳輸入時,必須使用IBUFGDS作為全局時鐘輸入緩沖。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多種格式的IO標準。
IDDR2
后面單獨介紹。
雙向:
IOBUF

IOBUF
IOBUF由一個OBUFT和一個IBUF組成。

OBUFT
OBUFT是三態(tài)輸出緩沖器,其結(jié)構(gòu)和真值表如下圖所示,可以看到,當T為1時,輸出是高阻態(tài)。當T為0時,輸出與輸入結(jié)果相同。

OBUFT真值表
使用雙向信號端口時,使用此原語和使用上面第3部分的三態(tài)門效果相同。
assignDataBus=control?'bz:DataOut;
IOBUFIOBUF( .I(DataIn), .O(DataOut), .T(control), .IO(DataBus) );
輸出:
OBUF
輸出緩沖器。使用方式如下:
wireDout;
OBUF#(
.DRIVE(12),//Specifytheoutputdrivestrength
.IOSTANDARD("DEFAULT"),//SpecifytheoutputI/Ostandard
.SLEW("SLOW")//Specifytheoutputslewrate
)OBUF_inst(
.O(Dout_S),//Bufferoutput(connectdirectlytotop-levelport)
.I(Dout)//Bufferinput
);
OBUFDS
差分輸出時鐘緩沖器(Differential Signaling Output Buffer with Selectable I/O Interface),將單端信號轉(zhuǎn)換成差分信號。OBUFDS是一個輸出緩沖器,支持低壓差分信號。OBUFDS隔離出了內(nèi)電路并向芯片上的信號提供驅(qū)動電流。它的輸出用O和OB兩個獨立接口表示。一個可以認為是主信號,另外一個可以認為是從信號。主信號和從信號是同一個邏輯信號,但是相位相反。

OBUFDS示意圖
使用方式如下:
OBUFDS#(
.IOSTANDARD("DEFAULT"),//SpecifytheoutputI/Ostandard
.SLEW("SLOW")//Specifytheoutputslewrate
)OBUFDS_inst(
.O(O),//Diff_poutput(connectdirectlytotop-levelport)
.OB(OB),//Diff_noutput(connectdirectlytotop-levelport)
.I(I)//Bufferinput
);
IBUFDS、IBUFGDS 和 OBUFDS 真值表
ODDR2
后面單獨介紹。
5.舉例
單端輸入時鐘的處理——全局時鐘:
wireclk_in;
IBUFG#(
.IOSTANDARD("DEFAULT")
)IBUFG_CLK_S(
.O(clk_in),//Clockbufferoutput
.I(clk)//Clockbufferinput(connectdirectlytotop-levelport)
);
差分輸入時鐘的處理——全局時鐘,以LVDS為例子
wireclk_in_D;
IBUFGDS#(
.DIFF_TERM(“TRUE"),//DifferentialTermination
.IOSTANDARD("LVDS_25")//SpecifiestheI/Ostandardforthisbuffer
)IBUFGDS_inst(
.O(clk_in_D),//Clockbufferoutput
.I(clk_P),//Diff_pclockbufferinput
.IB(clk_N)//Diff_nclockbufferinput
);
差分輸入信號的處理 ,以LVDS為例子
wireDin_D;
IBUFDS#(
.DIFF_TERM("TRUE"),//DifferentialTermination
.IOSTANDARD("LVDS_25")//SpecifytheinputI/Ostandard
)IBUFDS_inst(
.O(Din_D),//Bufferoutput
.I(Din_D_P),//Diff_pbufferinput(connectdirectlytotop-levelport)
.IB(Din_D_N)//Diff_nbufferinput(connectdirectlytotop-levelport)
);
更多相關(guān)內(nèi)容,或者想要深入學(xué)習(xí),建議去看UG471。
-
FPGA
+關(guān)注
關(guān)注
1654文章
22273瀏覽量
629874 -
輸入輸出
+關(guān)注
關(guān)注
0文章
44瀏覽量
11040 -
輸入信號
+關(guān)注
關(guān)注
0文章
538瀏覽量
13104
原文標題:FPGA的輸入輸出處理
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何用FPGA實現(xiàn)4K視頻的輸入輸出與處理
對于IO空間映射在存儲空間的結(jié)構(gòu),輸入輸出處理介紹
一文詳解FPGA編程技巧輸入輸出偏移約束
什么是輸入輸出模塊_輸入輸出模塊有什么作用
STM32的8種GPIO輸入輸出模式
GPIO通用輸入輸出
MCU中的IO口輸入輸出狀態(tài)詳解
Logos系列FPGA輸入輸出接口(IO)用戶指南
plc帶模擬量輸入輸出和不帶模擬量輸入輸出有什么區(qū)別啊?
用于處理豐富輸入輸出數(shù)據(jù)流的圖形和圖像處理工具

詳解FPGA的輸入輸出處理
評論