張先波 奧托尼克斯電子(嘉興)有限公司
基于ARM內(nèi)核的計時器設(shè)計
張先波 奧托尼克斯電子(嘉興)有限公司
本設(shè)計所涉及的是一款計時器產(chǎn)品,其基于ARM內(nèi)核,構(gòu)建了計時器共用一個端口讀寫控制器與FPGA中央控制器進行數(shù)據(jù)通信。計時器內(nèi)部工作是相互獨立的,通過使用地址映射存儲器使得計時器的指令執(zhí)行更加高效;本設(shè)計還對中央控制器與計時器的通信時序和通信格式進行了優(yōu)化,便于中央控制器對計時器的控制與測試。
ARM內(nèi)核 計時器 讀寫時序
ARM內(nèi)部資源包括內(nèi)部繼電器、專用繼電器、數(shù)據(jù)存儲區(qū)、計時器、保持繼電器等。中央控制器主要用以完成對雙口RAM內(nèi)部ARM寫入的數(shù)據(jù)進行讀出、處理、整理和寫入操作。多操作位邏輯運算控制模塊主要用以實現(xiàn)邏輯運算指令。輸入存儲與讀取控制模塊主要用以讀取外部開關(guān)量的狀態(tài)信息。數(shù)據(jù)輸出控制模塊主要用以將程序執(zhí)行結(jié)果處理后驅(qū)動外部負載。
基于FPGA的可重構(gòu)技術(shù),就是利用FPGA可以多次重復編程配置的特點,通過分時復用的方式利用FPGA內(nèi)部的邏輯資源,使在時間上離散的邏輯電路功能模塊能在同一FPGA中順序?qū)崿F(xiàn)的技術(shù)。
設(shè)計的計時器為可重構(gòu)的設(shè)計,最多可設(shè)計有256個計時器,235個內(nèi)部計數(shù)器??梢愿鶕?jù)具體工程應(yīng)用來設(shè)計其內(nèi)部計時器的數(shù)量,以達到FPGA資源的靈活配置。
計時器通過總線的形式與FPGA中央控制器進行數(shù)據(jù)的交互,它們的工作是相互獨立的,能并行地工作,相互之間不影響。它們使用相同結(jié)構(gòu)和功能的端口讀寫控制器與中央控制器進行數(shù)據(jù)交互,在相同的時刻只能有一個模塊占用總線與中央控制器進行通信。計時器與FPGA通信框圖如圖1所示。
圖1 計時器與FPGA通信框圖
端口讀寫控制器主要實現(xiàn)與中央控制器的接口,計時器根據(jù)讀寫時序,通過端口讀寫控制器實現(xiàn)與中央控制器的數(shù)據(jù)交換。RST復位線使用低電平復位;ADDRC是模塊地址線;RDC和WRC為低電平使能;ASK(1/2)與ANS(1/2)線均為低電平有效。讀寫控制模塊通過判斷RDC和WRC以及ADDRC的狀態(tài),控制組合邏輯三態(tài)門構(gòu)成的32位雙向I/O口DATAC進行數(shù)據(jù)的輸入或輸出。端口讀寫控制器的32位指令緩存可以存儲一條指令,由29位data_in線輸出對D28-D0即指令數(shù)據(jù),由3位code-in線輸出D31-D29即指令類型。CE指令執(zhí)行標志線。當存儲有指令時,置BUSY(1/2)線和CE線為低電平。
圖2 端口讀寫控制器結(jié)構(gòu)圖
由ARM與FPGA協(xié)同構(gòu)建的PLC控制系統(tǒng),ARM作為PLC主控制器通過數(shù)據(jù)總線、地址總線、控制總線向FPGA發(fā)送指令命令,F(xiàn)PGA接收到ARM的指令命令之后,通過FPGA中央控制器與計數(shù)器進行通信。
3.1 計時器設(shè)計
計時器總體結(jié)構(gòu)圖設(shè)計如圖3所示,其中主要包含以下模塊:端口讀寫控制器,計時器地址映射存儲器,計時器存儲器,計時器指令執(zhí)行器,計時器控制器,1kHz脈沖生成器。
圖3 計時器總體結(jié)構(gòu)圖
3.1.1 計時器地址映射存儲器
計時器當前值和設(shè)定值在相應(yīng)存儲器中的存儲位置與計時器本身的編號對應(yīng)。當進行計時器操作或者進行計時器結(jié)果上傳操作時,只需要從計時器地址映射存儲器中的第一個地址開始順序讀取被使用的計時器的編號,以此編號為地址,便可以迅速地在定時存儲器中找到使用了的計時器的相關(guān)數(shù)據(jù)進行操作,達到了提高系統(tǒng)執(zhí)行效率的目的。
計時器地址映射存儲器的封裝如圖4所示。RWCLK為讀寫時鐘輸入端口,讀與寫共用一個時鐘;RESET為復位信號輸入端口;WEN為寫使能信號輸入端口;REN為讀使能信號輸入端口;WADDR為寫入地址輸入端口;RADDR為讀出地址輸入端口;WD為寫入數(shù)據(jù)輸入端口;RD為讀出數(shù)據(jù)輸出端口。計時器地址映射存儲器使用Libero8.3IDE提供的雙端口存儲器IP核生成。
圖4 計時器地址映射存儲器封裝圖
3.1.2 計時器控制器
當1kHz脈沖上升沿到來時定時控制器將會啟動,當指令寫入標志CE為高電平即計時器內(nèi)沒有指令且定時操作結(jié)束標志寄存器K1為0時,定時控制器將會執(zhí)行定時操作。先通過從地址映射存儲器中讀取被使用了的計時器的編號;兩個時鐘周期后,從定時存儲器中讀取出的計時器的信息;第3個時鐘周期后,對計時器的定時數(shù)據(jù)進行判斷。操作完畢后將相關(guān)信息寫入定時存儲器。計時器控制器程序流程圖如圖5所示。
圖5 計時器控制器程序流程圖
本文對ARM的計時器設(shè)計進行了闡述,并對設(shè)計所使用的軟件和硬件平臺及編程語言進行了說明。同時對端口讀寫控制器及中央控制器與定時和計數(shù)控制模塊的時序進行了設(shè)計,可以根據(jù)需要來增減計時器的數(shù)量和種類。