趙兵,黃曉華
(南京理工大學機械工程學院,江蘇南京 210094)
串口通訊因為其協議簡單,操作方便,如今已在工業控制系統、儀器測量系統等各個領域被越來越廣泛地應用[1]。而現代計算機、各種處理芯片等其他控制終端僅僅配備了少量的通用串口,在很多需要多串口的系統中并不能滿足需求。為了解決在所研究的全向移動機器人運動控制系統中出現的串口個數不能滿足的問題,現使用FPGA(field-programmable gate array)芯片進行邏輯編程,實現了擴展多個串口進行通信的功能。
在全向移動機器人的運動控制中,使用伺服電動機控制底盤驅動機器人可以進行精密的運動控制,本文使用MAXON電動機搭載以色列公司生產的Elmo伺服控制器進行伺服控制。Elmo伺服驅動器提供了串口與控制芯片通信進行命令地接收和反饋。在運動控制系統中,微處理器采集各種傳感器的信息進行分析綜合,判定機器人當前所處的狀態,根據目前自身所處的狀態(包括姿態,方向角,位置點,加速度,速度等其他方面),對安裝于機器人底盤的三個電動機發出不同的運動命令,使各個電動機帶動機器人的三個全向輪協同工作,達到所需要的運動軌跡,速度,姿態等。
本文的運動控制系統采用了美國公司德州儀器所生產的DSP2812作為主控制器,DSP2812擁有兩個串行通信口SCIA和SCIB,但是,在該全向定位控制系統中,不僅需要控制三個伺服電動機的運動,而且還需要與其他傳感器和一些監測設備(例如監測狀態的電腦終端等)進行通訊,因此,為了實現這些擴展的功能,利用FPGA設計了中間擴展模塊。全向機器人運動控制系統結構如圖1所示。

圖1 控制系統結構圖
該系統中的DSP2812與FPGA之間的數據傳輸采用了并口通信,將擴展的子串口映射到不同的地址中,需要往哪個子串口傳輸數據時往相應的地址中寫入數據即可,讀取時,當可讀信號脈沖來時,給予中斷并通過控制線判定讀取的串口號。
考慮到并行通信口要比串口速度快,速度級并不一致,所以設計了緩存模塊,在發送和接收系統中加入16×8的FIFO(first input first output)。
另外,FPGA是TTL電平,而串口協議規定的邏輯1電平是-3V~-15V,邏輯0電平是+3V~+15V,兩者使用了max232進行電平轉換。
為了實現上述的控制要求,本次設計的FPGA使用Altera公司的Cyclone II系列的EP2C5Q208C8芯片,軟件設計在Quartus II開發集成設計環境中完成。通過Verilog硬件描述語言實現的功能設計。設計的一些主要模塊有全局控制模塊,時鐘發生器模塊,發送模塊,接收模塊。通過對這些模塊的設計編程實現相應的時序控制,完成串口擴展的功能。

圖2 時鐘模塊程序塊圖
對頻率為40MHz的晶振源進行分頻,產生所需要的各種時鐘頻率。將串口通信的波特率設為9600bit/s,在具體的實現過程中,發送和接收模塊工作頻率設為波特率的16倍,具體分頻時,創建一個發送器時鐘變量和一個計數變量,初始化為零,每當系統時鐘上升沿到來時,計數變量自加1,當計數到130時,發送器時鐘變量電平立即反轉,計數清零,這樣循環往復,就產生了所需的發送接收模塊的工作頻率。同理,還可以用它產生其他所需要的各種時鐘頻率。
通過時鐘發生模塊得到的接收模塊的工作時鐘頻率為波特率的16倍,接收模塊首先等待數據的到來,串口通信在空閑時為高電平,當有數據進行通訊時首先發送一個低電平的起始位,接收模塊在每個工作頻率的上升沿到來時檢測輸入是否為低電平,若是則開始計數,如果連續8個工作頻率都檢測為低電平,則確認接收到了起始位,此后每隔16個時鐘接收一位數據,并將接收到的數據通過移位寄存器轉化成并行數據。最后通過并行口傳輸給主控制器。若接收過程中發現錯誤接收,Error線拉低,并且丟棄此次所接收數據。

圖3 接收模塊程序塊圖

圖4 發送模塊程序塊圖
從DSP輸出的并行數據在發送模塊里轉化成串行數據從相對應的串口輸出。當發送數據信號電平為高,則將并行數據鎖存放入特定寄存器,判定發送寄存器是否有數據,如果有將數據放入FIFO模塊,等待發送。對于要發送的數據,在時鐘的控制下移位寄存器將它按照從低到高依次發出。
完成上述各子模塊的設計后,需要考慮如何使這些子模塊在完成自己的功能的同時相互之間配合完成所需的功能。為此,設計了一個全局模塊負責這些子模塊的協調調度。并口的讀寫時序與DSP的讀寫時序同步,需要發送數據時,DSP先拉低FPGA的WR信號線,通過地址線和數據線往相應的地址發送相應的數據。FPGA接收到數據后,由于地址的不同,端口選擇線CS[2∶0]將需要發送的端口線拉低。在時序的推動下,并行數據發送給相應分端口的發送模塊,然后發送模塊通過將數據移位按照一定的波特率串行發送出去。接收數據時,FPGA在接收模塊中將串行數據接收轉化并行數據,并拉低自身的狀態線,全局控制模塊通過對狀態線的讀取獲取數據來自于哪一個端口。整個FPGA串口擴展系統的程序圖如圖5所示。

圖5 Quartus II中各模塊連接程序圖
本文成功地在運動控制系統中實現了基于FPGA的串口擴展,解決了處理器串口較少的問題。用Labview編寫的上位機測試軟件對此系統進行了長達數個小時的發送和接收測試,結果表明效果良好。并且此設計還可以運用到其他需要串口擴展的平臺或系統中去,應用面廣,實用前景好。
[1]樊正方,羅暉.基于FPGA的串口集線器設計[J].工業控制計算機,2008,21(9):54-55.
[2]張羽,胡玉貴,等.基于FPGA的多串口擴展實現[J].電子器件,2009,32(1):233-236.
[3]張偉,談良.串行通信接口的擴展在電臺組網控制系統中的應用[J].指揮信息系統與技術,2010,01(1):46-49,81.
[4]周之炎,毛玉良.機器人多路傳感器數據采集系統的實現[J].機械制造與自動化,2009,38(1):157-159.
[5]楊茂林.基于FPGA的智能串口模塊設計[J]工業控制計算機.,2010,23(5):4-5,8.