基于FPGA的可編程PWM電路設(shè)計
2.1 模塊片選譯碼
該模塊主要通過地址信號Addr與片選信號Cs_b的組合邏輯電路生成內(nèi)部各子模塊的片選信號(ControlLogic,3個通道:Channel2,Channel1,Channel0)。
2.2 控制邏輯
該模塊主要產(chǎn)生通道內(nèi)部Regs片選控制信號及各通道的輸出控制信號,同時完成精簡地址線的操作。
每個通道都包含各自獨立的4個16 bits的寄存器,包括正向信號長度、負向信號長度、死區(qū)長度、周期長度等。由于控制字寄存器為8 bits,因此.整個芯片至少占用3×4×2+1=25個地址(每個地址存儲8 bits數(shù)據(jù)),傳統(tǒng)做法至少需要5根地址線譯碼,而采用區(qū)分數(shù)據(jù)信息類型(控制字,數(shù)據(jù)字)的方式則可將地址線精簡到2根。相對單片機緊缺的外面地址資源來說,其好處是顯而易見的。具體來說,通過對寫人ControlRegister(控制字寄存器)的值進行分析,結(jié)合數(shù)據(jù)傳輸寬度生成內(nèi)部Regs片選控制信號,就可以通過控制字信息來完成內(nèi)部Regs的地址譯碼,同時反饋被操作的寄存器信息到RWLogic模塊,從而完成8/16bits的數(shù)據(jù)讀寫操作。
值得注意的是,由于PWM內(nèi)部包含了3個完全一樣的獨立通道,因此,為了更方便的對控制字進行操作,通過對控制字寄存器的分析,可用控制邏輯電路自動將當(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的信息傳輸要求,準確的讀寫內(nèi)部16bits的Regs。具體實現(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ù)線,實現(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ù)通道進行數(shù)據(jù)交換。
寫入本模塊的寄存器信息將進行數(shù)據(jù)校驗。只有校驗合格的數(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)機
狀態(tài)機是產(chǎn)生PWM信號的核心功能模塊。通過加載Data Interface模塊接收到的通道內(nèi)部寄存器Buffer值,由狀態(tài)機來進行運轉(zhuǎn)。PWMFSM模塊中包含有一個自運轉(zhuǎn)狀態(tài)機。當(dāng)符合條件的寄存器值寫入Channel寄存器后,狀態(tài)機將在CycleScale信號的起始信息的引導(dǎo)下,在時鐘的上升沿將內(nèi)部寄存器一級Buffer寫入到本模塊中的PWM信息寄存器Buf中,以便在下一個運行周期內(nèi)載入到PWM的狀態(tài)機中。狀態(tài)機啟動后,它將根據(jù)當(dāng)前狀態(tài)輸出脈沖驅(qū)動信號。其狀態(tài)機的運轉(zhuǎn)圖如圖3所示。
其運轉(zhuǎn)流程如下:
(1)從復(fù)位或停止工作狀態(tài)進入IDLE狀態(tài);
(2)在合法的數(shù)據(jù)寫入通道寄存器且CycleScale的啟始信號被接收后,狀態(tài)機將當(dāng)前通道內(nèi)部寄存器Buffer的值載人狀態(tài)機定時器,同時進入正向脈沖狀態(tài),以便準備輸出正向電機驅(qū)動信號;
(3)在正向脈沖狀態(tài)下,定時器開始減計數(shù),直到到達完成正向驅(qū)動所需要的時間,同時在結(jié)束正向驅(qū)動的輸出后,進入死區(qū)狀態(tài);
(4)在死區(qū)狀態(tài),關(guān)閉正向、負向電機驅(qū)動信號,并通過定時器等待死區(qū)時間結(jié)束,然后進入負向電機驅(qū)動狀態(tài)(負向脈沖);
(5)在負向脈沖狀態(tài)下,定時器開始減計數(shù),直到到達完成負向驅(qū)動所需要的時間,到在結(jié)束負向驅(qū)動的輸出后,進入死區(qū)狀態(tài);
(6)在死區(qū)狀態(tài),關(guān)閉正向、負向電機驅(qū)動信號,并通過定時器等待死區(qū)時間結(jié)束,然后進入空閑等待狀態(tài)。等待下一次的啟動信號。
pwm相關(guān)文章:pwm原理
評論