數據傳送

數據傳送

數據傳送,是指在數據源和數據宿之間傳送數據的過程,也稱數據通信。

基本介紹

  • 中文名:數據傳送
  • 也稱:數據通信
  • 器件選型:Xilinx公司
  • 系統軟體:嵌入式作業系統
一、數據傳送的整體設計,二、器件選型,三、系統軟體設計,3.1嵌入式作業系統,3.2基帶、頻帶和數字數據傳輸,3.3並行傳輸與串列傳輸,3.4異步傳輸和同步傳輸,3.5單工、半雙工和全雙工傳輸,3.6無線數據傳送業務,3.7驅動和應用程式的開發,四、數據傳送程式,五、程式清單,六、硬體設計,DSP TMS320C6416 HPI描述,S3C4510B與TMS320C6416的接口電路,

一、數據傳送的整體設計

綜合考慮到測試系統實時性和可靠性的要求,選擇乙太網口作為數據傳送匯流排變換器與上位機的數據轉發接口,以高速串口作為控制口,採用FPGA+DSP+ARM的架構作為實時信息處理平台。
數據傳送匯流排變換器的系統框圖如圖1所示。其中,FPGA作為數據預處理器,完成並行數據到串列數據的轉換等數據預處理任務;DSP讀取FPGA處理後的數據並完成數據壓縮的任務;ARM作為中央處理控制器,主要完成從DSP系統中讀取已經編碼好的數據並通過乙太網口完成與上位機的實時通信任務。上位機按照數據傳輸協定、產品的數據遙測協定解調出各類物理變數,記錄並存儲。測試人員通過上位機完成工作狀態的遠程控制與各種信息互動任務。在該系統中採用了FPGA+DSP+ARM的高端架構,但是衡量一個系統的整體性能不僅要看所使用的器件和所完成的功能,還要看各個器件之間的接口形式。在FPGA+DSP+ARM的信息處理平台上,三者之間的接口形式將決定整個系統的性能。為滿足實時的信號處理任務,在選擇DSP晶片時,不僅要考慮DSP晶片的處理速度,還要考慮DSP晶片與FPGA、ARM的接口能力,選擇帶有EMIF和HPI接口的DSP使其與FPGA、ARM無縫連線成為該系統設計的關鍵一環。

二、器件選型

在該數據傳送匯流排變換器中,FPGA選用Xilinx公司最新推出的低成本現場可程式門陣列Spartan-3E 系列中的XC3S500E。XC3S500E包含有20個Block RAM,每個RAM塊中的18 KB的模組存儲器,是完全同步、真正的雙端存儲器。用戶可獨立地從每個連線埠讀出或向每個連線埠寫入(但同一地址不能同時進行讀和寫)。另外,每個連線埠都有一個獨立的時鐘,對每個連線埠的數據寬度都可以獨立進行配置。
ARM晶片選用Samsung公司的S3C4510B。S3C4510B是基於乙太網套用系統的高性價比16/32 bit RISC微控制器,內含一個由ARM公司設計的16/32 bit ARM7TDMI RISC處理器核。除了ARM7TDMI核以外,S3C4510B還有許多重要的片內外圍功能模組,其中就有一個乙太網控制器,用於S3C4510B系統與其他設備的網路通信[1]。
DSP晶片選用TI公司的TMS320C6416。TMS320C6416是TI公司推出的高速定點DSP,它擁有處理能力強大的CPU、高達1 MB的RAM、豐富的外設接口。外設包括CPU訪問外圍設備提供無縫接口的靈活的外部存儲器接口EMIFA和EMIFB,一個使得DSP很容易通過PCI接口無縫連線到一個具有PCI功能的外部主CPU上的PCI接口,一個16/32 bit寬的異步並行接口HPI(和PCI共用相同的引腳),一個提供64 bit數據通道訪問的增強型EDMA等。其高速的處理速度滿足系統的實時性要求,並能實現與多種外設無縫連線。

三、系統軟體設計

3.1嵌入式作業系統

