【正文】
例外,東南大學(xué)的研究生黃旻亮學(xué)長也在程序方面給了我不少寶貴的建議,感謝他的熱心幫助。再者,感謝系里能提供給我明亮的實驗室,能有一個安靜的地方用來學(xué)習(xí),更重要的事還有方便的網(wǎng)絡(luò)用來下載資料。在這里最先感謝我的指導(dǎo)老師黃石紅老師,他悉數(shù)解決了我的困惑,并且在設(shè)計思路上都提供指點。定會達(dá)到這個目標(biāo)的。我只完成了程序與軟件仿真,由于時間來不及,沒有設(shè)計硬件板子與燒結(jié)程序。本次設(shè)計圍繞采樣狀態(tài)機(jī)的VHDL語言描述,熟悉了EDA技術(shù), FPGA概念及流程,學(xué)會了VHDL語言規(guī)則之后,最后通過設(shè)計一個了0809的采樣狀態(tài)機(jī),并通過數(shù)碼管顯示八個端口的讀數(shù),從而詳細(xì)的展示了FPGA設(shè)計的流程與特點。最后貼出程序并對設(shè)計做了仿真分析。首先介紹了0809的結(jié)構(gòu)及引腳與工作方式,然后說明了怎樣用VHDL語言描述狀態(tài)機(jī)。end process。 end case。 端口八為高電平 when others=null。139。= shuma=11000000。 掃描至數(shù)碼管八 case(q(0)) is when 39。 end case。= shuma=11111001。 端口七為低電平 when 39。039。 when 110=scan=01000000。 端口六為高電平 when others=null。139。= shuma=11000000。 掃描至數(shù)碼管六 case(q(2)) is when 39。 end case。= shuma=11111001。 端口五為低電平 when 39。039。 when 100=scan=00010000。 端口四為高電平 when others=null。139。= shuma=11000000。 掃描至數(shù)碼管四 case(q(4)) is when 39。 end case。= shuma=11111001。 端口三為低電平 when 39。039。 when 001=scan=00000010。 端口二為高電平 when others=null。139。= shuma=11000000。 掃描至數(shù)碼管二 case(q(5)) is when 39。 end case。= shuma=11111001。 端口一為低電平 when 39。039。 else case t3(2 downto 0) is when 000=scan=00000001。139。 end process cmc。 end if。139。cmc: process(xian_clkd) begin if xian_clkd39。 在clock0上升沿鎖入數(shù)據(jù)end if。)thenregl=d。event and clock0=39。end process cam。) thencurrent_state=next_state。event and ad_clk=39。end process pro。end case。139。139。039。039。next_state=s4。oe=39。lock=39。start=39。when s3=ale=39。elsenext_state=s3。039。039。039。039。next_state=s2。lock=39。oe=39。start=39。when s1=ale=39。039。039。039。039。end if。) then next_state=s0。 顯示的分頻 pro:process(current_state,next_state,eoc) 采樣程序begincase current_state is when idle=if (rst=39。 end if。 xian_clkd=not xian_clkd。 then if t015000000 then t0:=t0+1。event and clk=39。 采樣的分頻 cma: process(clk) variable t0: integer range 0 to 15000000。 end if。 ad_clk=not ad_clk。 then if t232 then t2:=t2+1。event and clk=39。 將發(fā)光二極管熄滅 cae:process(clk) 總進(jìn)程 variable t2: integer range 0 to 32。 signal t3 :std_logic_vector(3 downto 0)。 signal lock :std_logic。 signal clock0 :std_logic。 signal xian_clkd:std_logic。 end。 shuma,scan :out std_logic_vector(7 downto 0)。 clk,eoc ,rst :in std_logic。use 。 圖14 七段譯碼器RTL VIEWER 程序及仿真 程序利用ADC0809采集模擬信號的VHDL語言程序及其顯示程序⑦如下:定程序名為 : Library ieee。圖11 采樣狀態(tài)機(jī)圖12 采樣模塊RTL viewer 分頻模塊 分頻模塊在此此設(shè)計中用到二次,第一次是將系統(tǒng)的高頻變?yōu)檫m當(dāng)?shù)牡皖l控制采樣的狀態(tài)機(jī)的轉(zhuǎn)換,第二次是變?yōu)檫m當(dāng)?shù)牡皖l控制數(shù)碼管的掃描,使數(shù)碼管上的數(shù)字能夠清楚顯示。 其次采樣控制功能, 即根據(jù)current_state中的狀態(tài)變量確定對ADC0809的控制信號線ALE、START、OE等輸出相應(yīng)的控制信號, 在本次設(shè)計中,為便