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