【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

这篇具有很好参考价值的文章主要介绍了【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯


前言

FPGA图形化可以提高FPGA的开发效率,为产品迭代、功能机验证,产品参数调试提供的便捷的编程方式。LabVIEW作为一款图形化开发软件可以为FPGA提供零代码开发,图形化界面可以非常直观的展示出FPGA的并行结构。LabVIEW的开发思路是顶层调用,其自身有丰富的函数和滤波器,同时支持在线前面板调试,对于PID调参等工业实践具有很大的帮助。但FPGA图形化编程的过程中,如果仅仅利用LabVIEW自身的资源,脱离底层Verliog就会缺乏灵活性,例如需要对新的传感器进行开发时,没有可以依赖的IP集成节点或Socket,程序框图就会比较复杂,FPGA图形化开发既要具有图形化编程的简洁性,又需要Verliog语言的灵活性,两者相辅相成使得LabVIEW FPGA大大节约了工程师的时间。


一、什么是FPGA图形化设计

随着FPGA的发展,国内外在数字电路相关的课程学习中都开始学习HDL(硬件描述语言)进行电路的设计,但是在HDL语言上由于它是用来描述底层的硬件,底层的语言学习过程花费的学习成本相对较高,例如VHDL,这种语言并不直观,而这会大大增加硬件设计的门槛。
因此,FPGA图形化设计为降低编程学习的门槛提供了新的思路,利用LabVIEW图形化程序编译平台,以框图的形式编写程序,通过LabVIEW开发环境设计、编译程序后下载至微处理器或FPGA芯片,最终达到独立运行的功能。

二、为什么要学习FPGA图形化开发?

FPGA图形化开发对于刚入坑的FPGA的小白来说比较友好,以图形化的界面呈现出了FPGA设计中的要素,而传统Verilog界面面向代码,语言描述硬件较为抽象,同时在LabVIEW中,它的时钟、FIFO、IO、LED、与或非门、条件结构、循环结构、顺序结构等都是以图形化的方式呈现,理解代码逻辑能有一个直观的印象。
FPGA有两条蔡氏定律:
1、FPGA不仅仅是FPGA。
2、FPGA的最终目的是做出可用的电路。

在产品级的FPGA开发上,应用工程师不关心FPGA内核是用什么语言去开发,更希望产品功能可以尽快实现,因此FPGA工程师不能仅仅专注于FPGA本身,更要去关注FPGA的硬件电路,不关注硬件电路的FPGA在实现功能上是有欠缺的,就比如USB通信,在STM32上由于集成的硬件的USB控制器,在驱动USB相对简单,但是对于FPGA来说就是一张白纸,如果从协议开始写会大大的提高FPGA的开发难度,于是采用USB芯片,FPGA只需要处理数据就行了,对于不同的芯片,控制方法不尽相同,但最终的目的都是一样的——做出可用的电路,实现产品功能。
【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

两个界面的代码给人的感觉是不一样的。

三、Xilinx Spartan-6 系列网表文件封装的注意事项

由于Spartan6系列属于旧版本,不被新的编程软件Vivado支持,只能用ise进行下载编程,而ISE14.7生成网表文件格式为ngc,Vivado软件生成的网表文件为edf,在ISE环境下调用edf文件会提示black box,认为edf文件不被Spartan6支持,但是若使用LabVIEW封装成IP集成节点,可以跳过这个警告,从而可以在Spartan6系列中调用edf文件。

edf—>ISE14.7–×—>Spartan6 不支持
edf—>LabVIEW---->Spartan6 支持

要是现有edf文件运行很稳定,可以考虑用LabVIEW封装成IP集成节点进行调用。

四、传统HDL语言流水灯逻辑

【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
我们希望实现功能是实现任意时间间隔的LED灯流水,因此我们的输入接口留出了Count,在输出接口留4位的LED变量,以实现流水功能。

它的代码实现

module flow_led(

	input				clk,
	input   			reset,
	input   wire [31:0] Count,
	output  reg [3:0] 	led

);

reg [31:0] counter;
reg [1:0] State;
always@(posedge clk or posedge reset) begin
	if(reset) 
	counter<=24'd0;
	else if(counter<Count)
		counter<=counter+1'b1;
	else
	counter<=24'd0;
end

always@(posedge clk or posedge reset) begin
	if(reset)
	State<=2'b00;
	else if(counter==Count)
	State<=State+1'b1;
	else
	State<=State;
end

