<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 函數信號發(fā)生器和示波器二合一儀器設計,提供源碼

函數信號發(fā)生器和示波器二合一儀器設計,提供源碼

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201706/348715.htm

1.總體設計方案

1.1 主控制模塊

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

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

所以采用方案二。

1.2顯示模塊

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

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

所以采用方案二。

1.3 輸入模塊

方案一:使用矩陣鍵盤(pán)。矩陣鍵盤(pán)的編碼較為簡(jiǎn)答,且可以實(shí)現較為復雜的控制。但是矩陣鍵盤(pán)的按鍵過(guò)少,不能夠實(shí)現更多數據的輸入。

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

故采用方案二。

1.4 AD輸出模塊

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

1.5 DA輸出模塊

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

2.程序設計

2.1 AD輸出

--**********************分頻進(jìn)程*************************

process(clk)

variable cnt1 : integer range 0 to 100;

variable cnt2 : integer range 0 to 20;

begin

if clkevent 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)驅動(dòng)進(jìn)程**********************

sync :process(clock,reset)

begin

if(reset = 0) then

current_state = start;

elsif(clockevent and clock=1) then

current_state = next_state;

end if;

end process sync;

--***************adc驅動(dòng)進(jìn)程*******************

comb :process(current_state, intr)

begin

case current_state is

when start => --啟動(dòng)狀態(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數據********************

get_data: process(clock,reset)

begin

if(reset = 0) then

p=0;

elsif(clockevent and clock=1) then

if(read_data = 1) then

p=conv_integer(data_i);

end if;

end if;

end process;

2.2 DA輸出

--*********************65536Hz分頻進(jìn)程************************

process(clk)

variable cnt1 : integer range 0 to 762;

begin

if clkevent 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分頻進(jìn)程************************

process(cp_65k)

variable cnt1 : integer range 0 to 64;

begin

if cp_65kevent 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地址累加器進(jìn)程**********************

PROCESS(cp_65k)

BEGIN

IF(cp_65kEVENT AND cp_65k=1) THEN

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

IF dds_add65535 THEN

dds_add=dds_add+dds_m;

ELSE

dds_add=dds_add+dds_m-65536;

END IF;

END IF;

END PROCESS;

--***********************頻率加減控制進(jìn)程***************************

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.性能指標

DA輸出的波形

4.總結

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>