在該數據傳送匯流排變換器中,實時數據壓縮的任務由DSP完成。ARM S3C4510B完成與PC之間的乙太網通信,其軟體實現所要求的實時性、可靠性和複雜性使得選擇一種帶有TCP/IP協定包的嵌入式實時作業系統成為必需,而μCLinux是一個帶有完整的TCP/IP協定的作業系統,在μCLinux中加入實時RT-Linux模組以滿足對嵌入式作業系統的實時性要求。

3.2基帶、頻帶和數字數據傳輸

①基帶傳輸是指由數據終端設備(DTE)送出的二進制“1”或“0”的電信號直接送到電路的傳輸方式。基帶信號未經調製,可以經過碼形變換(或波形變換)進行驅動後直接傳輸。基帶信號的特點是頻譜中含有直流、低頻和高頻分量,隨著頻率升高,其幅度相應減小,最後趨於零。基帶傳輸多用在短距離的數據傳輸中,如近程計算機間數據通信或區域網路中用雙絞線同軸電纜為介質的數據傳輸。②大多數傳輸信道是帶通型特性,基帶信號通不過。採用調製方法把基帶信號調製到信道頻寬範圍內進行傳輸,接收端通過解調方法再還原出基帶信號的方式,稱為頻帶傳輸。這種方式可實現遠距離的數據通信,例如利用電話網可實現全國或全球範圍的數據通信。③數字數據傳輸是利用數字話路傳輸數據信號的一種方式。例如,利用PCM(脈衝編碼調製)數字電話通路,每一個話路可以傳輸64kbit/s的數據信號,不需要調製,效率高,傳輸質量好,是數據通信很好的一種傳輸方式。

3.3並行傳輸與串列傳輸

①並行傳輸是構成字元的二進制代碼在並行信道上同時傳輸的方式。例如,8單位代碼字元要用8條信道並行同時傳輸,一次傳一個字元,收、發雙方不存在同步問題,速度快,但信道多、投資大,數據傳輸中很少採用。②串列傳輸是構成二進制代碼在一條信道上以位(碼 元)為單位,按時間順序逐位傳輸的方式。按位傳送,逐位接收,同時還要確認字元,所以要採取同步措施。速度雖慢,但只需一條傳輸信道,投資小,易於實現,是數據傳輸採用的主要傳輸方式。

3.4異步傳輸和同步傳輸

①異步傳輸是字元同步傳輸的方式,又稱起止式同步。當傳送一個字元代碼時,字元前面要加一個“起”信號,長度為1個碼元寬,極性為“0”,即空號極性;而在發完一個字元後面加一個“止”信號,長度為1,1.5(國際2號代碼時用)或2個碼元寬,極性為“1”,即傳號極性。接收端通過檢測起、止信號,即可區分出所傳輸的字元。字元可以連續傳送,也可單獨傳送,不傳送字元時,連續傳送止信號。每一個字元起始時刻可以是任意的,一個字元內碼元長度是相等的,接收端通過止信號到起信號的跳變(“1” “0”) 來檢測一個新字元的開始。該方式簡單,收、發雙方時鐘信號不需要精確同步。缺點是增加起、止信號,效率低,使用於低速數據傳輸中。
②同步傳輸是位(碼元)同步傳輸方式。該方式必須在收、發雙方建立精確的位定時信號,以便正確區分每位數據信號。在傳輸中,數據要分成組(或稱幀),一幀含多個字元代碼或多個獨立碼元。在傳送數據前,在每幀開始必須加上規定的幀同步碼元序列,接收端檢測出該序列標誌後,確定幀的開始,建立雙方同步。接收端DCE從接收序列中提取位定時信號,從而達到位(碼元)同步。同步傳輸不加起、止信號,傳輸效率高,使用於2 400 bit/s以上數據傳輸,但技術比較複雜。

3.5單工、半雙工和全雙工傳輸

單工傳輸指數據只能按單一方向傳送和接收;半雙工傳輸指數據可以在兩個方向傳輸但不能同時進行,即交替收、發;全雙工傳輸指數據可以在兩個方向同時傳輸,即同時收和發。一般四線線路為全雙工數據傳輸,二線線路可實現全雙工數據傳輸。

3.6無線數據傳送業務