always @(posedge clk or posedge reset)begin
	if(reset)
	led[3:0]<=4'b0001;
	else if(State==2'b00)
	led[3:0]<=4'b0001;
	else if(State==2'b01)
	led[3:0]<=4'b0010;
	else if(State==2'b10)
	led[3:0]<=4'b0100;
	else
	led[3:0]<=4'b1000;

end

endmodule


注意,传统HDL语言编写好逻辑后,需要在综合设置中取消插入IO buffer,否则在调用的时候编译不通过。
【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
设置好后综合,检查语法,并导出生成好的ngc文件,若读者采用Vivado可尝试同样方式生成网表,本文不再赘述。

【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

五、Labview调用网表文件

  • 新建FPGA工程,添加需要的vi和IO,将ngc网表复制到工程目录下

  • 将ngc网表复制到工程目录下
    -【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

  • 在程序框图中添加IP集成节点,添加网表文件,将仿真行为设置成综合后模型,生成支持文件,并调整好接线端。
    -【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
    【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
    【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
    【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯
    添加好节点后编写好程序:
    【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

六、实验验证

经过编译后,下载至FPGA验证流水灯时序,在在线前面板可以观察到LED灯不断地进行流水。
【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

总结

通过以上网表文件,我们实现了Verliog语言与FPGA图形化的交互,打通了底层硬件语言在高级语言中调用的困难,对FPGA图形化编程的推广大有裨益。以上的代码资源和LabVIEW程序均开源在我的创作中心,欢迎下载交流。文章来源地址https://www.toymoban.com/news/detail-426861.html

到了这里,关于【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5.2 FPGA:基于verilog的LED流水灯设计(多种方法)

    目录 设计目标:8个LED灯以每0.5s的速率进行循环闪烁 方法1:移位法实现 设计模块 仿真代码 实验结果  方法2:循环移位方法  设计模块 方法3:使用三八译码器实现流水灯 顶层模块 底层模块 当仿真时时间长,可以减小设计代码的计数次数,对分析移位功能没有影响。 设计

    2024年02月06日
    浏览(33)
  • FPGA学习——按键控制LED流水灯(附源码 无按键消抖版本)

    在博主的cyclone4开发板上一共有4个按键,本次实验的目的是为了实现每按下一次按键,都会使开发板上的4个LED灯切换一次状态,博主一共设计了四种状态,分别是: 按键 状态 按键1按下 自右向左的流水灯 按键2按下 自左向右的流水灯 按键3按下 四灯常亮 按键4按下 四灯闪烁

    2024年02月06日
    浏览(33)
  • 【FPGA】Quartus18.1打包封装网表文件(.qxp)详细教程

    当我们在做项目的过程中,编写的底层Verilog代码不想交给甲方时怎么办呢?此时可以将源代码打包封装成网表文件(.qxp)进行加密,并且在工程中进行调用。 Quartus II的.qxp文件为QuartusII Exported Partition,用于创建综合或者PAR之后的网表文件。 在QuartusII的Project Navigator中选中欲

    2024年04月12日
    浏览(26)
  • Verilog HDL——LED流水灯工程&LED点阵显示

    LED流水灯 根据8位LED灯与EPM240引脚I/O对应关系 配置CPLD引脚: Hardware SetupUSB-Blaster[USB-0]JTAG Mode 下载工程: LED点阵显示 LED点阵电路: 00IC-EPM240 开发板采用的点阵型号是 10788。8×8LED 点阵共有 16 个引脚,分别控制 8 行和 8 列,行列共同决定其中一个 LED 的亮灭。图中 ROW 为行,

    2024年02月03日
    浏览(34)
  • led流水灯

      本章将讲解流水灯的制作,在Cyclone IV开发板上依次点亮四个led灯,并以一定间隔亮灭,达到流水灯的效果。 图1. DIP发光二极管(直插型) 图2. SMD发光二极管(贴片型)   LED灯就是发光二极管,二极管功能很多,在本实验中我们暂且将其看作是一个开关。二极管在正向

    2024年02月13日
    浏览(35)
  • 3、stm32:GPIO输出——LED闪烁、LED流水灯、蜂鸣器

    目录 一、GPIO简介 二、GPIO基本结构 三、GPIO模式 四、GPIO常用寄存器 (1)端口配置低高寄存器(GPIOx_CRL/GPIOx_CRH)(x=A…E) (2)端口输入数据寄存器(GPIOx_IDR)(x=A…E) (3)端口输出数据寄存器(GPIOx_ODR)(x=A…E) (4)端口位设置/清除寄存器(GPIOx_BERR)(x=A…E) (5)端口位清除寄存器(GP

    2024年02月09日
    浏览(34)
  • (STM32基础)STM32实现LED闪烁&LED流水灯&蜂鸣器

    1、按照新建工程步骤创建工程,新建start、library、user三个文件夹,从固件库添加相应文件 2、keilkil小程序用来清理listings和objects文件夹中编译产生的中间文件,以后需要打包工程的话可以先用keilkill先清理,这样文件夹会大大缩小所占内存。 在library中可以查看外设函数库,

    2024年02月07日
    浏览(40)
  • 【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)

    电路图示例1 电路图示例2 main.c 接线图如下图所示: 点击下载,现象为LED闪烁。 main.c main.c stm32F103工程模板 01-LED闪烁.rar 02-LED流水灯.rar 03-蜂鸣器示例程序.rar 参考: 【STM32】江科大STM32学习笔记汇总

    2024年03月19日
    浏览(43)
  • 51单片机学习--LED流水灯

    延时代码可通过软件生成,系统频率要和开发板的晶振频率相对应。  

    2024年02月16日
    浏览(40)
  • 【C51基础实验 LED流水灯】

    前言: 前几篇学会了LED驱动原理,并且成功点亮了一颗LED和实现了LED的闪烁,那么这篇紧接着就来解锁LED的新功能,LED流水灯。当然这里前提是基于肉眼余晖可见光达成的效果。 开发板上 LED 模块电路原理图如下图所示: 看上图中 LED 采用共阳接法 ,D1-D8 连接到单片机的

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包