
FPGA技巧整理专栏
文章平均质量分 61
FPGA技巧整理专栏,包括一些常用的FPGA使用技巧,FPGA软件操作,IP核使用。这个专栏不涉及具体案例,只介绍写代码中的一些技术。
fpga和matlab
专业即算法,算法即数学,数学即万物。从事MATLAB算法仿真工作15年,从事FPGA系统开发工作12多年。擅长解决各种算法仿真、建模、通信、图像处理、AI、智能控制等各专业问题。
展开
-
降低FPGA功耗的设计技巧
为了降低FPGA(Field-Programmable Gate Array)的功耗并提高其能效,我们需要深入理解FPGA的工作原理和功耗模型。FPGA的功耗主要由静态功耗和动态功耗组成。静态功耗是指电路处于非活动状态时的功耗,而动态功耗则是在电路工作时产生的功耗。原创 2024-08-06 14:02:48 · 1900 阅读 · 0 评论 -
一种自定产生CRC循环冗余校验码verilog程序简便方法。
循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码(cyclic redundancy check)简称CRC(循环码),是一种能力相当强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。这种编码基本思想是将要传送的信息M(X)表示为一个多项式L,用L除以一个预先确定的多项式G(X),得到的余式就是所需的循环冗余校验码。②可检测出所有双比特的错;原创 2023-05-06 12:30:12 · 1545 阅读 · 0 评论 -
【小技巧】如何利用vivado对系统进行功耗分析
如图3-17所示,所设计的单核32位RISC-V处理器的系统总功耗为0.277W,其中,动态功耗(Dynamic)0.13W占系统的47%,静态功耗(Device Static)0.148W占系统的53%。在Vivado下,从综合后的设计到布局布线后的设计,其间产生的任何DCP文件都可用于功耗估计,如图 1所示。从这个图标可以看到,FPGA的功耗为4.392W,然后给出了各个部分的功耗,如Clocks,Signals,Logic,BRAM,DSP,MMCM等。原创 2022-12-13 01:03:16 · 10151 阅读 · 2 评论 -
【小技巧】vivado中功能仿真和时序仿真
在vivado中我们一般需要首先对程序进行功能仿真,其操作方法如下: 此时,功能仿真的效果如下所示:下一步,如果有需要,我们对程序进行时序仿真,此时,操作步骤如下:先进行综合布局布线操作: 然后进行时序仿真,操作如下: 可以看到,在完成布局布线之后,可以点击时序仿真,仿真结果如下:时序仿真和功能仿真区别,我们将上述仿真结果放大可以看到: 在两个数据的变化中间,会有一个0不稳态输出。这个也是实际FPGA开发过程中需要主要的问题。原创 2022-12-06 20:46:44 · 12295 阅读 · 0 评论 -
【小技巧】vivado编译时,提示149characters错误
将你的文件夹的名字改端点,就不会有这个错误了。原创 2022-12-01 00:20:50 · 1007 阅读 · 1 评论 -
FPGA中串口通信的时钟频率和波特率计数
波特率bandrate,指的是串口通信的速率,即串口通信时每秒钟可以传输多少个二进制位。比如每秒钟可以传输9600个二进制(传输一个二进制位需要的时间是1/9600秒),波特率就是9600。串口的通信波特率不能随意设定,这是由于:第一,通信双方必须事先设定相同的波特率这样才能成功通信,如果发送方个接受方按照不同的波特率通信则根本收不到,因此波特率最好是大家熟知的而不是随意指定。第二:常用的波特率经过了长久的发展,就形成了共识,常用的就是9600或者115200。...原创 2022-08-08 20:04:14 · 7593 阅读 · 0 评论 -
【小技巧】STA静态时序分析概述
STA的简单定义如下:套用特定的时序模型(Timing Model),针对特定电路分析其是否违反设计者给定的时序限制(Timing Constraint)。以分析的方式区分,可分为Path-Based及Block-Based两种。 先来看看Path-Based这种分析方式。如图一所示,讯号从A点及B点输入,经由4个逻辑闸组成的电路到达输出Y点。套用的Timing Model标示在各逻辑闸上,对于所有输入端到输出端都可以找到相对应的延迟时间。而使用者给定的Timing Constraint为: 1.讯号A到原创 2022-06-20 06:51:46 · 2268 阅读 · 0 评论 -
【小技巧】FPGA开发流程普通流程
可编程逻辑器件的设计是指利用EDA开发软件和编程工具对器件进行开发的过程。高密度复杂可编程逻辑器件(如FPGA)的设计流程如图1所示。它包括设计准备,设计输入,功能仿真,设计处理,时序仿真和器件编程及下载等七个步骤。图1 可编程逻辑器件设计流程·设计准备 在系统设计之前,首先要进行方案论证、系统设计和器件选择等准备工作。设计人员根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。一般采用自上而下的设计方法,也可采用原创 2022-06-02 03:11:43 · 5443 阅读 · 0 评论 -
【小技巧】FPGA工程综合后出现WNS或者TNS小于零的问题处理
通常情况下,如果出现程序设计不合理,时序优化不到位等问题,vivado在布局布线之后,会出现WNS,TNS小于零的情况,如下图所示:当WNS和TNS较小时,对于一些低速的FPGA工程,可以忽略,不影响系统的工作性能,而当WNS或者TNS负数较大时,那么必须对其进行时序约束,否则会导致系统工作稳定性变差。具体操作如下:选择从中找到红色小于0的路径,然后鼠标右击,在弹出菜单中设置set_false_path,然后将产生的约束语句复制到约束文件中:FALSE PATH就是.原创 2022-05-30 22:16:22 · 13815 阅读 · 3 评论 -
【小技巧】Vivado锁定增量编译技术
为了实现对FPGA系统的place、route的锁定,只通过vivado中setting中的增量设置是不够的,这里需要加入锁定设计。其具体步骤如下:打开vivado软件,在弹出的界面中,选择如下菜单:选择已经被布局布线过的工程中的如下文件:打开之后,可以看到dcp文件的效果图: 打开后,在TCL Console中输入:“lock_design –level routing”,然后按回车,做完这一步后,设计就锁定好了,dcp文件就可以用了。这个步骤时间较长,需要耐心等待。.原创 2022-05-22 03:00:19 · 3355 阅读 · 0 评论 -
【小技巧】使用MATLAB产生一些重复性的verilog语句,加快verilog开发效率
在开发FPGA过程中,经常会遇到重复性的语句需要编写,而这些重复性的语句又不是完全重复的,而是有不同的编号。这个时候直接人工编程非常麻烦,这里分享matlab自动产生verilog的方法。close allfs=10000000;%采样频率%N=length(y);N=1024;%FFT点数size = 10 ;freq=(0:N-1)*fs/N;%频率轴t=linspace(0,2*pi,N);y=sin(t)'%产生单音信号q = quantizer('fixed...原创 2022-05-03 19:28:45 · 3036 阅读 · 0 评论 -
【小技巧】使用MATLAB读取quartusii中signaltapII保存的tbl格式数据文件
有的时候,我们需要将FPGA采集到的数据进行显示,通过MATLAB分析,那么需要读取FPGA的片上数据。我们以quartusii为例子,其片上数据采集到的文件格式为tbl文件,这个时候,我们编写如下程序来读取tbl文件。function data_dec = tbls(name);fid=fopen(name,'r');%文件的路径yy=fscanf(fid,'%s');fclose(fid);aa=find(yy=='='); %找出“=”的下标i=0;for j=1:length原创 2022-05-01 20:03:48 · 1921 阅读 · 0 评论 -
【小技巧】将图片数据导入到FPGA中进行相关操作
以quartusii平台为例子。首先看【小技巧】使用MATLAB产生coe文件和mif文件供FPGA调用方法整理_fpga&matlab的博客-优快云博客_matlab读取coe文件得到图片数据的mif文件。比如,RGB彩色图片,将图片二维矩阵数据转化为串行数据,然后就会自动产生把这几个mif复制到fpga工程中,注意,目前图片大小均采用的是240*320,即高240,宽320,FPGA中参数基于这个设置的,所以测试的时候也要用这个大小。tops下面有三个ROM,分别是R.原创 2022-04-30 23:40:55 · 3129 阅读 · 0 评论 -
【小技巧】一种简单的办法在verilog中处理小数运算
很多情况下,我们需要在FPGA中处理小数,而不是直接量化。这里介绍一种自己以前常用的处理方法。感觉还不错,可以试试。我们定义一个二进制,总共12位宽:A1A2A3A4B1B2B3B4B5B6B7B8.其中A1A2A3A4为整数,B1B2B3B4B5B6B7B8为小数。做加法减法的时候,不考虑整数位位宽不够用的情况,那么可以直接相加:A1A2A3A4B1B2B3B4B5B6B7B8.+A1A2A3A4B1B2B3B4B5B6B7B8.这个就维持了加减法小数位不增加的原则。如果是乘法原创 2022-04-28 22:11:22 · 4230 阅读 · 0 评论 -
【小技巧】使用MATLAB产生coe文件和mif文件供FPGA调用方法整理
目前主流的FPGA,就是xilinx的FPGA和英特尔(原altera)的FPGA,在使用过程中,经常需要调用一些数据到ROM核中。下面总结下调用方法。1.产生coe,用于xilinx的FPGA:fid = fopen ('dat.coe','w');fprintf( fid, 'memory_initialization_radix=10;\n');%生成索引fprintf( fid, 'memory_initialization_vector =\n' );for i=1:length(原创 2022-04-27 00:50:33 · 5757 阅读 · 0 评论