日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 電源 > 功率器件
[導(dǎo)讀]1.總體設(shè)計方案 1.1 主控制模塊方案一:采用單片機。單片機的應(yīng)用較為廣泛,但是單片機的處理頻率達(dá)不到我們的要求。所以我們只能夠使用處理速度較快的處理器。方案二:采

1.總體設(shè)計方案

 

 

1.1 主控制模塊

方案一:采用單片機。單片機的應(yīng)用較為廣泛,但是單片機的處理頻率達(dá)不到我們的要求。所以我們只能夠使用處理速度較快的處理器。

方案二:采用Xilinx的FPGA來實現(xiàn)主控制器。Xilinx的FPGA的內(nèi)部IP核可以方便的產(chǎn)生DDS波形,這樣就方便我們能夠更好的產(chǎn)生想要的波形。

所以采用方案二。

1.2顯示模塊

方案一:使用TFT觸摸屏。彩屏有這樣明顯的優(yōu)點:微功耗,尺寸小,超薄輕巧,顯示信息量大,字跡美觀,視覺舒適,但是對于FPGA來說,其實現(xiàn)對觸摸屏的控制不能夠較好的完成控制要求。

方案二:使用VGA顯示。FPGA可以實現(xiàn)對VGA的控制。VGA的使用較為廣泛,且價格在接收的范圍之內(nèi)。而且,對于FPGA來說,實現(xiàn)對VGA接口的控制比控制其他的顯示器更加的方便和快捷。這就節(jié)省了我們的設(shè)計麻煩。

所以采用方案二。

 

1.3 輸入模塊

方案一:使用矩陣鍵盤。矩陣鍵盤的編碼較為簡答,且可以實現(xiàn)較為復(fù)雜的控制。但是矩陣鍵盤的按鍵過少,不能夠?qū)崿F(xiàn)更多數(shù)據(jù)的輸入。

方案二:使用PS2鍵盤。PS2鍵盤的控制更為簡單,我們可以通過兩根數(shù)據(jù)線精心數(shù)據(jù)的讀取,且PS2鍵盤的設(shè)計更加符合我們設(shè)計要求,這就決定了PS2在本設(shè)計中的優(yōu)勢。

故采用方案二。

 

 

1.4 AD輸出模塊

ADS7822是一種單片高速12位逐次比較型A/D轉(zhuǎn)換器, ADS7822內(nèi)置雙極性電路構(gòu)成的混合集成轉(zhuǎn)換顯片,具有外接元件少,功耗低,精度高等特點,并且具有自動校零和自動極性轉(zhuǎn)換功能,只需外接少量的阻容件即可構(gòu)成一個完整的A/D轉(zhuǎn)換器。所以該方案采用ADS7822作為AD輸入的元器件。

 

 

1.5 DA輸出模塊

DAC7513是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點,在單片機應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。

 

 

2.程序設(shè)計

2.1 AD輸出

 

--**********************分頻進程*************************

process(clk)

variable cnt1 : integer range 0 to 100;

variable cnt2 : integer range 0 to 20;

begin

if clk'event and clk='1' then

if cnt1=100 then

cnt1:=0;

if cnt2=20 then

cnt2:=0;

clock<=not clock;

if(cnt=3)then

cnt<=0;

else

cnt<=cnt+1;

end if;

else

cnt2:=cnt2+1;

end if;

else

cnt1:=cnt1+1;

end if;

end if;

end process;

--**************狀態(tài)驅(qū)動進程**********************

sync :process(clock,reset)

begin

if(reset = '0') then

current_state <= start;

elsif(clock'event and clock='1') then

current_state <= next_state;

end if;

end process sync;

--***************adc驅(qū)動進程*******************

comb :process(current_state, intr)

begin

case current_state is

when start => --啟動狀態(tài)

next_state <= convert;

cs <= '0';

wr <= '0';

rd <= '1';

read_data <= '0';

when convert =>--初始化

if(intr = '0') then

next_state <= read1;

else

next_state <= convert;

end if;

cs <= '1';

wr <= '1';

rd <= '1';

read_data <= '0';

when read1 =>--讀狀態(tài)1

next_state <= read2;

cs <= '0';

wr <= '1';

rd <= '0';

read_data <= '1';

when read2 =>--讀狀態(tài)2

next_state <= start;

cs <= '1';

wr <= '1';

rd <= '1';

read_data <= '0';

when others =>--其他狀態(tài)

next_state <= start;

end case;

end process comb;

--****************讀取AD數(shù)據(jù)********************

get_data: process(clock,reset)

begin

if(reset = '0') then

p<=0;

elsif(clock'event and clock='1') then

if(read_data = '1') then

p<=conv_integer(data_i);

end if;

end if;

end process;[!--empirenews.page--]

2.2 DA輸出

 

 

--*********************65536Hz分頻進程************************

process(clk)

variable cnt1 : integer range 0 to 762;

begin

if clk'event and clk='1' then

case cnt1 IS

WHEN 381 =>

cp_65k<='1';

cnt1:=cnt1+1;

WHEN 762=>

cnt1:=0;

cp_65k<='0';

cp_wr<='0';

WHEN 20=>

cp_wr<='1';

cnt1:=cnt1+1;

WHEN OTHERS=>

cnt1:=cnt1+1;

end case;

end if;

end process;

--*********************1kHz分頻進程************************

process(cp_65k)

variable cnt1 : integer range 0 to 64;

begin

if cp_65k'event and cp_65k='1' then

case cnt1 is

when 32=>cp_1k<='1';

cnt1:=cnt1+1;

when 64=>cnt1:=0;

cp_1k<='0';

when others=>cnt1:=cnt1+1;

end case;

end if;

end process;

--**************DDS地址累加器進程**********************

PROCESS(cp_65k)

BEGIN

IF(cp_65k'EVENT AND cp_65k='1') THEN

--DDS累加器循環(huán)累加dds_m

IF dds_add<65535 THEN

dds_add<=dds_add+dds_m;

ELSE

dds_add<=dds_add+dds_m-65536;

END IF;

END IF;

END PROCESS;

--***********************頻率加減控制進程***************************

process(cp_1k)

VARIABLE keys:INTEGER RANGE 0 TO 127 :=0; --消抖累加器

begin

if cp_1k='1' then

case key is

when "10"=> --頻率加

if keys=127 then

keys:=0;

bell<='1';

if dds_m=1000 then

dds_m<=1;

else

dds_m<=dds_m+1;

end if;

else

keys:=keys+1;

end if;

when "01"=> --頻率減

if keys=127 then

keys:=0;

bell<='1';

if dds_m=1000 then

dds_m<=1;

else

dds_m<=dds_m-1;

end if;

else

keys:=keys+1;

end if;

when others=>bell<='0';

end case;

end if;

end process;

end dac;

2.3 VGA顯示

 

 

3.性能指標(biāo)

 

 

DA輸出的波形

4.總結(jié)

經(jīng)過了多日的努力,我們在本設(shè)計中基本實現(xiàn)了上述要求,并在有些功能方面提出了改進,使系統(tǒng)設(shè)計更加完善。在該設(shè)計中我們使用了FPGA作為主控器,但由于時間及器材條件的限制,本設(shè)計也存在不足,例如,測量范圍不能達(dá)到更高的要求,測量精度也存在很大的提升空間。我們會在以后的學(xué)習(xí)中不斷地彌補這些不足,完善測量系統(tǒng)設(shè)計。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