FPGA学习(一)——LED点灯与开发流程

一、FPGA引入

1、FPGA简介

2、FPGA优势和局限性

二、LED点灯

1、创建工程

2、原理图

3、仿真


一、FPGA引入

1、FPGA简介

Field Programmable Gate Array(FPGA)就是"可反复编程的逻辑器件"(可编程的数字电路)。

FPGA、ARM和DSP区别简述:

**ARM:**侧重于控制和传输,通常也包含的人机交互功能;

**DSP:**为高速数据的实时采集和传输、复杂的运算处理应用而进行定制化的处理器;

**FPGA:**覆盖各种ARM和DSP无法满足的应用,更趋向于小批量、定制化、实时性、要求又很高的应用。

2、FPGA优势和局限性

FPGA通常在数字信号处理、视频处理、图像处理、5G通信领域、医疗领域、工业控制、云服务、加速计算、人工智能、数据中心、自动驾驶、芯片验证等领域发挥着不可替代的作用。

【潜在优势】(1)灵活性: 可重编程,可定制,易于维护,方便移植、升级或扩展降低NRE成本,加速产品上市时间支持丰富的外设接口,可根据需求配置;(2)并行性: 更快的速度、更高的带宽,满足实时处理的要求;**(3)集成性:**更多的接口和协议支持,可将各种端接匹配元件整合到器件内部,有效降低BOM成本,单片解决方案,可以替代很多数字芯片减少板级走线,有效降低布局布线难度。

【局限性】(1)绝对性能受限: 在某些性能上FPGA可能比不上专用芯片;(2)灵活性是否适用: 如果设计不需要,FPGA的灵活性反而浪费,会潜在的增加产品的成本;(3)功耗相对较高: 相比特定功能应用集中的ASIC,使用FPGA实现相同功能可能产生更高的功耗(相比GPU,则单位性能耗要低很多);**(4)设计复杂性高:**FPGA的设计复杂性和难度可能会给产品的开发带来一场噩梦。

二、LED点灯

1、创建工程

双击打开"Vivado ",点击"Create Project"创建工程,如下图所示。

点击"Next"下一步,如下图所示。

配置好工程名称以及所需要保存的路径,点击"Next",如下图所示。

确认创建RTL工程,之后点击下一步,如下图所示。

创建源文件并命名为"led",之后点击"OK",如下图所示。

点击"Next",如下图所示。

创建约束文件,规定片子上哪一个引脚是led,引脚的电平,就是对引脚做一个约束,约束的依据就是原理图,最后点击"OK",如下图所示。

点击"Next",如下图所示。

查看开发板上的芯片型号,本开发板选用的型号为"XC7K325T",双击该行,如下图所示。

点击"Finish",如下图所示。

在弹出的界面中点击"OK",如下图所示。

在弹出的界面中点击"Yes",如下图所示。

2、原理图

关于LED等的管脚接线图如下图所示。

查看一下时钟源对应的管脚以便于在程序中进行配置。

配置并绑定管脚如下。

点击生成bite流,在弹出的点击"Generate Bitstream"。

在弹出的界面点击"OK"。

报这个错误的原因是将LVCMOS33错误的写成了LVCOMS33

复制代码
set_property PACKAGE_PIN K21 [get_ports led1]
set_property IOSTANDARD LVCMOS33 [get_ports led1]

create_clock -period 20.000 [get_ports sys_clk50m]
set_property PACKAGE_PIN F22 [get_ports sys_clk50m]
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk50m]

之后点击Generate BitStream,之后如下图所示,Open Hardware Manager。

外部连接好硬件,在软件内部点击自动连接"Auto Connect"。

将程序加载到板子中。

选择对应的bit流文件之后点击"Program"。

3、仿真

在led.xdc文件中对应的想要观察信号的变量前插入下图所示的一段语句。

点击右侧的Language Templates,如下图所示。

检索BUFG,拷贝对应的语句规则,如下图所示。

按照这样的格式修改led.xdc中的代码,如下所示。

复制代码
module led(
input   sys_clk50m        ,
(*mark_debug = "true" *)output  led1                       
    );
wire clk;
BUFG U1 (
      .O(clk), // 1-bit output: Clock output
      .I(sys_clk50m)  // 1-bit input: Clock input
   );
assign led1 = 1'b1;
endmodule

点击"Run Synthesis",如下图所示。

点击"Schematic",如下图所示。

如果下方没有Debug这个导航栏,在Window选项卡中点出来。

按照下图所示的步骤点击"Create Debug Core..."。

在弹出来的界面中点击"OK"。

按照下图所示的步骤点击"Assign to Debug Port..."。

按照下图所示操作点击OK。

按照下图所示的配置点击"Create Debug Port",实际上已经不需要再加这个probe了,因为已经有了一个probe0了,再添加也只能是悬空。

在弹出的界面中点击"OK"。

将led1_OBUF分配给Debug端口,如下图所示。

分配到指定的探针口,如下图所示点击"OK"。

识别到了这个probe1没有连接,于是将其删除重新进行Run Synthesis。

解决报错后,连接硬件,下图所示。

将程序下载如下图所示。

点击运行,如下图所示。

在界面中可以看到对应的变量的当前值。

相关推荐
FPGA小迷弟2 小时前
FPGA 与千兆以太网:各类物理接口的形式、区别、使用方法与应用场景详解
tcp/ip·macos·fpga开发·udp·fpga
李长渊哦2 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
NamoAmitabha1282 小时前
Zynq 的 AXI GPIO,是“ARM 通过一条国际标准高速公路(AXI 总线),去遥控 FPGA 里的一个寄存器”。---deepseek
fpga开发·zynq--ps
代码山河2 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
旖旎夜光3 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(119):EvoLife——让具身 Agent 把主动问到的答案沉淀为可复用的空间经验
论文阅读·人工智能·学习·开源·github
NamoAmitabha1283 小时前
ARM 不懂寄存器,它只懂内存地址---deepseek
fpga开发·zynq--ps
程序猿乐锅4 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
FPGA小迷弟5 小时前
FPGA 千兆以太网帧格式全解:从 IEEE 802.3 帧结构到 Verilog 收发实现
人工智能·5g·fpga开发·架构·硬件架构