一種產生整數頻率脈沖的信號發生器及信號產生方法
【技術領域】
[0001]本發明屬于信號處理領域,更具體地,涉及一種產生整數頻率脈沖的信號發生器及信號產生方法。
【背景技術】
[0002]目前市面上的脈沖個數調制器,多以倍頻累加思路或者計數器按照權系數進行分頻輸出的方式產生。前者的設計雖然簡單,但是在頻率控制字不能被頻率累加計數器整除時,波形會在頻率累加器的每個清零時刻出現不規則波形,會影響單位時間內的脈沖方波個數;后者的設計雖然能輸出非整數時鐘周期計數的脈沖波,但是其精度受參考頻率影響較大,以十六位信號發生器為例,如果晶振為50MHz,則很難精準的產生216= 65536Hz精準的參考頻率。
【發明內容】
[0003]針對現有技術的以上缺陷或改進需求,本發明提供了一種產生整數頻率脈沖產生的信號發生器及信號產生方法,其目的在于進行非整數周期到整數周期的轉化,由此解決系統時鐘頻率固定的情況下整數頻率輸入值會導致輸出脈沖非整數周期計數的問題。
[0004]為實現上述目的,按照本發明的一個方面,提供了一種產生整數頻率脈沖的信號發生器,所述信號發生器包括依次連接的檢測模塊、除法模塊和波形產生模塊,所述檢測模塊、除法模塊和波形產生模塊均接收同一個系統時鐘信號;
[0005]檢測模塊用于檢測輸入頻率值,將輸入頻率值與預設值進行比較,根據比較結果輸出除法使能信號和脈沖輸出使能信號;
[0006]除法模塊用于在除法使能信號的觸發下將系統時鐘信號的頻率值與輸入頻率值進行除法運算,輸出商、余數和除法完成使能信號;
[0007]波形產生模塊用于在除法完成使能信號的觸發下根據所述商和余數生成整數頻率脈沖信號,并根據脈沖輸出使能信號確定是否輸出所述整數頻率脈沖信號;當接收到的脈沖輸出使能信號為高電平時,輸出脈沖信號;當接收到的脈沖輸出使能信號為低電平時,停止輸出脈沖信號。
[0008]優選的,檢測模塊輸出的除法使能信號和脈沖輸出使能信號均是高電平有效。
[0009]優選的,檢測模塊預設有最大容許輸入頻率值匕‘若檢測模塊接收到的輸入頻率值為零,則脈沖輸出使能信號和除法使能信號為低電平;若輸入頻率值大于O且小于等于fmax,則脈沖輸出使能信號和除法使能信號均為高電平。
[0010]進一步優選的,若檢測模塊接收到的輸入頻率值大于fmax,脈沖輸出使能信號和除法使能信號均為高電平且將輸入頻率值視為無效輸入,將fmax作為輸入頻率值與系統時鐘信號的頻率值進行除法運算。
[0011]進一步優選的,檢測模塊預設的最大容許輸入頻率值fmax為小于系統時鐘頻率的整數值。
[0012]進一步優選的,波形產生模塊根據所述商和余數生成的整數頻率脈沖信號具體如下:以Q表示商,以R表示余數,生成單位時間內以(Q+1)為計數周期的R個脈沖,以Q為計數周期的(f_R)個脈沖,兩種計數周期的整數頻率脈沖均勻分布。
[0013]為實現本發明目的,按照本發明的另一個方面,提供了一種產生整數頻率脈沖的信號產生方法,所述信號產生方法采用本發明提供的產生整數頻率脈沖的信號發生器,具體如下:
[0014](I)判斷輸入頻率值f是否為零,若是,則將脈沖輸出使能信號置低;若否,則將脈沖輸出使能信號置高,并進入步驟(2);
[0015](2)判斷輸入頻率值f是否超出預設的最大容許輸入頻率值,若否,則生成除法使能信號,進入步驟(3);若是,則將輸入頻率值f視為無效輸入,將最大容許輸入頻率值作為輸入頻率值,并生成除法使能信號,進入步驟(3);
[0016](3)接收到所述除法使能信號后,將系統時鐘信號的頻率值與輸入頻率值f進行除法運算,所述系統時鐘信號的頻率值作被除數,獲取商Q、余數R和除法完成使能信號;
[0017](4)接收到所述除法完成使能信號后,根據所述商Q和余數R值產生整數頻率脈沖信號:單位時間內生成的脈沖信號分為兩部分,其中R個脈沖以(Q+1)作為計數周期,(f-R)個脈沖以Q作為計數周期,兩種計數周期的脈沖均勻分布;若脈沖輸出使能信號為高電平,則將產生的整數頻率脈沖信號輸出;若脈沖輸出使能信號為低電平,則停止脈沖信號輸出;
[0018](5)檢測輸入頻率值f是否有變化,若否,則持續輸出單位時間內以(Q+1)為計數周期的R個脈沖,以Q為計數周期的(f-R)個脈沖,兩種計數周期的脈沖均勻分布;若是,則進入步驟(I)。
[0019]優選的,所述步驟(5)中,在系統時鐘信號的上升沿時刻或下降沿時刻檢測輸入頻率值是否變化,若在系統時鐘信號的上升沿時刻檢測到輸入頻率值f有變化,則在系統時鐘信號的下一個上升沿時刻產生輸入值改變標志位并進入步驟(I);若在系統時鐘信號的下降沿時刻檢測到輸入頻率值f有變化,則在系統時鐘信號的下一個下降沿時刻產生輸入值改變標志位并進入步驟(I)。
[0020]進一步優選的,在輸入頻率值f有變化的情況下,所述除法使能信號由所述脈沖輸出使能信號與輸入值改變標志位進行邏輯與操作獲得。
[0021]總體而言,通過本發明所構思的以上技術方案與現有技術相比,能夠取得下列有益效果:
[0022](I)由于本發明提供的信號發生器根據除法運算的結果進行了非整數周期到整數周期的轉化,因此無論輸入頻率能否通過系統時鐘頻率整數分頻,都能以均勻的間隔連續輸出單位時間內個數與輸入頻率數值相等的脈沖;
[0023](2)本發明有效解決在系統時鐘頻率固定情況下,整數頻率輸入值會導致非整數周期計數的問題,具有精度高,易于實現的特點。
【附圖說明】
[0024]圖1是本發明提供的一種產生整數頻率脈沖信號的信號發生器的整體結構框圖;
[0025]圖2是本發明實施例1提供的一種產生整數頻率脈沖信號的信號發生器的各模塊間信號主要輸入輸出關系連接圖;
[0026]圖3是本發明實施例2提供的一種產生整數頻率脈沖信號的信號產生方法的流程圖。
【具體實施方式】
[0027]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
[0028]如圖1所示,本發明的信號發生器包括依次連接的檢測模塊、除法模塊和波形產生模塊;三個模塊接收同一個系統時鐘信號輸入;
[0029]檢測模塊接收輸入頻率值f,對輸入頻率值f進行檢測,若檢測到輸入頻率值為O則將送往波形產生模塊的脈沖輸出使能信號置低;波形產生模塊收到低電平的脈沖輸出使能信號后就停止脈沖輸出;如檢測到輸入頻率值不為O且發生改變,則將脈沖輸出使能信號置高,并輸出除法使能信號;
[0030]檢測模塊預設有最大容許輸入頻率值,若輸入頻率值f大于所述最大容許輸入頻率值,則視為無效輸入,將輸入頻率值f按照最大容許輸入頻率值處理;所述最大容許輸入頻率值為小于系統時鐘頻率的整數值;
[0031]例如,當系統時鐘頻率為50MHz,若預設最大容許輸入頻率值為500KHZ,當輸入頻率值大于500KHz時,將輸入頻率值視為無效輸入,按照f等于500KHz進行除法運算,產生整數頻率脈沖信號。
[0032]所述除法模塊接收除法使能信號,進行系統時鐘的頻率與輸入頻率值的除法運算,輸出商Q、余數R和除法完成使能信號;
[0033]所述波形產生模塊受除法完成使能信號的觸發,根據所述商和余數生成脈沖信號,單位時間內生成的脈沖信號分為兩部分,其中R個脈沖以(Q+1)作為計數周期,(f-R)個脈沖以Q作為計數周期。
[0034]實施例1的各模塊間信號連接關系如圖2所示,其中,Clk為系統時鐘信號,Rst_η為系統復位信號,Div_en為除法使能信號,Div_done為除法完成使能脈沖信號,Run為脈沖輸出使能信號,pnm為脈沖輸出端口 ;
[0035]f為輸入頻率,輸入頻率值f隨可根據需求設置;檢測模塊輸出的除法使能信號