基於DSP的上網方案的軟硬體設計與實現

2020-12-08 電子產品世界

摘要: 介紹了TMS320VC33晶片與RTL8019網卡的硬體接口電路的設計以及網卡驅動程序的開發,並將TCP/IP協議嵌入到TMS320VC33晶片中;討論了TCP/IP協議簇的分層次實現,並根據應用的需要對DSP中實現的TCP/IP協議進行了必要的簡化,實現了DSP的上網功能。

本文引用地址:http://www.eepw.com.cn/article/88279.htm

關鍵詞: TCP/IP協議  DSP  嵌入式系統

  隨著現代網絡技術的發展,嵌入式系統單片機、DSP等系統對接入網絡的需求日益增加,例如具有遠程抄表功能的電錶系統、可以進行遠程控制的信息家電系統等。本文採用TI公司的TMS320VC33 DSP晶片設計與Realtek公司的RTL8019網卡的硬體接口電路,並在DSP中用軟體實現TCP/IP協議,使DSP晶片具備上網功能,從而可以用計算機通過網卡與DSP電路板進行大量數據交換並對其進行控制。

  1 硬體設計

  DSP與網卡的硬體接口電路圖如圖1所示。

  DSP的數據總線低16位接ISA網卡的16位數據線,ISA網卡的IOCS16線接高電平,設置網卡為16位的模式。

  網卡共有20根地址線。將A7~A8、A10~A19接地,A0~A6和A9分別接DSP的A0~A7,用到的網卡地址為0240H~025FH,映射到DSP的Page3空間,地址映射為C000C0H~C000DFH。

  DSP的Reset信號用於復位網卡,由於DSP的Reset信號低有效,而網卡的Reset信號高有效,故中間應接非門。

  DSP的Page3和R/W信號用於選通網卡的讀寫信號IOR、IOW,實現的邏輯關係如圖2所示。



  IRQ9是網卡的中斷9,通過非門後接DSP的INT1引腳。

  RTL8019網卡有三種工作方式:

  第一種為跳線方式,網卡的I/O和中斷由跳線決定;

  第二種為即插即用方式,由軟體進行自動配置plug and play;

  第三種為免跳線方式,網卡的I/O和中斷由外接的93C46裡的內容決定。

  計算機上一般實現的是即插即用方式,為了降低軟體編程的複雜度,將網卡設置為跳線方式。

  上述所有的解碼邏輯都在EPM7128中實現。

  74ALVC164245是總線驅動晶片,可實現3.3V到5V的電平轉換。由於TMS320VC33和EPM7128是3.3V的器件,而ISA總線是5V的,所以信號線不能直接連接,需要通過74ALVC164245進行電平轉換和隔離。

  2 軟體設計

  2.1 網卡硬體驅動程序的設計

  網卡驅動程序主要包括以下幾部分:

  (1)NIC的初始化

  NIC是網絡接口控制晶片,它負責網絡上數據的接收和發送。為了能夠使NIC啟動並處於準備接收或準備發送數據的狀態,必須對相關的寄存器進行初始化。這些寄存器包括CR、DCR、RBCR、PSTART、PSTOP、ISR、IMR、PAR0~PAR5、MAR0~MAR7、CURR、TCR、RCR等。

  (2)中斷服務程序

  中斷服務程序一般完成兩項任務:一是設置中斷標誌,以使相關程序能以此發現發生了中斷;二是取得中斷狀態寄存器的值,並將引起中斷的具體原因提交給相應的程序,這一過程也是通過設置中斷原因標誌完成的。需要注意的是,中斷服務程序開始的時候要保護中斷現場,待程序處理完成後要恢復中斷現場;中斷服務程序應儘可能短小,以便在儘可能短的時間內執行完成,因此需要將一些不必要的工作交給其它程序來完成。

  (3)幀發送程序

  在網絡中,幀傳輸的過程是:發送方將待發送的數據按幀格式要求封裝成幀,然後通過網卡將幀發送到網絡的傳輸線上;接收方根據接收到的幀的目的地址確定是否將該幀提交給上層應用程式。幀的發送是指將待發送的數據以幀的形式發送到網絡傳輸線上,因此,幀的發送過程應該包括以下幾個步驟:

  ①裝幀;

  ②將幀送入NIC的發送緩衝區;

  ③初始化發送控制寄存器;

  ④啟動NIC將該幀發送到網絡傳輸線上。

  (4)幀接收程序

  幀接收是指將網絡上的數據幀接收並緩存於網卡的接收緩衝環中,然後由主機程序將緩存於接收緩衝環的幀讀走並存入內存中以備程序使用。從中可以看出,幀的接收過程分成兩步:

  ①第一步由NIC通過本地DMA將幀存入接收緩衝環;

  ②第二步是通過遠程DMA並在主機的配合下將接收緩衝環中的幀讀入內存。

  2.2 TCP/IP協議的實現

  2.2.1 DSP中與PC機中實現TCP/IP協議的不同

  TCP/IP協議最先是在UNIX系統中實現的,後來在LINUX、DOS和WINDOWS系統中也實現了TCP/IP。但是,在UNIX上實現的TCP/IP協議的原始碼並不能直接移植到DSP上來,這是因為PC機和DSP存在著巨大的差異。

  PC機的運算速度非常快,一般都有一個多任務的作業系統,可以多任務並行執行,通過硬中斷與軟中斷、消息隊列和各種插口實現TCP/IP各協議層之間的通信和整個網絡的通信。而DSP運行速度相對較慢,缺乏多任務作業系統的平臺,只能通過順序執行加硬體中斷的方式來實現,並且因其還要同時執行數據採集、串口中斷等任務,所以中斷程序應儘量短,只完成設置各種狀態的標誌位,而將相對較慢的網絡數據包的處理放在主程序中執行,以減少各種任務之間的衝突。

  PC機的內存非常大,現在一般都可達到32~128M的存儲容量,可以動態地分配和釋放內存,很容易實現存儲器緩存mbuf、網絡控制塊ncb等鏈狀結構,且可隨意增刪;同時能維持多條網絡連接,由於計算機處理速度快,幾乎不用考慮緩衝區溢出的問題。而DSP內部RAM一般只有十幾K,加上外部擴展的RAM也只能達到幾十K的容量,一個最大的乙太網數據包就有1.5K左右,如果也按PC機的內存管理方式和數據結構,使用mbuf鏈,RAM肯定不夠用,因此只能在RAM中分配一個固定的1514位元組的區段來存放接收到的乙太網數據包,接收一包處理一包。

  PC機中TCP/IP協議都是分層次實現的,相互之間都是通過參數傳遞進行聯繫,這樣有利於提高程序的模塊化和獨立性。而在DSP中,由於參數傳遞會佔用過多的程序空間,且降低DSP的執行速度,所以應儘量減少參數傳遞,轉而使用全局變量和外部變量等來達到值的傳遞,因此各程序間的依賴程度大,往往會共享某一些變量和數據。

  PC機上實現了比較完整的TCP/IP協議。而在DSP中,由於運算速度和內存的限制,不可能支持所有的協議,一般只實現需要的部分,不需要的協議一概都不支持;而且即使需要的協議也不用像在PC機上實現那麼複雜,可以根據硬體的具體情況和實現的需求進行必要的簡化。

  2.2.2 TCP/IP協議的具體實現

  TCP/IP協議是一個協議簇,包含了很多協議,在DSP上實現的所有協議如圖3所示,通常可分為四層(不包括物理層)。

  根據DSP的結構特點和所需要實現的功能,在DSP中實現了ARP(地址解析協議)、IP(網際協議)、ICMP(Internet控制報文協議)、UDP(用戶數據報協議)和TCP(傳輸控制協議),並對它們進行了簡化。

  在鏈路層中實現了ARP。每種網絡都有自己的尋址機制,乙太網是通過乙太網地址即通常所說的網卡硬體地址MAC進行尋址的,每個網卡出廠時都有一個唯一的MAC地址。IP位址則僅僅是對於TCP/IP協議簇有意義的地址,是一種虛擬地址。當賦予IP位址的IP包要在乙太網中傳播時,必須將IP位址轉化為乙太網地址才能進行正確的傳輸。ARP協議就是將32位的IP位址動態地映射為48位的乙太網地址,從而保證網絡的正確傳輸。ARP協議由兩個文件arpin.c和arpout.c實現。arpin.c負責接收網絡上廣播的arp包,判斷arp包的類型是網絡上其它機子的請求包還是返回本機的響應包,判斷其合法性並進行相應的處理;arpout.c負責主機向網絡發送數據報時發送arp請求包以及被arpin.c調用響應收到的arp請求包。

  在網絡層中實現了IP和ICMP。IP協議是TCP/IP協議簇中最核心的協議,它提供無連接的數據報傳送服務,所有上層協議都要以IP數據包格式傳輸。IP協議由兩個文件ipin.c和ipout.c實現。ipin.c負責接收IP數據包,收到IP包後,首先判斷其版本號、數據長度、目的地址、檢驗和是否正確,再根據IP首部的協議類型欄位的值交給相應的上層協議處理;ipout.c負責發送IP數據包,接收上層協議傳遞下來的數據,加上20位元組的IP首部,正確設置源IP位址和目的IP位址、協議類型,計算檢驗和,交給下面的鏈路層發送。PC機上的IP數據包,當它的長度超過網絡的MTU時,允許對它分段;在DSP中,則不支持IP數據包分段,也不支持IP選項欄位。ICMP協議負責傳遞差錯報文以及其它需要注意的信息,且由ICMP首部8位的類型欄位和8位的代碼欄位決定信息的種類。在DSP中只實現了對回顯請求(類型代碼為80)報文的處理,從IP層收到ICMP包後,判斷其類型代碼段是否為80。如果是,將這兩個欄位設置為00(回顯應答),計算檢驗和,再交給IP層發送;如果不是,則予以丟棄。從而實現了對ping功能的支持。

  在運輸層實現了UDP和TCP。

  UDP協議是一種面向無連接的不可靠的協議,用兩個文件udpin.c和udpout.c來實現。udpin.c實現對udp包輸入的處理,判斷其埠號、檢驗和是否正確,正確則將其數據交給相應埠的應用程式,不正確則丟棄;udpout.c實現對udp包輸出的處理,從應用程式接收數據,設置相應的源埠號和目的埠號,再交給IP層發送。值得注意的是,計算UDP包的檢驗和與計算IP包的檢驗和是不一樣的,IP包的檢驗和只覆蓋了IP包的首部,而UDP包的檢驗和則覆蓋了UDP包的首部和所有的數據。UDP包計算檢驗和時還引入了一個12位元組的偽首部,包括4位元組的源IP位址、4位元組的目的IP位址、1位元組的零段、1位元組的協議段和兩字節的檢驗和,其目的是讓UDP兩次檢查數據是否正確地到達了目的地。

  TCP協議與UDP協議雖然同是運輸層協議,但是它提供一種面向連接的可靠的字節流服務。TCP協議是所有協議中最複雜、也是最難實現的一塊,主要由tcpin.c、tcpout.c、tcptimer.c和tcpstatem.c四個文件分塊實現,並根據具體應用的需要進行簡化。TCP的控制塊tcb用結構體來實現,每一個tcb包含一條TCP連接的所有控制和狀態信息,全部的tcb形成了一個雙向鍊表,有利於在所有TCP連接中進行搜索。tcptimer.c負責管理TCP協議中的各種狀態信息,它內含前向後向指針,使之形成定時器超時,PC機上的TCP協議包含快慢兩個定時器,這裡僅僅實現了一個500ms的慢速定時器,因為沒有快速定時器,所以不支持ACK報文延遲,收到一幀即立即發送ACK;tcpstatem.c是TCP的狀態機函數,根據TCP連接所處的不同狀態以及發生的事件來決定TCP連接的狀態變遷;tcpout.c負責tcp報文的發送,典型的發送過程是當接收到上層應用程式的數據時,首先發送SYN幀,與目標節點三次握手建立連接,之後加上TCP首部,交給下層IP模塊發送,並通過重傳定時器實現超時重發、持續定時器發送窗口探測幀等功能,待所有數據發送完畢並得到確認後發送FIN幀,通過四次握手關閉連接,tcpout.c還可在不同狀態和事件下被其它程序調用發送ACK幀、RST幀等其它TCP報文;tcpin.c負責接收從下層IP模塊接收到的TCP數據包,並根據TCP連接的狀態信息以及TCP首部的各個標誌位進行分支處理,將數據交給對應埠的上層應用程式,並調用其它函數實現對TCP包的響應和狀態變遷。在PC機上往往可以同時維護多條TCP連接;但在DSP上,由於DSP速度和RAM容量的限制,只支持一條TCP連接;這樣大大簡化了程序的複雜度,同時也滿足了實際需要,如果今後有需要,還可以進行擴展。

  綜上所述,TCP/IP協議的具體處理流程如圖4所示。

  本文通過DSP與網卡的硬體接口的設計及編程,使DSP實現了基於乙太網的TCP/IP通信,從而使DSP可以通過網線進行聯網,並可以實時地與計算機進行通信,交換大量的數據和控制信息。本文所介紹的技術已經在作者參加的國家「973」項目「複雜自然環境時空定量信息的獲取與融合處理的理論與應用」的硬體設計中得到應用,並運行良好。

  參考文獻

  1 W. Richard Stevens著,陸雪瑩等譯.TCP/IP詳解二:實現. 北京:機械工業出版社,2000

  2 RTL8019晶片技術資料. Realtek公司, 1995

  3 TMS320VC33晶片技術資料. Ti公司, 2001

  4 劉國福,張 屺,王光明. 基於DSP的10Mbit/s共享乙太網絡的設計. 電子技術,2001(7):5~7

  5 李 明,康靜秋,賈智平. 嵌入式TCP/IP協議棧的研究與開發. 計算機工程與應用, 2002(16)

