- 博客(63)
- 问答 (3)
- 收藏
- 关注
原创 fpga iic协议
协议本身就不做介绍了,只介绍一下编写思路,首先这个iic模块具有两个功能,对一个地址进行一个字节读,对一个地址进行一个字节写。由于iic的地址包含设备地址(7位)和寄存器地址(8或16位),因此模块对外提供参数来让用户选择采用哪种位宽的寄存器地址。即REGADDR_2BYTES=1时候采用16位,0时采用8位,而SCLK_FREQ则表示clk时钟多少频率,这里写了sim是为了仿真用,可以删除其中本模块核心的寄存器变量如上图,其中状态有如下这几个,除了IDLE,START,STOP,每个状态都会读写完一个字节
2025-09-04 18:33:33
622
2
原创 FPGA离群值剔除算法
该视频讲解了一种基于中位数MAD(Median Absolute Deviation)的离群值剔除算法。算法通过滑动窗口动态存储输入数据,计算窗口中值的中位数和绝对偏差中位数(MAD),当窗口中最旧数据与中位数的偏差超过k倍MAD时,将其视为离群值并用当前窗口中位数替代输出。Verilog实现包含数据排序、中位数计算、偏差处理等模块,测试文件通过随机数据注入验证了算法的有效性。该方法适用于实时数据流的离群值检测与处理。
2025-09-03 20:12:28
359
原创 FPGA实现流水式排序算法
【排序算法fpga实现】https://www.bilibili.com/video/BV1S3thzWEnh?该算法采用双调排序算法,是一种可流水的递推算法,且算法的消耗时长可算,具体细节参考视频。
2025-09-03 19:59:41
346
原创 FPGA ad9248驱动
本文介绍了一个基于AD9248 ADC芯片的驱动模块设计。该模块最高支持65MHz时钟频率,采用3.3V CMOS电压和并行IO接口,实现双通道14位分辨率的数据采集。模块通过差分时钟(cha_clk/chb_clk)控制ADC,并利用IDDR原语解析双沿数据(ddr_data),输出通道数据(cha_data/chb_data)和超量程指示(cha_over/chb_over)。设计包含时钟生成、数据采集和ILA调试逻辑,支持单/双极性参数配置。测试顶层文件通过MMCM生成工作时钟,验证了驱动模块的功能。
2025-09-03 19:45:10
305
原创 fpga dac8830驱动
本文介绍了一种16位分辨率的SPI通信DAC模块dac8830的设计与实现。该模块支持最高50MHz SPI时钟速率,具有单极性和双极性输出模式(0V以上直流或正负电压交流),输出幅度可选5V或10V。文章详细描述了模块的Verilog HDL实现代码,包括状态机控制、通道选择、数据移位等关键功能。测试部分采用200MHz时钟和DDS信号源进行验证,通过ILA工具监测输出波形。该设计实现了双通道交替输出的SPI通信DAC驱动功能。
2025-09-03 08:20:21
340
原创 FPGA AD7606串行驱动与并行驱动
模块2用来控制复位、测量范围、通道转换,range为0时测量范围0~5v,1时测量范围0~10v,通道转换是指八个通道可分为两组,A组包含0~3通道,B组包含4~7通道,转换的意思就是在adc内部进行模拟量向数字量的转换,转换需要消耗一定的时间,而要指定那组通道转换则受convst信号影响,convst A信号拉高会让A组转换,convst B拉高会让B组转换,一般convst AB同时拉高。因此在使用ad7606测量截止频率以上的信号时,需要在前方加入仪表放大器来放大信号,否则信号会被ad7606滤除。
2025-09-02 18:02:33
1980
4
原创 FPGA CIC抽取滤波器设计
还要注意一点,由于一般需要对直流增益进行缩放补偿,因此可将MR设为2的n倍,这样只需要对cic输出进行n个算数右移即可,即$signed(cic out) >>> n。因此相比于IIR、FIR数字滤波器,cic的直流增益随着M、R、N的增加指数级上升,因此在数字电路设计位宽时cic输出位宽可根据直流增益的位宽与输入位宽来确定。R为抽取率,M为延迟因子,fs为输入采样率,fs/R为输出采样率,当阶数为N时,只需要将N个积分器串联在一起,N个梳状器串联在一起即可。cic抽取滤波器的z域表达式如下。
2025-08-31 08:06:34
609
原创 FPGA增量式方差与均值计算
本文提出了一种基于Welford递推算法的实时均值与方差计算方法,解决了传统方法需要重复遍历历史数据导致的效率问题。通过Verilog硬件实现,该设计采用状态机控制流水线操作,包含数据扩展、加减乘除等运算模块,支持增量式更新。测试结果表明,在200MHz时钟下,该电路能正确收敛均匀分布随机数的均值(127)和方差(5400)。优化建议包括增加状态机节拍以提升时序性能。
2025-08-30 09:37:56
335
原创 FPGA位宽调整模块
参数START_BIT 代表从右向左数第几位作为基准(相当于从该位进行截断),并以此来输出BW_OUT位的输出,如果START_BIT + BW_OUT > BW_IN则自动进行扩展,如果小于则自动进行从右到左的截断。模块比较好办,其对外有3个传递参数分别代表输入位宽(bit width)BW_IN,输出位宽BW_OUT和符号位选择SIGNED,当SIGNED为1时就意味着进行位宽扩展的数据是有符号数,反之按照无符号规则进行扩展。
2025-08-28 17:38:37
325
原创 FPGA基于状态机的无符号除法器
该Verilog代码实现了一个参数化除法器模块,支持可配置的除数和被除数位宽。采用有限状态机控制除法过程,包含空闲、比较、减法、移位和完成五个状态。通过移位-减法算法实现除法运算,最终输出商和余数。测试平台验证了6位被除数与4位除数的除法运算,如31/4=7余3。该设计具有复位功能,并采用同步时序逻辑确保稳定运行。
2025-08-28 17:13:22
125
原创 利用simlink转化HDL-verilog
例如设计一个正弦信号发生器,里面用到了add、memory、relation operator、switch、constant、cos模块,cos模块选择了cordic算法,使用cordic那么输入值的范围为【-2pi,2pi】,超过则错误,memory起到累加的效果,in1是每次累加的值,当累加值大于2pi则将其变为in1-2pi,这是因为cosx=cos(x-2pi)设置定点小数这里选择了有符号32位,20位小数,表示为sfix32_en20,例如对模块2*pi设置,如下。转化成功后会输出如下。
2023-12-07 16:01:55
1621
1
原创 FPGA运算
算数运算中,输入输出的负数全用补码来表示,例如用三位小数位来表示的定点小数a=-1.625和b=-1.375。那么原码分别为a=6b‘101101, b=6'b101011, 补码分别是a=6’b110011,b=6‘b110101;如果想在fpga中实现a*b,则需要将a和b用补码来定义,a*b得到11’b00010001111(正数补码就是原码);根据定点小数运算规则,现在是6个小数位,1个符号位和4个整数位,所以a*b=10.001111=2.234375。
2023-11-10 15:41:52
697
原创 verilog定点小数乘除
除法类似,取a=36.8=16h'24cc,八位整数八位小数,b=14.3=8h'e4,四位整数四位小数,a/b实际值为2.573426573;verilog计算为8‘h29,四位整数四位小数,二进制加小数点为10.1001转10进制为2.5625。八位整数八位小数,c=a*b,c=16‘h845c,化作二进制为1000010001011100,加上小数点为10000100.01011100=132.359375。a=12.35,b=10.8,取四位整数,四位小数,a=8'hc5,b=8'hac;
2023-10-26 09:27:04
1809
原创 duffing方程matlab绘制
此时可通过更改f的值从0到1来改变duffing混沌系统状态,从固定点状态,小周期状态,混沌状态到大周期状态。k,a,c,f为自定义系数,将初值设为。上图横坐标x,纵坐标x的一阶导数。上图横坐标为时间t,纵坐标x。
2023-09-08 08:22:54
2557
2
原创 动态测试数据处理
动态测试数据:1、确定性数据:能够用明确的数学表达式进行描述的数据称为确定性数据。Ⅰ、周期数据Ⅱ、非周期数据2、随机性数据:无法用明确的数学表达式表述;若在一个动态实验中无法在合理的误差范围内对其进行预测未来时刻的测试结果数据那么称该动态实验数据为随机性数据。
2023-06-08 10:14:32
1173
原创 回归分析处理
对于某数据量有呈线性关系的输出量,且,现有对这些数据量的采集序列,这些采集量会存在随机误差,线性回归的目的便是找到保证使误差最小的情况下的回归系数。即通过下列方程组求可利用最小二乘法,先获取正规方程:系数矩阵为误差向量为回归系数向量为输出向量为正规方程为,由于,故。由此得到回归系数。对于不等精度测量,只需在误差向量前乘上权值向量即可。
2023-06-07 17:24:33
751
原创 测量不确定度
相同点:都是评价测量结果质量高低的重要指标,都可以作为测量结果的精度评定参数。不同点:测量误差是结果与真值之差,以真值为约定中心;而不确定度则是以估计值为约定中心,因此误差是一个理想的概念,一般不能准确知道,而测量不确定度是反映人们对测量认识不足的程度是可以定量评定的。
2023-06-02 17:58:29
2719
原创 Qt自定义控件仪表盘
将仪表控件扔进子线程运行,先new一个仪表,再定义它的几何大小,然后调用其startPainting函数开始绘制。仪表的接口分别为 开始绘图 设置当前值 设置区间个数 设置轮廓大小 设置分隔符大小 设置起始值 设置数字大小 设置文本大小 设置当前值大小 设置文本。
2023-05-10 11:22:43
875
2
原创 向量和矩阵的backward
并且y的backward中的参数要和y的维数相同,并且某个变量的梯度是要和自身维数相同的。和backward中的参数张量[[1,2],[2,3]]相乘得到的。乘以backward中的参数张量[[4],[5]]得此结果。只需把m*n维的矩阵x看成m个向量分别作为输入即可。矩阵A和矩阵B相乘后对A求偏导得B,对B求偏导得。backward一下。
2023-04-16 15:01:45
261
原创 nn.Linear
view(2,3*3),然后输入进linear中,可以看到输出out维数为(2,9),同时利用parameters查看w和b,最后通过ans = torch.matmul(x1.view(9), w[0]) + b[0]可以发现与out[0][0]相等,从而验证了前面的结论。在神经网络全连接层中常常用到类对象Linear,共有两个参数,分别是输入的特征数量和输出的特征数量,该类会根据输入和输出的维数来创建w矩阵和b,假设输入为(1,n)维x,输出为。
2023-04-15 16:33:10
809
原创 pytorch简单线性回归
对于带有扰动的y(x) = y + e ,寻找一条直线能尽可能的反应y,则令y = w*x+b,损失函数。loss = 实际值和预测值的均方根误差。在训练中利用梯度下降法使loss不断减小,便可以最终找到。
2023-04-13 19:50:15
150
原创 awk练习
首先for循环把除空格外的所有字符串取出,然后定义j,当循环遍历到ens33后就将j=1,当j=1并且匹配到inet字符串后便输出下一个字符串,然后去除该字符串的端口号即可。注意需要对()进行转义。
2023-04-02 11:24:02
206
原创 ANSYS MESH
对于固体在有圆弧及孔洞的地方应该加密网格,因为这些地方存在应力集中;对于流体要在壁面涉及传热、结构突变时进行局部加密或建立膨胀层。应力集中:物体形状发生急剧变化的地方,如孔洞、沟槽处,容易产生应力局部增高的现象。
2023-03-28 21:18:41
16708
4
原创 linux fork创建子进程
程序执行遇到fork函数会创建子进程,若创建成功,则在父进程中的fork函数将会返回子进程的进程号,而子进程的fork函数会返回0;否则在父进程中fork返回-1。创建好子进程,两个进程会开始运行相同的程序(从fork那里开始运行)
2023-03-25 09:57:47
442
原创 linux fcntl stat
其中文件属性存储与一个叫位图的数据结构当中,若想要往已有的属性flag里面添加新属性,只需对flag执行按位或即可,如添加属性O_CREAT,则。若flag=-1则获取文件属性失败,否则会得到文件属性flag。若flag为-1则设置文件属性失败,否则成功。该函数用来获取文件属性,或更改文件属性。
2023-03-19 09:29:50
193
原创 Linux open read write函数
每次调用read或write会直接进入内核态(内核态有个4096大小的缓冲区)并在内核缓冲区中操作,当缓冲区被填满或为空时会自动向磁盘写入或读出。这些函数具有不可移植性,只能在unix下运行,同时相比于c标准函数库中的fopen、fread、fwrite。这些函数都属于系统调用函数,是用户与内核操作的接口,需要包含头文件。没有属于用户态的缓冲区(缓冲区大小为4096)
2023-03-18 17:07:29
218
原创 makefile动态库生成可执行文件练习
建立inc目录存放.h文件,src目录存放.c文件,obj目录存放.o文件,dynamicMakefile目录存放.out文件和.so文件以及makefile要求有以下三个.c文件(sum.c,sub.c,mul.c)生成动态库并由mathTest.c调用。
2023-03-18 13:52:07
305
原创 makefile
makefile文件可以自动根据用户给定指令进行源文件的编译链接工作。makefile文件有以下要点:1、规则2、函数3、变量。
2023-03-17 18:16:03
135
原创 vim基础操作
1、dd:删除一整行2、ndd:删除光标下n行3、x:删除光标处字符4、dw:删除光标处单词5、D:删除光标所在行,从光标处至行尾信息6、d$:删除光标所在行,从光标处至行尾信息7、d0:删除光标所在行,从行首至光标处信息。
2023-03-15 10:52:46
244
原创 QML练习---1,切换多层窗口
在主窗口中定义一个按键,点击后会弹出子窗口A,子窗口A中有退出按键,点击生成模态消息框B,里面有两个按键分别是确定退出和取消退出。
2023-03-12 08:54:49
1237
原创 FLUENT MESHING——01
可选择导入单一文件,文件后缀有pmdb与scdoc等,在曲面细分(Tessellation)有Faceting方法,该方法速度快精度低,导入后会出现在Geometry Objects下,与Surface Mesh方法,该方法相对来说精度更高,导入后出现在Mesh Objects下。在Size Functions中分别为对曲率和狭缝划分函数,对曲率是根据角度来划分,主要针对曲面和边界面处的网格,效果就像在边界面处的网格就会非常密集,角度越小精度越高,而狭缝则会根据per gap来划分狭缝中的网格层数,越大精度
2023-03-08 15:22:35
4715
1
原创 QML与C++交互
首先定义类对象时需要继承QObject,同时要包含头文件#include ;对于成员变量,可使用 alt+回车 自动生成两个成员函数,分别是返回变量值与设置变量值,并需要添加关于该变量改变所触发的信号函数如对私有成员变量int m_num,利用宏定义函数其中num为在QML中的变量名,m_num便是该类变量名,numChanged为信号函数名信号函数的作用是为了实现在qml中的动态绑定同时,若想在qml中使用c++类对象成员函数,可在函数前声明宏Q_INVOKEABLE,如。
2023-03-04 16:17:27
395
一个简单的正交锁相系统的fpga设计,并进行对实物效果的展示 相关讲解视频:【FPGA正交锁相求幅值 仿真和上板测试】https://www.bilibili.com/video/BV1MTYUzUE
2025-11-01
FPGA逆矩阵运算模块,包含加法树,向量叉积运算,下三角求逆运算
2025-10-16
流体力学中管道出口压力的计算
2024-03-18
对于自治系统的微分方程组的线性变分方程
2023-09-12
遗传算法的交叉和变异操作
2023-07-20
c++网络编程使用libevent
2023-06-02
vim插件安装coc问题
2023-03-07
ubuntu设置中文输入法
2022-09-01
matlab prctile
2022-07-09
anaconda相关问题
2022-06-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