实验教程:控制LED灯——紫光盘古系列高性能入门级2K开发板 - FPGA开发者技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

Mill 关注 私信
[文章]

实验教程:控制LED灯——紫光盘古系列高性能入门级2K开发板

一、 实验目的

实现对多LED灯的控制;

二、 实验要求

控制8个LED以1s的周期闪烁(0.5s亮,0.5s灭)

三、实验原理

通常的时,分,秒的计时进位大家应该不陌生;

1小时=60分钟=3600秒,当时针转动1小时,秒针跳动3600次;
image.png

那在数字电路中的时钟信号也是有固定的节奏的,这种节奏的开始到结束的时间,我们通常称之为周期(T)。

在数字系统中通常关注到时钟的频率,那频率与周期的关系如下:
image.png

MES2KG板卡上有一个40MHz的晶振提供时钟给到PGC2KG;

实验分析 :

控制LED亮灭需要控制IO输出的高低电平即可(高电平点亮,低电平熄灭),原理图如下:

image.png

控制LED周期性的维持0.5s亮,0.5s灭,需要控制IO输出0.5s高电平,0.5s低电平周期变化,如下图波形:

image.png

外部输入时钟为40MHz时钟周期为25ns(在verilog设计中的计数器的计时原理基本上是一致的,确认输入时钟周期,目标计时时间后可得到计数器的计数值到达多少后可得到计时宽度);

0.5s = 20000000*25ns = 20000000 × ;

IO输出状态只有两种:1或0;我们可以使用一个计数器,计数满20000000个时钟周期时将IO状态进行翻转,即可完成每0.5S输出状态跳转,即LED灯会以0.5S的间隔亮灭变化;

四、实验源码设计(完整源码查看demo源文件)

a. 文件头设

在module之前添加文件头,文件头中包含信息有:公司,作者,时间,设计名,工程名,模块名,目标器件,EDA工具(版本),模块描述,版本描述(修改描述)等信息;以及仿真时间单位定义;

image.png

timescale 1ns / 1ps 表示仿真精度是 1ns,显示精度是 1ps; define UD #1 定义 UD 表示#1;#1 仅仿真有效,表示延时一个仿真精度,结合上一条语句表示延时 1ns;

b. 设计 module

  • 创建 module,确定输入输出信号 image.png

此段代码是标准的 module 创建的模型,module 创建时需要确认输入输出信号并定义好位宽,之后在对 module 进行具体的逻辑设计;管脚与管脚之间间隔用“,”,最后一个管脚不用间隔符号;

创建 module 时需要定义输入输出信号;本实验输入时钟和复位即可,输出是控制 LED 的亮灭,MES2KG 板卡上共有 8 个 LED,故而输出 8bit 位宽的信号;

  • 设计一个计数器;

单个状态计数 20000000, 1 个亮灭周期的计数即为 40000000 = 26’ h2625A00;所以计数器的位宽为 26 位即可,此处请结合数字电路中的同步计数器的工作原理分析;

image.png

当计数器计数到 26’d19999999 时,计数周期包含了从 0~26’d19999999的时钟周期,故而总时长时 26‘d20000000 ×

回帖(1)

洒下墨色

2023-6-16 10:21:27
好文

更多回帖

×