- 博客(43)
- 资源 (4)
- 收藏
- 关注

原创 FPGA----双馈风力发电机的数字孪生
abc-dq坐标系的转换模块、笛卡尔坐标系与极坐标系的转换模块、PI模块、取余模块、取整模块、低通滤波器模块、陷波器模块、锁相环模块、矩阵四则运算模块、归一化模块、支持任意浮点数输入的三角函数求解模块(sin、cos、atan2)等等。整个项目包含3W行左右的Verilog代码,在此过程中,本人亲自开发了。记录一下,历时一个月终于把DFIG的Verilog代码写完了。各种matlab常用科学计算模块,需要的大家可以直接联系我。...
2022-07-29 23:55:09
215
1
原创 FPGA----ZCU106与RTDs的udp数据收发实验
3、实验任务:①TRDs发送数据到FPGA,FPGA解析数据。(RTDs的收发数据是有GUI界面的,配置一下即可,需要我们完成的就是SDK的网络协议代码编写)4、实验软硬件:Vivado2019.1、RSCAD FX、ZCU106、RTDs(NOVACOR)、GTNET网卡。2、实验目标:依据RTDs设备的GTNET SKT网络协议,完成ZCU106 PS侧与RTDs的HIL实验。将RSCAD传入数据通过串口打印,并将整型615以及浮点型3.14两个数据发送至RSCAD。设置两个输入,两个输出。
2023-05-15 15:15:35
40
2
原创 ZCU106的FMC接口AD/DA(全网唯一、全网最详)
上图为FL1010的引脚图,我们只用J2端口(标黄的部分),记住VADJ(红框)这个电平,后面debug会用到。AN108,一个DA端口一个AD端口,现在买的都是黑色的,图中绿色的是老早以前的了,我用的黑色的。上图为AN108的引脚图,共34针,与FL1010对其,接上即可。马上就要毕业啦,好久没写文章了,今天给大家带来硕士期间的最后一次AD/DA实验的实验记录,废话少说,先看连接与测试视频。②解压,打开config.json,滑倒最下面,将CP210x改为你的驱动即可,我的是CP2108。
2023-02-07 19:12:59
953
2
原创 Flask框架,RuntimeError: No application found.问题完美解决方案
问题的发生:在Flask框架中引入APScheduler 定时器功能后,如果调用外部文件夹中的函数,则会引发"RuntimeError: No application found. Either work inside a view function or push an。解决方案:在lib文件夹下新建初始化函数,用于生成全局APScheduler。
2023-01-10 11:37:11
182
原创 nodejs调用matlab的.m文件
在一些web服务中,后台采用nodejs轻量化服务器接口,而matlab的.m文件编写了算法模块,两者调用时,官方没有提供相应的文档(当然也可能我没找到)。2、pycharm 中新建python项目,并建立test.py文件,将matlab的.m文件拖入到同一目录下。
2023-01-01 18:44:56
502
3
原创 FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)
大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口)本实验完成了,PL侧自定义数据传输到PS侧,并在PS侧写加软件,完成了PL侧传入数据的求和功能,发挥了整个SoC的功能,为后续PL侧加速计算,PS侧数据分析奠定了基础。
2022-11-29 19:14:48
958
原创 基于FPGA的Hamiton方程--辛几何算法实现(全网唯一)
本实验做的是简单谐振子运动方程组的运算,会给出matlab代码以及相应的FPGA仿真截图。
2022-11-25 13:11:21
378
1
原创 SoC-ZCU106求解非线性方程(一):环境安装
主要的解决的问题是:PL侧给PS传输数据,然后PS将数据作为已知量求解非线性方程,为了简化问题复杂度,本次实验只在vivado中例化arm,但并不传入数据,主要集中在sdk侧的开发。
2022-11-16 19:40:45
305
原创 电力系统中的Kron简化,含MATLAB代码(全网唯一)
电力系统中的Kron简化简单介绍一下电力系统导纳矩阵简化方法Kron简化(Kron Reduction)。本文含有MATLAB代码,大家直接复制即可
2022-11-06 23:00:25
287
原创 FPGA-半精度浮点数(float_16)及其VHLS求逆实现方法
1、16*16半精度浮点数矩阵求逆的算法。半精度浮点数属于一个新的数据类型。float16是英伟达做并行计算为减少存储空间而定义的新的数据格式,只占用16位,相当于2个字节的内存,在IEEE 754-2008中,它被称作binary16。...
2022-08-29 16:05:37
735
原创 FPGA-ZCU106-PL侧读写ddr4(全网唯一)
本次给大带来了ZCU106的PL侧读写ddr4的教程,本教程是全网唯一ZCU106教程。本教程采用的是xilinx的ddr4的IP核的AXI4接口开发的,因此需要先了解AXI4总线协议。
2022-07-23 23:13:20
2415
12
原创 FPGA----xilinx Floating IP核浮点数转为定点数bug及解决方案
如果我们实现Matlab的ceil函数时,输入的数据无论正负均需要+1,然后转为浮点数。问题描述当我们设置输入为浮点数,输出为Q64_32(32位整数与32位小数)时,如果输入的浮点数为正数,则输出结果无异议。而对于Mod函数,由于求解过程,我们将负数(-5.625)的整数部分又转为了整数(直接取反),因此对Mod函数无影响。...
2022-07-19 19:02:36
511
原创 FPGA----Verilog实现abc坐标系转dq坐标系(全网唯一)
1、本人采用Verilog实现了abc-dq、dq-abc、极坐标与笛卡尔坐标、低通滤波器、取余函数、最大值、最小值、PI比例积分器的模块编写,接下来几篇会将测试代码与测试结果一一列出,大家有需要请联系我的邮箱。 ............
2022-07-02 23:14:31
1043
2
原创 FPGA----Vivado对Verilog代码加密(生成网表方式)
1、问题的提出:当有些人想浏览我们辛辛苦苦写的代码时,我们最好的方式是对代码进行加密。那此时应该怎么办呢?这就用到了网表2、解决方案:直接上链接Vivado生成网表文件_yundanfengqing_nuc的博客-CSDN博客_vivado生成网表如何操作?以之前写的采用有限状态机实现序列检测模块为例,现在写了个两路“101”序列检测器模块(就是把原来的例化两个),该模块的结构如下:module fsm_test_top( //系统IO input clk, input rst, //两路序列输入 inpu
2022-06-27 22:46:02
1427
原创 FPGA--ZCU106通过SFP+/SGMII模块传输数据-第二讲(全网唯一)
有了上一讲的基础知识后,本篇进行基于SoC的PL与PS侧协同完成通过网口SGMII的udp传输,本教程为全网第一篇关于ZCU106开发板的教程,先上视频看效果。1、实验任务:通过ZCU106的SGMII网口与PC机完成基于UDP协议的数据传输2、实验软件:Vivado 2019.1、Vivado SDK 2019.1、网络调试助手(自行下载)实验硬件:ZCU106、网线1一条......
2022-06-23 18:24:18
1081
8
原创 FPGA--ZCU106通过SFP+/SGMII模块传输数据-第一讲(全网唯一)
2 网络数据协议讲解TCP、UDP、IP、MAC应用层相当于电脑的比如浏览器请求、文件传输请求,对于FPGA来讲,就是数据生成部分或者数据请求部分;传输层就是说数据包通过什么协议进行传输,TCP协议传输可靠但速度慢、UDP传输不可靠但速度快(QQ就是UDP传输);网络层就说,数据包要发送给谁,或者要不要接收这个数据包,比如送快递的,需要知道你的手机,这个对应的就是设备的IP地址;数据链路层就是指示你的固定位置,比如你的户口本、者身份证住址、快递的接收地点,这个应该就是相当于MAC地址;物理传输介质就是光纤
2022-06-23 16:24:53
1437
原创 FPGA----VHLS补丁及采用LU分解(Chosky分解)求解矩阵的逆
1、由于Xilinx软件自身问题,在2022年以后,版本时间溢出导致VHLS不能生成IP核心,之前说的是修改系统时间,现在Xilinx有补丁了,只要把补丁“automg_patch_20220104.tcl”这个文件,移动到“xxx/xxx/Vivado/版本号/common/scripts”例如“D:\vivado\Vivado\2019.1\common\scripts”文件下即可。下面是下载连接,不需要积分哦!VivadoHLS|ExportRTL报错“ERROR:[IMPL213-28]-嵌入式
2022-05-02 16:49:51
1293
2
原创 FPGA----IP核cordic-translate使用(关于定点数的映射问题,全网最详)
1、本人目前亲自开发了,复数矩阵求逆(包括复数矩阵的四则运算,设C=A+Bi,可以求解A是非奇异矩阵时的任何复数矩阵,由于代码并行程度过高,在个人电脑64g内存条件下32维矩阵已经不能仿真),需要的看本人资料。下面是8*8复数矩阵求逆仿真截图2、本文建立在前两篇文章的基础之上,需要有定点数的知识积累,看不懂的点击下面传送门补课:FPGA----IP核cordic使用_发光的沙子的博客-CSDN博客之前说过,使用IP核要先百度,然后看文档,然后再百度最后使用。本篇文章以cord IC核的s..
2022-03-17 22:56:37
4321
9
原创 FPGA----Verilog复数运算
1、好久没写文章了,有点手生,大家尽量看。本文章代码实现了32位浮点数(即一个复数为64位)的复数计算,且本人实现了32*32复数矩阵的求逆运算,需要的请查看作者资料邮箱。2、Verilog复数运算实验任务:实现A=1*4(虚数位32位、实数位32位),B=4*1(虚数位32位、实数位32位)全浮点数复数矩阵计算。本代码并行度高、代码复用性强。实验软硬件:ZCU106、Vivado 2019.1实验知识:(a+bi)*(c+di)=(ac-bd) + (bc+ad)i。因此需要4个乘法器,一
2022-02-11 11:28:39
2194
1
原创 FPGA----Verilog矩阵求逆
1、本人使用纯Verilog语言实现了方阵矩阵求逆的并行计算,代码复用性强、可扩展性强、包含矩阵的四则运算,下面的例子是8*8的,本人代码可以向上封装以2^n阶数增长。2、下面是8*8矩阵的仿真截图。实验结果为:3e08542e(0.13313362002372742)be255bd1(-0.1614830642938614)bea23938(-0.31684279441833496)3ed3ece6(0.41391676664352417)bd8e6c0a(-0.06954200...
2022-01-11 00:07:01
3047
31
原创 FPGA----FPGA中术语及verilog矩阵乘法及VHLS(Vivado HLS)最近不能产生IP的解决方案
1、由于实现了暂态程序中电压初始化的求解,想看看占用板卡资源就尝试综合了以下程序,于是看到了报表后一头雾水。LUT指的是查找表,FF指的是触发器(可以存储1bit的数据)。看了上图我们知道FF占用很多,但实际的资源也很大(但是将来可能需要解决两块板子的级联问题)。相关属于请参考这篇文章,写的很是详细:Vivado HLS 三:基本概念(lut、latch、ff、RAM、ROM、FIFO等)_不缺席的阳光的博客-CSDN博客_vivado中lut...
2022-01-05 15:15:19
1788
2
原创 FPGA----IP核float(定点数转浮点数)使用
1、本文紧接上一篇文章,因为我们计算设定的32位的单精度浮点数,但是cordic IP核输出的是32位定点数x(符号位)_x(整数位)_xx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx(小数位),为了方便使用float IP核的计算,因此我们需要将定点数转为浮点数。本片文章为全网第一篇带小数的定点数转浮点数的例程。2、Floating-point IP核使用实验任务:实现sin(±120°)32位定点数转浮点数操作,具体值怎么算的请参考上一篇文章实验软硬件:ZCU106
2022-01-01 22:34:36
4777
原创 FPGA----IP核cordic使用
之前说过,使用IP核要先百度,然后看文档,然后再百度最后使用。本篇文章以cord IC核的sin、cos来进行实验。1、定点数、浮点数、反码、补码首先要明确这几个词的概念。废话不多说,直接上例子:采用32位的有符号定点数表示方法,第一位表示符号位(0是正数,1是负数),因此还剩31个位置来表示数据,具体整数部分与小数部分是几位,看自己设定。我们下面假设整数部分2位(因为-pi~pi=-3.14~3.14,2位可以表示3),29位表示小数。Exp1:①1.5=1+0.5=>0(符号位)_
2021-12-31 16:19:23
5804
17
原创 FPGA----PL侧对ram的读写
1、例化模块的输出端口只能是wire型,而不能是reg型,也就是不能更改输出。2、input\output都需要有位宽表示。3、assign变量也是wire型。4、①实验任务:将32位宽的22个数放入PL侧的ddr,并且读取(本实验可以为数组在模块间的传递提供解决方案【数组在Verilog中是不可以作为端口传递的,但是在SystemVerilog中可以】)②实验软硬件:Vivado 2019.1、ZCU106③实验过程:step1:建立test_pl_ddr项目,过程不再赘述st
2021-12-28 23:53:00
568
1
原创 FPGA学习之路-ZCU106板子点亮PS侧LED
1、本文章借鉴了ZCU106--PL+PS点灯_Junluoyu的博客-CSDN博客_zcu106、ZCU106开发之PS侧MIO闪灯_lixiaolin126的博客-CSDN博客
2021-12-15 17:49:00
1560
6
原创 FPGA学习之路-zynq7000-PS侧读写bram
1、由于ZCU106板子的sdk调试一直没有成功,因此还是基于ZYNQ7000板子写了一个ps侧读写内存的内容2、实验软硬件:Vivado 2019.1、Xilinx sdk 2019.1、ZYBO板子(xc7z010clg400-1 )3、实验过程:step1:在VIvado中建立工程:miz701_sys,芯片选择xc7z010clg400-1step2:在IP INERGATOR中点击创建,然后搜索ZYNQ双击。 然后点击Diagram的自动运行模块,弹出的窗口点击OK。.
2021-12-14 11:15:48
1685
3
原创 FPGA学习之路-fpga术语与zynq7000HDMI显示
1、术语定义PS:处理系统 (Processing System) , 就是与FPGA无关的ARM的SOC的部分,我的理解是这部分是出场就已经封装好的。PL:可编程逻辑 (Progarmmable Logic), 就是FPGA部分,这部分是可以定制化的。ZYNQ,往大里说,就是两大功能块,PS 部分和 PL部分,就是ARM的SOC部分,和FPGA部分。下一个层级, APU部分:APU:应用处理器单元(Application Processor Unit). 位于PS里面的中心...
2021-12-08 00:56:29
900
2
原创 从Matlab到FPGA(2021.9.13加更)
1、IP核的生成第一步:第二步:直接OK这样就生成了我们算法的IP核,当你跟着流程走一遍就知道为什么赛灵思的IP核是面向算法工程师而调用算法和完成其他操作交给硬件工程师这句话了。2、Vivado中调用IP核的方法第一步:在Vivado中新建项目(参考前一篇文章中我上传的文件)第二步:第三步:第四步:第五步:看到用户仓库出现啦。第六步:下面就是硬件工程师的部分了,将IP核加入后,用Verilog(这是不可避免的)例化IP然后进行开发...
2021-09-13 23:45:28
587
原创 从Matlab到FPGA(2021.9.13)
1、真的是入坑了,本以为C仿真完就可以直接综合了,结果改了一天了才成功记录一下今天所有的坑。2、for(int i{xxx};i<xxx;i++){...}标红的会报错,改成int i;for(i=xxx;i<xxx;i++){...}就可以啦3、memory copy is not supported unless used on bus interface possible cause(s): non-static/non-constant local array with.
2021-09-13 17:49:13
403
原创 从Matlab到FPGA(2021.9.10)
1、昨晚想了一下,既然赛灵思支持很多大厂在FPGA上做人工智能,那么高深的算法VHLS都可以实现,那我这小儿科算法一定也可以,所以估计对昨天改完的c++也不需要更改太多。2、c++函数返回数组的方法:c++是不能返回数组的,但是可以返回指向数组的指针。那么我们将函数的返回值设置为指针就行了:double *function(param)3、下面是一个在Vivado用Verilog中实现一个加法器并用LED灯展示,内容非常详细。我就放部分截图,下载是需要积分的。不过有想学习的学生还是可以.
2021-09-13 09:47:31
331
原创 从Matlab到FPGA(2021.9.9)
1、效果真的是太好了c++加速比大概在实时性的4.6,表明4机46(含地节点)实现了超实时仿真。matlab时间是255s比simulink的259s快一点点而已。2、代码我改的差不多了。这里给大家一个建议,一定要把转义后c++代码读一遍,与.m文件对照着读会清晰一点,由于不清楚VHLS到底支持多少c++语法,因此目前我主要修改部分就是把静态的一些参数放到头文件中,然后大数组申请内存方式已经给大家写出来了,本人也是第一次接触c++,不要喷我。这个初始化函数任然存在内存,可...
2021-09-09 16:55:43
157
原创 从Matlab到FPGA(2021.9.7)
1、转义后的c++文件是一维数组,由于考虑到verilog不支持二维数组(其实也支持,但是不适用,请参考https://blog.csdn.net/childbor/article/details/76408241),因此,对于数组部分我们就不要更改了。2、memset函数作用:...
2021-09-09 14:27:27
276
原创 从Matlab到FPGA(2021.9.5)
好几天没有更新,我并不是放弃了,注意不是放弃了!!!是搞了一个154节点的程序1、c++中的数据量过大引起的中断(错误代码为:0xC0000005: 读取位置 xxx时发生访问冲突)这个上限具体是多少我也没测试出来,反正480W(10W个是可以的)个数据是不行的,c++代码需要重写。具体参考https://blog.csdn.net/sunshine_505/article/details/88602338...
2021-09-06 00:52:08
129
1
原创 2021-09-01
1、想了许久还是把正确的图发出来吧,反正没啥用。振荡归根结底的原因是我的程序电源是理想电压源而非同步发电机,不具有调频与调压(响应负荷变化)的作用。理论上理想电压源的各个参数需要完全一致才能避免在系统到达稳态的振荡。因为取的是标幺值,从图可见8、5、2、1总数为16的发电机出力波动。接下来的思路就是修改模型,或者编写简化同步发电机的模型。大概率是修改模型。2、以后关于学术内容的东西就不公开说啦,原因大家都知道。我们还是回归到这一个系列的主要干货上来。预计在9月底完成对c++的编写,各个坑我都会替
2021-09-01 23:23:04
100
原创 从Matlab到FPGA(2021.8.31)
1、就是因为昨天晚上的解决方案,现在功率收敛了,可以着手下一步操作了上面是没有修改的图,正常应该是8、5、2、1附近波动的,图就不放了。
2021-08-31 23:15:09
140
原创 从Matlab到FPGA(2021.8.30)
今天找到了我源程序的错误,以下控制方式没有写,之前偷懒了,将电压电流与频率解耦了,这在单机系统中误差并不大,但是在多机系统中会决定发电机的稳定。明天将着手编写本部分代码。...
2021-08-31 00:12:07
121
原创 仿真系统重写(2021.8.29)
今天改了一天发现了一个问题:新能源经换流器并网,经过风电机等校后,如果等效发电机的输出功率很小,在相同地点并网可能会将发电机冲垮,因此风电场聚类到底是否正确。我不知道这个是不是了不得的发现还是仿真的错误,直接上图。但是simulink里面模拟是没有这种现象的,明天再搞!上面代表的是转子转速。可以发现如果在无穷远处,最小功率发电机可能被当作用负荷。...
2021-08-30 00:13:10
100
原创 从Matlab到FPGA(2021.8.28)
1、设置不同参数后,4个等效风场出力变化是这样的。但是不能实现超实时,今天我们就把这段代码翻译为c++文件2、8月26号笔记中存在一个矩阵大小的问题,里面有解决方案。下图是问题改成20002维度就行啦!3、c++运行时间测试是11s左右,并不能实现超实时,我们对代码进行修改。4、可以看到,我们在软件层面实现了超实时,但是代码仍然是串行的,电机运算时,某些电力电子变换器的运算是解耦且同步的(并行的),我们可以在软件层面设置c++的多线程来加速也可以采用FPGA的硬件层面...
2021-08-28 21:25:06
345
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人