無線數據傳送業務是指前述基礎電信業務條目中未包括的、以無線方式提供的端到端數據傳送業務,該業務可提供漫遊服務,一般為區域性。
提供該類業務的系統包括蜂窩數據分組數據(CDPD) 、 PLANET 、 NEXNET 、 Mobitex 等系統。雙向尋呼屬無線數據傳送業務的一種套用。
無線數據傳送業務經營者必須自己組建無線數據傳送網,無國內通信設施服務業務經營權的經營者不得建設國內傳輸網路設施,必須租用具有相應經營權運營商的傳輸設施組建業務網路。
數據傳送速率是指MO磁光碟機與主機之間傳輸數據的速度,單位為MB/s。數據傳送速率是衡量MO磁光碟機性能的重要參數。越高的數據傳送速率意味著該MO磁光碟機的性能也就越高。數據傳送速率又可分為脈衝傳輸率和持續傳輸率,其中,持續傳輸率才真正反映了該MO磁光碟機的實際性能。目前主流產品的數據傳送速率在4MB/s-10MB/s之間。

3.7驅動和應用程式的開發

基於μCLinux作業系統的硬體驅動和應用程式的開發是在交叉編譯環境中進行的,首先在PC機上開發,然後移植到目標機上進行調試並最終固化到目標機上。所開發的硬體驅動有乙太網卡控制器驅動、LCD驅動、HPI驅動等驅動程式。系統軟體結構如圖4所示.
μClinux作業系統上運行三個任務:讀取壓縮數據、通過乙太網傳送數據、接收和執行來自遠端PC機的命令。其中讀取DSP壓縮數據任務對實時性有要求,它通過中斷處理程式來實現,而其他的兩個任務則通過用戶進程來實現。乙太網傳送數據的任務和讀取壓縮數據的任務共享一個緩衝區,通過ioctl函式在其間傳遞緩衝區雙向鍊表的地址。所以需要為數據處理模組上的通信接口HPI註冊一個驅動程式,註冊驅動程式的函式是:
result=register_chrdev(HPI_MAJOR,"hpi",&hpi_fops)
驅動程式的主要結構如下:
struct file_operations hpi_fops=
{
owner: THIS MODULE,
open: hpi_open,
read: hpi_read,
write: hpi_write,
ioctl: hpi_ioctl,
mmap:hpi_mmap,
release:hpi_release,
};
HPI驅動程式編寫完成後,將驅動程式原始碼置於../linux-2.4.x/driver/char目錄下,同時修改同級目錄下的Makefile,在../linux-2.4.x/driver/char/Makefile中加入Obj_y +=hpi.o
同時,為了能夠在?滋Clinux啟動時自動初始化此字元設備,還需要修改 ../linux-2.4.x/driver/char/men.c檔案,在其中加入:
(1)新添加的字元驅動程式初始化函式聲明:extern void hpi_init(void);
(2)在字元設備統一初始化函式int _init chr_dev_init(void)中調用新設備的初始化函式,需要在int _init chr_dev_init(void)中加入語句:hpi_init();
在函式int _init chr_dev_init(void)中,字元設備的初始化函式將被統一調用,並完成字元驅動file_operations數據結構的註冊,初始化之後就可以使用HPI字元設備了。
本文所設計數據傳送匯流排變換器,不僅解決了由於傳輸距離遠而引起的信號畸變問題,而且滿足了信息傳遞的實時性要求,同時具有網關功能和嵌入式Web功能,能確保系統安全接入Internet。

四、數據傳送程式

orihi equ 10H ;源高8位地址
ORILO EQU 00H ;源8低位地址
TARHI EQU 20H ;目的高8位地址
TARLO EQU 00H ;目的低8位地址
CONHI EQU 01H ;位元組數高8位
CONLO EQU 0FFH ;位元組數地8位
ORG 0000H
LJMP MAIN
MAIN:
setb rs0
setb rs1
MOV R2, #ORIHI
MOV R3, #ORILO
MOV R4, #TARHI
MOV R5, #TARLO
MOV R6, #CONHI
MOV R7, #CONLO
MOV DPH, R2;將源的高位地址放入DPTR高位
MOV DPL, R3;將源的低位地址放入DPTR低位
inc auxr1;轉換成目的指針
MOV DPH,R4;將目的的高位地址放入DPTR高位
MOV DPL,R5;將目的的低位地址放入DPTR低位
inc auxr1;轉換回源指針