相關焦點

  • 基於DSP的數字掃描探針顯微鏡的硬體解決方案研究
    spm系統方案及其缺陷 現有的spm系統主要基於pci形式,該方案中,計算機通過pci卡和spm控制板保持通信,整個電子控制系統的流程圖如圖1所示。本文引用地址:http://www.eepw.com.cn/article/21555.htm
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 系統硬體分為語音信號的採集和播放,基於dsp的語音識別,fpga動作指令控制、步進電機及其驅動、dsp外接快閃記憶體晶片,jtag口仿真調試和鍵盤控制幾個部分。
  • 基於小波變換與DSP的實時音頻視頻處理系統
    本文介紹一種基於adv611,ct8021晶片同時結合ti公司的tms320c6201晶片實現音/視頻實時處理系統。在該實時系統中,dsp晶片作為控制核心、一方面要管理adv611,ct8021,存儲器和通信接口,另一方面要對adv611的圖像壓縮效果進行調解,對數據速率實時控制。系統實現方案原理圖如圖1所示。
  • 第六講 DSP在雷達信號處理中的應用
    dsp內部的硬體乘法器、地址產生器(反轉尋址)和多處理內核,保證dsp在相同條件下,完成fft算法的速度比通用微處理器要快2到3個數量級。因此,在雷達信號處理器中,大量採用dsp完成fft/ifft,以實現信號的時-頻域轉換、回波頻譜分析、頻域數字脈衝壓縮等。 fir濾波器是雷達信號處理中常用設計之一。
  • 基於Nios的FFT算法軟硬體協同設計
    摘要:在深入研究Nios自定製指令的軟硬體接口的基礎上,利用Matlab/DSP Builder建立快速傅立葉變換FFT核心運算指令基本模型,然後用Altera公司提供的Singacompiler工具對其進行編譯,產生 QuartusⅡ能夠識別的VHDL
  • 數字示波器的軟硬體設計方案及經典應用案例匯總
    還有一些示波器可以提供存儲,實現對波形的保存和處理。數字示波器是設計、製造和維修電子設備不可或缺的工具。隨著科技及市場需求的快速發展,工程師們需要最好的工具,迅速準確地解決面臨的測量挑戰。作為工程師的眼睛,數字示波器在迎接當前棘手的測量挑戰中至關重要。
  • 基於DSP的自適應光纖/千兆網接口設計
    文中詳細介紹了該系統的軟硬體設計方法。本文引用地址:http://www.eepw.com.cn/article/201612/332427.htm  引言  遵循IEEE802.3標準的網絡通信已經應用到較廣泛的場合。其具有連接方便、即插即用的特點。
  • 12種逆變器的設計方案,包含完整軟硬體設計
    本文引用地址:http://www.eepw.com.cn/article/201706/347071.htm本文為大家介紹幾種逆變器的設計方案,包括車載逆變器、光伏逆變器等。基於DSP控制的全數字UPS逆變器設計本文提出了一種新型的基於電感電流模式的雙環數字控制器, 相對於模擬控制技術,基於DSP的全數字控制技術大大簡化了控制電路的設計,增加了控制的靈活性。同時採用了數字無差拍控制技術和延時半個開關周期的採樣控制方法,逆變器的動態特性大大改善。
  • 基於Spartan-3 FPGA的DSP功能實現方案
    雖然Spartan-3系列器件的價位可能較低,但它們同樣具有DSP設計所需的平臺特性。這些平臺特性能夠以較高的面積利用率實現信號處理功能,使設計達到更低價位點。  Spartan-3器件用作協處理器或預/後處理器是非常理想的,它們將運算密集型功能從可編程DSP上卸載下來以增強系統性能。
  • 基於SPWM的逆變器、變頻電源及變頻器等的設計方案匯總
    本文為大家介紹的就是基於SPWM設計的變頻電源、變頻器及逆變電源的設計方案。本文引用地址:http://www.eepw.com.cn/article/264229.htm  基於PIC單片機的SPWM控制技術  本文採用軟硬體結合設計的方法,利用面積等效法,並且基於PIC單片機實現對試驗逆變系統的SPWM控制。
  • 基於ADuC812微控制器實現環境監測下位機的軟硬體電路設計
    基於ADuC812微控制器實現環境監測下位機的軟硬體電路設計 孫曉靖,仇潤鶴,陸 發表於 2020-12-03 10:38:26   作者:孫曉靖 , 仇潤鶴 ,
  • 基於深信服HCI&SDS的英特爾®精選解決方案,實現性能無憂,數據增值
    首頁 > 傳媒 > 關鍵詞 > 深信服最新資訊 > 正文 基於深信服HCI&SDS的英特爾®精選解決方案,實現性能無憂,數據增值
  • 基於FPGA的永磁同步電機控制器設計
    摘要:提出一種基於FPGA的永磁同步電機控制器的設計方案,該設計可應用於具有高動態性能要求的永磁同步電機伺服控制系統。為提高伺服控制系統的實時性,簡化電路及節省成本,該系統設計採用Ahera公司生產的CycloneIII EP3C25Q240C8型FPGA器件實現電機控制器。嵌入NiosⅡCPU軟核配合片內硬體乘法器及可編程邏輯門陣列,實現軟硬體協同工作。通過QuartusⅡ軟體自帶的SignalTaplI嵌入式邏輯分析儀進行板上調試驗證,得到帶有死區輸出的PWM波形。
  • 基於Otsu分割算法和Nios II軟硬體實現實現實時目標成像跟蹤研究
    打開APP 基於Otsu分割算法和Nios II軟硬體實現實現實時目標成像跟蹤研究 李堅,王新賽, 賀明 發表於 2021-01-15 10:01:33
  • 基於DSP與FPGA的機器人聲控系統設計方案
    2 系統硬體總體設計  系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。     系統硬體分為語音信號的採集和播放,基於DSP的語音識別,FPGA動作指令控制、步進電機及其驅動、DSP外接快閃記憶體晶片,JTAG口仿真調試和鍵盤控制幾個部分。
  • 鏈客Talk AMA 回顧|軟硬體公鏈方案突破區塊鏈性能困局
    11月18日,「鏈客Talk」邀請 HPB芯鏈合伙人 Jason 來到鏈客直播間,給大家分享了「軟硬體公鏈方案突破區塊鏈性能困局」這一話題。這個概念最早由巴比特創始人長鋏提出來,當前仍然沒有一個完美的解決方案能夠破解不可能三角問題。HPB的設計初衷就是希望能夠藉助軟硬體相結合的公鏈解決方案,突破區塊鏈性能困局,最大可能地突破「不可能三角問題」的限制。值得欣慰的是,實踐證明軟硬體相結合的解決方案具有很大的可行性與發展潛力,能夠大幅提升基礎公鏈性能,同時在去中心化和安全性方面,做到了很好的兼顧。
  • 一種基於Arduino的光電編碼器檢測儀設計方案
    0 引言本文引用地址:http://www.eepw.com.cn/article/256786.htm  Arduino是一款基於單片機系統的電子產品開發平臺,它的軟硬體系統都具有高度的模塊化,而且軟體系統是完全開源的。
  • 沈海寅:奇點汽車實現軟硬體一體化
    、搭建頂尖研發團隊;北京智能系統研發中心主導軟硬體一體化車載智能系統、車聯網的研發工作。選擇軟硬體一體化自研 提升用戶體驗不久前,奇點汽車公布了其核心供應商列表,從中可看出,奇點汽車在車規級智能駕駛艙系統、自動駕駛系統等領域均選擇了一條不同於其他汽車的路線——軟硬體一體化自研自供。為何硬體也選擇自研自供?
  • 基於模式的SoC設計方法研究
    因此,本文的思路是將軟體工程中應用最為廣泛的面向對象技術引入到SoC設計當中。  設計模式是面向對象的精髓,在軟體中已經得到了廣泛的運用,在SoC設計中使用設計模式,可以降低軟硬體開發之間的鴻溝,對於軟硬體協同設計有很大的幫助,使系統得到更大的可伸縮性。
  • 星雲互聯與宸芯科技聯合打造全棧式V2X軟硬體量產解決方案
    雙方將發揮各自優勢,在宸芯科技車規級C-V2X模組產品CX7101的基礎上,集成星雲互聯C-V2X國標協議棧CWAVE II,聯合推出面向量產的全棧式軟硬體一體化解決方案CX7101N。星雲互聯將攜手宸芯科技在未來5年內實現CX7101N應用超200萬套。CX7101N模組的問世將顯著降低C-V2X通信終端產品的開發門檻,加快產品上市速度,為企業降本增效提供可能。