用EDA设计波浪形计数器——VHDL语言设计

设计一个计数器,输入计数脉冲和清零信号,输出2位16进制计数值。计数器的计数规律如下:清零信号有效时输出0,计数脉冲上升沿时,输出由0递增到ff,再递减到1,然后在递增到... 设计一个计数器,输入计数脉冲和清零信号,输出2位16进制计数值。计数器的计数规律如下:清零信号有效时输出0,计数脉冲上升沿时,输出由0递增到ff,再递减到1,然后在递增到fe,再递减到2,再递增,按如此规律反复计数。

望各位仁兄能尽快给我答复,急用!!!!!!!!!!!十万火急!!!!!!!1
展开
 我来答
念鸿飞9
2009-05-19 · 超过12用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:29.7万
展开全部
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;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式