引言
某系統(tǒng)中的H橋驅(qū)動電路需要采用2路脈沖寬度調(diào)制器(Pulse Width Modulation,PWM)信號來驅(qū)動一個電機(jī),以控制其正、反兩個方向的運(yùn)轉(zhuǎn),且兩路信號必須有一定的時間間隔來避免驅(qū)動電流過大而損害驅(qū)動元件。為使其能靈活應(yīng)用,針對系統(tǒng)要求,本設(shè)計的PWM控制器應(yīng)具備以下功能:
(1)有3路獨(dú)立PWM輸出,每路輸出2個驅(qū)動信號,而且其周期、占空比、死區(qū)時間應(yīng)可編程;
(2)對應(yīng)10 MHz系統(tǒng)時鐘,周期為1μs~6.5536 ms;
(3)應(yīng)用精簡地址線,以節(jié)省外圍引腳及地址資源的占用;
(4)能提供與8/16 bits單片機(jī)的雙向數(shù)據(jù)接口,并具有內(nèi)置的地址/數(shù)據(jù)鎖存器(74lS373)。
1 PWM電路的結(jié)構(gòu)規(guī)劃
在采用自頂向下(Top_Down)正向設(shè)計PWM器件的過程中,芯片的結(jié)構(gòu)劃分和規(guī)格定制是整個設(shè)計的重要環(huán)節(jié),因此合理的結(jié)構(gòu)設(shè)計將決定整個設(shè)計的成敗。
PWM 輸出信號的周期、脈寬、死區(qū)時間等參數(shù)可以通過加載內(nèi)部的寄存器來實(shí)現(xiàn),寫人PWM芯片的數(shù)據(jù)分為數(shù)據(jù)字與控制字兩部分。由內(nèi)部控制邏輯 (ControlLogie)模塊來處理控制字信息,并譯碼產(chǎn)生各內(nèi)部通道的內(nèi)部信息寄存器片選信號。數(shù)據(jù)字則通過內(nèi)部數(shù)據(jù)總線在各通道模塊來傳遞PWM 的特征信息數(shù)據(jù)。
PWM芯片內(nèi)部各模塊可通過內(nèi)部片選結(jié)合讀寫使能來完成數(shù)據(jù)交換。芯片與外圍控制器進(jìn)行數(shù)據(jù)交換時,可采用雙模式接口 (8/16 bits),并可通過外置選擇引腳DataWidth來選配。
本芯片的核心是由3個完全獨(dú)立且相同的通道模塊 (Channel)構(gòu)成。通道內(nèi)部的數(shù)據(jù)接口用于完成外部讀寫邏輯(RWLogic)傳輸?shù)絻?nèi)部數(shù)據(jù)總線的數(shù)據(jù)收發(fā)工作。PWM周期生成模塊 (ClkGen)則可依據(jù)寫入的周期信息,輸出PWM的周期控制信號。
PWM輸出由通道狀態(tài)機(jī)完成,當(dāng)通道接收到PWM信息數(shù)據(jù)后,先進(jìn)行數(shù)據(jù)校驗(yàn),合格的數(shù)據(jù)將在合適的條件下啟動狀態(tài)機(jī),并在不同的狀態(tài)下完成PWM輸出。而不合格的數(shù)據(jù)則被忽略。
地址/數(shù)據(jù)鎖存依據(jù)通用 74LS373的邏輯功能,可以通過編寫一個完全可替代的L74LS373來實(shí)現(xiàn)。
根據(jù)上述總體的構(gòu)建思路,最終給出的芯片總體結(jié)構(gòu)如圖 1所示。

