計數(shù)器模塊的作用是對兩個端口模塊進行輪詢,使兩個端口模塊能夠依次啟動,并最終讓存儲模塊依次接收到溫度,濕度以及氣壓的數(shù)據(jù)。
具體方法為:計數(shù)器模塊內(nèi)部是一個 0 到 150 循環(huán)計數(shù)的計數(shù)器。計數(shù)器接收輸入的時鐘信號,使計數(shù)器在時鐘上升沿到來時啟動一次。
當(dāng) N=1 時,計數(shù)器向溫濕度端口模塊發(fā)送啟動溫度檢測的指令。接下來計數(shù)器開始計數(shù),即 N 開始自加。
在 1《=N《50 的時間里,計數(shù)器無任何新指令,這是給溫濕度端口模塊充足的時間,使其能完成其內(nèi)部功能(既接對溫濕度傳感器發(fā)送溫度檢測指令,收溫濕度傳感器發(fā)送的溫度數(shù)據(jù),并將其傳送給存儲模塊)。
類似于溫度指令的處理方法,在 N=50 時計數(shù)器 向溫濕度端口模塊發(fā)送濕度檢測指令,并在 50
在 N=151 時,溫度,濕度以及氣壓的測量數(shù)據(jù) 都已經(jīng)存儲在儲存模塊當(dāng)中了,這時將 N 置 0,開始新一輪的輪詢。
相關(guān)程序為:
entity count is
Port ( clk1 : in STD_LOGIC;
com1 : out STD_LOGIC_VECTOR (1 downto 0); --向溫濕度接口模
--塊發(fā)送啟動指令的端口
com2 : out STD_LOGIC); --向氣壓接口模塊發(fā)送啟動指令的端口
end count;
architecture Behavioral of count is
begin
process(clk1)
variable n:integer range 0 to 200:=0;
begin
if(rising_edge(clk1))then
if(n=151)then
n:=0; --在 n=151 時將 N 置 0,開始新一次的輪詢
com1《=“11”;
com2《=‘1’;
else n:=n+1;
end if;
if(n=1)then --在 n=1 時,發(fā)送溫度檢測指令
com1《=“01”;
com2《=‘1’;
--等待,保證端口功能的實現(xiàn)
elsif(n=50)then --發(fā)送濕度檢測指令
com1《=“10”;
com2《=‘1’;
--等待,保證端口功能的實現(xiàn)
elsif(n=100)then --發(fā)送氣壓檢測指令
com1《=“11”;
com2《=‘0’;
--等待,保證端口功能的實現(xiàn)
end if;
end if;
end process;
end Behavioral;
評論