基於FPGA的模糊控制器的設計

2022-10-15 09:57:05 字數 4780 閱讀 8908

現場可程式設計門陣列fpga是近年來發展迅速的大規模可程式設計邏輯器件,它具有設計周期短,片內資源豐富,可無限次載入和現場可程式設計等特點。在fpga上實現模糊控制器是一種介於專用積體電路(asic )和通用處理器之間的方案,具有電子產品的高速度、高可靠性、小型化、整合化、低功耗、保密性能好、具有自主智財權、產品上市快等優勢。模糊控制器不需要控制物件的精確數學模型,是一種基於規則的控制,依據操作人員的控制經驗和專家的知識,通過查表得到控制量。

因此,模糊控制器具有響應快,超調量小,魯棒性強等特點。它能夠克服系統中模型引數變化和非線性等不確定因素,在大滯後、非線性系統中得到廣泛應用。

隨著eda技術的發展,fpga在數字邏輯系統中發揮越來越重要的作用,採用硬體描述語言的硬體電路設計方法得到了廣泛應用。本文利用vhdl硬體描述語言在fpga晶元上設計一種簡化的模糊控制器。

一模糊控制器的結構及其fpga實現流程

圖1 模糊控制器的組成框圖

圖2 模糊控制器機構圖

由於一維模糊控制器的動態效能不能令人滿意,三維及三維以上的模糊控制器結構複雜,建立模糊控制規則比較困難,因此一般採用雙輸入單輸出的二維模糊控制器。典型的兩輸人單輸出模糊控制器的結構如圖2所示,它由知識庫、模糊化、模糊推理和逆模糊化4部分構成。知識庫向模糊化模組提供模糊量的隸屬函式形態,使模糊化模組在接收到外部的精確量輸人之後,能夠將其轉換成相對應時模糊量及隸屬度。

同時,知識庫向模糊推理模組提供控制規則,由模糊推理模組執行推理過程,由輸人的模糊量推出輸出的模糊量。知識庫也向反模糊化模組提供模糊量的隸屬函式形態,反模糊化介面則將輸出的模糊量及隸屬度轉換成與之對應的精確量。

論域和模糊狀態應根據問題的實際情況而定,現在假設e,ec和u的模糊子集均為,模糊論域均為[-4,-3,-2,-1,0,1,2,3,4],設e的基本論域為[-2,2],ec的基本論域為[-1,1],u的基本論域為[-5,5]。則ke=2,kc=4,ku=1。25。

模糊控制器的fpga設計流程如圖3所示

圖3 模糊控制器的fpga實現流程圖

㈡模糊化模組

1.隸屬函式的選取

模糊化過程需要用到隸屬函式,隸屬函式是模糊控制中的關鍵問題。隸屬函式大多依賴經驗或處理方便而選取。選取時至少要遵循3條原則:

表示隸屬函式的模糊集合必須是凸模糊集合;變數所取隸屬函式是對稱和平衡的;隸屬函式要遵從語意順序和避免不恰當的重疊。因此,此文確定的e和c的隸屬函式形狀如圖4所示

圖4 e和ec的隸屬函式形狀

2.隸屬函式的儲存

將上述隸屬函式存在2個ram表中,則在模糊化處理時可進行並行處理,處理方便,且速度提高一倍。表示方法如圖4所示。

圖5 隸屬函式的儲存方式

在圖4中 ,三角形是等腰三角形,梯形的下底是上底的2倍。可見由底邊寬度和底邊中點就可以確定隸屬函式的所有資訊。分別用乙個位元組表示每個語言變數的底邊寬度(實際寬度的一半),用3個位(bit)表示底邊中點位置。

這樣,全部資訊只需要8個位元組,以及8個3位就可以表示了:

底邊寬度表示為:width0,widthl,……………,width7

底邊中點表示為:center0,centerl,……………,center7

這部分資訊存於乙個奇數表和乙個偶數表中,分別表示標號為奇數和偶數的底邊寬度和底邊中點資訊。

3.隸屬度的計算

