| 
 
| 正个程序是想通过对时钟分频,再预置控制信号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  | 
 |