vivado hls的应用(hls需要verilog基础)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

hls的开发虽然比较方便,但是本质上hls转成一个ip,还是需要c翻译成verilog的。所以从这个角度上来说,c语言就是一个中介。只是因为用c语言的人比较多,所以hls选择了c/c++作为开发的基础语言。就像android开发的话,选择java是一个道理。

verilog说简单也简单,主要是和c的思维不太一样,它的驱动就是clk,起始点就是reset。

1、最简单的verilog,就是clk、rst和led

最简单的verilog,其实就类似于c语言里面的hello world,它有时钟,有复位,有输出。这就是一个最小工程了。

2、状态机的引入

如果只是写一些led程序,基本照着verilog语法写就可以了。但是需要处理一些协议的话,就需要引入状态机,比如串口。不管什么接口,首先拆分成不同的状态,这样不同的信号在不同状态下的逻辑,就可以慢慢写出来了。

3、输入去抖

有了输出,还要有输入。而输入最简单的信号就是按键输入,然而输入的key一般是机械装置,这个时候就要引入防抖算法。这部分,可以借助于之前谈到的状态机,就可以轻松解决。

4、开始输出时钟

有一些协议不管是信号的输入、输出,有时候还需要输出时钟。对于低速的时钟,不需要pll倍频。直接使用verilog的输入时钟,分频处理就可以了,最典型的就是iic时钟、spi时钟。有了前面的输入、输出,再加上本次提到的时钟输出,就可以和外界芯片通信处理了,非常有效。

5、pll倍频

除了低速接口,还有一些高速接口需要处理,比如说vga、比如说sdram。这些接口的速率都比fpga的输入时钟要高。所以没办法,处理这些信号就有必要引入pll倍频ip。好在不管是altera,还是xilinx,本身eda都提供了对应的ip,直接拖过来使用即可。

6、引入fifo解决频率差异问题

既然模块倍频了,那么肯定会出现不同频率模块需要进行相互通信的case。最典型的就是图像处理的场景。一方面是图像采集的速度,一方面是图像播放的速度。为了解决速度差的问题,一般先把图片放到ddr,然后再从ddr送出去。由于ddr处理速度非常快,所以采集速度、ddr速度、播放速度都不一样。这个时候就引入fifo就可以完美解决这一问题,一个是read fifo,一个是write fifo。

7、延迟打拍

这一招在图像处理的时候经常需要用到的。比如采集到的图像需要做某个算法,或者是做某个统计值,这个时候就可以采用延迟打拍的方法来处理。比如说,最简单的就是把彩色的图像,转成黑白的图像,此时只需要把所有图像延迟几拍即可。

8、与mcu或者mpu协作

有一些功能用fpga来做并不是很合适,比如纯文件系统处理,或者是纯网络系统处理。这个时候就适合旁边接一个小mcu,或者是mpu,通过spi连接,获取fpga送过来的数据、信号、甚至是图片,这都是很合适的方式。

当然fpga的优势,还是在中高速接口、多接口、算法领域使用,比较合适。

相关推荐
FPGA小迷弟7 小时前
FPGA工程师面试题汇总(九)
网络协议·tcp/ip·fpga开发·面试·verilog·fpga
fei_sun20 小时前
逻辑设计概念及Vivado基础
fpga开发
发光的沙子1 天前
FPGA----vitis测试linux程序
fpga开发
初夏正浓1 天前
一文读懂“JESD204B”之链路建立与xilinx IP仿真
fpga开发·xilinx·jesd204b
s09071362 天前
【Zynq 进阶一】深度解析 PetaLinux 存储布局:NAND Flash 分区与 DDR 内存分配全攻略
linux·fpga开发·设备树·zynq·nand flash启动·flash分区
Kong_19942 天前
芯片开发学习笔记·二十——时序报告分析
fpga开发·芯片开发
凌盛羽2 天前
使用python绘图分析电池充电曲线
开发语言·python·stm32·单片机·fpga开发·51单片机
尤老师FPGA2 天前
LVDS系列44:Xilinx Ultrascale系 ADC LVDS接口参考方法(六)
fpga开发
化屾为海2 天前
FPGA之PLL展频
fpga开发