草庐IT

FOC:【2】SVPWM(七段式)的Verilog实现与仿真

碎碎念:经过近一周的调试与查错(不好意思我实在太菜了),才终于从MATLAB代码的基础上,实现了Verilog对SVPWM算法的实现,同时给出仿真的结果。2022年10月20日更新:实在抱歉,由于之前在算法中没有考虑到输入电压值量化以及死区时间的问题,我也是在电路测试过程中才发现这个错误,今天进行了更正与修改。电压值量化的具体原理可以参考我的上一篇文章~目录1主要思路2模块代码2.1my_SVPWM模块2.2Jud_sec模块2.3 Cal_time模块2.4 Switch_time模块2.5Tri_gener模块2.6测试模块3仿真结果3.1MATLAB计算结果3.2Vivado2018.3

DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试

目录DS18B20数字温度计(一)电气特性,寄生供电模式和远距离接线DS18B20数字温度计(二)测温,ROM和CRC算法DS18B20数字温度计(三)1-WIRE总线ROM搜索算法和实际测试DS18B20搜索算法以下说明当总线上存在多个DS18B20芯片时,识别各个DS18B20的编号并进行通信的算法.其实这是1-Wire总线的搜索算法,当1-Wire总线上挂接了多个设备时,总线控制端需要通过ROMSearch命令来判断总线上存在的设备以及获取他们的8字节唯一ROM.1-WIRESEARCHALGORITHM算法规则和实现机制ROM搜索算法的核心规则,是在搜索中重复进行一个简单的三步操作步骤

DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试

目录DS18B20数字温度计(一)电气特性,寄生供电模式和远距离接线DS18B20数字温度计(二)测温,ROM和CRC算法DS18B20数字温度计(三)1-WIRE总线ROM搜索算法和实际测试DS18B20搜索算法以下说明当总线上存在多个DS18B20芯片时,识别各个DS18B20的编号并进行通信的算法.其实这是1-Wire总线的搜索算法,当1-Wire总线上挂接了多个设备时,总线控制端需要通过ROMSearch命令来判断总线上存在的设备以及获取他们的8字节唯一ROM.1-WIRESEARCHALGORITHM算法规则和实现机制ROM搜索算法的核心规则,是在搜索中重复进行一个简单的三步操作步骤

golang常用库包:Go依赖注入(DI)工具-wire使用

google出品的依赖注入库wire:https://github.com/google/wire什么是依赖注入依赖注入,英文全名是dependencyinjection,简写为DI。百科解释:依赖注入是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。在用编程语言编写程序时,比如用java语言,会编写很多类,这些类之间相互调用,完成一个具体的功能。例如,从MySQL获取数据,那么需要一个MySQL操作类。第一次编写mysql操作类:classMySQL{}要从mysql获取数据,那么mysql数据库的用户名,密码,地址等等这些配置信息,也是需要的

golang常用库包:Go依赖注入(DI)工具-wire使用

google出品的依赖注入库wire:https://github.com/google/wire什么是依赖注入依赖注入,英文全名是dependencyinjection,简写为DI。百科解释:依赖注入是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。在用编程语言编写程序时,比如用java语言,会编写很多类,这些类之间相互调用,完成一个具体的功能。例如,从MySQL获取数据,那么需要一个MySQL操作类。第一次编写mysql操作类:classMySQL{}要从mysql获取数据,那么mysql数据库的用户名,密码,地址等等这些配置信息,也是需要的

ZYNQ基于DMA的串口传图

小梅哥的这个ZYNQ开发板上的DDR3位于PS侧,PL侧想要使用DDR3作为缓存的话,得通过HP接口来与PS侧的DDR3控制进行通信。本次实验在小梅哥OV5640工程的基础上,通过修改VDMA的S2MM端的模块而来的。将VMDA的帧缓存区设为1,关闭帧同步的功能后,其实和DMA差不多。一、需要自定义的ip核这里列出的为自己写的IP核。小梅哥的工程里还用到了其它的自定义的IP核,这里就不列出了。1、串口接收图像数据模块该模块调用了之前写的串口8位接收模块,详情可点击查看。此外,本模块还调用16位宽、深度为1024的带数据计数的普通FIFO核该模块主要的思想就是将接收到的两个8位的数据拼接位1个1

FPGA基于ACM2108的DDS设计

这次设计一个DDS信号发生器。该设计的特点有:双通道的DA输出,可以调节幅度(通过旋转板子上的电位器)、频率、相位、和波形(正弦波、方波、三角波)。拥有相位重置的功能,能够同时重置两个输出波形的相位。本次采用的是小梅哥的ACM2108模块。该模块有两个通道的ADC和两个通道的DAC。本次设计的前置是DDS基本模块,具体可点击链接查看。DDS基本模块在加入了装有正弦波数据的ROM的基础上,再添加三角波和方波的数据的ROM,从而能够切换输出的波形。通过调用VIO这个IP核,设置输出信号的频率、相位和波形。然后通过LIA这个IP核,去观察数据波形。一、模块代码`timescale1ns/1ps///

ZYNQ基于DMA的串口传图

小梅哥的这个ZYNQ开发板上的DDR3位于PS侧,PL侧想要使用DDR3作为缓存的话,得通过HP接口来与PS侧的DDR3控制进行通信。本次实验在小梅哥OV5640工程的基础上,通过修改VDMA的S2MM端的模块而来的。将VMDA的帧缓存区设为1,关闭帧同步的功能后,其实和DMA差不多。一、需要自定义的ip核这里列出的为自己写的IP核。小梅哥的工程里还用到了其它的自定义的IP核,这里就不列出了。1、串口接收图像数据模块该模块调用了之前写的串口8位接收模块,详情可点击查看。此外,本模块还调用16位宽、深度为1024的带数据计数的普通FIFO核该模块主要的思想就是将接收到的两个8位的数据拼接位1个1

FPGA基于ACM2108的DDS设计

这次设计一个DDS信号发生器。该设计的特点有:双通道的DA输出,可以调节幅度(通过旋转板子上的电位器)、频率、相位、和波形(正弦波、方波、三角波)。拥有相位重置的功能,能够同时重置两个输出波形的相位。本次采用的是小梅哥的ACM2108模块。该模块有两个通道的ADC和两个通道的DAC。本次设计的前置是DDS基本模块,具体可点击链接查看。DDS基本模块在加入了装有正弦波数据的ROM的基础上,再添加三角波和方波的数据的ROM,从而能够切换输出的波形。通过调用VIO这个IP核,设置输出信号的频率、相位和波形。然后通过LIA这个IP核,去观察数据波形。一、模块代码`timescale1ns/1ps///