專利名稱:一種基于fpga的模糊控制芯片的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于模糊控制芯片。尤其涉及一種基于FPGA的模糊控制芯片。
背景技術(shù):
隨著模糊技術(shù)的發(fā)展,模糊控制器越來(lái)越廣泛地應(yīng)用于以過(guò)程控制領(lǐng)域?yàn)榇淼墓I(yè)生產(chǎn)控制中。絕大部分的模糊控制器是通過(guò)軟件或微處理器(8051等)實(shí)現(xiàn)的,響應(yīng)速度慢,這就限制了模糊控制器只能應(yīng)用在低速系統(tǒng)中,進(jìn)行非實(shí)時(shí)控制。為了實(shí)現(xiàn)實(shí)時(shí)控制,必須提高模糊控制器的響應(yīng)速度,模糊推理過(guò)程的硬件實(shí)現(xiàn)是一種可行的途徑。
一種“用FPGA實(shí)現(xiàn)模糊控制器的方法”(王利.基于FPGA的模糊控制器的硬件實(shí)現(xiàn).控制工程,2004,1),有其明顯的優(yōu)點(diǎn),并用倒立擺作了驗(yàn)證。但這種實(shí)現(xiàn)方法存在著一些缺陷首先,這種控制器隸屬函數(shù)是固定的三角形隸屬函數(shù),不能根據(jù)不同情況作調(diào)整,而且,純粹的三角形隸屬函數(shù)在某些被控對(duì)象中是不適宜的;其次,使用了分區(qū)間查表的方法進(jìn)行模糊推理,每次推理過(guò)程中很多不需要的規(guī)則都參與推理,影響了推理速度;再次,實(shí)現(xiàn)的模糊控制器參數(shù)都是固定的,無(wú)法改動(dòng),所以通用性差;末次,該控制器在實(shí)現(xiàn)過(guò)程中沒(méi)有考慮實(shí)際生產(chǎn)中對(duì)控制器進(jìn)行監(jiān)控和操作的問(wèn)題,沒(méi)有設(shè)計(jì)人機(jī)界面和與上位機(jī)通訊的模塊。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于FPGA的單片式模糊控制器芯片技術(shù)。這種控制器芯片應(yīng)具有體積小、通用性好、推理速度高、可實(shí)現(xiàn)實(shí)時(shí)控制等優(yōu)點(diǎn)。并能實(shí)現(xiàn)與上位機(jī)通訊、可以根據(jù)不同情況進(jìn)行調(diào)整、在實(shí)際生產(chǎn)中易對(duì)控制器進(jìn)行監(jiān)控和操作并便于實(shí)現(xiàn)人機(jī)交互。
為實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是將A/D轉(zhuǎn)換控制模塊、模糊控制器、串口通訊模塊和總控制模塊用硬件描述語(yǔ)言VHDL編程并被集成到一片F(xiàn)PGA中,其中模糊控制器由模糊化模塊、模糊規(guī)則查表模塊、模糊規(guī)則表、模糊推理模塊和反模糊化模塊組成;串口通訊模塊的一端分別與模糊控制器中的模糊化模塊、模糊規(guī)則表和反模糊化模塊相連,另一端留有串口線供與計(jì)算機(jī)相連;總控制模塊分別與A/D轉(zhuǎn)換控制模塊和模糊控制器中的模糊化模塊、模糊規(guī)則查表模塊、模糊推理模塊、反模糊化模塊相連;采樣信號(hào)e、de經(jīng)過(guò)A/D轉(zhuǎn)換后送入FPGA中,經(jīng)過(guò)模糊控制器的運(yùn)算處理后生成控制信號(hào)Y。
下面對(duì)上述各模塊的結(jié)構(gòu)和工作方式作一具體描述A/D轉(zhuǎn)換控制模塊由fifo緩存模塊和A/D控制模塊組成;A/D控制模塊的clkin端與總控制模塊的AD_clk端相連,A/D控制模塊的clkout端、ad_oe端分別與A/D轉(zhuǎn)換模塊的clk端、oe端相連,A/D控制模塊的寫(xiě)允許信號(hào)端rd、讀允許信號(hào)端wr、full端和empty端分別與fifo緩存模塊的rdreq端、wrreq端、full端和empty端相連,fifo緩存模塊的fifoclk端與A/D轉(zhuǎn)換模塊的clk端相連,A/D轉(zhuǎn)換模塊的數(shù)據(jù)輸出端D0~D7與fifo緩存模塊的數(shù)據(jù)輸入端i0~i7相連,fifo緩存模塊數(shù)據(jù)輸出端q0~q7與模糊化模塊的數(shù)據(jù)輸入端in0~in7相連。fifo緩存模塊為256個(gè)字節(jié)。
模糊化模塊由論域轉(zhuǎn)換模塊、參數(shù)選擇模塊、參數(shù)修改模塊和隸屬度運(yùn)算模塊組成;將A/D轉(zhuǎn)換控制模塊中所讀取的數(shù)據(jù)送入論域轉(zhuǎn)換模塊,論域轉(zhuǎn)換模塊將轉(zhuǎn)換后的結(jié)果送入?yún)?shù)選擇模塊選擇參數(shù),然后送入隸屬度運(yùn)算模塊,利用廣義隸屬函數(shù)計(jì)算隸屬度。參數(shù)修改模塊的數(shù)據(jù)輸入端datain通過(guò)串口線與計(jì)算機(jī)串口的txd端相連,數(shù)據(jù)輸出端dataout0~dataout7與參數(shù)選擇模塊的數(shù)據(jù)輸入端相連。
論域轉(zhuǎn)換模塊與fifo緩存模塊相連,其輸出y=2nx/(b-a)其中 y為論域轉(zhuǎn)換的結(jié)果 y∈(-N,-N+1,…,N-1,N),x為A/D轉(zhuǎn)換的結(jié)果 x∈[a,b]。
隸屬度運(yùn)算采用廣義隸屬函數(shù)法,廣義鐘形隸屬函數(shù)形式如下y=11-|x-b|c/a]]>改變上式中a、b、c的參數(shù)就可以逼近常用的三角形、梯形、高斯形的隸屬函數(shù),隸屬度計(jì)算公式是用經(jīng)過(guò)冪函數(shù)逼近的廣義隸屬函數(shù),選定y=1-|x-b|c/a作為一階逼近計(jì)算公式,取定a=2,b的值根據(jù)模糊子集的中心點(diǎn)選取
c=1時(shí),近似為三角形;c=2時(shí),近似為高斯形;c=4時(shí),近似為梯形。
模糊規(guī)則查表模塊采用編碼、解碼的方式,根據(jù)模糊化模塊的結(jié)果在模糊規(guī)則表中進(jìn)行模糊規(guī)則查詢,編碼方式為NB=0000,NM=0001,NS=0010…PM=0101,PB=0110,解碼方式與編碼相同;如果偏差E=NB,偏差的微分dE=PB,則地址為00000110,如果規(guī)則表中地址為00000110處的數(shù)據(jù)為0010,則解碼為u=NS。
模糊規(guī)則表存放在一塊ROM中,ROM編程配置在FPGA的內(nèi)部;模糊規(guī)則表的數(shù)據(jù)修改端d0~d7與串口模塊的數(shù)據(jù)輸出端dout0~dout7相連。
模糊推理模塊采用了模糊子集推理的方法,由模糊子集判斷模塊和作用模糊子集推理模塊組成;采樣值和模糊規(guī)則查表模塊的查表所得的規(guī)則送入模糊子集判斷模塊,模糊子集判斷模塊的輸出端與作用模糊子集推理模塊輸入端相連。
模糊子集推理方法描述如下設(shè)實(shí)測(cè)量e、de的模糊子集分別是A1、A2和B1、B2,則相應(yīng)的隸屬度分別是A1(e)、A2(e)和B1(de)、B2(de),若作用模糊控制規(guī)則Ri(i=1、2、3、4),則推理過(guò)程為模糊控制規(guī)則前件的真值為(A1×B1)(e,de)=A1(e)∧B1(de)=V1(u1)(A1×B2)(e,de)=A1(e)∧B2(de)=V2(u1)(A2×B1)(e,de)=A2(e)∧B1(de)=V3(u1)(A2×B2)(e,de)=A2(e)∧B2(de)=V4(u1)以上各真值沿著各自的模糊控制規(guī)則Ri(i=1、2、3、4)傳給后件,模糊控制規(guī)則的后件為Ci(i=1、2、3、4),控制量模糊子集的隸屬函數(shù)用單點(diǎn)表示,u的模糊子集可表示為Ci=[Ci(u1),Ci(u2)…Ci(u7)]其中Ci(uj)是第j個(gè)模糊子集的中心值(uj)的隸屬度,u的作用模糊子集接收前件傳來(lái)的真值Vi(u)可記做Ci(u)=Vi(u)×Ci(uj),則u的作用模糊子集最多有3個(gè)記做Ck(k=1、2、3),Ck(u)=VsCs(u)]]>其中,s為u的同一作用模糊子集所接收的真值個(gè)數(shù)。
反模糊化模塊的輸入端與作用模糊子集推理模塊的輸出端相連,反模糊化模塊[8]的輸出Y以如下方法求得設(shè)輸出的模糊值Y~=μ(u1)/u1+μ(u2)/u2+Λ+μ(un)/un,]]>則有輸出量精確值Y=Σi=1nμ(ui)×ui/Σi=1nμ(ui)]]>串口通訊模塊由波特率發(fā)生模塊、接收模塊和發(fā)送模塊組成;波特率發(fā)生模塊的clkin端與總控模塊的uart_clk端相連,波特率發(fā)生模塊的波特率輸出端bd_out分別與接收模塊的波特率輸入端rxd_bd和發(fā)送模塊的波特率輸入端txd_bd相連,接收模塊的rxd端通過(guò)串口線與上位機(jī)串口的txd端相連,接收模塊的數(shù)據(jù)輸出端dout0~dout7分別與參數(shù)選擇模塊和模糊規(guī)則表相連,發(fā)送模塊的txd端通過(guò)串口線與上位機(jī)串口的rxd端相連,發(fā)送模塊的數(shù)據(jù)輸入端din0~din7與反模糊化模塊相連。
總控制模塊由分頻模塊和控制模塊組成;分頻模塊的clk端、AD_clk端分別與外部時(shí)鐘、A/D轉(zhuǎn)換控制模塊的clkin端相連,分頻模塊的control_clk端分別與模糊控制器中的各模塊相連,分頻模塊的uart_clk端與串口通訊模塊的clkin端相連;控制模塊的復(fù)位信號(hào)輸入端resertin與外部復(fù)位開(kāi)關(guān)相連,控制模塊的復(fù)位信號(hào)輸出端resertout分別與A/D轉(zhuǎn)換控制模塊、模糊控制器中的各模塊和串口通訊模塊的復(fù)位信號(hào)輸入端resert相連;A/D轉(zhuǎn)換控制模塊、模糊控制器中的各模塊和串口通訊模塊工作過(guò)程中的狀態(tài)值送入控制模塊,控制模塊的輸出送給A/D轉(zhuǎn)換控制模塊、模糊控制器中的各模塊和串口通訊模塊的選通端。
由于采用上述技術(shù)方案,該模糊控制芯片具有體積小、通用性好、推理速度高、可實(shí)現(xiàn)實(shí)時(shí)控制等優(yōu)點(diǎn)。并能實(shí)現(xiàn)與上位機(jī)通訊、可以根據(jù)不同情況進(jìn)行調(diào)整、在實(shí)際生產(chǎn)中易對(duì)控制器進(jìn)行監(jiān)控和操作并便于實(shí)現(xiàn)人機(jī)交互。
四
圖1是本發(fā)明的一種總體結(jié)構(gòu)示意框圖;圖2是圖1中的A/D轉(zhuǎn)換控制模塊[2]的工作示意框圖;圖3是圖1中的模糊化模塊[3]的工作示意框圖;圖4是圖1中的模糊推理模塊[6]的工作示意框圖;
圖5是圖1中的串口模塊[7]的工作示意框圖;圖6是圖1中的總控模塊[9]的工作示意框圖。
五具體實(shí)施例方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述實(shí)施例本實(shí)施例如圖1所示,將A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]、串口通訊模塊[7]和總控制模塊[9]用硬件描述語(yǔ)言VHDL編程并被集成到一片F(xiàn)PGA[11]中,其中模糊控制器[10]由模糊化模塊[3]、模糊規(guī)則查表模塊[4]、模糊規(guī)則表[5]、模糊推理模塊[6]和反模糊化模塊[8]組成,組成模糊控制芯片的主體部分;串口通訊模塊[7]的一端分別與模糊控制器[10]中的模糊化模塊[3]、模糊規(guī)則查表[5]和反模糊化模塊[8]相連,另一端留有串口線供與計(jì)算機(jī)相連,通過(guò)串口通訊模塊[7]可以實(shí)現(xiàn)上位機(jī)與模糊控制芯片的人機(jī)交互;總控制模塊[9]分別與A/D轉(zhuǎn)換控制模塊[2]和模糊控制器[10]中的模糊化模塊[3]、模糊規(guī)則查表模塊[4]、模糊推理模塊[6]、反模糊化模塊[8]相連,協(xié)調(diào)各部分同步工作;本芯片的工作原理是現(xiàn)場(chǎng)采集的e、de信號(hào)經(jīng)過(guò)A/D轉(zhuǎn)換后送入模糊控制器[10]的模糊化模塊[3],經(jīng)過(guò)論域轉(zhuǎn)換后根據(jù)轉(zhuǎn)換的結(jié)果所屬的模糊子集的范圍選取廣義隸屬函數(shù)的參數(shù),并求出隸屬度,實(shí)現(xiàn)模糊化。根據(jù)所屬的模糊子集和在該模糊子集中的隸屬度用查表法獲得模糊規(guī)則,送入模糊推理模塊[6]進(jìn)行模糊子集推理。推理的結(jié)果經(jīng)過(guò)反模糊化模塊[8]生成控制信號(hào)。各個(gè)模塊的協(xié)調(diào)工作是通過(guò)總控制器[9]來(lái)實(shí)現(xiàn)的。另外,總控制器[9]為各模塊提供所需時(shí)鐘和復(fù)位信號(hào)。串口通訊模塊[7]用來(lái)修改參數(shù)和模糊規(guī)則,以便使模糊控制器[10]可以在不同的場(chǎng)合使用。上位機(jī)對(duì)模糊控制器[10]的監(jiān)控也是通過(guò)串口通訊模塊[7]實(shí)現(xiàn)的。
下面就各個(gè)模塊的結(jié)構(gòu)和工作作詳細(xì)說(shuō)明A/D轉(zhuǎn)換控制模塊[2]如圖2所示,由fifo緩存模塊[12]和A/D控制模塊[13]組成;A/D控制模塊[13]的clkin端與總控制模塊[9]的AD_clk端相連,A/D控制模塊[13]的clkout端、ad_oe端分別與A/D轉(zhuǎn)換模塊[1]的clk端、oe端相連,A/D控制模塊[13]的寫(xiě)允許信號(hào)端rd、讀允許信號(hào)端wr、full端和empty端分別與fifo緩存模塊[12]的rdreq端、wrreq端、full端和empty端相連,fifo緩存模塊[12]的fifoclk端與A/D轉(zhuǎn)換模塊[1]的clk端相連,A/D轉(zhuǎn)換模塊[1]的數(shù)據(jù)輸出端D0~D7與fifo緩存模塊[12]的數(shù)據(jù)輸入端i0~i7相連,fifo緩存模塊[12]的數(shù)據(jù)輸出端q0~q7與模糊化模塊[3]的數(shù)據(jù)輸入端in0~in7相連,fifo緩存模塊[12]為256個(gè)字節(jié)。
模糊化就是將論域轉(zhuǎn)換后的采樣信號(hào)值代入隸屬函數(shù)求出其隸屬度的過(guò)程。由于本實(shí)施例使用的廣義隸屬函數(shù)法需要在不同的模糊子集中選用不同的參數(shù)組合,所以在模糊化前需要根據(jù)采樣信號(hào)值選擇參數(shù)。然后根據(jù)所選參數(shù)代入公式,求出隸屬度,并將該采樣信號(hào)所在的模糊子集和在該子集中的隸屬度一起送入模糊規(guī)則查表模塊[4]得出模糊規(guī)則。
在實(shí)際工程應(yīng)用中,模糊集合的隸屬函數(shù)通常取三角形、梯形或高斯形。在實(shí)際應(yīng)用中往往會(huì)出現(xiàn)不同的場(chǎng)合所需要的隸屬函數(shù)的形狀不同,或是在同一模糊控制器的不同模糊子集對(duì)隸屬函數(shù)的要求不同,因此這種單一形狀的模糊控制器在應(yīng)用中就有很大的局限性。廣義隸屬函數(shù)法就很好的解決了這一問(wèn)題。廣義隸屬函數(shù)法是通過(guò)改變某個(gè)特殊函數(shù)中的某幾個(gè)參數(shù),只需要根據(jù)不同的情況或在不同的模糊子集中選取不同的參數(shù)值,就可以使隸屬函數(shù)的形狀滿足要求。本發(fā)明就是根據(jù)這一原理在不同的模糊子集設(shè)置不同的參數(shù)來(lái)提高控制精度,在不同的場(chǎng)合只需要重新設(shè)置參數(shù)就可以了。
模糊化模塊[3]如圖3所示,由論域轉(zhuǎn)換模塊[14]、參數(shù)選擇模塊[15]、參數(shù)修改模塊[16]和隸屬度運(yùn)算模塊[17]組成;將A/D轉(zhuǎn)換控制模塊[2]中所讀取的數(shù)據(jù)送入論域轉(zhuǎn)換模塊[14],論域轉(zhuǎn)換模塊[14]將轉(zhuǎn)換后的結(jié)果送入?yún)?shù)選擇模塊[15]選擇參數(shù),然后送入隸屬度運(yùn)算模塊[17],利用廣義隸屬函數(shù)計(jì)算隸屬度,參數(shù)修改模塊[16]數(shù)據(jù)輸入端datain通過(guò)串口線與計(jì)算機(jī)串口的txd端相連,數(shù)據(jù)輸出端dataout0-dataout7與參數(shù)選擇模塊[15]的數(shù)據(jù)輸入端相連。
論域轉(zhuǎn)換模塊[14]與fifo緩存模塊[12]相連,其輸出y=2nx/(b-a)其中 y為論域轉(zhuǎn)換的結(jié)果 y∈(-N,-N+1,…,N-1,N),x為A/D轉(zhuǎn)換的結(jié)果 x∈[a,b]。
隸屬度運(yùn)算采用廣義隸屬函數(shù)法,廣義鐘形隸屬函數(shù)形式如下y=11-|x-b|c/a]]>改變上式中a、b、c的參數(shù)就可以逼近常用的三角形、梯形、高斯形的隸屬函數(shù),隸屬度計(jì)算公式是用經(jīng)過(guò)冪函數(shù)逼近的廣義隸屬函數(shù),選定y=1-|x-b|c/a
作為一階逼近計(jì)算公式,取定a=2,b的值根據(jù)模糊子集的中心點(diǎn)選取c=1時(shí),近似為三角形;c=2時(shí),近似為高斯形;c=4時(shí),近似為梯形。
模糊規(guī)則查表模塊[4]由查表程序和模糊規(guī)則表[5]兩部分組成。查表程序根據(jù)模糊化模塊[3]的結(jié)果生成查表地址,并將查得的結(jié)果譯碼為輸出論域的某一模糊子集,送入模糊推理模塊[6]進(jìn)行推理。
模糊規(guī)則查表模塊[4]采用編碼、解碼的方式,根據(jù)模糊化模塊[3]的結(jié)果在模糊規(guī)則表[5]中進(jìn)行模糊規(guī)則查詢,編碼方式為NB=0000,NM=0001,NS=0010…PM=0101,PB=0110,解碼方式與編碼相同;如果偏差E=NB,偏差的微分dE=PB,則地址為00000110,如果規(guī)則表中地址為00000110處的數(shù)據(jù)為0010,則解碼為u=NS。
模糊規(guī)則表[5]存放在一塊4×4的ROM中,ROM編程配置在FPGA[10]內(nèi)部;模糊規(guī)則表[5]的數(shù)據(jù)修改端d0~d7與串口模塊[7]的數(shù)據(jù)輸出端dout0~dout7相連。
模糊推理模塊[6]如圖4所示,采用了模糊子集推理的方法,由模糊子集判斷模塊[18]和作用模糊子集推理模塊[19]組成;采樣值和模糊規(guī)則查表模塊[4]的查表所得的規(guī)則送入模糊子集判斷模塊[18],模糊子集判斷模塊[18]的輸出端與作用模糊子集推理模塊[19]輸入端相連。
模糊子集推理方法描述如下設(shè)實(shí)測(cè)量e、de的模糊子集分別是A1、A2和B1、B2,相應(yīng)的隸屬度分別是A1(e)、A2(e)和B1(de)、B2(de),若作用模糊控制規(guī)則Ri(i=1、2、3、4),則推理過(guò)程為模糊控制規(guī)則前件的真值為(A1×B1)(e,de)=A1(e)∧B1(de)=V1(u1)(A1×B2)(e,de)=A1(e)∧B2(de)=V2(u1)(A2×B1)(e,de)=A2(e)∧B1(de)=V3(u1)(A2×B2)(e,de)=A2(e)∧B2(de)=V4(u1)以上各真值沿著各自的模糊控制規(guī)則Ri(i=1、2、3、4)傳給后件,模糊控制規(guī)則的后件為Ci(i=1、2、3、4),控制量模糊子集的隸屬函數(shù)用單點(diǎn)表示,u的模糊子集可表示為Ci=[Ci(u1),Ci(u2)…Ci(u7)]
其中Ci(uj)是第j個(gè)模糊子集的中心值(uj)的隸屬度,u的作用模糊子集接收前件傳來(lái)的真值Vi(u)可記做Ci(u)=Vi(u)×Ci(uj),則u的作用模糊子集最多有3個(gè)記做Ck(k=1、2、3),Ck(u)=VsCs(u).]]>其中,s為u的同一作用模糊子集所接收的真值個(gè)數(shù)。
反模糊化模塊[8]的輸入端與作用模糊子集推理模塊[19]的輸出端相連,反模糊化模塊[8]的輸出Y以如下方法求得設(shè)輸出的模糊值Y~=μ(u1)/u1+μ(u2)/u2+Λ+μ(un)/un,]]>則有輸出量精確值Y=Σi=1nμ(ui)×ui/Σi=1nμ(ui)]]>串口通訊模塊[7]用來(lái)實(shí)現(xiàn)與上位機(jī)的通信,通過(guò)該模塊[7],可以在上位機(jī)修改模糊控制器[10]的參數(shù)并對(duì)模糊控制器[10]進(jìn)行監(jiān)控。
串口通訊模塊[7]如圖5所示,由波特率發(fā)生模塊[21]、接收模塊[22]和發(fā)送模塊[20]組成;波特率發(fā)生模塊[21]的clkin端與總控模塊[9]的uart_clk端相連,波特率發(fā)生模塊[21]的波特率輸出端bd_out分別與接收模塊[22]的波特率輸入端rxd_bd和發(fā)送模塊[20]的波特率輸入端txd_bd相連,接收模塊[22]的rxd端通過(guò)串口線與上位機(jī)串口的txd端相連,接收模塊[22]的數(shù)據(jù)輸出端dout0-dout7分別與參數(shù)選擇模塊[15]和模糊規(guī)則表[5]相連,發(fā)送模塊[20]的txd端通過(guò)串口線與上位機(jī)串口的rxd端相連,發(fā)送模塊[20]的數(shù)據(jù)輸入端din0~din7與反模糊化模塊[8]相連。
總控制模塊[9]如圖6所示,總控制模塊[9]由分頻模塊[23]和控制模塊[24]組成;分頻模塊[23]的clk端、AD_clk端分別與外部時(shí)鐘、A/D轉(zhuǎn)換控制模塊[2]的clkin端相連,分頻模塊[23]的control_clk端分別與模糊控制器[10]中的各模塊相連,分頻模塊[23]的uart_clk端與串口通訊模塊[7]的clkin端相連;控制模塊[24]的復(fù)位信號(hào)輸入端resertin與外部復(fù)位開(kāi)關(guān)相連,控制模塊[24]的復(fù)位信號(hào)輸出端resertout分別與A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]中的各模塊和串口通訊模塊[7]的復(fù)位信號(hào)輸入端resert相連;A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]中的各模塊和串口通訊模塊[7]工作過(guò)程中的狀態(tài)值送入控制模塊[24],控制模塊[24]的輸出送給A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]中的各模塊和串口通訊模塊[7]的選通端。
本實(shí)施例將整個(gè)控制系統(tǒng)集成在一片F(xiàn)PGA[11]中,使其成為專用控制芯片,采樣信號(hào)e、de經(jīng)過(guò)A/D轉(zhuǎn)換模塊[1]后送入FPGA[11],經(jīng)過(guò)模糊控制器[10]的運(yùn)算處理后生成控制信號(hào)Y。這樣即減小了控制系統(tǒng)的體積,通用性好、推理速度高、可實(shí)現(xiàn)實(shí)時(shí)控制,又由于FPGA[11]可以在線編程、并能實(shí)現(xiàn)與上位機(jī)通訊,可以根據(jù)不同情況進(jìn)行調(diào)整、在實(shí)際生產(chǎn)中易對(duì)控制器進(jìn)行監(jiān)控和操作并便于實(shí)現(xiàn)人機(jī)交互。
權(quán)利要求
1.一種基于FPGA的模糊控制芯片,其特征在于將A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]、串口通訊模塊[7]和總控制模塊[9]用硬件描述語(yǔ)言VHDL編程并被集成到一片F(xiàn)PGA[11]中,其中——模糊控制器[10]由模糊化模塊[3]、模糊規(guī)則查表模塊[4]、模糊規(guī)則表[5]、模糊推理模塊[6]和反模糊化模塊[8]組成;——串口通訊模塊[7]的一端分別與模糊控制器[10]中的模糊化模塊[3]、模糊規(guī)則表[5]和反模糊化模塊[8]相連,另一端留有串口線用來(lái)與計(jì)算機(jī)相連;——總控制模塊[9]分別與A/D轉(zhuǎn)換控制模塊[2]和模糊控制器[10]中的模糊化模塊[3]、模糊規(guī)則查表模塊[4]、模糊推理模塊[6]、反模糊化模塊[8]相連;采樣信號(hào)e、de經(jīng)過(guò)A/D轉(zhuǎn)換[1]后送入FPGA[11],經(jīng)過(guò)模糊控制器[10]的運(yùn)算處理后生成控制信號(hào)Y。
2.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的A/D轉(zhuǎn)換控制模塊[2]由fifo緩存模塊[12]和A/D控制模塊[13]組成;A/D控制模塊[13]的clkin端與總控制模塊[9]的AD_clk端相連,A/D控制模塊[13]的clkout端、ad_oe端分別與A/D轉(zhuǎn)換模塊[1]的clk端、oe端相連,A/D控制模塊[13]的寫(xiě)允許信號(hào)端rd、讀允許信號(hào)端wr、full端和empty端分別與fifo緩存模塊[12]的rdreq端、wrreq端、full端和empty端相連,fifo緩存模塊[12]的fifoclk端與A/D轉(zhuǎn)換模塊[1]的clk端相連,A/D轉(zhuǎn)換模塊[1]的數(shù)據(jù)輸出端D0~D7與fifo緩存模塊[12]的數(shù)據(jù)輸入端i0~i7相連,fifo緩存模塊[12]數(shù)據(jù)輸出端q0~q7與模糊化模塊[3]的數(shù)據(jù)輸入端in0~in7相連,fifo緩存模塊[12]為256個(gè)字節(jié)。
3.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的模糊化模塊[3]由論域轉(zhuǎn)換模塊[14]、參數(shù)選擇模塊[15]、參數(shù)修改模塊[16]和隸屬度運(yùn)算模塊[17]組成;將A/D轉(zhuǎn)換控制模塊[2]中所讀取的數(shù)據(jù)送入論域轉(zhuǎn)換模塊[14],論域轉(zhuǎn)換模塊[14]將轉(zhuǎn)換后的結(jié)果送入?yún)?shù)選擇模塊[15]選擇參數(shù),然后送入隸屬度運(yùn)算模塊[17],利用廣義隸屬函數(shù)計(jì)算隸屬度,參數(shù)修改模塊[16]的數(shù)據(jù)輸入端datain通過(guò)串口線與計(jì)算機(jī)串口的txd端相連,數(shù)據(jù)輸出端dataout0~dataout7與參數(shù)選擇模塊[15]的數(shù)據(jù)輸入端相連。
4.根據(jù)權(quán)利要求2、3所述的基于FPGA的模糊控制芯片,其特征在于所述的論域轉(zhuǎn)換模塊[14]與fifo緩存模塊[12]相連,其輸出y=2nx/(b-a)其中y為論域轉(zhuǎn)換的結(jié)果y∈(-N,-N+1,…,N-1,N),x為A/D轉(zhuǎn)換的結(jié)果x∈[a,b]。
5.根據(jù)權(quán)利要求3所述的基于FPGA的模糊控制芯片,其特征在于所述的隸屬度運(yùn)算采用廣義隸屬函數(shù)法,廣義鐘形隸屬函數(shù)形式如下y=11-|x-b|c/a]]>改變上式中a、b、c的參數(shù)就可以逼近常用的三角形、梯形、高斯形的隸屬函數(shù),隸屬度計(jì)算公式是用經(jīng)過(guò)冪函數(shù)逼近的廣義隸屬函數(shù),選定y=1-|x-b|c/a作為一階逼近計(jì)算公式,取定a=2,b的值根據(jù)模糊子集的中心點(diǎn)選取c=1時(shí),近似為三角形;c=2時(shí),近似為高斯形;c=4時(shí),近似為梯形。
6.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的模糊規(guī)則查表模塊[4]采用編碼、解碼的方式,根據(jù)模糊化模塊[3]的結(jié)果在模糊規(guī)則表[5]中進(jìn)行模糊規(guī)則查詢,編碼方式為NB=0000,NM=0001,NS=0010…PM=0101,PB=0110,解碼方式與編碼相同;如果偏差E=NB,偏差的微分dE=PB,則地址為00000110,如果模糊規(guī)則表[5]中地址為00000110處的數(shù)據(jù)為0010,則解碼為u=NS。
7.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的模糊規(guī)則表[5]存放在一塊ROM中,ROM編程配置在FPGA[10]內(nèi);模糊規(guī)則表[5]的數(shù)據(jù)修改端d0~d7與串口模塊[7]的數(shù)據(jù)輸出端dout0~dout7相連。
8.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的模糊推理模塊[6]采用了模糊子集推理的方法,由模糊子集判斷模塊[18]和作用模糊子集推理模塊[19]組成;采樣值和模糊規(guī)則查表模塊[4]的查表所得的規(guī)則送入模糊子集判斷模塊[18],模糊子集判斷模塊[18]的輸出端與作用模糊子集推理模塊[19]的輸入端相連。
9.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的反模糊化模塊[8]的輸入端與作用模糊子集推理模塊[19]的輸出端相連,反模糊化模塊[8]的輸出Y以如下方法求得設(shè)輸出的模糊值Y~=μ(u1)/u1+μ(u2)/u2+Λ+μ(un)/un]]>則有輸出精確值Y=Σi=1nμ(ui)×ui/Σi=1nμ(ui)]]>
10.根據(jù)權(quán)利要求8所述的基于FPGA的模糊控制芯片,其特征在于所述的模糊子集推理方法描述如下設(shè)實(shí)測(cè)量e、de的模糊子集分別是A1、A2和B1、B2,則相應(yīng)的隸屬度分別是A1(e)、A2(e)和B1(de)、B2(de),若作用模糊控制規(guī)則Ri(i=1、2、3、4),則推理過(guò)程為模糊控制規(guī)則前件的真值為(A1×B1)(e,de)=A1(e)∧B1(de)=V1(u1)(A1×B2)(e,de)=A1(e)∧B2(de)=V2(u1)(A2×B1)(e,de)=A2(e)∧B1(de)=V3(u1)(A2×B2)(e,de)=A2(e)∧B2(de)=V4(u1)以上各真值沿著各自的模糊控制規(guī)則Ri(i=1、2、3、4)傳給后件,模糊控制規(guī)則的后件為Ci(i=1、2、3、4),控制量模糊子集的隸屬函數(shù)用單點(diǎn)表示,u的模糊子集可表示為Ci=[Ci(u1),Ci(u2)…Ci(u7)]其中Ci(uj)是第j個(gè)模糊子集的中心值(uj)的隸屬度,u的作用模糊子集接收前件傳來(lái)的真值Vi(u)可記做Ci(u)=Vi(u)×Ci(uj),則u的作用模糊子集最多有3個(gè)記做Ck(k=1、2、3),Ck(u)=VsCs(u)]]>其中,s為u的同一作用模糊子集所接收的真值個(gè)數(shù)。
11.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的串口通訊模塊[7]由波特率發(fā)生模塊[21]、接收模塊[22]和發(fā)送模塊[20]組成;波特率發(fā)生模塊[21]的clkin端與總控模塊[9]的uart_clk端相連,波特率發(fā)生模塊[21]的波特率輸出端bd_out分別與接收模塊[22]的波特率輸入端rxd_bd和發(fā)送模塊[20]的波特率輸入端txd_bd相連,接收模塊[22]的rxd端通過(guò)串口線與上位機(jī)串口的txd端相連,接收模塊[22]的數(shù)據(jù)輸出端dout0~dout7分別與參數(shù)選擇模塊[15]和模糊規(guī)則表[5]相連,發(fā)送模塊[20]的txd端通過(guò)串口線與上位機(jī)串口的rxd端相連,發(fā)送模塊[20]的數(shù)據(jù)輸入端din0~din7與反模糊化模塊[8]相連。
12.根據(jù)權(quán)利要求1所述的基于FPGA的模糊控制芯片,其特征在于所述的總控制模塊[9]由分頻模塊[23]和控制模塊[24]組成;分頻模塊[23]的clk端、AD_clk端分別與外部時(shí)鐘、A/D轉(zhuǎn)換控制模塊[2]的clkin端相連,分頻模塊[23]的control_clk端分別與模糊控制器[10]中的各模塊相連,分頻模塊[23]的uart_clk端與串口通訊模塊[7]的clkin端相連;控制模塊[24]的復(fù)位信號(hào)輸入端resertin與外部復(fù)位開(kāi)關(guān)相連,控制模塊[24]的復(fù)位信號(hào)輸出端resertout分別與A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]中的各模塊和串口通訊模塊[7]的復(fù)位信號(hào)輸入端resert相連;A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]中的各模塊和串口通訊模塊[7]工作過(guò)程中的狀態(tài)值送入控制模塊[24],控制模塊[24]的輸出送給A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]中的各模塊和串口通訊模塊[7]的選通端。
全文摘要
本發(fā)明涉及一種基于FPGA的模糊控制芯片。其技術(shù)方案是將A/D轉(zhuǎn)換控制模塊[2]、模糊控制器[10]、串口通訊模塊[7]和總控制模塊[9]用硬件描述語(yǔ)言VHDL編程并被集成到一片F(xiàn)PGA[11]中,其中模糊控制器[10]由模糊化模塊[3]、模糊規(guī)則查表模塊[4]、模糊規(guī)則表[5]、模糊推理模塊[6]和反模糊化模塊[8]組成;串口通訊模塊[7]的一端分別與模糊控制器[10]中的模糊化模塊[3]、模糊規(guī)則查表[5]和反模糊化模塊[8]相連,另一端留有串口線供與計(jì)算機(jī)相連;總控制模塊[9]分別與A/D轉(zhuǎn)換控制模塊[2]和模糊控制器[10]中的模糊化模塊[3]、模糊規(guī)則查表模塊[4]、模糊推理模塊[6]、反模糊化模塊[8]相連。該控制器芯片具有體積小、通用性好、推理速度高、可實(shí)現(xiàn)實(shí)時(shí)控制等優(yōu)點(diǎn)。并能實(shí)現(xiàn)與上位機(jī)通訊、可以根據(jù)不同情況進(jìn)行調(diào)整、在實(shí)際生產(chǎn)中易對(duì)控制器進(jìn)行監(jiān)控和操作并便于實(shí)現(xiàn)人機(jī)交互。
文檔編號(hào)G05B13/02GK1737707SQ20041006074
公開(kāi)日2006年2月22日 申請(qǐng)日期2004年8月20日 優(yōu)先權(quán)日2004年8月20日
發(fā)明者方康玲, 李 浩 申請(qǐng)人:武漢科技大學(xué)