模糊化模組的功能主要包括2部分:把輸人的精確量進行尺度變換,變換到相應的論域範圍;將己變換到論域範圍的輸入量進行模糊化處理,主要是計算各個輸人量的隸屬度。為了簡化處理,將輸人值進行均勻量化。

由於a/d轉換器取樣後輸人的值為8位,其範圍是0一255,均勻量化後各個論域表示見表1。這樣模糊化模組的主要工作就是計算輸人值的隸屬度,如圖5所示。

表1 論域f化和表示方法

圖6 隸屬度圖

據圖6 ,輸人變數為1時,其隸屬度為

為實現上述計算,需要用到乙個加法器,乙個減法器和乙個除法器。由隸屬度的性質可知,計算的結果肯定是小數。為了實現方便,可將分子的計算結果左移8位,使分子變成16位,而分母是8位,因此,計算結果是8位。

加法器和減法器的實現比較容易,重點放在16位除以8位的除法器的實現上。

除法器採用普通的除法運算,並配合移位一減法方式來實現,可節省硬體製作成本。除法運算的演算法流程如圖7所示,圖中:a為被除數;b為除數;q為商;r為餘數;s為控制除法運算開始執行的控制訊號;done表示運算完成;c為減法計數器的計數值。

圖7 除法運算的演算法流程圖

據上述演算法編寫vhdl程式,可實現除法器運算。除法器是模糊化模組的關鍵部件,完成了除法器的設計,也就基本上完成了模糊化模組的資料處理

㈢模糊推理模組

模糊控制器的核心是模糊推理,模糊推理的基礎是模糊控制規則。模糊控制規則是用語言表示的模糊條件語句,存放在模糊控制器的知識庫中,可以通過介面由控制專家輸人或修改。兩輸人單輸出的模糊控制規則形式為

模糊推理常採用mamdani推理,也稱為max-min推理。設兩輸人單輸出模糊控制器的輸人量是x is a』 and y is b』,則根據模糊控制規則進行推理,可以得出輸出模糊控制量:(用模糊集合c』表示):

式中包括了3種主要的模糊邏輯運算:and運算,通常採用求交(取小)的方法;蘊含運算「→」採用求交法;合成運算「。」,採用max-min方法。假設有如下2條模糊控制規則

則mamdani推理的機理如圖7所示。圖中,c1,c2:通過最小化運算求出,最右邊的模糊量圖形c通過最大化運算求出,c就是最終的推理結果。

可見,模糊推理主要包括最小化運算模組和最大化運算模組。

圖8 maindani推理的機理

此處知識庫中的模糊控制規則,每一條可用乙個位元組來儲存,具體儲存格式為:

000000xx

000001xx

000010xx

000011xx

…111100xx

111111xx

這樣就可以把輸人的語言值作為規則表的位址進行查詢。由隸屬函式的特點可知,對於每個輸人變數,最多可以並行輸出2個語言值和2個隸屬度。對於兩輸人系統,最多輸出4個語言值和4個隸屬度。

這樣,對於乙個兩輸人系統,最多啟用4條模糊規則,即

這樣,最終模糊量c的推理過程與只有2條規則時完全類似,只需要最小化運算和最大化運算。

實現最小化運算的關鍵是設計出乙個最小比較器。由於每個前件最多啟用2條模糊規則,所以設μx1和μx2是第1個前件的隸屬度,μy1和μy2是第2個前件的隸屬度,,μc1和μc2分別是對應於4條模糊控制規則的輸出量的隸屬度。比較器的行為可以描述如下

最小化運算的結果,μc1和μc4再輸人到最大化模組中,用於完成模糊規則合併的過程。最大化模組與最小化模組的實現方法類似。

㈣逆模糊化模組

反模糊化通常採用加權平均法,對於論域為離散的情況有

由於隸屬函式採用8位二進位制表示,而所涉及的模糊規則最多為4條,所以分子運算需要4個8位x2位的乘法器,3個10位加法器,分母需要3個8位加法器。此外,還需要乙個12位/10位的除法器。除法器的設計方法與模糊化模組中的設計方法相同。

