LED2 接的是3脚, LED3接的是2脚 LED4接的是1脚
第二步,因为闪烁灯,需要用到时钟信号,所以我们必须了解我们用的晶振和时钟引脚
由实验板上的晶振标识可知我们用的晶振是48M,而CLK引脚是24脚,配置引脚的时候需要用到。
第三步:语句
用到时钟信号,不得不提一个语句——PROCESS语句
PROCESS 中规定了每个进程语句在当它的某个敏感信号 由敏感信号参量表列出的值改变时都必须立即完成某一功能行为,这个行为由进程语句中的顺序语句定义,行为的结果可以赋给信号并通过信号被其它的 PROCESS 或 BLOCK 读取或赋值。
IF(clk'event and clk ='1')
clk'event是指信号clk是否发生跳变,若发生了则返回ture,否则为假,
clk=‘1’是跳变后clk为高电平。
第四步,例子
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ledd is
port( clk: in std_logic;
dout:out std_logic);
end ledd;
architecture behave of ledd is
SIGNAL num: std_logic_vector(31 downto 0);
SIGNAL vet: std_logic := '0';
BEGIN
PROCESS(clk)
BEGIN
IF(clk'event and clk ='1') THEN
num <= num + 1;
IF(num = 48000000) THEN
num <= "00000000000000000000000000000000";
vet <= vet XOR '1';
END IF;
END IF;
END PROCESS;
dout <= vet;
END behave;
// 实例中,没有具体计算闪烁的频率,只是做了一些简单的赋值,做了大约人眼能够看到闪烁的估算,具体num的数据的赋值,还要读者自己慢慢研究。在每个时钟上升沿来临,num都加1,当num计算到48000000时,取反。