展开全部
library ieee;
use ieee.std_logic_1164.all;
entity div is
generic(n:integer :=50);
port (clk,reset_n:in std_logic;
q:out std_logic);
end div;
architecture behave of div is
signal count :integer range n-1 downto 0:=n-1;
begin
process(clk,reset_n)
begin
if reset_n='0' then
count <= n-1;
elsif rising_edge(clk) then
count<=count-1;
if count>=n/2 then
q<='0';
else
q<='1';
end if;
if count<=0 then
count<=n-1;
end if;
end if;
end process;
end behave;
use ieee.std_logic_1164.all;
entity div is
generic(n:integer :=50);
port (clk,reset_n:in std_logic;
q:out std_logic);
end div;
architecture behave of div is
signal count :integer range n-1 downto 0:=n-1;
begin
process(clk,reset_n)
begin
if reset_n='0' then
count <= n-1;
elsif rising_edge(clk) then
count<=count-1;
if count>=n/2 then
q<='0';
else
q<='1';
end if;
if count<=0 then
count<=n-1;
end if;
end if;
end process;
end behave;
更多追问追答
追问
首先我很感谢你的帮忙,但是我有一下几个语句我不懂是什么意思,可以告知一下吗?
generic(n:integer :=50);
signal count :integer range n-1 downto 0:=n-1;
elsif rising_edge(clk)
另外是否可以详细的告诉我一下这个程序是按照什么顺序执行的,可以吗?谢谢。
如果需要产生仿真激励波形的,我应该怎么做呢?急!!!
追答
generic(n:integer :=50);是类属声明语句,定义一个整型常量n=50。
signal count :integer range n-1 downto 0:=n-1;是信号声明语句,定义一个整型的子类型信号,其值的变化范围是从n-1到0。
rising_edge(clk)是一个布尔类型的函数,当信号clk的上升沿到达时返回一个“true”。
如果你读不懂上面的源代码,说明你没有学过VHDL。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询