一種片上定時器的制造方法
【技術領域】
[0001]本發明屬于計算機技術領域,涉及微控制器、處理器和SoC芯片中定時器外設的設計和制造,特別是一種片上定時器。
【背景技術】
[0002]自從微控制器問世以來,就以其片上集成了豐富的外設,以及靈活的應用和低廉的成本,而廣泛應用于工業控制、智能儀器儀表和武器裝備等領域。而定時器則是微控制器中最常用的外設之一,隨著應用系統對微控制器處理事務能力及靈活度需求的不斷提高,當前微控制器中所采用的通過軟件方式進行定時效率較低,并有誤差;片上集成的定時器通常僅支持簡單、單一頻率下的定時,計數與中斷功能,以及較少的PWM輸出選擇,已經很難滿足日益增長的需求,所以如何使微控制器中定時器功能更強大,使用更靈活是微控制器外設設計的重要內容。
【發明內容】
[0003]本發明解決的技術問題是:克服現有技術的不足,提供了一種廣泛適用于微控制器、處理器及SoC的片上定時器。
[0004]本發明的技術解決方案是:一種片上定時器,包括:地址譯碼與讀寫邏輯、計數器模塊、捕獲比較器模塊、數據總線輸入輸出邏輯、中斷寄存器與中斷控制邏輯,其中
[0005]地址譯碼與讀寫邏輯,接收地址總線ABUS〈15:0>發送的片上定時器中內部的寄存器地址、讀寫信號RW和系統時鐘MCLK,進行譯碼后產生用于數據總線DBUS〈15:0>與內部寄存器總線Reg_D〈15:0>及Reg_Dn〈15:0>進行數據交換的控制信號Din_CTRL和Dout_CTRL并送至數據總線輸入輸出邏輯,產生讀寫中斷寄存器的控制信號INTReg_10C送至中斷寄存器與中斷控制邏輯,產生讀寫16位計數器控制寄存器的控制信號CNTCR_10C送至16位計數器控制寄存器,產生讀寫16位計數器的控制信號CNT_10C送至16位計數器,產生讀寫16位捕獲比較控制寄存器的控制信號CCCRx_10C,x = 0, 1,2分別送至16位捕獲比較控制寄存器X,產生讀寫16位捕獲比較寄存器的控制信號CCRx_10C分別送至16位捕獲比較寄存器X ;
[0006]計數器模塊包括16位計數器控制寄存器、時鐘選擇與分頻邏輯、計數模式控制邏輯和16位計數器;
[0007]16位計數器控制寄存器,接收地址譯碼與讀寫邏輯發送的16位計數器控制寄存器讀寫信號CNTCR_10C,接收數據總線輸入輸出邏輯發送的內部寄存器總線信號Reg_D〈 15: 0> 和 Reg_Dn〈 15: 0>,在 CNTCR_10C 的控制下將 Reg_D〈 15: 0> 和 Reg_Dn〈 15: 0> 上的數據寫入16位計數器控制寄存器,并輸出計數器計數時鐘源選擇位CK_S[1:0]、時鐘分頻選擇位CK_D[1:0]至時鐘選擇與分頻邏輯用作輸入時鐘源的選擇與時鐘信號的分頻,輸出計數模式選擇位Mode_S[l:0]至時鐘選擇與分頻邏輯用作產生16位計數器計數時鐘T_CLK和T_CLKN的門控信號、至計數模式控制邏輯用作產生16位計數器增減計數控制信號UP_DOWN與16位計數器清零信號SET_ZER0、同時還送至捕獲比較器中的輸出邏輯用作產生輸出信號0UT_x,輸出清零控制位T_CLR至時鐘選擇與分頻邏輯用作時鐘選擇與分頻的清零、至16位計數器做計數器的清零、同時還送至計數模式控制邏輯用作16位計數器增減計數控制信號UP_D0WN和16位計數器清零信號SET_ZER0的清零,輸出計數器溢出中斷使能位CNTIE至中斷寄存器與中斷控制邏輯用作產生中斷請求信號IREQ ;接收中斷寄存器與中斷控制邏輯輸出的計數器中斷標志位CNTIFG并寫入16位計數器控制寄存器中用于表示計數器溢出中斷的掛起狀態;
[0008]時鐘選擇與分頻邏輯,接收計數時鐘源選擇位CK_S[1:0]、時鐘分頻選擇位CK_D [1: O],根據計數時鐘源選擇位CK_S [1: O]從時鐘源AsCLK、SuCLK、ExCLK中選擇一個時鐘,然后根據時鐘分頻選擇位CK_D[1:0]對該時鐘進行I或2或4或8分頻,產生定時器工作時鐘S_CLK后送至中斷寄存器與中斷控制邏輯與捕獲比較器模塊中的16位捕獲比較控制寄存器X、捕獲邏輯X、比較邏輯x、16位捕獲比較寄存器X、輸出邏輯X ;接收16位計數器控制寄存器發送的計數模式選擇位Mode_S [1: O],接收16位計數器產生的計數器全零信號CNT_ZER0,產生16位計數器計數時鐘T_CLK和T_CLKN并送至16位計數器用于計數器的計數時鐘;接收16位計數器控制寄存器發送的清零控制位T_CLR信號對定時器工作時鐘S_CLK進行清零;
[0009]計數模式控制邏輯,接收16位計數器控制寄存器輸出的計數模式選擇位Mode_S[1:O],接收16位計數器發送的計數器全零狀態信號CNT_ZER0,產生16位計數器增減計數控制信號UP_D0WN與16位計數器清零信號SET_ZER0送至16位計數器用于16位計數器的增減計數與清零的控制;接收16位計數器控制寄存器發送的清零控制位T_CLR信號對計數器增減計數控制信號UP_D0WN和計數器清零信號SET_ZER0進行清零;
[0010]16位計數器,接收時鐘選擇與分頻邏輯發送的16位計數器計數時鐘T_CLK與T_CLKN,接收計數模式控制邏輯發送的計數器增減計數控制信號UP_D0WN和計數器清零信號SET_ZER0,根據計數器增減計數控制信號UP_D0WN進行增或減計數并根據SET_ZER0信號對計數器進行清零,輸出計數器最高位進位信號CNT_Carry至中斷寄存器與中斷控制邏輯用于產生計數器溢出中斷標志位CNTIFG,輸出計數器全零狀態信號CNT_ZER0至計數模式控制邏輯用作產生16位計數器增減計數控制信號UP_D0WN、同時還送至時鐘選擇與分頻邏輯用作產生的16位計數器計數時鐘T_CLK和T_CLKN的門控信號,產生計數值CNT〈15:0>送至16位捕獲比較寄存器X用作捕獲模式下發生捕獲操作時記錄當前計數值、同時還送至比較邏輯X用作在比較模式下和16位捕獲比較寄存器輸出的設定值CCRx〈15:0>進行比較產生比較相等信號EQU_x信號;接收16位計數器控制寄存器發送的T_CLR信號進行清零;
[0011]捕獲比較模塊,包括捕獲比較器X,捕獲比較器X包括16位捕獲比較控制寄存器X、捕獲邏輯X、比較邏輯X、16位捕獲比較寄存器X、輸出邏輯X,其中
[0012]16位捕獲比較控制寄存器X,接收時鐘選擇與分頻邏輯發送的定時器工作時鐘S_CLK用于工作時鐘;接收地址譯碼與讀寫邏輯發送的16位捕獲比較控制寄存器讀寫信號CCCRx_10C,接收數據總線輸入輸出邏輯發送的內部寄存器總線信號Reg_D〈15:0>和Reg_011〈15:0>,在0(:0^_1(^的控制下將Reg_D〈15:0>和Reg_Dn〈15:0>上的數據寫入16位捕獲比較寄存器X中,輸出捕獲比較模式選擇位Cx_Cpt_Cmp_S、捕獲比較輸入信號選擇位Cx_IN_S [1: O]、捕獲模式選擇位Cx_Cpt_M[l: O]、同異步捕獲選擇位Cx_SAS_S至捕獲邏輯x用于捕獲控制,輸出輸出模式選擇位Cx_0ut_M[2:0]、輸出控制位Cx_Out_Ctrl至輸出邏輯x用于產生輸出信號OUT_x,輸出捕獲比較中斷使能位Cx_CCIE至中斷寄存器與中斷控制邏輯用于產生中斷請求信號IREQ ;接收中斷寄存器與中斷控制邏輯發送的Cx_CCIFG與Cx_CPTOVF并寫入16位捕獲比較控制寄存器中分別用于表示捕獲比較中斷的掛起狀態和捕獲溢出的狀態;接收比較邏輯X發送的EQU_x信號,將捕獲比較輸入信號Cx_CC_in的值由EQU_x信號鎖存到Cx_Cmp_in位;
[0013]捕獲邏輯X,接收時鐘選擇與分頻邏輯發送的定時器工作時鐘S_CLK用于工作時鐘;接收16位捕獲比較控制寄存器發送的捕獲比較選擇位Cx_Cpt_Cmp_S,捕獲比較輸入信號選擇位Cx_IN_S [1: O]、捕獲模式選擇位Cx_Cpt_M[l: O]、同異步捕獲選擇位Cx_SAS_S,并接收外部輸入的兩路輸入信號IN_Ax和IN_Bx,在輸入信號IN_Ax或IN_Bx變化的上升沿、下降沿或上升下降雙邊沿進行同步或異步捕獲,將捕獲到的輸入信號電平存入Cx_CC_in位中后送至比較邏輯X,產生捕獲信號Cpt_x并送至16位捕獲比較寄存器X用于將當前計數值CNT〈15:0>寫入16位捕獲比較寄存器X,將捕獲信號Cpt_x送至中斷寄存器與中斷控制邏輯用于產生捕獲比較中斷標志位Cx_CCIFGx、捕獲溢出信號Cx_CPT0VF以及根據捕獲比較中斷使能Cx_CCIE產生中斷請求信號IREQ ;
[0014]比較邏輯X,接收時鐘選擇與分頻邏輯發送的定時器工作時鐘S_CLK用于工作時鐘;接收16位計數器發送的計數值CNT〈15:0>和16位捕獲比較寄存器輸出的設定值(:0^〈15:0>,判斷計數值0見'〈15:0>與設定值CCRx〈15:0>,當兩者相等時,輸出狀態信號EQU_X送至輸出邏輯用于產生PWM信號、送至中斷寄存器與中斷控制邏輯用于產生捕獲比較中斷標志位Cx_CCIFG、同時還送至16位捕獲比較控制寄存器用于將捕獲比較輸入信號Cx_CC_in的值由EQU_x信號鎖存到Cx_Cmp_in位;
[0015]輸出邏輯X,接收時鐘選擇與分頻邏輯發送的定時器工作時鐘S_CLK用于工作時鐘;接收16位捕獲比較控制寄存器輸出的輸出模式選擇位Cx_0ut_M[2:0]、輸出控制位Cx_0ut_Ctrl,接收16位計數器控制寄存器輸出的計數模式選擇位Mode_S[1:0],同時還接收比較邏輯X輸入的EQU_x信號,產生PWM信號并通過0UT_x輸出;
[0016]16位捕獲比較寄存器X,接收時鐘選擇與分頻邏輯發送的定時器工作時鐘S_CLK用于工作時鐘;當捕獲比較器X配置為捕獲模式時,接收地址譯碼與讀寫邏輯發送的16位捕獲比較控制寄存器讀寫信號CCCRx_10C,接收捕獲邏輯發送的捕獲信號Cpt_x,同時還接收16位計數器輸出的計數值CNT〈15:0>信號,當發生捕獲時,在捕獲信號Cpt_x的控制下將計數值CNT〈15:0>寫入寄存器中,產生片上控制系統讀16位捕獲比較寄存器X狀態信號Rd_Stx送至中斷寄存器與中斷邏輯中用于產生捕獲溢出狀態位Cx_CPT0VF,接收地址譯碼與讀寫邏輯發送的16位捕獲比較寄存器X讀寫信號CCRx_10C,在捕獲發生后讀取16位捕獲比較寄存器X的值時,將16位捕獲比較寄存器X的值通過內部寄存器總線Reg_D〈15:0>送至數據總線輸入輸出邏輯后送至數據總線DBUS〈15:0>上;當捕獲比較器X配置為比較模式時,接收地址譯碼與讀寫邏輯產生的16位捕獲比較寄存器X讀寫信號CCRx_10C,在CCRx_10C的控制下將接收到的數據總線輸入輸出邏輯發出的內部寄存器總線信號Reg_D<15:0>和Reg_Dn〈15:0>寫入16位捕獲比較寄存器X,并將此時16位捕獲比較寄存器的設定值CCRx〈15:0>送至比較邏輯X ;
[0017]數據總線輸入輸出邏輯,用于數據總線DBUS〈15:0>與內部寄存器的數據交換,接收地址譯碼與讀寫邏輯發出的數據總線輸入信號Din_CTRL,當發生寫操作時,在Din_CTRL的控制下將數據總線DBUS〈15:0>上的值經差分保持器以差分形式送至內部寄存器數據總線Reg_D〈15:0>和Reg_Dn〈15:0>后送至片上定時器中內部的寄存器;接收地址譯碼與讀寫邏輯發出的數據總線輸出信號Dout_CTRL,當發生讀操作時,在Dout_CTRL的控制下將片上定時器中內部的寄存器數據總線信號Reg_D〈15:0>經三態門送至數據總線DBUS〈15:0>上;
[0018]中斷寄存器與中斷控制邏輯,接收時鐘選擇與分頻邏輯發送的定時器工作時#S_CLK用于中斷邏輯工作時鐘;接