0引言對于一個程序員,如果要從頭開始完全由自己來編寫一個用于通信的應用程序,必須對相關的網絡協議及其它的一些底層技術有較深入的了解,編程難度比較大。Visual Basic(VB)為廣大程序員提供了基于WindowsSockets網絡編程接口的Winsock控件,它封裝了所有繁瑣的技術細節(jié),并提供了訪問TCP和UDP網絡服務的方便途徑,只需通過設置控件的屬性并調用其方法就可輕易連接到一臺遠程計算機中,并且還可以實現雙向交換數據。因此,利用VB的Winsock 控件來編寫基于TCP和UDP協議的通信程序,可以降低編程難度,簡化應用程序。1TCP和UDP協議介紹TCP和UDP是TCP/IP協議中的兩個傳輸層協議,它們使用IP路由功能把數據包發(fā)送到目的地,從而為應用程序及應用層協議提供網絡服務。TCP(Transmission Control Protocol,傳輸控制協議)是面向連接的協議。“面向連接”就是在正式通信前必須要與對方建立起可靠的連接,這就好象平時的打電話,必須等線路接通了、對方拿起話筒才能相互通話。一個TCP連接必須要經過三次“對話“才能建立起來,其中的過程非常復雜。UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議,是面向非連接的協議。“面向非連接”就是在正式通信前不必與對方先建立連接,不考慮對方狀態(tài)就直接發(fā)送數據,這就好象平時的發(fā)手機短信,不必考慮對方狀態(tài),只需要輸入對方手機號就行。TCP提供的是面向連接的、可靠的數據流傳輸,而UDP提供的是面向非連接的、不可靠的數據流傳輸。面向連接的協議在任何數據傳輸前就建立好了點到點的連接,面向非連接的協議在數據傳輸之前不建立連接,而是在每個中間節(jié)點對面向非連接的包和數據包進行路由。
現代的計算機追求的是更快的速度、更高的數據完整性和靈活性。無論從物理性能,還是從電氣性能來看,現今的并行總線都已出現了某些局限,無法提供更高的數據傳輸率。而SATA以其傳輸速率快、支持熱插拔、可靠的數據傳輸等特點,得到各行業(yè)越來越多的支持。 目前市場上的SATA IP CORE都是面向IC設計的,不利于在FPGA上集成,因此,本文在Xilinx公司的Virtex5系列FPGA上實現SATAⅡ協議,對SATA技術的推廣、國內邏輯IP核的發(fā)展都有一定的意義。 本文將SATAⅡ協議的FPGA實現劃分成物理層、鏈路層、傳輸層和應用層四個模塊。提出了物理層串行收/發(fā)器設計以及物理鏈路初始化方案。分析了鏈路層模塊結構,給出了作為SATAⅡ鏈路層核心的狀態(tài)機的設計。為滿足SATAⅡ協議3.0Gbps的速率,采用擴大數據處理位寬的方法,設計完成了鏈路層的16b/20b編碼模塊,同時為提高數據傳輸可靠性和信號的穩(wěn)定性,分別實現了鏈路層CRC校驗模塊和并行擾碼模塊。在描述協議傳輸層的模塊結構的基礎上,給出了作為傳輸層核心的狀態(tài)機的設計,并以DMA DATA OUT命令的操作為例介紹了FIS在傳輸層中的處理過程。完成了命令層協議狀態(tài)機的設計,并實現了SATAⅡ新增功能NCQ技術,從而使得數據傳輸更加有效。最后為使本設計應用更加廣泛,設計了基于AHB總線的用戶接口。 本設計采用Verilog HDL語言對需要實現的電路進行描述,并使用Modelsim軟件仿真。仿真結果表明,本文設計的邏輯電路可靠穩(wěn)定,與SATAⅡ協議定義功能一致。