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