【正文】
發(fā)軟件,支持原理圖,各種硬件描述語(yǔ)言以及多種設(shè)計(jì)輸入形式,自身帶有綜合器和仿真器,可以完成從硬件設(shè)計(jì),軟件設(shè)計(jì),仿真到硬件配置的完整設(shè)計(jì)流程。一般如果對(duì)系統(tǒng)了解很深,并且系統(tǒng)速率的要求較高,或這系統(tǒng)中如果時(shí)間特性要求較高,就可以采用這種方法。但語(yǔ)言輸入必須依賴綜合器,只有好的綜合器才能把語(yǔ)言綜合成優(yōu)化的電路。這樣就可以提高設(shè)計(jì)的速度和整個(gè)FPGA模塊的準(zhǔn)確度。(頻率為5khz)。 address_signal:out std_logic_vector(1 downto 0))。event and clk=39。 end if。 A/D轉(zhuǎn)換控制模塊ADC0809采樣原理比較簡(jiǎn)單:首先我們給START一個(gè)有效的上升沿使0809復(fù)位,接著給它一個(gè)下降沿,隨后狀態(tài)信號(hào)EOC隨即變成低電平。下圖是ADC0809的采樣狀態(tài)圖。START=39。OE=39。139。139。 WHEN st2=ALE=39。LOCK=39。 IF (EOC=39。 END IF。039。139。START=39。OE=39。 END CASE。139。LATCH1: PROCESS(LOCK) BEGIN IF LOCK=39。 END IF。此種通信方式比較簡(jiǎn)單,并且 FPGA的IO口也支持此種通信協(xié)議。實(shí)現(xiàn)RS232電平和TTL/CMOS電平轉(zhuǎn)換可以用接口芯片來(lái)實(shí)現(xiàn),實(shí)現(xiàn)數(shù)據(jù)的串行到并行轉(zhuǎn)換用的是UART,它們是實(shí)現(xiàn)串行通信必不可少的兩個(gè)部分。因此,異步通訊簡(jiǎn)單、靈活,對(duì)同步時(shí)鐘要求可低些。根據(jù)串行通信的協(xié)議,發(fā)送串行數(shù)據(jù)一般是:1個(gè)起始位,1個(gè)數(shù)據(jù)位,1個(gè)或多個(gè)停止位,這樣,發(fā)送起始位以后表明傳輸開始。 狀態(tài)機(jī)signal state : state_type:=xidle。139。039。 控制發(fā)送位數(shù) begin if rising_edge(bclk) then if reset=39。139。 跳轉(zhuǎn)到發(fā)送初始位狀態(tài) else state=xidle。 else t16:=t16+1。039。 else state=xshift。 state=xwait。 輸出數(shù)據(jù)位的序號(hào)自動(dòng)加1 state=xwait。 end if。前面所介紹的通道選擇控制、A/D轉(zhuǎn)換控制、串口通信模塊所需的時(shí)鐘都需要將系統(tǒng)時(shí)鐘50Mhz進(jìn)行分頻,分別是10000分頻、100分頻、1250分頻。beginif(clk_in39。elsecount:=count+1。elseclk_out=39。end process。在FPGA的仿真中進(jìn)行功能仿真有兩種激勵(lì)的輸入方式,一種是傳統(tǒng)的波形輸入,另一種則是使用Testbench。 通道選擇控制模塊仿真及調(diào)試 II軟件進(jìn)行編譯,順利通過(guò)編譯后生成模塊圖。 A/D轉(zhuǎn)換控制模塊仿真及調(diào)試 II軟件進(jìn)行編譯,順利通過(guò)編譯后生成模塊圖。綜上所述,A/D轉(zhuǎn)換控制模塊設(shè)計(jì)成功。由于漏磁檢測(cè)系統(tǒng)一般數(shù)據(jù)量大,所以上位機(jī)設(shè)置的波特率為56000bps,故fpga串口發(fā)送的頻率為56000。從中我們可以看出,系統(tǒng)占用的IO口不多,而底層的邏輯門電路占用的也不大,這表明我們的設(shè)計(jì)還較合理。前面說(shuō)道過(guò),這個(gè)實(shí)驗(yàn)如果能在一根有缺陷的管道中進(jìn)行,那么就能看到某個(gè)位置的曲線與周圍曲線有明顯不同,技術(shù)人員就能分析出管道的缺陷在哪。參考文獻(xiàn)[1].蔣奇,[J].機(jī)電設(shè)備,2002(2):1620.[2].[D].沈陽(yáng):沈陽(yáng)工業(yè)大學(xué),2005.[3].[M]。如果沒有他們的幫助,我不可能完成的這么快,也不可能考慮的如現(xiàn)在全面。他們之中有的比我有經(jīng)驗(yàn),懂得比我多,當(dāng)碰到難題我們就一起討論,有不懂的地方他們也是不遺余力地教我。use 。 reset:in std_logic。architecture behavior of transfer is type state_type is (xidle,xstart,xwait,xshift)。 輸出數(shù)據(jù) begin tx_reg=39。 39。 計(jì)數(shù)器,用來(lái)發(fā)送 variable bitt: integer range 0 to 9 :=0。 異步初始化,狀態(tài)機(jī)設(shè)置為空閑狀態(tài) txds=39。 then 開始發(fā)送信號(hào)觸發(fā) state=xstart。 t16:=0。 txds=39。 t16:=0。 else t16:=t16+1。 數(shù)據(jù)位輸出,只有這個(gè)狀態(tài)決定輸出,然后跳轉(zhuǎn)狀態(tài)保持?jǐn)?shù)據(jù)位 bitt:=bitt+1。 end if。 end behavior。 clk_out:out std_logic )。beginif(clk_in39。elsecount:=count+1。elseclk_out=39。end process。entity fenpin100 isport( clk_in:in std_logic。beginprocess(clk_in)variable count:integer range 0 to 99。)thenif(count=99)then count:=0。039。end if。use 。architecture one of fenpin is after fen pin ,the period is (5khz) constant m:integer:=5000。139。if(countm)thenclk_out=39。end if。library ieee。 address_signal:out std_logic_vector(1 downto 0))。event and clk=39。 end if。end one 。ENTITY AD_CTRL ISPORT( CLK,EOC:IN STD_LOGIC。 END AD_CTRL。 SIGNAL REG_0:STD_LOGIC_VECTOR(7 DOWNTO 0)。START=39。OE=39。139。139。 WHEN st2=ALE=39。LOCK=39。 IF (EOC=39。 END IF。039。139。START=39。OE=39。 END CASE。139。LATCH1: PROCESS(LOCK) BEGIN IF LOCK=39。 END I