大家帮忙看下这个程序里的CNT2变量是干什么用的 <br /><br />这是一个控制蜂鸣器发出友谊天长地久音乐的一个乐谱<br />用Q来表示的 另外再接一个控制部分就可以控制蜂鸣器演奏了<br />时钟频率4M<br />其中的CNT2变量是干什么用的呢?<br />library ieee;<br />use ieee.std_logic_1164.all;<br />use ieee.std_logic_unsigned.all;<br />use ieee.std_logic_arith.all;<br /><br />entity yindiao is<br />port<br />(clk : in std_logic;<br />q : out integer range 0 to 10204<br />);<br />end yindiao;<br /><br />architecture behave of yindiao is<br />begin<br /> process(clk)<br /> variable cnt1:integer range 0 to 1500000;<br /> variable cnt2:integer range 0 to 8;<br /> variable n :integer range 0 to 45;<br /> begin <br /> if clk'event and clk='1' then<br /> if cnt1<1500000 then --此数值控制每一个音的长短<br /> cnt1:=cnt1+1;<br /> else<br /> cnt1:=0;<br /> case n is<br /> when 0 =>q<=10204;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=1;<br /> end if;<br /> when 1 =>q<=7364;<br /> if cnt2<6 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=2;<br /> end if;<br /> when 2 =>q<=6061;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=3;<br /> end if;<br /> when 3 =>q<=6803;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=4;<br /> end if;<br /> when 4 =>q<=7634;<br /> n:=5;<br /> when 5 =>q<=6803;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=6;<br /> end if;<br /> when 6 =>q<=6061;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=7;<br /> end if;<br /> when 7 =>q<=7634;<br /> if cnt2<4 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=8;<br /> end if;<br /> when 8 =>q<=6061;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=9;<br /> end if;<br /> when 9 =>q<=5089;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=10;<br /> end if;<br /> when 10 =>q<=4535;<br /> if cnt2<9 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=11;<br /> end if;<br /> when 11 =>q<=5089;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=12;<br /> end if;<br /> when 12 =>q<=6061;<br /> if cnt2<2 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=13;<br /> end if;<br /> when 13 =>q<=7634;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=14;<br /> end if;<br /> when 14 =>q<=6803;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=15;<br /> end if;<br /> when 15 =>q<=7634;<br /> n:=16;<br /> when 16 =>q<=6803;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=17;<br /> end if;<br /> when 17 =>q<=6061;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=18;<br /> end if;<br /><br /> when 18 =>q<=7634;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=19;<br /> end if;<br /> when 19 =>q<=9050;<br /> if cnt2<2 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=20;<br /> end if;<br /> when 20 =>q<=10204;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=21;<br /> end if;<br /> when 21 =>q<=7634;<br /> if cnt2<7 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=22;<br /> end if;<br /> when 22 =>q<=4535;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=23;<br /> end if;<br /><br /> when 23 =>q<=5089;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=24;<br /> end if;<br /> when 24 =>q<=6061;<br /> if cnt2<2 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=25;<br /> end if;<br /> when 25 =>q<=7634;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=26;<br /> end if;<br /> when 26 =>q<=6803;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=27;<br /> end if;<br /> when 27 =>q<=7634;<br /> n:=28;<br /> when 28 =>q<=6803;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=29;<br /> end if;<br /> when 29 =>q<=4535;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=30;<br /> end if;<br /> when 30 =>q<=5089;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=31;<br /> end if;<br /> when 31 =>q<=6061;<br /> if cnt2<2 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=32;<br /> end if;<br /> when 32 =>q<=5089;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=33;<br /> end if;<br /> when 33 =>q<=4535;<br /> if cnt2<7 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=34;<br /> end if;<br /> when 34 =>q<=3809;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=35;<br /> end if;<br /> when 35 =>q<=5089;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=36;<br /> end if;<br /> when 36 =>q<=6061;<br /> if cnt2<2 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=37;<br /> end if;<br /> when 37 =>q<=7634;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=38;<br /> end if;<br /> when 38 =>q<=6803;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=39;<br /> end if;<br /> when 39 =>q<=7634;<br /> n:=40;<br /> when 40 =>q<=6803;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=41;<br /> end if;<br /> when 41 =>q<=6061;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=42;<br /> end if;<br /> when 42 =>q<=7634;<br /> if cnt2<3 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=43;<br /> end if;<br /> when 43 =>q<=9050;<br /> if cnt2<2 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=44;<br /> end if;<br /> when 44 =>q<=10204;<br /> if cnt2<1 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=45;<br /> end if;<br /> when 45 =>q<=7634;<br /> if cnt2<7 then<br /> cnt2:=cnt2+1;<br /> else<br /> cnt2:=0;<br /> n:=0;<br /> end if;<br /> end case;<br /> end if;<br /> end if;<br /> end process;<br />end behave; <br /> <br /> |
|