一種空間相機的數(shù)據(jù)通信系統(tǒng)設(shè)計
在編寫讀寫模塊時,需注意雙向總線的編寫技巧。雙向口最好在頂層定義,否則模塊綜合時容易出錯。
3.3 INOUT雙向端口
芯片外部引腳很多都使用inout類型的,目的是節(jié)省管腳,即一個端口同時做輸入和輸出。inout 在具體實現(xiàn)上一般用三態(tài)門來實現(xiàn)。三態(tài)門的第三個狀態(tài)就是高阻“Z”。 當(dāng)inout端口不輸出時,將三態(tài)門置為高阻。這樣信號就不會因為兩端同時輸出而出錯了。本設(shè)計中地址數(shù)據(jù)復(fù)用的ADDR為8位雙向端口,使用時可以寫為:
inout ADDR;
wire [7:0] ADDR;
wire [7:0] input_of_ADDR;
wire [7:0] output_of_ADDR;
wire en;
assign ADDR = (en==1)?output_of_ADDR:8'hzz ;
assign input_of_ADDR = ADDR;
可見,此時input_of_ADDR和output_of_ADDR就可以當(dāng)作普通信號使用了。對于雙向端口的測試用例如下:
wire [7:0] ADDR;
reg link;
reg [7:0] data_in_t;
assign ADDR=link?data_in_t:8'hzz;
對于有inout(雙向)端口的verilog程序設(shè)計,需要注意幾點:(1)對于inout端口,要定義一個與之相連的“映像寄存器”。當(dāng)inout端口作為輸出端口時,將兩者連通;而當(dāng)inout端口不作為輸出端口時,要給i~t端口賦高阻態(tài)來斷開與“映像寄存器”的連接。(2)在實例化含inout(雙向)端口的模塊時,與inout端口相連的只能是一個wire類型的變量。(3)不論是模塊設(shè)計還是仿真, 由于inout端口兼有輸人端口和輸出端口的功能,所以必須分別指定當(dāng)inout端口作為輸人端口(輸出端口)時,它與其他單元的連接情況和需要完成的操作。
4 實驗結(jié)果
在FPGA中利用Verilog編程產(chǎn)生SJA1000的片選信號CS,地址鎖存信號ALE,讀寫信號RD、WR。這些控制信號共同驅(qū)動SJA1000進行數(shù)據(jù)接收發(fā)送,同時產(chǎn)生OE0、OE1、DIR0、DIR1,來控制雙向總線收發(fā)器。設(shè)計選取的是Xilinx公司Virtex系列的芯片,邏輯開發(fā)在ISE平臺上進行。在FPGA的調(diào)試階段,使用Xilinx提供的在線邏輯分析儀ChipScope pro來在線觀察FPGA設(shè)計內(nèi)部信號的波形,它比傳統(tǒng)的邏輯分析儀更方便。圖5就是在線進行數(shù)據(jù)傳送時的波形。
在本文空間相機通信系統(tǒng)的設(shè)計中,放棄了傳統(tǒng)的基于單片機的方法,而采用以FPGA為核心控制單元,代替單片機及其外圍芯片電路。通過設(shè)計整個空間相機通信系統(tǒng)的硬件電路,并利用Verilog硬件語言描述通信流程,快速準確地實現(xiàn)了相機數(shù)據(jù)的通信功能。在軟硬件的聯(lián)調(diào)和驗證時,利用chipscope在線邏輯儀功能,方便準確地實現(xiàn)了預(yù)期目的。
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
上拉電阻相關(guān)文章:上拉電阻原理 雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評論