基于FPGA的可編程PWM電路設(shè)計(jì)
2.1 模塊片選譯碼
該模塊主要通過(guò)地址信號(hào)Addr與片選信號(hào)Cs_b的組合邏輯電路生成內(nèi)部各子模塊的片選信號(hào)(ControlLogic,3個(gè)通道:Channel2,Channel1,Channel0)。
2.2 控制邏輯
該模塊主要產(chǎn)生通道內(nèi)部Regs片選控制信號(hào)及各通道的輸出控制信號(hào),同時(shí)完成精簡(jiǎn)地址線(xiàn)的操作。
每個(gè)通道都包含各自獨(dú)立的4個(gè)16 bits的寄存器,包括正向信號(hào)長(zhǎng)度、負(fù)向信號(hào)長(zhǎng)度、死區(qū)長(zhǎng)度、周期長(zhǎng)度等。由于控制字寄存器為8 bits,因此.整個(gè)芯片至少占用3×4×2+1=25個(gè)地址(每個(gè)地址存儲(chǔ)8 bits數(shù)據(jù)),傳統(tǒng)做法至少需要5根地址線(xiàn)譯碼,而采用區(qū)分?jǐn)?shù)據(jù)信息類(lèi)型(控制字,數(shù)據(jù)字)的方式則可將地址線(xiàn)精簡(jiǎn)到2根。相對(duì)單片機(jī)緊缺的外面地址資源來(lái)說(shuō),其好處是顯而易見(jiàn)的。具體來(lái)說(shuō),通過(guò)對(duì)寫(xiě)人ControlRegister(控制字寄存器)的值進(jìn)行分析,結(jié)合數(shù)據(jù)傳輸寬度生成內(nèi)部Regs片選控制信號(hào),就可以通過(guò)控制字信息來(lái)完成內(nèi)部Regs的地址譯碼,同時(shí)反饋被操作的寄存器信息到RWLogic模塊,從而完成8/16bits的數(shù)據(jù)讀寫(xiě)操作。
值得注意的是,由于PWM內(nèi)部包含了3個(gè)完全一樣的獨(dú)立通道,因此,為了更方便的對(duì)控制字進(jìn)行操作,通過(guò)對(duì)控制字寄存器的分析,可用控制邏輯電路自動(dòng)將當(dāng)前被操作通道的控制寄存器信息存儲(chǔ)在對(duì)應(yīng)的控制寄存器中備份。這樣既方便在編程中靈活地操作各通道,又可避免讀寫(xiě)過(guò)程中的誤修改非相干通道的控制信息。
2.3 讀寫(xiě)邏輯
該模塊用于處理外部數(shù)據(jù)Data[15:0](包括外部為16位或8位數(shù)據(jù)總線(xiàn)連接方式)到內(nèi)部DataInternal[15:0]的轉(zhuǎn)換。當(dāng)DataWidth為1時(shí),采用16 bits的數(shù)據(jù)傳輸;當(dāng)DataWidth為0時(shí),采用8 bits數(shù)據(jù)傳輸。通過(guò)PWM能完成對(duì)外部8 bits或16 bits的信息傳輸要求,準(zhǔn)確的讀寫(xiě)內(nèi)部16bits的Regs。具體實(shí)現(xiàn)時(shí),如采用16 bits傳輸,由于內(nèi)部數(shù)據(jù)采用16 bits傳輸,可以采用每個(gè)地址對(duì)應(yīng)16 bits數(shù)據(jù),每個(gè)數(shù)據(jù)位一一對(duì)應(yīng)的傳輸方式;而采用8 bits傳輸時(shí),由于內(nèi)部數(shù)據(jù)采用16bits傳輸,故可通過(guò)分析地址的奇偶特性來(lái)確定數(shù)據(jù)高低字節(jié)的存放,也就是通過(guò)ControlLogic反饋的字節(jié)選擇位,來(lái)使讀寫(xiě)邏輯電路能夠自適應(yīng)地把16 bits的Regs數(shù)據(jù)信息分割加載到合適的數(shù)據(jù)通道上,從而完成數(shù)據(jù)的輸入輸出控制。
為了精簡(jiǎn)數(shù)據(jù)線(xiàn),實(shí)現(xiàn)數(shù)據(jù)的雙向流通,本模塊通過(guò)片選和讀寫(xiě)使能信號(hào)所控制的雙向三態(tài)門(mén)接口電路來(lái)隔離讀寫(xiě)信息。
2.4 通道
Channel是PWM芯片的核心部分,每個(gè)Channel模塊都由3個(gè)子模塊組成,圖2所示是各Channel子模塊的內(nèi)部結(jié)構(gòu)圖。
2.5 數(shù)據(jù)接口
數(shù)據(jù)接口用于完成通道內(nèi)寄存器的讀寫(xiě)功能。該模塊通過(guò)組合通道片選、內(nèi)部寄存器片選信號(hào)及模塊讀寫(xiě)使能信號(hào)來(lái)產(chǎn)生各寄存器的讀寫(xiě)使能信號(hào)。其讀寫(xiě)操作可通過(guò)三態(tài)門(mén)與內(nèi)部數(shù)據(jù)通道進(jìn)行數(shù)據(jù)交換。
寫(xiě)入本模塊的寄存器信息將進(jìn)行數(shù)據(jù)校驗(yàn)。只有校驗(yàn)合格的數(shù)據(jù)才能載入內(nèi)部寄存器的一級(jí)緩沖器(Buf)中,內(nèi)部寄存器的一級(jí)緩沖器(Buffer)數(shù)據(jù)將輸出到PWMFSM模塊,以提供PWM的特征數(shù)據(jù)。
2.6 周期信號(hào)發(fā)生器
周期信號(hào)發(fā)生器可生成PWM的周期控制信號(hào),其周期的長(zhǎng)短由數(shù)據(jù)接口傳過(guò)來(lái)的周期寄存器值(CyeleReg)決定。該模塊將通過(guò)內(nèi)部計(jì)數(shù)器計(jì)數(shù)時(shí)鐘,并與CycleReg比對(duì),從而產(chǎn)生PWM的周期控制信號(hào)CycleScale。
2.7 狀態(tài)機(jī)
狀態(tài)機(jī)是產(chǎn)生PWM信號(hào)的核心功能模塊。通過(guò)加載Data Interface模塊接收到的通道內(nèi)部寄存器Buffer值,由狀態(tài)機(jī)來(lái)進(jìn)行運(yùn)轉(zhuǎn)。PWMFSM模塊中包含有一個(gè)自運(yùn)轉(zhuǎn)狀態(tài)機(jī)。當(dāng)符合條件的寄存器值寫(xiě)入Channel寄存器后,狀態(tài)機(jī)將在CycleScale信號(hào)的起始信息的引導(dǎo)下,在時(shí)鐘的上升沿將內(nèi)部寄存器一級(jí)Buffer寫(xiě)入到本模塊中的PWM信息寄存器Buf中,以便在下一個(gè)運(yùn)行周期內(nèi)載入到PWM的狀態(tài)機(jī)中。狀態(tài)機(jī)啟動(dòng)后,它將根據(jù)當(dāng)前狀態(tài)輸出脈沖驅(qū)動(dòng)信號(hào)。其狀態(tài)機(jī)的運(yùn)轉(zhuǎn)圖如圖3所示。
其運(yùn)轉(zhuǎn)流程如下:
(1)從復(fù)位或停止工作狀態(tài)進(jìn)入IDLE狀態(tài);
(2)在合法的數(shù)據(jù)寫(xiě)入通道寄存器且CycleScale的啟始信號(hào)被接收后,狀態(tài)機(jī)將當(dāng)前通道內(nèi)部寄存器Buffer的值載人狀態(tài)機(jī)定時(shí)器,同時(shí)進(jìn)入正向脈沖狀態(tài),以便準(zhǔn)備輸出正向電機(jī)驅(qū)動(dòng)信號(hào);
(3)在正向脈沖狀態(tài)下,定時(shí)器開(kāi)始減計(jì)數(shù),直到到達(dá)完成正向驅(qū)動(dòng)所需要的時(shí)間,同時(shí)在結(jié)束正向驅(qū)動(dòng)的輸出后,進(jìn)入死區(qū)狀態(tài);
(4)在死區(qū)狀態(tài),關(guān)閉正向、負(fù)向電機(jī)驅(qū)動(dòng)信號(hào),并通過(guò)定時(shí)器等待死區(qū)時(shí)間結(jié)束,然后進(jìn)入負(fù)向電機(jī)驅(qū)動(dòng)狀態(tài)(負(fù)向脈沖);
(5)在負(fù)向脈沖狀態(tài)下,定時(shí)器開(kāi)始減計(jì)數(shù),直到到達(dá)完成負(fù)向驅(qū)動(dòng)所需要的時(shí)間,到在結(jié)束負(fù)向驅(qū)動(dòng)的輸出后,進(jìn)入死區(qū)狀態(tài);
(6)在死區(qū)狀態(tài),關(guān)閉正向、負(fù)向電機(jī)驅(qū)動(dòng)信號(hào),并通過(guò)定時(shí)器等待死區(qū)時(shí)間結(jié)束,然后進(jìn)入空閑等待狀態(tài)。等待下一次的啟動(dòng)信號(hào)。
pwm相關(guān)文章:pwm原理
評(píng)論