——LED点灯与开发流程)
一、FPGA引入1、FPGA简介2、FPGA优势和局限性二、LED点灯1、创建工程2、原理图3、仿真一、FPGA引入1、FPGA简介Field Programmable Gate ArrayFPGA就是“可反复编程的逻辑器件”可编程的数字电路。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错误的写成了LVCOMS33set_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 1b1; 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。解决报错后连接硬件下图所示。将程序下载如下图所示。点击运行如下图所示。在界面中可以看到对应的变量的当前值。