五、程式清單

ORG 0000H
MOV R2, #10H;初始化程式控制變數
MOV 30H, #00H
MOV R0, #30H
MOV A, #00H
LOOP1: MOV @R0, A
INC R0
INC A
DJNZ R2, LOOP1;循環是否結束是往下繼續,否則循環
MOV R2, #10H;初始化循環控制變數
MOV R0, #30H;取地址30H
MOV 40H, #00H
MOV R1, #40H;取地址40H
LOOP2: MOV A, @R0
MOV @R1, A;數據傳送
INC R1
INC R0
DJNZ R2, LOOP2;循環是否結束是往下繼續,否則循環
MOV R2, #10H;初始化循環控制量
MOV R0, #40H
MOV DPTR, #4800H;取外部地址4800H指針變數
LOOP3: MOV A, @R0
MOVX @DPTR,A;數據傳送
INC R0
INC DPTR;修改指針變數
DJNZ R2, LOOP3;循環是否結束是往下繼續,否則循環
MOV R2, #10H;初始化循環控制量
MOV R1, #00H
MOV DPTR, #4800H;取外部地址4800H給指針變數
LOOP4: MOVX A, @DPTR
PUSH DPH;指針變數高位壓人堆疊
PUSH DPL;指針變數低位壓人堆疊
MOV DPH, #58H;取外部5800H高八位地址送給指針變數高八位
MOV DPL, R1;修改指針變數低八位
MOVX @DPTR,A;數據傳送
POP DPL;彈出指針變數低位
POP DPH;彈出指針變數高位
INC DPTR;修改指針變數
INC R1
DJNZ R2, LOOP4;循環是否結束是往下繼續,否則循環
MOV R2, #10H;初始化循環控制量
MOV DPTR, #5800H;取外部地址5800H給指針變數
MOV R0, #50H;去片內地址50H
LOOP5: MOVX A, @DPTR
MOV @R0, A;數據傳送
INC R0;
INC DPTR;
DJNZ R2, LOOP5;循環是否結束是往下繼續,否則循環
END

六、硬體設計

DSP TMS320C6416 HPI描述

TMS320C6416集成有一個16/32 bit寬主機接口HPI,HPI通過復位時的自舉和器件配置引腳HD5選擇採用HPI16還是HPI32。HPI具有兩條地址線HCNTRL[1:0],負責對HPI的內部暫存器進行定址。HPI只有3個32 bit內部暫存器,分別是控制暫存器HPIC、地址暫存器HPIA和數據暫存器HPID。用戶只需對上述3個暫存器進行相應的讀寫操作,就能完成對DSP記憶體空間的訪問[2]。

S3C4510B與TMS320C6416的接口電路

由於S3C4510B中沒有完全符合TMS320C6416 HPI接口時序的外部接口可以直接使用,因此選用S3C4510B中時序最接近HPI接口時序的外部I/O接口與TMS320-
C6416進行連線。TMS320C6416與S3C4510B接口電路如圖2所示。TMS320C6416與S3C4510B通過單獨的32 bit數據線HD0~HD31和8條控制線進行連線。S3C4510B通過HPI接口訪問DSP內部的RAM以及其他外部資源。在整個ARM微處理器與DSP晶片通過HPI接口通信和數據交換的過程中,除了中斷ARM和清除ARM發過來的中斷需要DSP本身參與外,其他操作DSP都處於被動的地位,幾乎不用進行其他的操作。所以對於ARM來說,DSP系統單元就相當於一片外接的SDRAM。
在TMS320C6416中,HPI、GP[15:9]、PCI、EEPROM、McBSP2共用了一組引腳,DSP在復位時通過鎖存PCI_EN和McBSP2_EN引腳的值來選擇使用何種外設。在該系統中,將這兩個使能引腳都拉低。

相關詞條

熱門詞條

聯絡我們