大家好,又到了每日學習的時間了,今天我們來聊一聊FPGA/Verilog中inout端口使用方法。
輸入端口可以由wire/reg驅動,但輸入端口只能是wire;輸出端口可以使wire/reg類型,輸出端口只能驅動wire;若輸出端口在過程塊中賦值則為reg型,若在過程塊外賦值則為net型。用關鍵詞inout聲明一個雙向端口, inout端口不能聲明為reg類型,只能是wire類型;輸入和雙向端口不能聲明為寄存器類型。
INOUT引腳:
1.FPGA IO在做輸入時,可以用作高阻態(tài),這就是所說的高阻輸入;
2.FPGA IO在做輸出時,則可以直接用來輸入輸出。
芯片外部引腳很多都使用inout類型的,為的是節(jié)省管腿。就是一個端口同時做輸入和輸出。 inout在具體實現(xiàn)上一般用三態(tài)門來實現(xiàn)。三態(tài)門的第三個狀態(tài)就是高阻'Z'。當inout端口不輸出時,將三態(tài)門置高阻。這樣信號就不會因為兩端同時輸出而出錯了,更詳細的內(nèi)容可以搜索一下三態(tài)門tri-state的資料.
1 使用inout類型數(shù)據(jù),可以用如下寫法:
inout data;
reg data_in;
reg data_out;
//data為輸出時
reg en_output;
assign data_inout=en_output?data_out:1'bz;//en_output控制三態(tài)門
//對于data_out,可以通過組合邏輯或者時序邏輯根據(jù)data對其賦值.通過控制en_output的高低電平,從而設置data是輸出數(shù)據(jù)還是處于高阻態(tài),如果處于高阻態(tài),則此時當作輸入端口使用.en_output可以通過相關電路來控制.
2 編寫測試模塊時,對于inout類型的端口,需要定義成wire類型變量,而其它輸入端口都定義成reg類型,這兩者是有區(qū)別的.
當上面例子中的data_inout用作輸入時,需要賦值給data_inout,其余情況可以斷開.
此時可以用assign語句實現(xiàn):assign data_inout=link?data_in_t:1'bz;
其中的link ,data_in_t是reg類型變量,在測試模塊中賦值.
另外,可以設置一個輸出端口觀察data_inout用作輸出的情況:
Wire data_out;
Assign data_out_t=(!link)?data_inout:1'bz;
但要注意給data_inout賦值的時候,link選通信號如何給呢?
首先測試文件給源文件的data_inout數(shù)據(jù)賦值,那只能在原INOUT數(shù)據(jù)為高阻態(tài)的時候才可以賦值,故link信號即該INOUT數(shù)據(jù)為高阻太時的控制信號。
當不需要測試文件給你data_inout數(shù)據(jù)賦值的時候,測試文件的data_inout接口因為高阻態(tài),從而不影響源文件data_inout接口的其他操作。
今天就聊到這里,各位,加油。
-
FPGA
+關注
關注
1664文章
22501瀏覽量
639008
發(fā)布評論請先 登錄
泰克示波器MDO3000使用方法
FPGA 入門必看:Verilog 與 VHDL 編程基礎解析!
易靈思FPGA DSP原語使用方法
數(shù)字IC/FPGA設計中的時序優(yōu)化方法
堆棧的定義,堆棧的使用方法
如何使用FPGA實現(xiàn)SRIO通信協(xié)議
如果將蜂鳥的risc-v移植到其他的fpga中想實現(xiàn)一些外設功能有什么辦法?可以不用操作系統(tǒng)直接添加verilog代碼嗎?
如何利用Verilog HDL在FPGA上實現(xiàn)SRAM的讀寫測試
NucleiStudio下載程序到FPGA中的E203上
錫膏的儲存及使用方法詳解
Altera FPGA 的PIO IP當中bidir和inout選項的區(qū)別
手機中框氣密性檢測儀的使用方法
簡談FPGA/Verilog中inout端口使用方法
評論