【紫光同创盘古PGX-Lite 7K教程】——(盘古PGX-Lite 7K开发板/PGC7KD-6IMBG256第一章)控制 LED 灯实验例程

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

适用于板卡型号:

紫光同创PGC7KD-6IMBG256开发平台(盘古PGX-Lite 7K)

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

一:盘古PGX-Lite 7K************开发板************简介

PGX-Lite 7K 开发板是一套基于紫光同创 compa 系列 PGC7KD-6IMBG256 芯片为核心的开 发套件,支持主自加载双启动功能,集成板载 jtag 调试接口,支持 Type-C 转串口通信,同 时预留非常丰富的扩展 IO、数码管、按键、led 灯等硬件资源,在提供用户基础的硬件环境 基础上,满足用户更加灵活的需求。

二:实验目的

实现对多 LED 灯的控制;

三:实验要求

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

四:实验原理

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

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

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

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

PGX-Lite 7K 板卡上有一个 50MHz 的晶振提供时钟给到 PGC7KD;

实验分析:

控制 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-Lite 7K 板卡上共有 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-Lite 7K 的 LED 和 CLK 与 FPGA 的 IO 连接部分的原理图如下(在工 程中做物理约束时需要结合原理图的 FPGA 管脚分配进行约束):

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

六:实验步骤

打开 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;

4)点击 Cancel;

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

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

编译

双击 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;

相关推荐
bigbig猩猩10 小时前
FPGA(现场可编程门阵列)的时序分析
fpga开发
Terasic友晶科技15 小时前
第2篇 使用Intel FPGA Monitor Program创建基于ARM处理器的汇编或C语言工程<二>
fpga开发·汇编语言和c语言
码农阿豪16 小时前
基于Zynq FPGA对雷龙SD NAND的测试
fpga开发·sd nand·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
江山如画,佳人北望17 小时前
EDA技术简介
fpga开发
淘晶驰AK17 小时前
电子设计竞赛准备经历分享
嵌入式硬件·fpga开发
最好有梦想~17 小时前
FPGA时序分析和约束学习笔记(4、IO传输模型)
笔记·学习·fpga开发
檀越剑指大厂18 小时前
【基于Zynq FPGA对雷龙SD NAND的测试】
fpga开发
9527华安2 天前
FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持
fpga开发·音视频·pcie·gth·xdma·pcie3.0
爱奔跑的虎子2 天前
FPGA实现以太网(一)、以太网基础知识
fpga开发·以太网·fpga·vivado
li星野2 天前
PL端:LED闪烁
fpga开发·zynq