韓文強(qiáng) 宋洪亮 桑運(yùn)曉 于會(huì)泳
(山東科技大學(xué) 機(jī)械電子工程學(xué)院,青島 266590)
基于Verilog HDL的PWM脈沖發(fā)生器設(shè)計(jì)
韓文強(qiáng)宋洪亮桑運(yùn)曉于會(huì)泳
(山東科技大學(xué) 機(jī)械電子工程學(xué)院,青島 266590)
提出高速PWM脈沖發(fā)生器的設(shè)計(jì),簡(jiǎn)單介紹該脈沖發(fā)生器與運(yùn)動(dòng)控制器的連接,并基于FPGA硬件平臺(tái),使用Altera公司提供的QuartusII 11.0版本開(kāi)發(fā)工具,采用Verilog硬件描述語(yǔ)言,對(duì)PWM脈沖發(fā)生器進(jìn)行設(shè)計(jì)。最后,通過(guò)ModelSim功能仿真驗(yàn)證,該設(shè)計(jì)符合要求。
脈沖發(fā)生器Verilog HDLPWM
隨著科學(xué)技術(shù)的發(fā)展進(jìn)步,數(shù)控系統(tǒng)的運(yùn)行速度越來(lái)越快,精度越來(lái)越高。為了適應(yīng)數(shù)控系統(tǒng)高速度、高精度的需求,本文提出基于Verilog HDL硬件描述語(yǔ)言的高速PWM脈沖發(fā)生器設(shè)計(jì)。該設(shè)計(jì)可以在FPGA硬件平臺(tái)上實(shí)現(xiàn),具體內(nèi)容如下。
該設(shè)計(jì)中的脈沖發(fā)生器通過(guò)并行接口與運(yùn)動(dòng)控制器相連,系統(tǒng)的連接結(jié)構(gòu)如圖1所示。
圖1系統(tǒng)連接結(jié)構(gòu)圖
運(yùn)動(dòng)控制器通過(guò)并行總線DATA與多個(gè)PWM脈沖發(fā)生器相連,通過(guò)DATA給脈沖發(fā)生器發(fā)送PWM脈沖周期信息,片選信號(hào)線CS的作用為選通與運(yùn)動(dòng)控制器通信的PWM脈沖發(fā)生器。EN表示啟動(dòng)脈沖發(fā)生器,各脈沖發(fā)生器公用一個(gè)EN信號(hào)線。在EN的作用下,各脈沖發(fā)生器同時(shí)產(chǎn)生PWM脈沖信號(hào)。為了降低成本,可以將三個(gè)脈沖發(fā)生器集成到一個(gè)FPGA模塊中。
基于Verilog HDL的脈沖發(fā)生器的主要功能是接收運(yùn)動(dòng)控制器發(fā)送來(lái)的脈沖頻率信息,將接收到的脈沖頻率信息轉(zhuǎn)換為PWM脈沖和方向信號(hào)發(fā)送給電機(jī)驅(qū)動(dòng)器或其他設(shè)備使用,其等效模塊如圖2所示。
圖2中,DATA0~DATA16為數(shù)據(jù)輸入并口,共17根數(shù)據(jù)信號(hào)線。其中,第0~15根信號(hào)線用來(lái)傳輸產(chǎn)生PWM脈沖的頻率信息,第16根信號(hào)線用來(lái)傳遞脈沖方向信息。在該FPGA模塊中,共有3路PWM輸出信號(hào)和方向輸出信號(hào),分別對(duì)應(yīng)3路PWM選擇信號(hào)CS1、CS2、CS3。當(dāng)CS1有效時(shí),表示傳輸?shù)臄?shù)據(jù)為配置第一路脈沖輸出信號(hào);當(dāng)CS2有效時(shí),表示傳輸?shù)臄?shù)據(jù)為配置第二路脈沖輸出信號(hào);當(dāng)CS3有效時(shí),表示傳輸?shù)臄?shù)據(jù)為配置第三路脈沖輸出信號(hào)。在數(shù)據(jù)配置過(guò)程中,若存在兩路或三路的配置數(shù)據(jù)完全相同,則相同配置數(shù)據(jù)的PWM選擇信號(hào)CS可以同時(shí)有效,表示這組數(shù)據(jù)同時(shí)對(duì)選通的多路PWM進(jìn)行配置。當(dāng)所有數(shù)據(jù)完成配置后,運(yùn)動(dòng)控制器發(fā)送使能信號(hào)EN。此時(shí),使能信號(hào)由低電平變?yōu)楦唠娖健PGA若檢測(cè)到使能信號(hào)的上升沿,則同時(shí)啟動(dòng)PWM脈沖發(fā)生器,使其同時(shí)產(chǎn)生需要的PWM脈沖信號(hào)。
圖2 FPGA等效模塊
該設(shè)計(jì)采用Verilog HDL設(shè)計(jì)語(yǔ)言,采用自頂向下的方設(shè)計(jì)式。首先,根據(jù)該脈沖發(fā)生器需要實(shí)現(xiàn)的整體功能,完成頂層程序的規(guī)劃。然后,根據(jù)各部分具體作用的劃分,將程序分為多個(gè)功能模塊。設(shè)計(jì)時(shí),首先要解決FPGA從運(yùn)動(dòng)控制器接收到數(shù)據(jù)信息的問(wèn)題,因此需要數(shù)據(jù)接收模塊DATA_REC_Module。其次,要將數(shù)據(jù)轉(zhuǎn)換為PWM脈沖信號(hào),因此需要PWM脈沖生成模塊;設(shè)計(jì)中共有3路PWM脈沖輸出,因此需要PWM1_GEN、PWM2_GEN 和PWM3_GEN;當(dāng)完成所有PWM脈沖發(fā)生器的配置后,還需要明確何時(shí)開(kāi)始發(fā)出PWM脈沖,因此需要生成PWM脈沖使能模塊PWM_EN_Module。系統(tǒng)的RTL視圖如圖3所示,而各引腳的功能為:
CLK:FPGA的工作時(shí)鐘;
DATA[16:0]:數(shù)據(jù)輸入;
EN:使能信號(hào)輸入;
CS1~CS3:脈沖發(fā)生器選通信號(hào);
PWM1~PWM3:PWM脈沖輸出;
DIR1~DIR3:PWM脈沖方向輸出。
圖3系統(tǒng)RTL視圖
3.1數(shù)據(jù)接收模塊
該模塊的主要功能是將從并行接口接收到的數(shù)據(jù)存放到相應(yīng)的緩存寄存器中,等待PWM脈沖發(fā)生器的調(diào)用。模塊輸入端口包含DATA[16:0]和FPGA工作時(shí)鐘CLK,輸出端口REC_DATA[15:0]和DATA16。FPGA工作過(guò)程中,在每個(gè)時(shí)鐘信號(hào)CLK的上升沿采集輸入端口的數(shù)據(jù),并從輸出端口輸出。由于該模塊對(duì)輸入端口的數(shù)據(jù)在每個(gè)時(shí)鐘信號(hào)的上升沿都會(huì)采集,因此要求運(yùn)動(dòng)控制發(fā)出的配置數(shù)據(jù)能夠保持一定的時(shí)間,等到選通信號(hào)CS到達(dá)后才能發(fā)生改變。
3.2 PWM脈沖使能模塊
該模塊的主要功能是接收運(yùn)動(dòng)控制器發(fā)送的使能信號(hào),在接收到此使能信號(hào)時(shí)同時(shí)啟動(dòng)3路PWM脈沖發(fā)生器,生成PWM脈沖。對(duì)于輸入使能信號(hào)的檢測(cè),是通過(guò)檢測(cè)其上升沿。當(dāng)檢測(cè)到使能信號(hào)的上升沿時(shí),發(fā)出同步啟動(dòng)信號(hào)。該模塊的輸入端口包括FPGA工作時(shí)鐘信號(hào)CLK和運(yùn)動(dòng)控制器輸入使能信號(hào)EN,輸出端口則為使能信號(hào)上升沿EN_L2H。
3.3 PWM脈沖生成模塊
該模塊的主要功能是根據(jù)數(shù)據(jù)接收模塊接收到的配置數(shù)據(jù),轉(zhuǎn)換成需要的PWM脈沖信號(hào)和PWM脈沖方向信號(hào)。3個(gè)模塊PWM1_GEN、PWM2_GEN和PWM3_GEN的程序基本相同,只是選通信號(hào)CS和輸出PWM脈沖和方向信號(hào)的端口有所差異,在此以PWM1_GEN為例介紹模塊的設(shè)計(jì)。根據(jù)功能需要,PWM1_GEN共需 3個(gè)子模塊:PWM_CS1_Module、PWM1_TIMER_Module和PWM1_DIR_Module,其RTL視圖如圖4所示。
圖4 PWM1_GEN的RTL視圖
(1)PWM_CS1_Module。正常情況下,CS信號(hào)保持低電平狀態(tài)。運(yùn)動(dòng)控制器在進(jìn)行配置選擇時(shí),會(huì)產(chǎn)生一個(gè)高電平跳變。該模塊的主要功能是對(duì)選通信號(hào)CS1的上升沿進(jìn)行檢測(cè),將檢測(cè)到的上升沿 CS1_L2H信號(hào)傳輸給PWM1_TIMER_Module和PWM1_DIR_Module。
(2)PWM1_TIMER_Module。該模塊為PWM脈沖發(fā)生器的核心,將接收到的配置數(shù)據(jù)轉(zhuǎn)換成需要輸出的PWM脈沖輸出。模塊的輸入端口包括CS信號(hào)的上升沿CS_L2H、使能信號(hào)的上升沿EN_L2H、數(shù)據(jù)輸入REC_DATA[15:0]以及FPGA的工作時(shí)鐘CLK;輸出端口為達(dá)到計(jì)數(shù)值標(biāo)志信號(hào)Timer_Sign。工作過(guò)程為在CS1_L2H到來(lái)時(shí),根據(jù)輸入數(shù)據(jù)REC_DATA[15:0]配置定時(shí)器的計(jì)數(shù)值。在EN_L2H信號(hào)到來(lái)時(shí)開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到配置的數(shù)據(jù)時(shí),發(fā)出標(biāo)志信號(hào)Timer_Sign,同時(shí)計(jì)數(shù)值清零,重新開(kāi)始計(jì)數(shù)。直到完成下次的數(shù)據(jù)配置,同時(shí)接收到使能信號(hào)上升沿EN_L2H后,改變輸出的PWM脈沖頻率。
(3)PWM1_DIR_Module。該模塊的輸入端口包括Timer1_Sign、DATA16以及 CLK,輸出端口為 PWM1和DIR1。主要功能為根據(jù)標(biāo)志信號(hào)Timer1_Sign輸出PWM脈沖信號(hào)。當(dāng)Timer1_Sign為“1”時(shí),PWM1輸出信號(hào)將發(fā)生翻轉(zhuǎn);根據(jù)DATA16輸出PWM脈沖方向信號(hào),當(dāng)DATA16為“1”時(shí),DIR1為高電平,當(dāng)DATA16為“0”時(shí),DIR1為低電平。
為了驗(yàn)證程序的設(shè)計(jì)是否正確,需要進(jìn)行功能仿真驗(yàn)證。設(shè)計(jì)中,采用ModelSim進(jìn)行功能仿真。
在進(jìn)行仿真時(shí),設(shè)置CLK的周期為10ns。第一次配置脈沖發(fā)生的數(shù)據(jù)DATA為17'h100c8,即要求輸出的PWM脈沖脈寬經(jīng)過(guò)200個(gè)CLK周期,則PWM脈沖周期為400 個(gè)CLK周期,即400×10=4000ns,方向?yàn)檎?。CS1產(chǎn)生高電平跳變,即選通配置第一路PWM脈沖發(fā)生器;第二次配置脈沖發(fā)生的數(shù)據(jù) DATA為 17'h10064,即要求輸出的PWM脈沖脈寬經(jīng)過(guò)100個(gè)CLK周期,則PWM脈沖周期為200個(gè)CLK周期,即200×10=2000ns,方向?yàn)檎S2產(chǎn)生高電平跳變,即選通配置第二路PWM脈沖發(fā)生器;第三次配置脈沖發(fā)生的數(shù)據(jù)DATA為17'h00032,即要求輸出的PWM脈沖脈寬經(jīng)過(guò)50個(gè)CLK周期,則PWM脈沖周期為100個(gè)CLK周期,即100×10=1000ns,方向?yàn)樨?fù)。CS3產(chǎn)生高電平跳變,即選通配置第三路PWM脈沖發(fā)生器。完成3路脈沖發(fā)生器的配置后,使能信號(hào)EN產(chǎn)生高脈沖跳變,表示啟動(dòng)第3路脈沖發(fā)生器。圖5為ModelSim的仿真波形圖。
由仿真圖可以看出,3路脈沖發(fā)生器根據(jù)信號(hào) CS1、CS2、CS3完成數(shù)據(jù)配置,在使能信號(hào)EN的作用下同時(shí)輸出PWM脈沖和方向信號(hào)。其中,第一路PWM1輸出的脈沖周期 8170000-4170000=4000000ps=4000ns,輸出方向DIR1為正;第二路PWM2輸出的脈沖周期為6170000-4170000=2000000ps=2000ns,輸出方向DIR1為正;P WM3輸出的脈沖周期為5170000-4170000=1000000ps=1000ns,輸出方向DIR1為負(fù)。3路脈沖發(fā)生器產(chǎn)生的PWM脈沖和方向與要求發(fā)出的一致,仿真驗(yàn)證該設(shè)計(jì)正確。
圖5 ModelSim仿真波形圖
從仿真驗(yàn)證結(jié)果看,該設(shè)計(jì)達(dá)到預(yù)期目標(biāo),F(xiàn)PGA的運(yùn)行速度為100MHz,能夠滿足高精度、高速度的要求。目前,該設(shè)計(jì)已應(yīng)用于3軸數(shù)控車(chē)床中,且使用效果良好。
[1]夏宇聞.Verilog HDL入門(mén)[M].北京:北京航空航天大學(xué)出版社,2013.
[2]王誠(chéng),蔡海寧,吳繼華.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2012.
[3]王書(shū)志.基于QuartusⅡ的數(shù)字邏輯電路設(shè)計(jì)技術(shù)基礎(chǔ)[M].蘭州:蘭州大學(xué)出版社,2011.
DesignofPWMPulseGeneratorBasedonHDL Verilog
HAN Wenqiang,SONG Hongliang,SANG Yunxiao,YU Huiyong
(CollegeofmechanicalandelectronicengineeringShandong University of Science and Technology,Qingdao 266590)
This paper presents the design of high speed PWM pulse generator,a brief introduction of the pulse generator and a motion controller connection,and based on FPGA hardware platform,provided by Altera Quartus II 11.0 version of development tools by Verilog hardware description language and the PWM pulse generator is designed.Finally,through ModelSim simulation,the design meets the requirements.
pulse generator,Verilog HDL,PWM