2 PWM電路的結(jié)構(gòu)設(shè)計
從圖1所示的PWM電路總體結(jié)構(gòu)可以看出,該P(yáng)WM電路主要由模塊片選譯碼、控制邏輯、讀寫邏輯、通道等四個模塊組成。
2.1 模塊片選譯碼
該模塊主要通過地址信號Addr與片選信號Cs_b的組合邏輯電路生成內(nèi)部各子模塊的片選信號(ControlLogic,3個通道:Channel2,Channel1,Channel0)。
2.2 控制邏輯
該模塊主要產(chǎn)生通道內(nèi)部Regs片選控制信號及各通道的輸出控制信號,同時完成精簡地址線的操作。
每個通道都包含各自獨(dú)立的4個16 bits的寄存器,包括正向信號長度、負(fù)向信號長度、死區(qū)長度、周期長度等。由于控制字寄存器為8 bits,因此.整個芯片至少占用3×4×2+1=25個地址(每個地址存儲8 bits數(shù)據(jù)),傳統(tǒng)做法至少需要5根地址線譯碼,而采用區(qū)分?jǐn)?shù)據(jù)信息類型(控制字,數(shù)據(jù)字)的方式則可將地址線精簡到2根。相對單片機(jī)緊缺的外面地址資源來說,其好處是顯而易見的。具體來說,通過對寫人ControlRegister(控制字寄存器)的值進(jìn)行分析,結(jié)合數(shù)據(jù)傳輸寬度生成內(nèi)部Regs片選控制信號,就可以通過控制字信息來完成內(nèi)部Regs的地址譯碼,同時反饋被操作的寄存器信息到RWLogic模塊,從而完成8/16bits的數(shù)據(jù)讀寫操作。
值得注意的是,由于PWM內(nèi)部包含了3個完全一樣的獨(dú)立通道,因此,為了更方便的對控制字進(jìn)行操作,通過對控制字寄存器的分析,可用控制邏輯電路自動將當(dāng)前被操作通道的控制寄存器信息存儲在對應(yīng)的控制寄存器中備份。這樣既方便在編程中靈活地操作各通道,又可避免讀寫過程中的誤修改非相干通道的控制信息。
2.3 讀寫邏輯
該模塊用于處理外部數(shù)據(jù)Data[15:0](包括外部為16位或8位數(shù)據(jù)總線連接方式)到內(nèi)部DataInternal[15:0]的轉(zhuǎn)換。當(dāng)DataWidth為1時,采用16 bits的數(shù)據(jù)傳輸;當(dāng)DataWidth為0時,采用8 bits數(shù)據(jù)傳輸。通過PWM能完成對外部8 bits或16 bits的信息傳輸要求,準(zhǔn)確的讀寫內(nèi)部16bits的Regs。具體實(shí)現(xiàn)時,如采用16 bits傳輸,由于內(nèi)部數(shù)據(jù)采用16 bits傳輸,可以采用每個地址對應(yīng)16 bits數(shù)據(jù),每個數(shù)據(jù)位一一對應(yīng)的傳輸方式;而采用8 bits傳輸時,由于內(nèi)部數(shù)據(jù)采用16bits傳輸,故可通過分析地址的奇偶特性來確定數(shù)據(jù)高低字節(jié)的存放,也就是通過ControlLogic反饋的字節(jié)選擇位,來使讀寫邏輯電路能夠自適應(yīng)地把16 bits的Regs數(shù)據(jù)信息分割加載到合適的數(shù)據(jù)通道上,從而完成數(shù)據(jù)的輸入輸出控制。
為了精簡數(shù)據(jù)線,實(shí)現(xiàn)數(shù)據(jù)的雙向流通,本模塊通過片選和讀寫使能信號所控制的雙向三態(tài)門接口電路來隔離讀寫信息。
2.4 通道
Channel 是PWM芯片的核心部分,每個Channel模塊都由3個子模塊組成,圖2所示是各Channel子模塊的內(nèi)部結(jié)構(gòu)圖。

2.5 數(shù)據(jù)接口
數(shù)據(jù)接口用于完成通道內(nèi)寄存器的讀寫功能。該模塊通過組合通道片選、內(nèi)部寄存器片選信號及模塊讀寫使能信號來產(chǎn)生各寄存器的讀寫使能信號。其讀寫操作可通過三態(tài)門與內(nèi)部數(shù)據(jù)通道進(jìn)行數(shù)據(jù)交換。
寫入本模塊的寄存器信息將進(jìn)行數(shù)據(jù)校驗(yàn)。只有校驗(yàn)合格的數(shù)據(jù)才能載入內(nèi)部寄存器的一級緩沖器(Buf)中,內(nèi)部寄存器的一級緩沖器(Buffer)數(shù)據(jù)將輸出到PWMFSM模塊,以提供PWM的特征數(shù)據(jù)。
2.6 周期信號發(fā)生器
周期信號發(fā)生器可生成PWM的周期控制信號,其周期的長短由數(shù)據(jù)接口傳過來的周期寄存器值(CyeleReg)決定。該模塊將通過內(nèi)部計數(shù)器計數(shù)時鐘,并與CycleReg比對,從而產(chǎn)生PWM的周期控制信號CycleScale。
2.7 狀態(tài)機(jī)
狀態(tài)機(jī)是產(chǎn)生PWM信號的核心功能模塊。通過加載Data Interface模塊接收到的通道內(nèi)部寄存器Buffer值,由狀態(tài)機(jī)來進(jìn)行運(yùn)轉(zhuǎn)。PWMFSM模塊中包含有一個自運(yùn)轉(zhuǎn)狀態(tài)機(jī)。當(dāng)符合條件的寄存器值寫入Channel寄存器后,狀態(tài)機(jī)將在CycleScale信號的起始信息的引導(dǎo)下,在時鐘的上升沿將內(nèi)部寄存器一級Buffer寫入到本模塊中的PWM 信息寄存器Buf中,以便在下一個運(yùn)行周期內(nèi)載入到PWM的狀態(tài)機(jī)中。狀態(tài)機(jī)啟動后,它將根據(jù)當(dāng)前狀態(tài)輸出脈沖驅(qū)動信號。其狀態(tài)機(jī)的運(yùn)轉(zhuǎn)圖如圖3所示。

