用EDA设计波浪形计数器——VHDL语言设计
设计一个计数器,输入计数脉冲和清零信号,输出2位16进制计数值。计数器的计数规律如下:清零信号有效时输出0,计数脉冲上升沿时,输出由0递增到ff,再递减到1,然后在递增到...
设计一个计数器,输入计数脉冲和清零信号,输出2位16进制计数值。计数器的计数规律如下:清零信号有效时输出0,计数脉冲上升沿时,输出由0递增到ff,再递减到1,然后在递增到fe,再递减到2,再递增,按如此规律反复计数。
望各位仁兄能尽快给我答复,急用!!!!!!!!!!!十万火急!!!!!!!1 展开
望各位仁兄能尽快给我答复,急用!!!!!!!!!!!十万火急!!!!!!!1 展开
1个回答
展开全部
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity angel is
port(clk:in std_logic;
clr:in std_logic;
q: out std_logic_vector(7 downto 0));
end angel;
architecture one of angel is
begin
process(clk,clr)
variable cqi:std_logic_vector(7 downto 0);
variable s:std_logic :='0';--控制加减的标志
variable e:std_logic :='0';--控制幅度增减的标志
variable a:integer range 0 to 127;--控制左边幅度的标志
variable b:integer range 255 downto 0;--控制右边幅度的标志
begin
if clr='1' then cqi:="00000000";s:='0';e:='0';a:=0;b:=255;--end if;
elsif clk'event and clk='1' then
case s is
when '0' => if cqi<b then cqi:=cqi+1;end if;
if cqi=b then s:='1';
if a<127 and e='0' then a:=a+1;else a:=a-1;e:='1';
end if;
end if;
when '1' => if cqi>a then cqi:=cqi-1;end if;
if cqi=a then s:='0';
if b>128 and e='0' then b:=b-1;
else b:=b+1;end if;
if b=255 then cqi:="00000000";s:='0';e:='0';a:=0;end if;
end if;
end case;
end if;
q<=cqi;
end process;
end one;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity angel is
port(clk:in std_logic;
clr:in std_logic;
q: out std_logic_vector(7 downto 0));
end angel;
architecture one of angel is
begin
process(clk,clr)
variable cqi:std_logic_vector(7 downto 0);
variable s:std_logic :='0';--控制加减的标志
variable e:std_logic :='0';--控制幅度增减的标志
variable a:integer range 0 to 127;--控制左边幅度的标志
variable b:integer range 255 downto 0;--控制右边幅度的标志
begin
if clr='1' then cqi:="00000000";s:='0';e:='0';a:=0;b:=255;--end if;
elsif clk'event and clk='1' then
case s is
when '0' => if cqi<b then cqi:=cqi+1;end if;
if cqi=b then s:='1';
if a<127 and e='0' then a:=a+1;else a:=a-1;e:='1';
end if;
end if;
when '1' => if cqi>a then cqi:=cqi-1;end if;
if cqi=a then s:='0';
if b>128 and e='0' then b:=b-1;
else b:=b+1;end if;
if b=255 then cqi:="00000000";s:='0';e:='0';a:=0;end if;
end if;
end case;
end if;
q<=cqi;
end process;
end one;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询