本發明涉及計算機技術領域,具體的說,涉及一種實驗裝置及實驗系統。
背景技術:
目前國內的計算機硬件課程實驗設備的發展趨勢是集中化管理,即采用服務器集中管理實驗設備,在這種發展趨勢下各高校都有自己的解決方法,一部分使用串口作為通信接口,但是這種使用串口的方式傳輸速度成為了瓶頸;另一部分使用USB接口,但是由于USB接口耗電量大以及傳輸距離的限制一臺服務器只能管理很少的實驗設備;其與的部分也是使用其他種類的慢速接口,究其原因現有的設備沒有處理器來處理高速數據,只能通過可編程器件模擬低速設備。
因此,亟需一種能夠解決現有的實驗設備與實驗服務器之間傳輸速率低的實驗裝置。
技術實現要素:
本發明的目的在于提供一種實驗裝置及實驗系統,以解決現有的實驗設備與實驗服務器之間傳輸速率低的技術問題。
本發明提供一種實驗裝置,該裝置包括:
實驗單元,其用于寫入實驗代碼進行實驗,并與服務器進行實驗過程中產生的網絡數據的通信;
通信單元,其用于接收服務器的下發的實驗控制數據并發送給所述實驗單元,實現服務器對于實驗單元的控制,并在服務器與所述試驗單元之間進行實驗數據的傳輸。
所述通信單元中設置有高速網口,所述通信單元通過所述高速網口與服務器進行所述實驗控制數據和實驗數據的傳輸。
所述實驗單元中設置有實驗網口,所述實驗單元通過所述實驗網口與所述服務器進行實驗過程中產生的網絡數據的通信。
所述實驗單元與所述通信單元通過高速總線進行所述實驗控制數據和實驗數據的傳輸。
所述通信單元和所述實驗單元通過網線接口或背板連接器與服務器連接。
本發明還提供一種實驗系統,該系統包括:
多個所述的實驗裝置;
服務器;
所述通信單元與服務器進行實驗控制數據和實驗數據的通信,構成控制網絡,所述實驗單元與服務器進行實驗過程中產生的網絡數據的通信,構成實驗網絡。
所述控制網絡通過所述服務器監控所述實驗網絡,并向所述實驗網絡中發送數據和/或從所述實驗網絡中采集數據。
本發明提供的實驗裝置及實驗系統能夠實現服務器和實驗設備之間的高速數據交換和管理,使用了高速系統總線與下游實驗設備通信,配合100M網口使得數據傳輸速度有了極大的提高。實驗裝置硬件結構包括嵌入式解決方案(arm9處理器、內存、nandflash、串口、USB、wifi、網口、觸摸屏),控制FPGA、實驗FPGA、實驗網口以及用于支持實驗的各類實驗接口。本發明還提供了基于以上硬件基礎設計開發的服務器實驗數據高速交換與控制協議、高速系統總線驅動、控制FPGA橋接邏輯以及雙網絡結構。
本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分的從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在說明書、權利要求書以及附圖中所特別指出的結構來實現和獲得。
附圖說明
為了更清楚的說明本發明實施例中的技術方案,下面將對實施例描述中所需要的附圖做簡單的介紹:
圖1是本發明實施例提供的實驗裝置示意圖;
圖2是本發明實施例提供的實驗單元示意圖;
圖3是本發明實施例提供的實驗裝置使用示意圖;
圖4是本發明實施例提供的實驗系統示意圖;
圖5是本發明實施例提供的AHB總線從設備狀態機示意圖。
具體實施方式
以下將結合附圖及實施例來詳細說明本發明的實施方式,借此對本發明如何應用技術手段來解決技術問題,并達成技術效果的實現過程能充分理解并據以實施。需要說明的是,只要不構成沖突,本發明中的各個實施例以及各實施例中的各個特征可以相互結合,所形成的技術方案均在本發明的保護范圍之內。
本發明實施例提供一種實驗裝置,如圖1和圖3所示,該裝置包括:通信單元1、實驗單元2。實驗單元2用于寫入實驗代碼進行實驗,并與服務器進行實驗過程中產生的網絡數據的通信。通信單元1用于接收服務器的下發的實驗控制數據并發送給實驗單元,實現服務器對于實驗單元的控制,并在服務器與試驗單元之間進行實驗數據的傳輸。
在本發明的一種實施方式中,通信單元1的功能集成在ARM-CPU上,通信單元1中設置有高速網口,通信單元1通過高速網口與上游設備服務器進行實驗控制數據和實驗數據的通信,可選的,高速網口選擇百兆網口。ARM-CPU選擇的是三星公司的ARM9系列的S3C2440芯片,其主頻是400Mhz,這樣的性能完全可以滿足高速數據處理的需求。通過ARM-CPU與服務器通信,其傳輸速度不會成為實驗系統的瓶頸,為通過服務器遠程跨平臺控制實驗裝置提供了基礎硬件條件。
進一步的,如圖2和圖3所示實驗單元2包括:總線控制模塊7、實驗模塊3、存儲模塊4、實驗控制模塊5和解析模塊6。
其中,實驗模塊3用于學生寫入實驗代碼進行實驗,實驗模塊3為FPGA芯片,在本發明的具體應用中,將該FPGA芯片稱為實驗FPGA。實驗FPGA開放給學生由學生燒入實驗代碼完成實驗,實驗FPGA上還提供了常用的實驗接口LED、數碼管、串口等。實驗模塊3中設置有實驗網口,實驗模塊3通過實驗網口與服務器通信,搭建實驗網絡,該實驗網口是實驗網絡的接入口。
其中,串口提供了實驗FPGA的另一種接入方式。指示燈用于顯示實驗FPGA上的數據,讓實驗者了解目前數據的內容。數碼管在對于需要采用數碼管顯示的實驗中,進行數據顯示。手撥開關在需要手撥開關手動撥入數據的實驗中,供實驗者手動向實驗FPGA撥入數據。
本發明實施例提供的實驗裝置中,還包括wifi接口、USB接口、串口和液晶屏幕。wifi接口、USB接口、串口以及LCD控制器集成在ARM-CPU中,共同構成嵌入式解決方案,使得實驗裝置可以通過多種方式接入,并且LCD控制器最高支持4K色的STN和16M色的TFT,包括一個LCD DMA,可以給學生一個清晰的可視界面,學生可以更加便捷的進行實驗。
總線控制模塊7與通信單元1通過高速總線連接,總線控制模塊7用于通過高速總線與通信單元1進行實驗控制數據和實驗數據的通信。在本發明實施例中,高速總線選擇高級高性能總線(Advanced High Performance Bus,AHB)總線,在本發明實施例中高級高性能總線以下統一稱為AHB總線,其工作頻率為100MHZ數據位寬為32位。總線控制模塊7通過AHB總線與通信單元1進行數據通信。
進一步的,總線控制模塊7還用于將高速總線的地址分配給實驗模塊、存儲模塊和實驗控制模塊,使得實驗模塊、存儲模塊和實驗控制模塊可以與通信單元通過高速總線進行通信。
實驗控制模塊5用于控制實驗模塊完成實驗。實驗控制模塊5內的代碼是針對實驗事先設計完成的,將會圍繞實驗單元FPGA芯片將特定實驗所需要的總線狀態和監測邏輯配置完畢。在整個實驗過程中將實驗模塊FPGA芯片中需要觀察的信號通過寄存器訪問總線獲取得到,向上發送。
解析模塊6用于對總線控制模塊接收到的實驗控制數據和實驗數據進行解析,并將解析后的數據內容發送給實驗模塊、存儲模塊和實驗控制模塊。
總線控制模塊7、實驗控制模塊5和解析模塊6集成在一塊FPGA芯片上,在本發明實施例中將該FPGA芯片稱為控制FPGA。
存儲模塊4用于存儲實驗數據,存儲模塊為存儲器SRAM。在需要存儲代碼和一些文件的實驗中,我們將代碼寫入存儲模塊4中。存儲模塊4讀寫信號是由實驗控制模塊5來發出的。當需要寫存儲器的時候,存儲模塊發送給存儲器相關的寫信號和地址,當讀取存儲器的時候,存儲模塊發送給存儲器相關的讀信號和地址。
在本發明實施例中,通信單元1的功能集成在ARM-CPU上,總線控制模塊7實驗控制模塊5和解析模塊6集成在一塊FPGA芯片上。這種以ARM作為整版核心控制的模式之所以能夠得到采用,依賴于FPGA和ARM的高速發展,功能足夠強大、管腳數量足夠多、成本不斷壓縮。而采用這種控制模式的好處也是顯而易見的,使用ARM作為控制CPU可以極大的減少下游控制FPGA邏輯的復雜程度,使得整個系統能夠更快速更穩定的運行。
可選的,通信單元和實驗單元通過網線接口或背板連接器與服務器連接。多數實驗平臺都會有兩種使用模式,一種是實驗箱模式,這種模式直接使用網線接入跟服務器連接;另一種是機柜模式,通過背板接插件跟機箱的背板連接;在本發明實施例中,考慮這兩種使用模式,設計了一組跳線可以選擇使用網線接口RJ45接入服務器還是使用背板連接器接入服務器。
本發明實施例提供一種實驗系統,如圖4所示,該實驗系統包括:多個實驗裝置和服務器。
實驗裝置中的通信單元與服務器進行實驗控制數據和實驗數據的通信,構成控制網絡。即嵌入式解決方案中的網口接入到控制網絡跟服務器通信;控制網絡是主網絡,其中的控制網絡進程主要負責跟實驗裝置通信,實現傳輸控制命令,實驗數據等功能。
實驗裝置中的實驗單元與服務器進行實驗網絡數據的通信,構成實驗網絡。實驗FPGA配置的實驗網口接入到實驗網絡中。實驗網絡中的實驗網絡進程負責維護學生通過實驗網口搭建的實驗網絡。控制網絡和實驗網絡是兩個相對獨立的網絡,實驗網絡不會對控制網絡有任何影響。
進一步的,控制網絡通過服務器監控實驗網絡,并向實驗網絡中發送數據和/或從實驗網絡中采集數據。在服務器端學生可以通過控制網絡進程監控并且采樣實驗網絡中的數據驗證實驗的正確性,學生還可以通過控制網絡進程給實驗網絡發送測試數據,方便學生完成網絡實驗。
本發明實施例提供一種ARM-CPU與實驗FPGA高速總線的總線驅動方法,該驅動方法包括:
根據cdev在內存中釋放高速總線的操作空間實現高速總線的在內存中的卸載。
在LINUX雜項設備驅動中申請次設備號作為高速總線的設備號。ARM芯片S2C2440內存映射提供了兩種啟動模式一種是norflash啟動模式另一種為nandflash啟動模式。本設計采用nandflash啟動模式。AHB總線是S3C2440存儲器控制器提供了8個可用的BANK空間,每個BANK空間提供128MB的空間,其中已經占用的有bank0(NC)、bank4(DM9000)、bank5(SDRAM)、bank6(SDRAM),剩余的均為空閑。在本設計中使用了bank5作為總線的訪問空間,其起始地址為0x28000000。在本發明實施例中綜合考慮了總線的空間使用大小以及設計的難度只在內存中申請了2M的地址空間作為總線的訪問空間。
在本設計中AHB總線驅動是在嵌入式LINUX雜項設備(即主設備號為10)驅動中申請次設備號54作為自己的設備號(即主設備號為10次設備號為54),使用雜項設備驅動申請驅動設備號的好處是開發相對容易并且雜項設備會自動創建設備節點無需mknod手動創建設備節點。
根據所述設備號、設備名稱以及操作類型生成高速總線的cdev,高速總線的操作類型包括:開操作、關操作、讀操作和寫操作;
AHB總線的cdev結構與普通的字符設備驅動的cdev結構略有不同,原因是AHB總線是雜項設備的一個子設備,雜項設備將cdev結構做了封裝實際上AHB總線申請的設備號是雜項設備配備的次設備號,以下是封裝后的cdev結構:
其中宏定義MISC_DYNAMIC_MINOR功能是隨機申請次設備號,本設計中申請到設備號為54。
DEVICE_NAME:此宏定義的是設備名稱,在本設計中定義的設備名為fpga_ahb。
dev_fops:該成員定義的是file_operations結構具體定義如下:
可以看出本設計中AHB總線驅動支持的操作有open、close、read、write操作。
根據cdev在內存中申請相應的內存空間作為高速總線的操作空間,實現高速總線的在內存中的加載。設備號和file_operations結構設計完成以后就可以進行初始化的工作了,AHB總線初始化要完成的工作有將bank5映射到內存空間,根據cdev申請設備。相應代碼:
在本設計中使用了動態內存映射函數ioremap,申請了2M的內存空間作為AHB總線的操作空間;misc_register函數為設備注冊函數。
根據cdev在內存中釋放所述高速總線的操作空間實現所述高速總線的在內存中的卸載。總線卸載需要完成的操作是跟初始化相對應的,在初始化中映射了內存空間所以在總線卸載是就需要釋放內存;在初始化時注冊了設備,在卸載是就應該注銷該設備。相應代碼:
AHB總線讀操作相對比較簡單,值得注意的地方有兩點:第一點調用readw函數fpga_bas是在總線初始化過程中得到到總線操作基地址,是一個全局變量,offset是讀操作傳入的偏移地址kbuf=readw((void*)(fpga_base+offset));另一點就是copy_to_user(buf,&kbuf,len)即將上一個操作讀回的數據kfuf從內核空間拷貝到用戶空間。
AHB總線寫操作的過程與讀基本類似唯一不同的一點是需要將數據從用戶空間拷貝到內核空間。相應代碼:
控制FPGA實現的功能是作為AHB總線的從設備,控制FPGA內集成的解析模塊完成解析AHB線數據內容,控制FPGA內集成的實驗控制模塊用于控制實驗FPGA完成實驗。
如表1所示的AHB總線信號列表,
ADDR[26:0]為27位AHB地址總線;
DATA[31:0]為32位AHB數據總線;
nGCS[7:0]為AHB總線使能信號,0有效,S3C2440這款芯片支持8個BANK的訪問,在AHB總線驅動中將BANK5分配給控制FPGA使用;
nW為AHB總線寫信號,0有效;
nOE為AHB總線讀信號,0有效;
表1
在本發明實施例中使用的是AHB總線的簡單模式因此只用到了ADDR、DATA、nGCS、nWE、nOE這一組信號,其余的nXBREQ、nXBACK、nWAIT信號并沒用用到,但是在FPGA內部邏輯中需要將這3個信號賦值為高阻態(即'Z'),否則會導致ARM死機。
關于AHB總線訪問時序,在FPGA邏輯代碼設計時會根據此時序圖完成nGCS、nWe、nOE均為低電平有效。該時序圖中tacs、tcos、tacc等參數可以通過配置相應寄存器改變AHB總線的訪問時間。
控制FPGA需要實現AHB從設備邏輯,在本設計中使用狀態機的方式來實現。如圖5所示的AHB總線從設備狀態機,共有三個狀態idle狀態、write狀態、read狀態。
Idle狀態:默認狀態,在該狀態如果觸發信號nGCS5、nWe或者nOE滿足(nGCS5and(nWe or nOE))等于零則跳轉到下一狀態,否則留該狀態繼續等待觸發信號,在該狀態的操作nXBREQ、nXBACK、nWAIT、DATA四個信號需要置高阻態。
Writ狀態:nGCS5等于0并且nWe等于0跳轉到該狀態,該狀態為AHB總線寫操作,上位機將數據寫入到從設備中,在該設備的操作nXBREQ、nXBACK、nWAIT三個信號置高阻態,將數據總線上的數據寫入FPGA內部寄存器。
Read狀態:nGCS5等于0并且nOE等于0跳轉到該狀態,該狀態為AHB總線讀操作,該操作由上位機發起從設備響應將數據放入數據總線。
如表2下游設備地址分配所示,AHB總線驅動申請了2M的地址空間作為下游芯片的操作空間,AHB總線跟控制FPGA相連,而后通過控制FPGA內部邏輯采用直接編址的方式將地址分配成3段分別提供給控制FPGA本身、實驗FPGA、SRAM使用,其中地址范圍:0x000000~0x03ffff,大小為256K位寬為32bits分配給控制FPGA,作為內部寄存器空間使用;地址范圍為:0x080000~0x0800ff,大小為256位寬為32bits分配給實驗FPGA,作為實驗FPGA的通信接口;地址范圍為:0x100000~0x1fffff,大小為1M位寬為32位分配給SRAM使用,作為CPU訪問SRAM的接口。
表2
本發明實施例還提供一種實驗系統的實驗方法,即實驗數據高速交換與控制協議,該方法包括:
在步驟101中,實驗裝置向服務器發送新設備申請請求,即服務器發現新加入的實驗裝置后,新加入的實驗裝置會向服務器發送新設備申請請求,服務器收到該請求后讀取實驗裝置的信息并將實驗裝置加入到心跳列表里,同時啟動心跳定時器。
在步驟102中,新實驗裝置加入服務器后,服務器向實驗裝置發送初始化信息,該信息包括系統固件和配置信息。
在步驟103中,實驗裝置加入服務器后定時向服務器發送心跳包,服務器收到心跳包后會將心跳定時器重置開始新的計時,如果服務器的心跳包計時器多次超時,服務器會認定該實驗裝置離線,刪除該實驗裝置信息。
在步驟104中,服務器向實驗裝置發送實驗命令和實驗數據,學生在服務器端發出相應的實驗命令給實驗裝置,學生事先寫好的實驗數據發下到實驗裝置供學生分析使用。
在步驟105中,服務器定時采集實驗裝置的實驗數據,由服務器分析并且在實驗界面上顯示。
在步驟106中,實驗裝置離線時通知服務器,服務器會保存實驗信息然后刪除該實驗裝置信息。
本發明提供的實驗裝置及實驗系統能夠實現服務器和實驗設備之間的高速數據交換和管理,使用了高速系統總線與下游實驗設備通信,配合100M網口使得數據傳輸速度有了極大的提高。實驗裝置硬件結構包括嵌入式解決方案(arm9處理器、內存、nandflash、串口、USB、wifi、網口、觸摸屏),控制FPGA、實驗FPGA、實驗網口以及用于支持實驗的各類實驗接口。本發明還提供了基于以上硬件基礎設計開發的服務器實驗數據高速交換與控制協議、高速系統總線驅動、控制FPGA橋接邏輯以及雙網絡結構。
雖然本發明所公開的實施方式如上,但所述的內容只是為了便于理解本發明而采用的實施方式,并非用以限定本發明。任何本發明所屬技術領域內的技術人員,在不脫離本發明所公開的精神和范圍的前提下,可以在實施的形式上及細節上作任何的修改與變化,但本發明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。