【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程1-基于紫光FPGA 的LED 流水灯

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

在FPGA技术于5G、AI及低空经济等新兴领域持续"破圈"、国产替代加速的宏大背景下,小眼睛科技联合紫光同创及电子发烧友共同发起了"拥抱开源------一起来做FPGA开发板"的项目。历时半年,集结了100多位来自各行各业的工程师智慧,我们成功打造了这款凝聚集体心血的紫光HiYou开源开发板(OPHW-25H)。

这款基于国产紫光同创Logos-2系列芯片的开发板,不仅是千元内入门级产品中唯一配备PCIe接口的轻量级利器,更实现了从硬件设计到底层代码的全方位开源,旨在为广大开发者提供一个高性价比、高扩展性的国产FPGA学习与验证平台,共同点燃技术创新的火花。

(详情见技术论坛:https://www.szlogicmatrix.com/)

****1.****实验简介

实验目的:

通过按键控制4个LED灯按顺序依次点亮和熄灭。OPHW-25开发板有4个用户LED灯(LED0~3),FPGA输出高电平时对应的LED灯亮灯(详情请查看"OPHW-25开发板硬件使用手册")。控制4个LED灯按顺序依次点亮和熄灭。

实验环境:

Window11

PDS2022.2

硬件环境:

OPHW-25开发板

****2.****实验原理

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

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

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

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

OPHW-25板卡上单端时钟有一个50MHz和一个27MHz的晶振提供时钟给到OPHW-25;实验分析:

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

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

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

IO输出状态只有两种:1或0;我们可以使用一个计数器,计数满25000000个时钟周期时变化不同LED点亮。

****3.****实验源码设计

****3.1.****文件头设计

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

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

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

3.2.设计module

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

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

单个状态计数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×Tclk;硬件输入时钟为50MHz,所以此计数器的计数周期是0 .5s;

在指定的时间刻度上对LED 的状态进行变更,以达到控制LED 依次亮灭的目的; led_light_cnt的计时周期为0 .5s,故在led_light_cnt上取一个点来变更LED的显示状态即可完成每隔0.5s让LED显示发生变化;由于LED亮和灭只有两个状态,在赋值处理上将寄存器进行移位操作;

3.3.完整的Module

****3.4.****硬件管脚分配

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

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

****4.****实验现象

4颗LED灯按照设定的顺序和时间依次点亮和熄灭。

相关推荐
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20202 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议