脈沖電源脈沖序列產生的一種方法
介紹一種利用8253芯片產生可變的脈沖序列的方法。在該方法中,通過軟件編程使8253的2個計數通道分別工作在方式1和方式2,產生脈寬、脈間寬度可變的脈沖序列。
關鍵詞:電源;微機控制;脈沖
A Method to Generate Programmable Pulse Sequence of Pulse Power Supply
ZHAO Jianfeng
(Xiamen Aeronautics Co., Xiamen 361006, China)
Key words: power supply; microcomputer control; pulse
8253可編程計數器/定時器的工作頻率為0~2MHz,它有3個獨立編程的計數器,每個計數器有三個引腳,分別為時鐘CLK、門控GATE、計數器和計時結束輸出OUT;每個計數器分別有6種工作方式。下面針對使用到的兩種工作方式——方式1和方式2的工作原理[1]進行簡述。
方式1:可編程單穩(wěn),即由外部硬件產生的門控信號GATE觸發(fā)8253而輸出單穩(wěn)脈沖。計數器裝入計數初值后,在門控信號GATE由低電平變高電平并保持時,計數器開始計數,此時輸出端變成低電平并開始單穩(wěn)過程。當計數結束時,輸出端OUT轉變成高電平,單穩(wěn)過程結束,在OUT端輸出一個單穩(wěn)脈沖。硬件再次觸發(fā),OUT端可再次輸出一個同樣的單穩(wěn)脈沖。單穩(wěn)脈沖的寬度由裝入計數器的計數初值決定。在WR信號的上升沿(CPU寫控制字之后),輸出端OUT保持高電平(若OUT原為低電平則變?yōu)楦唠娖?。CPU寫入計數值后,計數器并不馬上開始計數,而要等到門控信號GATE啟動之后的下一個CLK的下降沿才開始。在整個計數過程中,輸出端OUT保持低電平,直至計數值至0,OUT變?yōu)楦唠娖綖橹埂?BR> 方式2:速率發(fā)生器,其功能如同一個N分頻計數器。其輸出是將輸入時鐘按照N計數值分頻后得到的一個連續(xù)脈沖。在該方式下,當計數器裝入初始值開始工作后,輸出端OUT將不斷地輸出負脈沖,其寬度為一個時鐘周期的時間,而兩個負脈沖間的時間脈沖個數等于計數器裝入的計數初值。若計數初值為N,則每N個輸入脈沖輸出一個脈沖。當CPU寫完控制字后,輸出端OUT轉變成高電平,計數器將立即自動開始對輸入CLK時鐘計數。在計數過程中,OUT端始終保持高電平,直至計數器的計數值減到1時,OUT端才變?yōu)榈碗娖?,其保持的寬度為一個輸入CLK時鐘周期的時間,然后輸出端OUT恢復高電平,計數器重新開始計數。
方式1:可編程單穩(wěn),即由外部硬件產生的門控信號GATE觸發(fā)8253而輸出單穩(wěn)脈沖。計數器裝入計數初值后,在門控信號GATE由低電平變高電平并保持時,計數器開始計數,此時輸出端變成低電平并開始單穩(wěn)過程。當計數結束時,輸出端OUT轉變成高電平,單穩(wěn)過程結束,在OUT端輸出一個單穩(wěn)脈沖。硬件再次觸發(fā),OUT端可再次輸出一個同樣的單穩(wěn)脈沖。單穩(wěn)脈沖的寬度由裝入計數器的計數初值決定。在WR信號的上升沿(CPU寫控制字之后),輸出端OUT保持高電平(若OUT原為低電平則變?yōu)楦唠娖?。CPU寫入計數值后,計數器并不馬上開始計數,而要等到門控信號GATE啟動之后的下一個CLK的下降沿才開始。在整個計數過程中,輸出端OUT保持低電平,直至計數值至0,OUT變?yōu)楦唠娖綖橹埂?BR> 方式2:速率發(fā)生器,其功能如同一個N分頻計數器。其輸出是將輸入時鐘按照N計數值分頻后得到的一個連續(xù)脈沖。在該方式下,當計數器裝入初始值開始工作后,輸出端OUT將不斷地輸出負脈沖,其寬度為一個時鐘周期的時間,而兩個負脈沖間的時間脈沖個數等于計數器裝入的計數初值。若計數初值為N,則每N個輸入脈沖輸出一個脈沖。當CPU寫完控制字后,輸出端OUT轉變成高電平,計數器將立即自動開始對輸入CLK時鐘計數。在計數過程中,OUT端始終保持高電平,直至計數器的計數值減到1時,OUT端才變?yōu)榈碗娖?,其保持的寬度為一個輸入CLK時鐘周期的時間,然后輸出端OUT恢復高電平,計數器重新開始計數。
其中:SC1 SC0為計數器選擇位;RL1 RL0為計數器讀寫操作選擇位,以確定計數器進行裝入或讀出是單字節(jié)還是雙字節(jié);M2 M1 M0為計數器工作方式選擇位;BCD表示計數器計數方式選擇位。
在實現過程中,讓計數器0工作于速率發(fā)生器方式(方式2),計數器1工作于可編程單穩(wěn)方式(方式1)。假設提供給8253的時鐘周期為T,所需脈寬寬度Ti是Ni個時鐘周期的寬度,即Ti=Ni×T;所需脈間寬度T0是N0個時鐘周期的寬度,即T0=N0×T。如圖2所示。
由于每個計數器中的計數寄存器為16位,因而該脈沖序列周期最大為65535個時鐘周期。如以1MHz時鐘頻率計,則最大脈沖信號周期為65535μs,即65.535ms,對于脈沖周期要求更長的可采用二級級聯方式,詳細可參考有關書籍,限于篇幅,本文不作介紹。在實際應用中,通過改變提供給8253的時鐘信號和改變計數器的計數值可分別控制脈寬和脈間寬度,具有很強的靈活性。
8253脈沖信號產生電路的連接如圖3。
本文中時鐘頻率為1MHz,周期T為1μs。計數器0的口地址為300H,計數器1的口地址為301H,8253控制寄存器的口地址為303H。
下面以產生脈寬寬度Ti為2μs(Ni=2)、脈間寬度T0為6μs(N0=6)的脈沖信號為例介紹軟件編程方法。
根據上述要求,計數器0的控制字為14H(方式2、單字節(jié)、十六進制計數方式),計數器1的控制字為52H(方式1、單字節(jié)、十六進制計數方式)。
5試驗結果
按照上述參數設置,從計數器1輸出的脈沖序列如圖4。
根據上述要求,計數器0的控制字為14H(方式2、單字節(jié)、十六進制計數方式),計數器1的控制字為52H(方式1、單字節(jié)、十六進制計數方式)。
5試驗結果
按照上述參數設置,從計數器1輸出的脈沖序列如圖4。
評論