而乘法器的設計方法有多種,可以利用工具軟體自帶的引數可設定兆功能塊lpm一multiplier進行定製。由上所述,反模糊化模組需要乘法器和除法器,因此它是最浪費晶元資源,也是最耗時的乙個模組。

㈤設計模糊控制器

根據模糊控制器的特點及上述描述原理,採用模組化設計方法,本文將模糊控制模組分為四塊分別進行設計,如圖9所示。clk為全域性時鐘,g和f為輸入給定和反饋,u為輸出控制量,設g,f,和u的位數為八位。模糊控制模組內部架構分為四個模糊:

減法器模組,離散化模組,建表模組和處理模組。用vhdl硬體描述語言在altera公司的quartusii50進行描述,形成四個模組並進行綜合,見圖9所示。

圖9 模糊控制器

各個模組的作用分別如下描述:

減法器模組(jianfaqi)主要是利用給定值g和反饋值f計算誤差e和誤差變化率ec。進行減法運算時,總是數值大的減去數值小的,正負號分別由eo和co標識,不需要考慮溢位和借位等問題。

離散化模組(lisanhua)的作用時把減法器模組得到的誤差e和誤差變化率ec在各自的論域範圍內進行離散處理。離散時把量化因子ke和kc乘入。

建表模組(jianbiao)的作用是把控制總表用vhdl語言的形式描述,此控制表是模糊控制表乘上比例因子ku後的實際值。

由於控制表中的數是當前控制變化量,還不能直接作用於被控物件,處理模組的作用是根據當前控制變化量,在前一次控制量的基礎上進行運算得到此次控制量。同時規定控制量的上下限,上限根據具體情況而定,下限是零。

㈥****波形如下圖,從**圖可以看出,在給定值g不變的情況下,控制量u隨著反饋值f的變化而變化,變化規律與理論上的模糊控制系統的輸出規律基本一致.

圖10 **波形圖

㈦結束語

本文採用vhdl硬體描述語言在altera公司的quartusii50實現了模糊控制器,並且進行了**,**發現該模糊控制器基本符合模糊控制器的效能要求。

㈧附表:模糊控制器各個模組vhdl語言描述:

減法器模組的vhdl語言的程式如下:

library ieee;

use ieee。std_logic_1164。all;

use ieee。std_logic_arith。all;

entity mhu is

port(g:in std_logic_vector(7 downto 0);

f:in std_logic_vector(7 downto 0);

clk:in std_logic;

e:out std_logic_vector(7 downto 0);

ec:out std_logic_vector(7 downto 0);

eo:out std_logic;

co:out std_logic

);end mhu;

architecture rtl of mhu is

signal a,b:std_logic_vector(7 downto 0);

基於頻域的串聯校正控制器設計

廣西大學實驗報告紙 其他組員 魯巍和劉志浩設計了matlab 並一起除錯了動手實驗 夏超設計了電路圖並在multism中做了 劉志浩通過和魯巍,夏超討論對實驗結果進行了分析,撰寫了實驗報告 實驗時間 2015年6月15日 實驗地點 廣西大學綜合樓808 1.學會採用matlab進行串聯超前 滯後和滯...

電梯控制器的設計

陝西理工學院電信工程系通訊班,陝西漢中 723003 指導教師 摘要 本文從現代資訊社會的現狀 需要及未來的發展趨勢出發,對eda 電子設計自動化 這一目前流行的電子設計技術中的核心技術 vhdl和verilog 超高速硬體描述語言 語言進行了深入的研究,結合科研和教學例項,研究它的應用。電梯是服務...

基於FPGA的數字下變頻器的設計

作者 周軍曉王明遠 矽谷 2013年第13期 摘要數字下變頻系統為實現數字訊號處理器件處理低速資料的效能,提供了降低數模轉換器的資料流的速率的功效,是軟體無線電接收機中關鍵的一部分,因此,高效能的數字下變頻器是能夠保證軟體無線電系統的穩定性。本設計重點對數字下變頻的各個模組的實現方法進行深入研究,在...