其運(yùn)轉(zhuǎn)流程如下:
(1)從復(fù)位或停止工作狀態(tài)進(jìn)入IDLE狀態(tài);
(2) 在合法的數(shù)據(jù)寫入通道寄存器且CycleScale的啟始信號被接收后,狀態(tài)機(jī)將當(dāng)前通道內(nèi)部寄存器Buffer的值載人狀態(tài)機(jī)定時器,同時進(jìn)入正向脈沖狀態(tài),以便準(zhǔn)備輸出正向電機(jī)驅(qū)動信號;
(3)在正向脈沖狀態(tài)下,定時器開始減計數(shù),直到到達(dá)完成正向驅(qū)動所需要的時間,同時在結(jié)束正向驅(qū)動的輸出后,進(jìn)入死區(qū)狀態(tài);
(4)在死區(qū)狀態(tài),關(guān)閉正向、負(fù)向電機(jī)驅(qū)動信號,并通過定時器等待死區(qū)時間結(jié)束,然后進(jìn)入負(fù)向電機(jī)驅(qū)動狀態(tài) (負(fù)向脈沖);
(5)在負(fù)向脈沖狀態(tài)下,定時器開始減計數(shù),直到到達(dá)完成負(fù)向驅(qū)動所需要的時間,到在結(jié)束負(fù)向驅(qū)動的輸出后,進(jìn)入死區(qū)狀態(tài);
(6)在死區(qū)狀態(tài),關(guān)閉正向、負(fù)向電機(jī)驅(qū)動信號,并通過定時器等待死區(qū)時間結(jié)束,然后進(jìn)入空閑等待狀態(tài)。等待下一次的啟動信號。
3 PWM編程
PWM的工作模式由外部引腳與內(nèi)部控制字寄存器決定。
3.1PWM芯片的工作模式
PWM芯片的工作模式可由PWMh_b來設(shè)定:
當(dāng)其為1時,為全局使能輸出,此時為正常工作模式,但各Channel工作模式可取決于其 PWMEN位的值;而當(dāng)PWMh_b為0時,全局禁止輸出,此時整個芯片不工作,芯片進(jìn)入低功耗模式,同時時鐘被禁止輸入到內(nèi)部通道模塊。
3.2 PWM芯片的控制字寄存器
對于控制字寄存器ControlReg[7:0]:在其地址[A1,A0]=00的情況時,其操作格式如表1 所列。

由于控制字寄存器僅有一個,但實(shí)際各通道都有一個備份的控制字寄存器來控制對應(yīng)的通道。因此并不會由于對某通道控制字的操作而影響其它無關(guān)的通道。本格式中的各位定義如下:
PWMEN:當(dāng)芯片全局使能輸出時,此位可決定各通道PWM的輸出使能,當(dāng)PWMh_b為1時,各通道的輸出正常,為0時,則通道禁止輸出;
Channel2Cs:選通 Channel2。使能對Channel2模塊的操作,并將控制字信息存儲到通道2的備份控制字;
ChannellCs:選通 Channell。使能對Channell模塊的操作,并將控制字信息存儲到通道1的備份控制字;
Channel0Cs:選通 Channel0。使能對Channel0模塊的操作,并將控制字信息存儲到通道0的備份控制字;
[B2,B1,B0]:內(nèi)部寄存器片選譯碼。每個通道的PWM內(nèi)部都有8個寄存器地址。通過ChannelX的選通結(jié)合[B2,B1,B0]的譯碼,可產(chǎn)生內(nèi)部通道Regs的片選信號。
3.3 PWM編程
PWM芯片的引腳排列如圖4所示,當(dāng)其在上電加載時鐘后,所有通道都禁止輸出。系統(tǒng)通過采樣DataWidth來確定外圍數(shù)據(jù)接口的寬度,如果采用16bits傳輸(DataWidth=1),則Data[15:0]都使用;如果采用8bits傳輸 (DataWidth=0),則僅使用Data[7:0],而將高8bits接地。

