正个程序是想通过对时钟分频,再预置控制信号tone1来达到使spks输出频率信号,让蜂鸣器发出不同的声音。<br /> 程序:<br />library ieee;<br />use ieee.std_logic_1164.all;<br />entity speaker is <br /> port(clk1:in std_logic;<br /> tone1: in integer range 0 to 16#7ff#;<br /> spks:out std_logic); <br />end;<br /> architecture one of speaker is<br /> signal preclk:std_logic;<br /> signal fullspks: std_logic;<br /><br /> begin<br /> divedeclk:process(clk1) <br /> variable count4:integer range 0 to 15; <br /> begin<br /> preclk<='0';<br /> if count4>11 then preclk<='1';count4:=0;<br /> elsif clk1'event and clk1='1'then count4:=count4+1;<br /> end if;<br /> end process;<br /> genspks:process(preclk,tone1)<br /> variable count11:integer range 0 to 16#7ff#;<br /> begin<br /> if preclk'event and preclk='1' then<br /> if count11=16#7ff# then<br /> count11:=tone1; fullspks<='1';<br /> else count11:=count11+1;fullspks<='0';<br /> end if;<br /> end if;<br /> end process;<br /> delayspks:process(fullspks)<br /> variable count2:std_logic;<br /> begin<br /> if fullspks'event and fullspks='1' then count2:=not count2;<br /> if count2='1' then spks<='1';<br /> else spks<='0';<br /> end if;<br /> end if;<br /> end process;<br /> end;<br /><br /> 现在程序编译正确但是结果不符合设计。 <br />1. 求教这个设计中divedeclk这个过程中输出的结果不对 为什么?<br /> 2. count4到八就跳到零了,而且还不是执行的加一。<br />3. spks始终是0,无法实现要求 。 <br /> 求高手指点,不胜感激。 现在在做全国电子设计大赛,希望有专业人士能指点。qq:250318261 |
|