- 博客(15)
- 收藏
- 关注
原创 基于STM32的经过封装的DSP库
设计方法”选择IIR,此处选择巴特沃斯作为演示案例,当然也可以选切比雪夫或者其它类型的滤波器,但是必须确保点击“设计滤波器”之后,“当前滤波器信息”的“结构”一项是“直接II型,二阶节”。本DSP库(下称“本库”)目的在于提供基于STM32各个芯片版本的统一的DSP处理框架,提供了基本的FIR函数运算、基于MATLAB生成系数的IIR实时滤波和FFT及其相关数据处理算法(如寻峰算法)的封装,可应用于快速验证和竞赛开发。例如,如果需要用128长度的卷积核卷积4096长度的数据,那么。
2024-04-21 22:02:50
1893
1
原创 RTL可拓展设计:VerilogHDL实现数据深度与位宽可配置的DDS发生器
一般IDE都会有DDS的软IP(紫光同创除外,此处着重提醒),用IDE自带的那个软IP肯定比自己写的好用,这个DDS其实演示意义大于实际意义。这两个参数实际上与COS函数发生器的参数一致,用于配置地址宽度与数据深度。就是cos发生器相位在一个时钟周期递增的幅度,相位字。就是每一个时钟周期cos发生器相位的偏移幅度。需要注意的是,DDS发生器依赖于。,使用了其ROM资源优化版本。
2024-02-19 15:42:32
498
1
原创 RTL可拓展设计:VerilogHDL实现数据深度与位宽可配置的余弦函数发生器
虽然两种优化方向的余弦函数发生器的模块名稍有区别,但是参数配置、信号和信号的时序都是一样的。然后看边界情况,如果下溢出(寻址到小于0的空间)就+1,如果上溢出(寻址到大于。相等,因为这样在经验上可以获得精度和空间利用的最高性价比。在这个实现中,利用了余弦函数单周期内的特性求解,节省了。,这四个区间其实都可以用同一段区间的数据生成。的空间)就-1,就可以得到代码中的转换式了。本设计主要利用了查表的原理。中的数据,然后直接输出。需要注意的是,这里建议。以下为ROM优化版本(
2024-02-18 11:50:14
963
1
原创 RTL可拓展设计:VerilogHDL实现2^N深度卷积器
就是用来获取正常的输出数据的。数据先进入输入流水线,然后每一个时钟周期都会通过乘法器组与对应的系数相乘(系数未在图中画出),然后结果进入加法器树进行相加运算,最后得到的结果从。就是卷积器的输出数据,因为卷积结构是一定历史时期数据的与卷积核做向量数乘的结果,而在这个全流水线结构中每从。指示的是用于运算的输入数据的位宽,但是用于输入卷积器参数的APB总线的数据位宽最大只能是32,因此将。比如,在一个8深度卷积器的示例中,共有0-2层(共3层)加法器,,则处于第1层,上一层的地址即为第2层的地址,也就是3到6。
2024-02-13 11:37:32
1186
1
原创 RTL可拓展设计:VerilogHDL实现2^N位宽无符号整数乘法器
因为同位宽的乘法器输出与输入的延迟时钟周期数相同,因此也不用考虑时钟周期对齐的问题。但是还是要考虑一下加法器的实现的,4个数直接相加会极大拉慢时钟,对于最终的时序约束不利。因此这里采用先在一个时钟内分别相加其中两个乘法器,下一个时钟周期再完成上一个时钟周期两个结果的相加并输出结果的方式。但是,很多情况下这些乘法器的数量并不足以应对大规模卷积的场景,很多场景也并不需要有如此高速的乘法器。需要注意的是,复位信号是同步触发的,这有利于系统时序,降低毛刺出现的概率。这个实现也没什么好讲的,纯纯的穷举。
2024-02-10 19:00:40
1445
1
原创 给电脑装上优雅的开源STM32开发环境
如果要下载,可以直接在vscode打开一个终端,然后在终端命令行里面输入这个文件的文件名即可(令人感觉很有格调)。这样一来,就破坏了单片机原来的运行流,不利于一些系统性问题的发现。添加之前先看看要添加的路径是不是真的存在,有可能OpenOCD在解压的时候会多出来一层文件夹,需要注意一下。这个的话下.exe和.zip的区别不大,都能跑,将.zip解压到哪,哪里就是安装路径。如果没编译成功的话,GCC会有红色的ERROR,是不会出现这个汇总的。做嵌入式的,还是要保留一部分单片机原有的运行情况的。
2023-08-09 21:18:43
399
2
原创 基于SPI的FPGA-MCU通用通信界面设计与技术详解
FPGA开发板:米联客MLK_S201_AP106开发板(安路官方PH1A90验证板改版),主芯片PH1A90SBG484-2,等效LUT4资源约110K,带有一个FMC-LPC连接器,适合用于一般高速采集应用。SPI协议:CPOL=0,CPHA=0,8bit通信,MSB First。建议使用带有外设DMA的、至少有一主一从两个SPI的MCU平台。
2023-07-26 23:18:37
2036
2
原创 DDS详解——以安路PH1A90实现为例
MCU在发起一次通信时,先传给FPGA一个0x5A的开始字节,然后是要写入的寄存器的一个8位地址,然后是要写入的4字节数据,低位字节先传输。最重要的是,板上有单电源转双电源的电路,FPGA只需要给子板5V供电即可,十分人性化,极大满足了当代大学生的电赛需求。相位如果增加了2PI,就是过了一个周期,而增量的大小,就对应了周期的大小,也就对应了频率的大小。但是我不想用这么low的办法,我想用的是DDR的512MByte深度,有点好高骛远,因此到现在为止暂时还没实现,还请等待一下吧,哈哈(悲伤的笑脸)。
2023-07-14 20:58:41
1322
3
原创 单片机学习路线分享
一般来说,正点原子和野火的教程是最全最细致的,板子的做工也是很好的(我没有收广告费,因为他们两家真的强)。在现代的系统设计中,“一板斧”是绝对不够用的,一定要多备几把板斧,各种类型都要有:能砍树的、能开瓶盖的、能切菜的、能用来吃饭的……仔细观察,我的学习路线表上都是循序渐进的:先是闪烁灯,再是PWM呼吸灯,然后是DAC呼吸灯;总之,学习单片机可以让你了解和掌握嵌入式系统的开发和应用,为你未来的工程和技术发展提供广阔的空间和机会。只有先抄到了一份代码,把灯点起来了,才有继续学下去的信心。
2023-07-01 20:48:36
422
原创 集成式单片机外部模块驱动编写详解——AD5689为例
纳米DAC的AD5689/AD5687成员+™ 该系列是低功耗、双、16/12位、缓冲电压输出数模转换器(DAC)。这些器件包括一个增益选择引脚,提供2.5 V(增益=1)或5 V(增益=2)的满刻度输出。AD5689/AD5687在单个2.7V至5.5V电源范围内工作,设计保证单调,并表现出小于0.1%的FSR增益误差和1.5mV的偏移误差性能。这两种设备都有3毫米×3毫米LFCSP和TSSOP封装。
2023-06-26 10:18:58
2256
3
原创 对象式单片机外部模块驱动编写详解——DAC8552为例
DAC8552是由TI推出的一款16位DAC模块,支持不同下拉等级的掉电模式(不知道有啥用),使用SPI兼容的协议通信,又是阴间24位SPI,现在我们来给它写个驱动吧。
2023-06-21 09:35:05
2163
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人