【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第一章)LED灯闪烁实验例程

本文主要是介绍【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第一章)LED灯闪烁实验例程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


适用于板卡型号:

紫光同创PG2L50H_MBG324开发平台(盘古PGX-Nano)

一:盘古盘古PGX-Nano开发板简介

PGX-Nano 是一套以紫光同创 FPGA 为核心的开发板,选用紫光同创 logos2 系列 28nm 工艺的 FPGA(PG2L50H_MBG324)。集成下载器芯片,极大的便利 了用户的使用。 板卡搭载一颗容量为 2MB 的 SRAM 用于数据缓存,DAC 芯片用于产生模 拟信号进行测试验证,esp32 模组进行 WIFI、蓝牙透传;预留了丰富的扩展 IO 用于用户验证、测试外接模块电路功能,一组串口进行串行通信;同时为用户提 供基础的硬件电路资源,例如 led 灯、按键、拨码开关等。

二:实验目的

控制8个LED灯点亮和熄灭。

三:实验原理

通常的时,分,秒的计时进位大家应该不陌生;1小时=60分钟=3600秒,当时针转动1小时,秒针跳动3600次;

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

 

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

PGX-Nano板卡上单端时钟有一个50MHz的晶振提供时钟给到PG2L50H;

实验分析:

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

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

 

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

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

IO输出状态只有两种:1或0;我们可以使用一个计数器,计数满25000000个时钟周期时对LED灯进行点亮和熄灭操作。

四:实验源码设计

文件头设计

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

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

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

设计module

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

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

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

设计一个计数器;

单个状态计数25_000_000,即24_999_999=25’b1_0111_1101_0111_1000_0011_1111;所以计数器的位宽为25位即可,此处请结合数字电路中的同步计数器的工作原理分析; 

当计数器计数到25'd24_999_999时,计数过程包含了从0~26'd2499_9999的时钟周期,故而总时长时25’d25_000_000×������������;硬件输入时钟为50MHz,所以此计数器的计数周期是0.5s;

led显示状态控制

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

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

完整的Module(不含注释) 

硬件管脚分配

PGX-Nano的LED和CLK与FPGA的IO连接部分的原理图如下,详情可查看硬件使用手册或原理图: 

复位设计是低电平有效,PGX-Nano开发板提供了5个用户按键(PB0~PB4),按键低电平有效,但按键按下时,IO上的输入电压为低;当没有按下按键时,IO上的输入电压为高电平;选择任一个用户按键作为复位输入即可。 

五:实验步骤 

PSD软件相关

(1)PSD软件安装包获取:

软件版本:PDS_2022.1

(注:本文档中所有实验均使用PDS_2022.1版本实现)软件安装包位置:5_Software\PDS2022.1;

(2)PSD软件license申请:

方法一:通过紫光同创官网申请license,官网链接:https://www.pangomicro.com/;

方法二:虚拟网卡设置MAC,参考文档:7_doc\虚拟网卡设置MAC;

(3)PSD软件安装流程:

PSD软件安装步骤参考文档:1_Demo_document\工具使用篇;

(4)PDS软件使用:

a.快速使用手册可查看文档:1_Demo_document\工具使用篇\02_PDS快速使用手册

b.PDS各工具使用可查看:安装路径下doc文件夹,示意图如下:

 

 

 六:下载与Flash固化

下载与flash固化可参考文档:1_Demo_document\工具使用篇\04_FPGA&CPLD的下载与固化

七:实验现象

8颗LED灯按照设定的时间进行点亮和熄灭。

这篇关于【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第一章)LED灯闪烁实验例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918416

相关文章

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

X-AnyLabeling使用教程

1.AI 模型自动分割标注使用教程 2.AI 模型自动目标检测标注使用教程

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

青龙面板部署通用教程,含服务器、路由器、X86等部署方法

1. 拉取镜像/更新镜像 docker pull whyour/qinglong:latest 2. 删除镜像 docker rmi whyour/qinglong:latest 3. 启动容器 普通服务器 docker run -dit \-v $PWD/ql/config:/ql/config \-v $PWD/ql/log:/ql/log \-v $PWD/ql/db:

宝塔面板部署青龙面板教程【简单易上手】

首先,你得有一台部署了宝塔面板的服务器(自己用本地电脑也可以)。 宝塔面板部署自行百度一下,很简单,这里就不走流程了,官网版本就可以,无需开心版。 首先,打开宝塔面板的软件商店,找到下图这个软件(Docker管理器)安装,青龙面板还是安装在docker里,这里依赖宝塔面板安装和管理docker。 安装完成后,进入SSH终端管理,输入代码安装青龙面板。ssh可以直接宝塔里操作,也可以安装ssh连接

PS系统教程25

介绍软件 BR(bridge) PS 配套软件,方便素材整理、管理素材 作用:起到桥梁作用 注意:PS和BR尽量保持版本一致 下载和安装可通过CSDN社区搜索,有免费安装指导。 安装之后,我们打开照片只需双击照片,就自动在Ps软件中打开。 前提:电脑上有PS软件 三种预览格式 全屏预览 评星级 直接按数字键就可以 方向键可以更换图片 esc退出 幻灯片放

flex布局学习笔记(flex布局教程)

前端笔试⾯试经常会问到:不定宽⾼如何⽔平垂直居中。最简单的实现⽅法就是flex布局,⽗元素加上如下代码即 可: display: flex; justify-content: center; align-items :center; 。下⾯详细介绍下flex布局吧。   2009年,W3C提出了 Flex布局,可以简便⼂完整⼂响应式地实现各种页⾯布局。⽬前已得到了所有浏览器的⽀持,这意味着,现

IPython小白教程:提升你的Python交互式编程技巧,通俗易懂!

IPython是一个增强的Python交互式shell,它提供了丰富的功能和便捷的交互方式,使得Python开发和数据分析工作更加高效。本文将详细介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython由Fernando Pérez于2001年创建,旨在提供一个更高效的Python交互式编程环境。 2. IPyt

高性能并行计算华为云实验五:

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建PageRank源码 3.2 makefile的创建和编译 3.3 主机配置文件建立与运行监测 四、实验结果与分析 4.1 采用默认的节点数量及迭代次数进行测试 4.2 分析并行化下节点数量与耗时的变化规律 4.3 分析迭代次数与耗时的变化规律 五、实验思考与总结 5.1 实验思考 5.2 实验总结 E

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite