【紫光同创盘古PGX-MINI-4K教程】——(盘古PGX-MINI-4K开发板/PGC4KD-6ILPG144第一章)控制 LED 灯实验例程

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com)


适用于板卡型号:

紫光同创PGC4KD-6ILPG144开发平台(盘古PGX-MINI-4K)

仅需一根TypcC线,插上即用,轻松操作。兼容下载器的一体版,配套资料丰富, 快速掌握国产FPGA!

一:盘古PGX-MINI-4K开发板简介

盘古 PGX-MINI 4K 开发板是一套基于紫光同创 compa 系列 PGC4KD-6ILPG144 芯片为核心的开发套件,支持主自加载双启动功能,集成板载 jtag 调试接口, 预留两组 20PIN 扩展 IO、数码管、按键、led 灯等硬件资源,为用户提供基本的 开发环境。

二:实验目的

实现对多 LED 灯的控制;

三:实验要求

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

四:实验原理

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

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

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

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

盘古 PGX-MINI 4K 板卡上有一个 50MHz 的晶振提供时钟给到 PGC4KD;

实验分析:

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

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

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

0.5s = 25000000*20ns = 25000000 × T50MHz ;

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

五:实验源码设计(完整源码查看 demo 源文件)

文件头设计

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

`timescale 1ns / 1ps 表示仿真精度是 1ns,显示精度是 1ps;

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

设计 module

创建 module,确定输入输出信号

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

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

设计一个计数器;

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

当计数器计数到 26’d24999999 时,计数周期包含了从 0~26’d24999999 的 时钟周期,故而总时长时 26’d25000000 × ;硬件输入时钟为 50MHz,所以 此计数器的技术周期是 0.5s;

led 显示状态控制

在指定的时间刻度上对 LED 的状态进行变更,以达到控制 LED 规律的亮灭 的目的;

led_light_cnt 的计时周期为 0.5s,故在 led_light_cnt 上取一个点来变更 LED 的显示状态即可完成每隔 0.5s LED 显示发生变化;由于 LED 亮和灭只有两个状 态,在赋值处理上将寄存器取反即可得到对应的从亮到灭变化(或从灭到亮的变化);

完整的 Module(不含注释)

硬件管脚分配

盘古 PGX-MINI 4K 的 LED 和 CLK 与 FPGA 的 IO 连接部分的原理图如下 (在工程中做物理约束时需要结合原理图的 FPGA 管脚分配进行约束):

复位设计是低电平有效,而盘古 PGX-MINI 4K 板卡上的按键按下时为低电 平,松开为高电平,可用按键输入来做复位信号;

六:实验步骤

打开 PDS 软件,创建工程

Step1:打开 PDS 软件,单击 New Project

Step2:单击 NEXT

Step3:创建名为 led_light 的工程到对应的文件目录,之后单击 Next

 Step4:选择 RTL project,单击 Next

Step5:单击 Next(也可添加.v 文件)

 Step6:单击 Next

Step7:单击 Next

 Step8:选择器件系列、型号、封装、速率、综合工具,之后单击 Next

Step9:单击 Finish,完成工程创建

添加设计文件 

PDS 软件界面如下图:

双击 Designs,将前面设计的 module 新建到文件中,或者将前面编辑好的 verilog 文件添加到工程中:

 添加文件到工程: 在窗口中点击 Add Files,选择添加文件到工程;

新建文件到工程: 1)在窗口中点击 Create File;

2)选择 Verilog Design File,文件名和 module 名一致,默认路径,点击 OK;

 

3)点击 OK;

 

3)点击 Cancel;

 

4)默认打开新建文件,将前面设计的 module 复制进去,

 5)点击保存,新建文件完成

编译

双击 Compile 或右击选择 Run,编译完成后如下; 

工程约束

点击 Tools 选择 User Constraint Editor(Timing and Logic)或者点击工具栏图标 User Constraint Editor(Timing and Logic) 选择 Pre Synthesize UCE,如下图所示。

Tools 下的 User Constraint Editor(Timing and Logic)

 

工具栏 User Constraint Editor(Timing and Logic)图标

时钟约束

打开 UCE 后,选择 Timing Constraints 后选择 Create Clock 添加基准时钟,基准时钟一般是通过输入 port 输入用户涉及的板上时钟。

在弹窗中对时钟命名,关联时钟管脚,添加时钟参数,点击 OK 会创建一条 时钟约束,Reset 重置该页面。创建完成如下图所示:

 

物理约束

打开 UCE 后,选择 Device 后选择 I/O,根据原理图编辑 IO 的分配。

 

编辑好 IO 分配后,点击保存,完成约束。

七:生成位流文件并下载

双击 Generate Bitstream 或右击选择 Run,生成二进制位流文件。 下载位流文件请参考《PDS 快速使用手册》2.8 下载位流文件

八:实验现象

8 个 LED 灯同时亮和灭,亮和灭之间间隔时间为 0.5s;

 

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值