摘 要:針對傳統激光標刻機體積大,運行不穩定等缺點,提出使用嵌入式工控機加運動板卡的設計思路,設計基于CPLD的PC/104總線接口。采用握手通信思想,構造數據讀/寫權限寄存器,同時結合有限狀態機實現上、下位機數據并行傳輸。實驗仿真證明,傳輸效果能達到快速穩定,并且實際標刻應用驗證了該接口設計的可行性與有效性。
關鍵詞:激光標刻;PC/104;CPLD;VHDL
中圖分類號:TP336文獻標識碼:B
文章編號:1004-373X(2010)06-087-03
Design of PC/104 Interface for CPLD-based Motion Controller in Laser Marking System
WANG Dongliang,WU Huaiyu,CHENG Lei,HU Lin,WU Ruohong
(College of Information Science and Engineering,Wuhan University of Science and Technology,Wuhan,430081,China)
Abstract:Aiming at disadvantages of the traditional laser marking machine such as bigger in size and running unstable,an idea that using embedded computer and the board of motion controller is proposed,and PC/104 interface based on CPLD is designed.Using the idea of handshake,a data register that decides read-write is structured and data parallel transmission with the finite state machine is realized.The simulation proves that the data access is rapid and stable.The application results show that the design of interface is efficient and feasible.
Keywords:laser marking;PC/104;CPLD;VHDL
0 引 言
振鏡式激光標刻機已成為激光標刻行業中的主流產品。目前,大多數激光標刻機都采用基于通用PC的控制方案[1],然而通用PC安裝軟件較多,占用系統資源較大,故設計基于嵌入式技術的運動控制卡,也已成為振鏡式激光標刻機的研究熱點。PC/104總線是一種專門為嵌入式控制而定義的工業總線,其優點為體積小,可靠性高,采用模塊化結構,易于總線擴展,因此PC/104總線在工業控制領域得到廣泛應用。
市面上已有的PC/104總線接口芯片,功能固定,不適合激光標刻運動控制卡升級。然而FPGA/CPLD在數字邏輯設計中的靈活性和穩定性,符合本接口設計要求,故這里選用Altera公司MAX3000系列的CPLD,設計PC/104接口,實現激光標刻運動控制卡的數據傳輸。
1 總體設計
振鏡式激光標刻機系統框圖如圖1所示,運動控制卡核心模塊分為DSP控制模塊和數據通信模塊。運動控制卡工作流程:復雜的圖像編譯由工控機完成,處理后的數據通過PC/104總線下載到下位機DSP中,由DSP完成圖像插補校正,實時控制激光標刻過程,從而實現脫機打標。
圖1 激光標刻機系統框圖
數據通信模塊主要解決的是工控機與DSP之間數據傳輸。PC/104總線執行ISA總線標準,DSP芯片選用ADI公司的Blackfin 533,芯片數據接口采用外部總線接口單元(EBIU)。因此數據通信模塊實際上解決可見,PC/104總線與EBIU接口之間的數據傳輸[7]。使用CPLD實現數據總線邏輯橋接,即合理又有效。
2 PC/104接口設計
PC/104總線是ISA總線標準的延伸[8]。在設計中用到的PC/104總線引腳主要包含:12位地址線,16位數據線;I/O讀/寫信號線;I/O 16位芯片選擇信號線;總線地址鎖存信號線。有了上述信號線,就可以根據ISA總線時序設計PC/104接口。
Black fin533系列的外部總線接口單元(EBIU)[9],支持外設無縫連接。在使用中,僅需將CPLD看作DSP的外設即可,直接連線,無需編寫EBIU的總線時序。在設計中用到的引腳主要包含8根地址線;16位數據線;存儲空間Bank選擇信號線;輸出使能信號線;讀使能信號線。
該接口的設計思路是將數據傳輸過程分為兩部分,一個是數據通過PC/104傳輸到CPLD,按照PC/104時序;另一個是CPLD向DSP傳輸數據。由于PC/104時序簡單,EBIU無縫連接,單獨兩部分使用CPLD實現不難。但問題的關鍵是CPLD接收到數據后,如何告知DSP來讀數,并且在DSP未讀走數據時如何告知上位機不能發數。對此該設計采用簡單中斷方式和狀態寄存器標識方案解決上述問題。在PC/104的一次讀寫周期內,當上位機向CPLD發送一幀16位數據,鎖存于內部寄存器。與此同時CPLD向DSP發送中斷信號,告知其讀取數據,并且由CPLD改變狀態寄存器值,該狀態值表示工控機不能寫數據,而DSP讀數據。當DSP進入中斷程序,讀取數據后,再次改變狀態寄存器值,此時該狀態值表示DSP已經讀走數據,工控機可以發下一幀數據。以此類推,實現上、下位機的數據通信。該解決方案不僅可實現數據快速準確的通信,而且也能實現激光標刻機脫機標刻。狀態寄存器真值表如表1所示。
表1 狀態寄存器真值表
00無效狀態
01工控機寫,DSP不能讀
10工控機不能寫,DSP讀
11復位
結合總體設計思路,根據PC/104的16位總線時序邏輯,設計的邏輯狀態機如圖2所示。
圖2 邏輯狀態機
邏輯時序分析如下:
(1) 空閑狀態。上電后,CPLD全局復位(包括對DSP的復位),進入空閑狀態。數據總線進入三態,CPLD內部所有寄存器清零。
(2) 地址譯碼狀態。當上位機發送數據,在總線地址鎖存信號BALE下升沿有效時,將總線地址鎖存入CPLD內部地址鎖存器中。當I/O讀寫信號有效時,進入地址譯碼狀態,將鎖存器中的地址信息進行譯碼。
(3) 數據傳輸狀態。當總線地址為合法地址時,先讀取狀態寄存器值,判定讀/寫權限后,再進入數據傳輸狀態;若地址不合法,直接退回空閑狀態。
(4) 等待狀態。數據傳輸完畢,需保持一個時鐘周期,數據線進入三態,內部寄存器清零,釋放被占設備。在下一個時鐘周期到來時,進入空閑狀態,等待下一數據的傳輸。
設計中還要注意運動板卡I/O空間的設置,由于上層操作系統對PC/104總線預留有地址范圍,故CPLD內部寄存器的地址設置必須在此范圍內。結合該設計,數據寄存器地址為0X980,狀態寄存器地址為0X9A0。
PC/104總線有8位和16位兩種數據傳輸模式,在該設計中,使用的是16位傳輸模式,故I/O 16位芯片選擇信號線在讀/寫周期內始終為低電平。
3 CPLD程序實現
該設計采用VHDL語言編寫程序,開發環境使用Quartus Ⅱ;CPLD器件選擇較常見的EPM3256-ATC144[10]。狀態機和狀態寄存器部分的偽代碼如下:
狀態編碼:使用格雷碼。格雷碼是一種常見的無權碼,其特點為各編碼具有相鄰性。采用此編碼,可以避免在組合邏輯中出現的競爭冒險。
constant 狀態:std_logic_vector(2 downto 0) := \"xxx\";
狀態機跳轉實現:
process(當前狀態,跳轉條件) begin
case 當前狀態 is
when當前狀態 =>
if (跳轉條件) then
下一狀態<= 下一狀態;
else
下一狀態<= 當前狀態;
end if;
when OTHERS =>
下一狀態<= 初始狀態;
end case;
end process;
PC/104寫數據:
process(時鐘,復位) begin
if (復位) then
數據寄存器 <= (others => ′0′);
elsif rising_edge(時鐘)then
if (讀條件)then
if(地址合法 ) then
數據寄存器 <= PC/104總線數據;
end if;
end if;
end if;
end process;
DSP 讀數據:
DSP數據<= DSP數據寄存器 when 讀條件else
\"ZZZZZZZZZZZZZZZZ\";
process(時鐘,復位) begin
if(復位) then
DSP數據寄存器<= (others => ′0′);
elsif rising_edge(時鐘) then
if(地址合法) then
DSP數據寄存器<=數據寄存器;
end if;
end if;
end process;
狀態寄存器權限:
process(時鐘,復位) begin
if(復位) then
狀態寄存器<= ′11′;
elsif rising_edge(時鐘) then
if (CPLD寫) then
狀態寄存器<= ′01′;
elsif(DSP讀) then
狀態寄存器<= ′10′;
end if;
end if;
end process;
4 實驗結果與分析
圖3給出在Quartus Ⅱ中仿真的波形。
圖3 仿真圖
由仿真圖形看出,當PC/104一個讀/寫周期內,上位機往數據寄存器地址0X980傳送數據,通過CPLD的邏輯橋接,數據無誤地傳輸到DSP。當向不合法地址0X986傳送數據時,CPLD數據寄存器內部值并沒替換,所以傳到DSP的數據仍為上一讀寫周期內寄存的數據。由此可以清楚地看出,總線數據傳輸符合設計要求。
將程序下載到實驗板進行實際標刻。上位機待標刻圖案如圖4(a)所示,金屬薄片實際標刻效果如圖4(b)所示。
從實際應用看,上位機標刻軟件產生的標刻圖案與實際標刻圖案吻合,且標刻正常,并未出現過燒,不均勻現象,說明上下位機的數據通信正常,驗證了該設計思路的正確性。
圖4 激光標刻實際應用
5 結 語
采用可編程邏輯器件CPLD,運用VHDL語言編寫代碼,實現了PC/104與DSP之間的數據通信,并將此接口設計應用于嵌入式激光標刻運動控制卡,充分發揮嵌入式技術實時性高,性能穩定的優點,最終實現脫機標刻。
參考文獻
[1]蔣毅,周宏,蔣明,等.基于PC的激光標刻系統控制卡設計[J].計算機測量與控制,2004,12(6):544-546.
[2]趙巍,撒昱.激光標刻系統研究綜述[J].天津工程師范學院學報,2006(1):26-28,42.
[3]蔡培,孫超群,王樹立,等.基于PC/104總線和FPGA的運動控制卡的設計[J].制造業自動化,2008(11):68-70.
[4]陳兵,金敏.DSP 技術在激光標刻控制中的運用[J].機械與電子,2004(6):28-29.
[5]陽彥字,李建武,汪盛烈,等.激光打標控制原理及嵌入式系統設計[J].中國激光,2004(3):344-346.
[6]林錦贊,王孝洪,田聯房,等.基于PC/104和CPLD的巡線機器人運動控制實現[J].機械與電子,2008(9):53-55.
[7]喻駿,李鵬.PC/104總線與DSP數據通信接口設計[J].現代電子技術,2005,28(2):44-45,48.
[8]PC/104 Specification v2.4.PC/104 Embedded Consortium.2001.
[9]Analog Devices Inc.ADSP-BF533 Blackfin Hardware Re-ference.Preliminary Revision.2003.
[10]MAX 3 000 A Programmable Logic Device Family DataSheet.2006.