可调三角波形发生器VHDL源程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:43:22
一下是一段三角波形发生器的源程序
但是波形的幅值不可调
有谁能够修改下,改成可调的(例如发送一个时钟脉冲就增加/减小)

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity delta is
port(clk,reset:in std_logic;
q:out std_logic_vector(7 downto 0));
end delta;
architecture behave of delta is
begin
process(clk,reset)
variable tmp:std_logic_vector(7 downto 0);
variable a:std_logic;
begin
if reset='0'then
tmp:="00000000";
elsif clk'event and clk='1' then
if a='0' then
if tmp="11111110" then
tmp:="11111111";
a:='1';
else
tmp:=tmp+1;
end if;
else
if tmp="00000001" then
tmp:="00000000";
a:='0';
else
tmp:=tmp-1;
end if;
end if;
end if;
q<=tmp;
end process;
e

目前输出的图形是不是只有两种输出,一个全量程,一个为零呢?
描述一下现在的结果吧

要是偷懒的话,索性再加两个输入端,让它们和CLK一块触发。一个加一个减。是不是太滑头了,呵呵?

========================================================
那就在CLK`EVENT AND CLK='1' 后面再加上 “ADD`EVENT AND ADD='1' ”(假设新加的用于增大输出的输入端叫ADD。),你在这个条件下只进行累加增幅。再起一段弄个减幅的。应该是可行的。就是样子差点儿,效率不高。用应该可以用的。
别忘了把你那个标注增幅还是减幅终点的‘a’转移一下啊。

不过说起来这个'a',你又不用它显示,留它有什么特殊含义么?真要是显示出来的话,就像电梯显示上下方向那样。增幅减幅过程中或者底部顶部时给它直接赋值不就行了么?疑问中