【正文】
ownto 0))。END ads。ARCHITECTURE behave OF ads IS signal oe:integer range 0 to 1。 signal en1,en2,f_en:std_logic。 signal t:integer range 0 to 16。 signal temp_cs:std_logic。 signal data_out:std_logic_vector(11 downto 0)。 BEGINp1:process(clk) 按鍵防抖 begin if clk39。event and clk=39。039。 then en2=en1。 en1=en。 end if。 end process。 f_en=clk and en1 and (not en2)。 p2:process(f_en,clk,oe) begin if (f_en39。event and f_en=39。139。 )then 接收到開始測量按鍵的信號 oe=1。 end if。 if oe=1 then if clk39。event and clk=39。139。 then 將ADS輸出的12位串行二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為12位并行二進(jìn)制數(shù)據(jù) case t is when 4=data_out(11)=ad_dat。 第4個(gè)時(shí)鐘上升沿ADS開始輸出數(shù)據(jù) when 5=data_out(10)=ad_dat。 when 6=data_out(9)=ad_dat。 when 7=data_out(8)=ad_dat。 when 8=data_out(7)=ad_dat。 when 9=data_out(6)=ad_dat。 when 10=data_out(5)=ad_dat。 when 11=data_out(4)=ad_dat。 when 12=data_out(3)=ad_dat。 when 13=data_out(2)=ad_dat。 when 14=data_out(1)=ad_dat。 when 15=data_out(0)=ad_dat。 da_out=data_out。 when others=data_out=000000000000。 end case。 if t16 then t=t+1。 else t=0。 end if。 end if。 if clk39。event and clk=39。039。 then case t is when 0=temp_cs=39。139。 t=0時(shí)一次轉(zhuǎn)換結(jié)束,cs變?yōu)楦唠娖? when 1=temp_cs=39。039。 t=1時(shí)下一次轉(zhuǎn)換開始,cs變?yōu)榈碗娖? when others=null。 end case。 end if。 end if。 end process。 cs=temp_cs。end behave。2. 數(shù)據(jù)轉(zhuǎn)換控制模塊LIBRARY IEEE。USE 。USE 。USE 。ENTITY deal IS PORT( clk: in std_logic。 datain:IN STD_LOGIC_VECTOR(11 DOWNTO 0)。 en: in std_logic。 reset: in std_logic。 beef: OUT STD_LOGIC。 d2,d3,d4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。END deal。ARCHITECTURE behave OF deal IS SIGNAL data0,data1,data2:STD_LOGIC_VECTOR(15 DOWNTO 0)。 SIGNAL sum1,sum2,sum3,sum4,do1,do2,do3,do4:STD_LOGIC_VECTOR(4 DOWNTO 0)。 SIGNAL c1,c2,c3:STD_LOGIC_VECTOR(4 DOWNTO 0)。 signal flag:integer range 0 to 1。 signal r:integer range 0 to 1。 signal en1,en2,f_en:std_logic。 signal reset1,reset2,f_reset:std_logic。 BEGINp2:process(clk) 按鍵防抖 begin if clk39。event and clk=39。039。 then reset2=reset1。 reset1=reset。 en2=en1。 en1=en。 end if。 end process。 f_reset=clk and reset1 and (not reset2)。 f_en=clk and en1 and (not en2)。p3:PROCESS(datain,f_en,f_reset) reset,en組合的4個(gè)狀態(tài)00,01,10,11轉(zhuǎn)移關(guān)系 BEGIN if (f_en39。event and f_en=39。139。) then if (r=0 and flag=0)or (r=0 and flag=1) then flag=1。 end if。 if (r=1 and flag=1)or( r=1 and flag=0 ) then flag=0。 end if。 end if。 if (f_reset39。event and f_reset=39。039。) then if (r=0 and flag=0)or (r=1 and flag=0) then r=0。 end if。 if (r=1 and flag=1)or( r=0 and flag=1) then r=1。 end if。end if。 if (flag=1 and r=0)or(fl