- 博客(97)
- 收藏
- 关注
原创 FPGA应用学习笔记--时钟域的控制 亚稳态的解决
数据要保证建立时间和保持时间才有效,RTL级无法分析亚稳态的,在门级都很难,提高设计本身的设计!用fifo存储数据,然后根据时钟2调整推出数据,要注意防止溢出,要有效握手控制,满标志通知发送端已经满了,空标志通知接收端已经没有数据可以抓取了,在处理时钟域的信号传递,一般会有故障具有随机性,不同工艺出现问题的可能性不同,对于亚稳态的检测很少,故障很难被发现,要设计中要注意。时钟域就是同一个时钟的区域,体现在laways语句边缘触发语句中,设计规模增大就会导致时钟不同步,有时差,就要设计多时钟域。
2023-08-09 11:52:50
1014
原创 OPENCV C++(八)HOG的实现
hog适合做行人的识别和车辆识别 对一定区域的形状描述方法可以表示较大的形状 把图像分成一个一个小的区域的直方图用cell做单位做直方图计算各个像素的梯度强度和方向用3*3的像素组成一个cell 3*3的cell组成一个block来归一化 提高亮度不变性常用SVM分类器一起使用 进行行人分类代码思路:将图像分成cell为单位 例如把图像分成9*9像素的cell为单位。用sobel计算梯度大小和方向。
2023-08-08 11:46:43
1224
原创 OPENCV C++(七)霍夫线检测+找出轮廓和外接矩形+改进旋转
/获取外接矩形然后得调整rot矩阵得参数,因为中心点有所偏移,需要平移操作//调整仿射变换矩阵参数【a,b,l/n b,c,m】此步在调节l,m值//Mat dst;即可完成没有缺损得旋转图像!
2023-08-07 11:01:09
1759
原创 FPGA应用学习笔记----采用双沿触发器降低时钟频率减小功耗
功耗和信号触发的频率成正比的,最高扇出的网线是系统时钟,若采用双边缘触发器,则在提供的时钟两个沿都可以传播数据,可以用更低的时钟频率,要特别注意这个双沿触发器是否有效,需要设计好分析,若无效,则帮倒忙。
2023-08-07 10:36:40
256
原创 DSP学习笔记
TI公司提供的c/c++编译器,可以将其变成dsp语言。char类型本来是8位,在dsp里面是16位,int也是16位,long才是32位,float也是32位,enum是16位,double32位,long double是32位,pointers也是16位。.usect 是名字,.def 定义标号,.data是下面这一段是常量,.text说明后面是执行代码。两部分 一个是MEMORY 一个是SECTIONS memory里面是页0 一个是页1 分配存储器。sections里面放存储器。
2023-08-07 10:30:00
591
原创 STM32CubeMx学习FreeRTOS的绝对延时和相对延时
绝对延时指的是 加上程序自己跑的时间 全部的一起500ms。在阻塞状态中 可以空闲出时间 来让低优先级的任务可以进行。这样的osDelay可以让在到这里的时候,延时500ms。也就是程序到这里才500ms 不记程序前面所用的时间。设置按键任务 用来删除 创建 暂停 恢复任务。前面的参数是可以理解成程序开始的标志的地址。有两种阻塞延时 一个是相对延时 也就是。这样每次task2都500ms进入一次。task1就700ms来一次,是这样的。
2023-08-06 18:43:28
1553
原创 OPENCV C++(六)canny边缘检测+仿射变换+透射变换
图像的缩放输入图像 输出图像 大小变换canny边缘算子的使用必须先转化为灰度图,作为输入 超过100是真的边缘 低于40是确定不是边缘 在中间若连接边缘 则为边缘普通旋转缩放变换(仿射变换)
2023-08-06 12:24:53
1280
原创 FPGA应用学习笔记----减小供电电压降低功耗
减低供电电压不是一个理想的选择,但是影响还是蛮大的,因为有电阻的功耗在上面,呈平方倍的关系。但是你降低了电压会导致功耗降低,需要考虑最坏情况下最大时序上的供电线上的最低可能电压是否被满足,否则影响整体性能的启动。
2023-08-06 11:50:32
180
原创 DSP学习笔记
一个汇编语句包含4个固定顺序的区域:标号(必须从第一列开始 不能空格,后面可以有:也可以没有) 助记符 操作数 注释(用分号或者星号来注释)伪指令用.开头,注释可以用第一列开始写,助记符寄存器名称不分大小写,也可以设置成区分。loop:ADD *AR1+,A 累加x放在A里面 BANZ loop,*AR2-如果辅助寄存器不为0,AR2,跳转到loop也就是上一条语句,STL A,@y将结果放在变量y里面。小数乘法与符号位,要进行符号位扩展,只要你要设置为FRCT为1就行。LD #0,A清0累加器。
2023-08-06 11:45:26
605
原创 STM32CubeMx之FreeRTOS的中断优先级+配置
这个函数可以让在延时的时候,放开高优先的任务 执行低优先的任务 达到效果。但是如果亮500ms的灯 任务优先级更高 还用HALdelay的话。如果他们的优先级是同等的,那么任务都可以实现,时间片会自动切换。例如我编写的是一个灯亮500ms 一个等200ms的亮灭。就会让任务二饿死,从而就会只看到任务一的内容。用osDelay函数。
2023-08-05 19:06:03
1006
原创 OPENCV C++(五)滤波函数+sobel边缘检测+人脸磨皮mask
将原图转化为HSV类型,找出人脸并并给maskmat(这里是一个区域,人脸所包含是roi)利用高斯滤波对人脸进行平滑处理,学习mask的应用。高斯滤波(最后一个是方差 越大越模糊)将高斯滤波后的人脸区域替换到原图上。sobel的边缘检测函数。
2023-08-05 12:15:42
2043
原创 FPGA应用学习笔记----输入控制减小功耗
在0到VDD(1)转换过程中,NMOS和PMOS的状态转换不是瞬间的。一般来说别悬空引脚,不然无法确定外部如何驱动的,是一种不可预测的影响。
2023-08-05 12:01:59
106
原创 DSP学习笔记
加载的时候,可以乘累加。例如MVMM AR0,AR1.READA是把程序空间放在数据空间,WRITA 是相反的。T是T寄存器里面的,MPYR中R的意思是round四舍五入。MPYA中A的意思是把累加器A中的高17位和T中相乘放在dst,SQUR平方函数。*AR4+0%的意思是把AR4的内容加上AR0中的内容,且循环寻址。ABS是取绝对值,CMPL是取反,EXP是求编码格式当中的指数放在T寄存器,FIRS是用来滤波的。特殊的一些SXM是符号位扩展,如果为1,则需要符号位,OVB是如果有进到保护位就会为1。
2023-08-05 11:49:31
1471
原创 DSP学习笔记
不然就是直接寻址了,直接寻址需要设置DP的值,LDM的移值的操作值不能大于127,会把高位强制置为0.)栈寻址(一个专门的16位寄存器SP对栈进行访问,栈顶在低地址方向,从高到低放置数据,一般不用,了解内容)绝对寻址不可以一个字长,因为16位数都放在里面了,还需要功能呢。单操作数间接寻址:opcode为操作数,i选择间接寻址模式,mod是选择功能提供16种模式(*ARx这种的 *ARx+/-/-0B/-0/-%/-0%/+IK),ARF选择辅助寄存器是哪一个,*(ik)也可以是间接寻址。
2023-08-03 12:32:06
816
原创 OPENCV C++(二)直方图+分离颜色通道+画圆画线画矩形
分离RGB彩图颜色通道 也就是把每种分量的亮度图提出来这样R,G,B每个图就是这个图的颜色分量图了图片的克隆,深拷贝!申明一个点操作这样就可以得到一个点,你可以把它当作圆心来进行画圆操作图,点,半径,颜色,-1代表填充1代表不填充,8和0都是默认参数也可以申明两个点,进行画线操作。这里也可以直接在函数里面写Point(20,20)也代表了一个点,但就不能在其他地方用这个了。申明一个矩形的操作,也可以叫矩形的ROI下面是直方图统计图的画法。
2023-08-02 13:10:30
1124
原创 FPGA资源共享
资源共享是高层次结构资源共享,只要有资源在其他模块使用,就可以使用资源共享。因为上方比较器是255 下方6ff都是1111 1111这种才会跳变的。一个计数器被用作标记操作,又被用作PWM的时候。可以优化面积,一般先考虑资源共享。
2023-08-02 12:28:50
91
原创 DSP芯片
DSP指令一般是前面的来操作,后面的是目标。STL A,@y(将累加器A的低16位存到y里面去,@代表直接寻址的方式).一般来说这样写不一定奏效,要加RSBX CPL 和LD #y,DP这样自动将y的高九位地址装入DP,再实行直接寻址。DSP中断系统有软中断和硬中断,软中断一般由程序指令来实现,硬中断一般是芯片内外的硬中断。也可分成可屏蔽中断和不可屏蔽中断,可屏蔽中断一般是硬件的中断(外部中断,串口中断,定时器 DMA中断),不可屏蔽中断一般是两个硬中断(RS(重启) NMI*)还有所有软中断。
2023-08-01 17:48:30
380
原创 OPENCV C++(一) 二进制和灰度原理 处理每个像素点值的方法
这是一个像素点的值,也就是如果为RGB的话,那么也是三个通道的,只有灰度才能直接用,因为灰度就一个值。如果是RGB就需要如下使用各个通道0 1 2。如下是手动制作二进制图,就是遍历每个像素,判断阈值进行0和255的赋值罢了。读取相片 一般来说加个保护程序 不至于出error和卡死。其中有个操作每点操作像数值的操作 需要学习。创造一个Mat形的变量(手动的灰度制作)
2023-08-01 17:39:33
904
原创 FPGA应用学习笔记
常见方法:迭代 也就是第一章的迭代 1简单环路2复杂的逻辑复用。可以利用单个乘法器和累加器就可以简化(利用状态机控制逻辑)当共享逻辑比控制逻辑更大时,可以利用状态机实现逻辑控制。例如这个FIR滤波器 在卷积的过程中多次使用了乘法器。速度优先:拆开环路 面积优先:折叠流水线。复用逻辑资源(以流量为代价)乘法器 化成移位累加。
2023-08-01 17:07:02
84
原创 STM32CubeMx DAC DMA输出+显示正弦波+ADC采集+SeriaPlot图形化串口使用(充当示波器看波形)
原理大概例如有很多开关 控制一群电阻 我们操控开关得到相应的电压值。DMA adc dac的函数 和普通的DAC开始函数。电压转换 直接输入浮点0-3.3V即可。
2023-08-01 16:40:34
1435
原创 STM32CubeMX 串口收发+不定长收数据+pirntfl使用
这是重定向printfl 就可以轻松玩printfl。先是接受不定长数据方法(用DMA节省CPU空间)定时器捕获中断回调 和普通定时器中断。这是最普通给的接受中断回调函数。先理解再代码 最后代码直接CV。放在USART.H里面的。
2023-07-31 20:31:35
260
原创 AD使用时的一些注意事项
线宽一般改为16mil 最大100mil 一般信号线就用16mil vcc用60mil左右最好 电机之类也用40 50 mil都可以。一般来说画图标准一点为 信号层 上层和下层 VCC层 GND层 添加VCC和GND层在层叠管理器里面添加。安装元件库的时候需要把元件库放在AD文件位置中的LIBI里面。然后在设计里面点击板子形状 选按照选择对象定义就可以裁剪了。加板框在keep out层里面添加 普通线。元器件如果重叠的话 要在规则里面的。修改原理图里面的引脚的名字。
2023-07-30 21:27:50
843
原创 DSP芯片
OVM是溢出模式的选择,C16是选择是否分成两个16位,高16位加,低16位加,指令为DADD *AR3+,A,B(AR3的高16加A的高16存入B中 AR3的低16加A的低16存入B中) C位是进位用的。FIRS *AR2,*AR3,pmad(操作三操作数,前两个来自数据空间,最后一个来自程序空间,前两个在ALU里面进行运算,然后一起在MAC里面运算),实现了MAC和ALU并行工作实现FIR滤波操作.CB读x1,DB读x2,PB读h1,加法,乘法,累加,地址都加一,重复次数RC自减一。
2023-07-30 13:48:34
486
原创 FPGA应用----流量 时滞 时序
改进方法4:寄存器平衡,A=A1 B=B1 C=C1 D=A+B+C 改进为A=A1+B1 C=C1 D=A+B,关键路径简化。改进方法3:展平逻辑结构,和并行结构类似,专门用于优先编码逻辑,例如if elseif改进成全是if的并行逻辑结构,展平了逻辑结构。改进方法1:增加寄存器层次 a*2+b*6 可以把乘法和加法分开 先乘赋给变量 再相加 可以改进。改进方法5:重新安排路径,把if else的顺序进行换一下。去除流水线寄存器改进时滞,但是增加了寄存器之间的组合延时。2触发器之间的传播延时。
2023-07-16 15:22:01
107
原创 opencv图像特征的初学记录
图像全局特征 有颜色特征 一般通过转化为hsv 统计hsv的直方图来进行比较连通域的形状特征 有 宽长比描述狭长程度 圆形度 矩形度 越接近1越像矩形和圆形 (自身面积比上外接圆或最小外接矩形)形状上下文特征 选取采样点 自画区域 统计直方图 进行比较局部特征 对于遮挡具有一定鲁棒性角落的像素具有独一无二的特征 区别分强 曲率局部极大值判断角点的原理:设置窗口 滑动窗口计算SSD(平方差总和),取上下左右 对角线 八个方向的SSD最小值,在角点的时候最小值也很大。
2023-07-15 14:37:47
87
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1