復(fù)位(Reset_b)結(jié)束后,在片選(Cs_b)有效的情況下,可以對芯片進(jìn)行讀寫操作。對通道的一次完整的讀寫包括寫控制字與讀寫通道寄存器兩個過程,寫控制字選中通道內(nèi)寄存器,讀寫通道寄存器則可獲取通道寄存器信息,只有當(dāng)合理的數(shù)據(jù)寫入后,且在PWMH-_b有效(PWMH_b=1)時,PWM內(nèi)部通道才使能輸出信號。一般情況下,各通道的輸出使能由各通道的控制字寄存器的 PWM_EN位決定。
采用控制字自動備份的方式可使控制字的編程更加靈活。它既可以使同一個類型的寄存器(不同通道)一起寫控制字,亦可對同一個通道一塊操作。但是所有控制字命令都可以在PWM的控制字命令列表中查詢。
4 PWM的仿真及驗(yàn)證
PWM的仿真是PWM功能驗(yàn)證的必要環(huán)節(jié)??梢訫odelsim結(jié)合腳本文件進(jìn)行仿真,并采用89C51結(jié)合FPGA驗(yàn)證板對整個設(shè)計進(jìn)行驗(yàn)證。
4.1 PWM的仿真
ModeslSim仿真主要觀察PWM電路的雙向IO端口以及PWM的Regs讀寫控制時序。對于雙向端口的數(shù)據(jù)交換,可以采用讀寫控制結(jié)合三態(tài)門來完好地解決。而對于大量的Regs讀寫操作,則應(yīng)通過模擬單片機(jī)對外圍器件進(jìn)行操作,并利用Task調(diào)用的方式來實(shí)現(xiàn)。本文的讀寫操作仿真結(jié)果如圖5所示。
從圖5可以看到,當(dāng)采用16 bits讀寫時,各寄存器通過內(nèi)部DataInternal數(shù)據(jù)總線的傳輸過程與電路設(shè)計要求完全一致。RWLogic與DataInterface模塊的功能完全符合設(shè)計預(yù)想。

從圖6所示的PWM波形仿真結(jié)果可見,PWM輸出信號在ClkGen的 CycleScale信號控制下,其周期輸出編程設(shè)定的PWM波形與之完全一致,同時還能異步響應(yīng)ChannelHold_b信號的輸出控制。

4.2 PWM的驗(yàn)證
PWM的FPGA驗(yàn)證可采用8 bits數(shù)據(jù)接口,并用89C51做外圍控制器(12 MHz)來對PWM進(jìn)行操作。為了方便與單片機(jī)的接口,可將74LS373鎖存器內(nèi)置到PWM中,其整個數(shù)字部分設(shè)計如圖7所示。
5 結(jié)束語
通過Synplify Pro編譯后,其最后的結(jié)果為:

該方案的整個電路設(shè)計占用FPGA資源的35%。對于51系列的單片機(jī)而言,該 PWM電路可運(yùn)行的頻率遠(yuǎn)遠(yuǎn)超過系統(tǒng)頻率。因此,在讀寫時序上完全可以保證整個設(shè)計的可靠性。
如果將編譯后的pof文件下載到 APEX20KEEP20K100E TQ144-2X(Altera)fpga驗(yàn)證板,并采用40 MHz的FPGA時鐘,那么,根據(jù)軟件仿真的步驟,再將讀寫操作轉(zhuǎn)換為單片機(jī)程序燒錄到單片機(jī),就可通過示波器清楚的看到,其實(shí)際輸出與設(shè)計完全一致,非常好地實(shí)現(xiàn)了當(dāng)初的設(shè)計要求。
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1664文章
22513瀏覽量
639638 -
控制器
+關(guān)注
關(guān)注
114文章
17890瀏覽量
195346 -
PWM
+關(guān)注
關(guān)注
116文章
5895瀏覽量
226762
發(fā)布評論請先 登錄
采用89C51結(jié)合FPGA驗(yàn)證板實(shí)現(xiàn)PWM控制器的應(yīng)用設(shè)計
評論