找回密码
 注册
关于网站域名变更的通知
查看: 426|回复: 1
打印 上一主题 下一主题

转——【菜鸟FPGA VHDL学习帖】第6帖 闪烁灯 

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-7 10:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
【菜鸟FPGA VHDL学习帖】第6 闪烁灯
第一步,我们先来看看原理图7 e4 B# _, Z  b; d3 o, ]/ V
LED2 接的是3脚, LED3接的是2 LED4接的是1

4 p0 G9 f: F7 O9 Q$ I) v
第二步,因为闪烁灯,需要用到时钟信号,所以我们必须了解我们用的晶振和时钟引脚
由实验板上的晶振标识可知我们用的晶振是48M,而CLK引脚是24脚,配置引脚的时候需要用到。

- j8 ^7 L  H* @5 Q7 Z! j ; K! o# P9 M+ y4 g
第三步:语句
       用到时钟信号,不得不提一个语句——PROCESS语句
PROCESS 中规定了每个进程语句在当它的某个敏感信号 由敏感信号参量表列出的值改变时都必须立即完成某一功能行为,这个行为由进程语句中的顺序语句定义,行为的结果可以赋给信号并通过信号被其它的 PROCESS BLOCK 读取或赋值。
IF(clk'event and clk ='1')
clk'event是指信号clk是否发生跳变,若发生了则返回ture,否则为假,8 e- p, f- `5 Q' P2 s
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;
                               doutut 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时,取反。
游客,如果您要查看本帖隐藏内容请回复
$ h$ A8 |- G$ X1 y: @1 Q

该用户从未签到

2#
发表于 2019-5-7 18:19 | 只看该作者
看看楼主怎么说的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-2 20:16 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表