




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 FPGA電路設計中的毛刺問題的研究目 錄1 引言12 FPGA的相關概念12.1 FPGA的基本特點12.2 FPGA的工作原理23 簡述FPGA電路中毛刺的產生23.1 毛刺產生的原因23.2 毛刺產生條件的分析44 毛刺的消除方法44.1 冗余項法44.2 采樣法54.3 吸收法54.4 延遲法54.5狀態(tài)機控制法54.6 硬件描述語言法65 實例75.1 輸出加D觸發(fā)器95.2在有限狀態(tài)機的基礎上采用時鐘同步信號105.3直接把狀態(tài)機的狀態(tài)碼作為輸出信號136 結語15參考文獻16致 謝17FPGA電路設計中的毛刺問題的研究摘要:目前,F(xiàn)PGA器件已經越來越廣泛地應用在數(shù)字電路設計等領
2、域,但它的毛刺問題卻成為一個影響其可靠性和精確性的重要因素。本文探討了毛刺產生的原因及產生的條件,以計數(shù)器和乘法器為例對解決方案進行了深入具體地分析,總結了多種不同的解決方法,并且通過仿真說明這幾種方法能夠有效地消除或在一定程度上減少數(shù)字電路設計中出現(xiàn)的毛刺。Burr problem of FPGA circuit design researchAbstract: The FPGA device at present, already more and more widely used in the field of digital circuit design and so on, but
3、the burr problem has become one of important factors affecting its reliability and accuracy. Burr phenomenon is very common in the FPGA design, and the emergence of the burr tends to lead to the system results error. This paper discusses the cause of burr and the creation of conditions, to counter a
4、nd multiplier as an example for solutions conducted in-depth analysis in detail, summarizes the different types of solutions, and through the simulation shows that these methods can effectively eliminate or reduce to a certain extent burr in digital circuit design.Key words:FPGA; Burr; Sampling; Com
5、petition adventure1 引言隨著半導體技術的飛速發(fā)展,F(xiàn)PGA(Field Programmable Gate Array)的計算能力、容量及其可靠性也有了大幅的提高。本文FPGA是英文Field Programmable Gate Array的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎上更進一步發(fā)展的產物。它作為專用集成電路(ASIC)領域中的一種半定制電路,既處理了定制電路的不到位,又克服了原有可編程器件門電路數(shù)量有限的缺點。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個新的概念,里邊包括可配置邏輯模塊CLB(C
6、onfigurable Logic Block)、輸入輸出模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分1。2.1 FPGA的基本特點主要有:1)采用FPGA設計ASIC電路,用戶不需投資生產,就能得到合適的芯片。2)FPGA也可做其它全定制或半定制ASIC電路中的試樣片。 3)FPGA內部有豐富的觸發(fā)器和IO引腳。 4)FPGA是ASIC電路中設計周期最短、研發(fā)費用最低并且風險最小的器件之一。5)FPGA采用高速CHMOS工藝,功耗低,可與CMOS、TTL等電平兼容。 綜上所訴,無疑FPGA芯片是小批量系統(tǒng)(System)、提高系統(tǒng)(Syst
7、em)集成度、可靠性的上好選擇之一。目前FPGA的品種繁多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等等。2.2 FPGA的工作原理 FPGA的工作狀態(tài)是由存放在片內RAM中的程式來設置的,因此,工作時需對其片內的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內的編程模塊RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA則還原成白片,里邊的所有邏輯關系消失,因此,F(xiàn)PGA芯片能夠反復使用。FPGA的編程不需要專用的FPGA編程器,通用的EPROM、PROM編程器即可。如需修改FPGA功
8、能,只需要換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),還可產生不同的電路功能。因此,F(xiàn)PGA的用法非常靈活。FPGA有多種配置模式:1)并行主模式,一片F(xiàn)PGA加一片EPROM的方式;2)主從模式可支持一片PROM對多片F(xiàn)PGA進行編程;3)串行模式可采用串行PROM編程FPGA;4)外設模式可將FPGA作為微CPU的外部設備,由微CPU對其進行編程。3 簡述FPGA電路中毛刺的產生我們知道,信號在FPGA器件中通過邏輯單元連線時,一定會存在延時。延時的大小不僅僅和連線的長短、邏輯單元的數(shù)目有關,還和器件的制造工藝、工作環(huán)境等有很大的關系。因此,信號在FPGA中傳輸?shù)臅r候,所需
9、的時間是不能精確估算的,當多路信號同時發(fā)生跳變的瞬間,就會產生“競爭冒險”。此時,往往會出現(xiàn)一些不正確的小的尖峰信號,這些尖峰信號就叫做“毛刺”。另外,由于FPGA及其它CPLD器件內部的電容和電感對電路中的毛刺幾乎沒有過濾作用,最終這些毛刺信號就會被“保留”并傳遞到下一級,從而使得毛刺問題更為突出??梢姡词乖谧詈唵蔚倪壿嬤\算中,如果出現(xiàn)多路信號同時發(fā)生跳變的情況,在通過內部走線后,就一定會產生毛刺。然而現(xiàn)在用在數(shù)字電路設計和數(shù)字信號處理中的信號常常是由時鐘來控制的,在多數(shù)據(jù)輸入的復雜運算系統(tǒng),甚至每個數(shù)據(jù)都是由相當多的位數(shù)組成。此時,每一級產生的毛刺都會對結果有嚴重的影響,如果設計是多級的
10、,那么毛刺的累加甚至會影響整個設計的可靠性和精確性。下面我們將以乘法運算電路來說明毛刺的產生以及消除2。3.1 毛刺產生的原因 4 毛刺的消除方法狀態(tài)機控制法對于大型的數(shù)字電路設計,狀態(tài)機是一種非常理想的選擇,能使運行性能和硬件資源的占用達到最佳的優(yōu)化,另外靈活的使用狀態(tài)機也可以實現(xiàn)信號的同步和消除毛刺的目的。在數(shù)據(jù)傳遞比較復雜的多模塊系統(tǒng)中,由狀態(tài)機在特定的時刻分別發(fā)出控制特定模塊的時鐘信號或者模塊使能信號,狀態(tài)機的循環(huán)控制就可以使得整個系統(tǒng)協(xié)調運作,同時減少毛刺信號。那么只要我們在狀態(tài)機的觸發(fā)時間上加以處理,就可以避免競爭冒險,從而抑制毛刺的產生。原理如圖6-1所示。圖6-1狀態(tài)機控制原理
11、首先,我們來設計一個簡單的4位乘法器。其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mul4 IS PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END mul4; ARCHITECTURE behave OF mul4 ISsignal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(a,b,c0
12、,c1,c2,c3)BEGINIF b(0)='0' THEN c0<="0000"ELSE c0<=a;end if;IF b(1)='0' THEN c1<="0000"ELSE c1<=a;end if;IF b(2)='0' THEN c2<="0000"ELSE c2<=a;end if;IF b(3)='0' THEN c3<="0000"ELSE c3<=a;end if;y<=(&q
13、uot;0000"& c0)+("000"& c1&'0')+("00"& c2&"00")+('0'&c3&"000"); END PROCESS;END behave; 仿真結果如圖5-1:圖5-1四位乘法器仿真結果如上圖所示,如果在不加任何的去除毛刺的措施的時候,我們可以看到結果y中含有大量的毛刺。產生的原因就是每個輸入(a和b)的各個數(shù)據(jù)線上的數(shù)據(jù)都不可能保證能夠同時到達,也就是說在時鐘讀取數(shù)據(jù)線上的數(shù)據(jù)的時候
14、,往往有的數(shù)據(jù)線上讀取的已經是新的數(shù)據(jù)了,而有的數(shù)據(jù)線上讀取的仍然是上一個數(shù)據(jù),無疑這樣會產生毛刺信號,而當數(shù)據(jù)完全穩(wěn)定的時候,毛刺信號也就自然消失了8。5.1 輸出加D觸發(fā)器前面我們也有講到,這是一種比較傳統(tǒng)的去除毛刺的方法。原理就是用一個D觸發(fā)器去讀取帶毛刺的信號,利用D觸發(fā)器對于輸入信號的毛刺不敏感的特點,去除信號中的毛刺。這是一種在簡單邏輯電路中常見的方法,尤其是對于信號中發(fā)生在非時鐘跳變沿的毛刺信號,其去除效果非常的明顯。但是對于大多數(shù)的時序電路來講,毛刺信號往往是發(fā)生在時鐘信號的跳變沿,這樣,D觸發(fā)器的效果就不是那么明顯了(見圖5-2,加D觸發(fā)器以后的輸出D_OUT,仍含有毛刺)。
15、另外,D觸發(fā)器的使用還會給系統(tǒng)帶來一定的延時,尤其是在系統(tǒng)級數(shù)較多的情況下,延時也將會隨之變大,因此,在使用D觸發(fā)器去除毛刺的時候,一定要視情況而定,并不是所有的毛刺信號都可以利用D觸發(fā)器來消除9。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY mul4 IS PORT( D_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; D_OUT :OUT STD_LOGIC_VECTOR(7 DO
16、WNTO 0); a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END mul4;ARCHITECTURE behave OF mul4 IS signal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Q: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(a,b,c0,c1,c2,c3,clk)BEGINIF b(0)='0' THEN c0<="0000"
17、ELSE c0<=a;end if;IF b(1)='0' THEN c1<="0000"ELSE c1<=a;end if;IF b(2)='0' THEN c2<="0000"ELSE c2<=a;end if;IF b(3)='0' THEN c3<="0000"ELSE c3<=a;end if;y<=("0000"& c0)+("000"& c1&'0'
18、;)+("00"& c2&"00")+('0'&c3&"000"); IF CLK'EVENT AND CLK = '1' THEN Q(0)<=y(0); FOR I IN 1 TO 7 LOOP Q(I) <= y(I-1); END LOOP; END IF; D_OUT <= Q;END PROCESS;END behave; 仿真結果:圖5-2加D觸發(fā)器后仿真結果5.2在有限狀態(tài)機的基礎上采用時鐘同步信號在有限狀態(tài)機的基礎上采用時鐘同步
19、信號,即把時鐘信號引入組合進程。狀態(tài)機每一個輸出信號都經過附加的輸出寄存器,并由時鐘信號同步,因而保證了輸出信號沒有毛刺。這種方法存在一些弊端:由于增加了輸出寄存器,硬件開銷增大,這對于一些寄存器資源較少的目標芯片是不利的,從狀態(tài)機的狀態(tài)位到達輸出需要經過兩級組合邏輯,這就限制了系統(tǒng)時鐘的最高工作頻率,由于時鐘信號將輸出加載到附加的寄存器上,所以在輸出端得到信號值的時間要比狀態(tài)的變化延時一個時鐘周期10。例如Mealy型狀態(tài)機,其主要程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 ISPORT ( CLK ,DATAIN
20、,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY1;ARCHITECTURE behav OF MEALY1 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; BEGIN COMREG : PROCESS(CLK,RESET) BEGIN -決定轉換狀態(tài)的進程 IF RESET ='1' THEN STX <= ST0; ELSIF CLK'EVENT AND CLK = '1'
21、 THEN CASE STX IS WHEN st0 => IF DATAIN = '1' THEN STX <= st1; END IF; WHEN st1 => IF DATAIN = '0' THEN STX <= st2; END IF;WHEN st2 => IF DATAIN = '1' THEN STX <= st3; END IF; WHEN st3=> IF DATAIN = '0' THEN STX <= st4; END IF; WHEN st4=> IF
22、 DATAIN = '1' THEN STX <= st0; END IF; WHEN OTHERS => STX <= st0; END CASE ; END IF; END PROCESS COMREG ;COM1: PROCESS(STX,DATAIN) BEGIN -輸出控制信號的進程 CASE STX IS WHEN st0 => IF DATAIN = '1' THEN Q <= "10000" ; ELSE Q<="01010" ; END IF ; WHEN st1 =&
23、gt; IF DATAIN = '0' THEN Q <= "10111" ; ELSE Q<="10100" ; END IF ; WHEN st2 => IF DATAIN = '1' THEN Q <= "10101" ; ELSE Q<="10011" ; END IF ; WHEN st3=> IF DATAIN = '0' THEN Q <= "11011" ; ELSE Q<="
24、;01001" ; END IF ; WHEN st4=> IF DATAIN = '1' THEN Q <= "11101" ; ELSE Q<="01101" ; END IF ; WHEN OTHERS => Q<="00000" ; END CASE ; END PROCESS COM1 ;END behav; 其時序仿真波形如圖5-3所示:圖5-3 Mealy型有限狀態(tài)機的仿真時序圖不難看出有毛刺現(xiàn)象,采用時鐘同步信號,將輸出的Q值由時鐘信號鎖存后在輸出,改進后的Mea
25、ly型狀態(tài)機,其主要程序如下:LIBRARY IEEE; -MEALY FSMUSE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY2 IS PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);END MEALY2;ARCHITECTURE behav OF MEALY2 IS TYPE states IS (st0, st1, st2, st3,st4); SIGNAL STX : states ; SIGNAL Q1 : STD_LOGIC_VECTOR(4 D
26、OWNTO 0); BEGIN COMREG : PROCESS(CLK,RESET) -決定轉換狀態(tài)的進程 BEGIN IF RESET ='1' THEN STX <= ST0; ELSIF CLK'EVENT AND CLK = '1' THEN CASE STX IS WHEN st0 => IF DATAIN = '1' THEN STX <= st1; END IF;WHEN st1 => IF DATAIN = '0' THEN STX <= st2; END IF; WHEN
27、st2 => IF DATAIN = '1' THEN STX <= st3; END IF; WHEN st3=> IF DATAIN = '0' THEN STX <= st4; END IF; WHEN st4=> IF DATAIN = '1' THEN STX <= st0; END IF; WHEN OTHERS => STX <= st0; END CASE ; END IF; END PROCESS COMREG ;COM1: PROCESS(STX,DATAIN,CLK) -輸出控
28、制信號的進程 VARIABLE Q2 : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN CASE STX IS WHEN st0=> IF DATAIN='1' THEN Q2 :="10000" ELSE Q2:="01010" END IF; WHEN st1=> IF DATAIN='0' THEN Q2 :="10111" ELSE Q2:="10100" END IF; WHEN st2=> IF DATAIN='1
29、9; THEN Q2 :="10101" ELSE Q2:="10011" END IF; WHEN st3=> IF DATAIN='0' THEN Q2 :="11011" ELSE Q2:="01001" END IF; WHEN st4=> IF DATAIN='1' THEN Q2 :="11101" ELSE Q2:="01101" END IF; WHEN OTHERS => Q2:="00000&qu
30、ot; ; END CASE ; IF CLK'EVENT AND CLK = '1' THEN Q1<=Q2; END IF; END PROCESS COM1 ; Q <= Q1 ;END behav;其時序仿真波形如圖5-4所示,改進后毛刺不復存在。圖5-4 改進后Mealy型有限狀態(tài)機的仿真時序圖5.3直接把狀態(tài)機的狀態(tài)碼作為輸出信號直接把狀態(tài)機的狀態(tài)碼作為輸出信號,即采用狀態(tài)碼直接輸出型狀態(tài)機, 使狀態(tài)和輸出信號一致,使得輸出譯碼電路被優(yōu)化掉了,因此不會出現(xiàn)競爭冒險。這種方案,占用芯片資源少,信號與狀態(tài)變化同步,因此速度快,是一種較優(yōu)方案。但在設計
31、過程中對狀態(tài)編碼時可能增加狀態(tài)向量,出現(xiàn)多余狀態(tài)。雖然可用CASE語句中WHENOTHERS來安排多余狀態(tài),但有時難以有效控制多余狀態(tài),運行時可能會出現(xiàn)難以預料的情況。因此它適用于狀態(tài)機輸出信號較少的場合11。 若對AD0809的采樣控制采用狀態(tài)碼直接輸出型狀態(tài)機方案,其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD0809 IS PORT (D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK ,EOC : IN STD_LOGIC; ALE, START, OE, ADDA : OUT STD_LO
32、GIC; c_state : OUT STD_LOGIC_VECTOR(4 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END AD0809;ARCHITECTURE behav OF AD0809 ISSIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0 ); CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00000" ; CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO
33、 0) := "11000" ; CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00001" ; CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00100" ; CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0) := "00110" ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL LOCK: STD_LOGIC; BEGIN
34、 ADDA<='1' Q<=REGL; START<=current_state(4); ALE<=current_state(3); OE<=current_state(2); LOCK<=current_state(1);c_state <=current_state; COM: PROCESS(current_state,EOC) BEGIN -規(guī)定各狀態(tài)轉換方式 CASE current_state IS WHEN st0=> next_state <= st1; -0809初始化 WHEN st1=> nex
35、t_state <= st2; -啟動采樣 WHEN st2=> IF (EOC='1') THEN next_state <= st3; -EOC=1表明轉換結束 ELSE next_state <= st2; -轉換未結束,繼續(xù)等待 END IF ; WHEN st3=> next_state <= st4;-開啟OE,輸出轉換好的數(shù)據(jù) WHEN st4=> next_state <= st0; WHEN OTHERS => next_state <= st0; END CASE ; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF; END PROCESS REG ; LATCH1: PROCESS (LOCK) - 此進程中,在LOCK的上升沿,將轉換好的數(shù)據(jù)鎖入 BEG
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六一活動跳舞活動方案
- 六一班會活動方案
- 六一美發(fā)店活動方案
- 六一節(jié)活動方案方案
- 六一適合小學生活動方案
- 六安海底撈活動方案
- 醫(yī)師證考試試題及答案
- 衣柜技能考試試題及答案
- 業(yè)務考試試題及答案
- 藥師考試試題及答案西藥
- 中醫(yī)內科學消渴課件
- 《行政執(zhí)法基礎知識》課件
- 信息安全保密教育培訓課件
- 燈具安裝協(xié)議
- 工業(yè)機器人視覺20
- TL226 大眾試驗測試標準
- 毛澤東思想和中國特色社會主義理論體系概論(復旦大學)智慧樹知到課后章節(jié)答案2023年下復旦大學
- 關于退租的申請書
- 吳川市中醫(yī)院新增數(shù)字減影裝置(DSA)項目環(huán)境影響報告表
- 石材幕墻施工組織設計背栓SE掛件
- 電氣工程主要材料損耗率及預留長度
評論
0/150
提交評論