- 博客(51)
- 收藏
- 关注
原创 FPGA——WS2812B彩灯点亮
本篇博客是记录WS2812手册的学习,实现FPGA驱动WS2812B的器件去显示F P G A四个字母,每隔1秒变化一个字母,循环显示。由于此项目十分简单,因此就直接上代码了,代码中最主要的就是三个计数器的设计,分别是每个bit的计数器,每个led灯有24bit,一个是64个led灯。然后要显示的F P G A四个字母的RGB数据是直接存在了ROM的IP核里面,只需要通过计数器将对应的数据读出来就可以了。
2023-09-23 15:38:03
2262
3
原创 FPGA——UART串口通信
本篇博客的实验内容是实现uart串口通信发送数据和接收数据,并加入按键模块调整波特率,数码管模块显示波特率,实现不同波特率下的PC端与FPGA板子的数据回环,并加入FIFO IP核对数据进行缓存,当数据大于等于8个的时候,一次性发送8个数据出去。实验环境:quartus 18.1 modelsim Cyclone IV开发板因为该工程是分模块化的设计,因此如果只需要串口的发送和接收功能就只需要将这两个模块直接拿去用就可以了,大大方便了之后其他工程的设计。
2023-09-23 14:15:02
1041
原创 FPGA——verilog实现格雷码与二进制的转换
格雷码是一种循环二进制码或者叫作反射二进制码。跨时钟域会产生亚稳态问题(CDC问题):从时钟域A过来的信号难以满足时钟域B中触发器的建立时间和保持时间,输入与clk的变化不同步而导致了亚稳态。此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。而格雷码的每次变化位数只有一位,因此使用格雷码可以有效避免这种情况。所以格雷码常用于通信,FIFO 或者 RAM 地址寻址计数器中。
2023-07-24 16:25:42
1628
1
原创 FPGA——PLD的区别以及各自的特点
可编程逻辑器件(PLD-Programmable Logic Device):器件的功能不是固定不变的,而是可根据用户的需要进行改变 ,即由编程的方法来确定器件的逻辑功能。
2023-07-24 15:04:24
2045
原创 FPGA——pwm呼吸灯
本次实验主要是需要理解呼吸灯实现的原理,这里我们采用了三个计数寄存器,从us计到ms再到s,最后通过判断s计数器大于ms计数器的时间来决定led亮的时间,这样就可以实现led由暗到亮的效果。
2023-07-14 10:54:56
1141
原创 FPGA——按键控制led灯
本次实验除了使用了计数的寄存器,还引入了状态寄存器,使得逻辑结构更加清晰直观,但是本次实验中我们没有进行按键消抖,因此必须把按键按住不放才能实现led灯对应的状态。
2023-07-14 10:35:22
1524
原创 FPGA——点亮led灯
本次实验主要是学习verilog的基础语法,掌握计数器的编写以及时序逻辑的设计方法。另外在进行仿真的时候需要修改计数器的大小,因为我们仿真设计的是延时1000ns,如果不把计数器改小的话就只能看到最开始的0001的状态,就无法判断逻辑是否出错。
2023-07-14 10:13:16
2959
原创 3-8译码器设计与仿真
3-8译码器,就是把3种输入状态翻译成8种输出状态,译码器是将输入的具有特定含义的二进制代码翻译成输出信号的不同组合,实现电路控制功能的逻辑电路。译码器在数字系统中应用广泛,可用于代码的转换、终端数字的显示、数据的分配等等。3-8译码器的设计原理还是非常简单易懂的,就是通过3个输入来输出8个信号。主要还是理解verilog的语法,掌握组合逻辑的设计。
2023-07-13 15:59:16
1827
原创 基于卷积神经网络的狗猫数据集分类实验
1、解释什么是overfit(过拟合)简单理解就是训练样本得到的输出和期望输出过于一致,而测试样本输出与期望输出相差却很大。为了得到一致假设而使假设变得过度复杂称为过拟合。想像某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据(即再拿样本中的文档来给它,它绝对不会分错),但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据稍有不同的文档它全都认为不属于这个类别!2、什么是数据增强?
2023-07-02 18:33:07
731
原创 轮廓检测及功能
1. 实验内容本实验将学习轮廓检测及功能。2. 实验要点生成二进制图像来查找轮廓找到并画出轮廓轮廓特征边界矩形3. 实验环境numpymatplotlibcv2。
2023-06-07 15:29:05
563
原创 支持向量机
在本练习中,我们将使用支持向量机(SVM)来构建垃圾邮件分类器。在开始练习前,需要下载如下的文件进行数据上传data.tgz -包含本练习中所需要用的数据文件ex5data1.mat -数据集示例1ex5data2.mat -数据集示例2ex5data3.mat -数据集示例 3spamTrain.mat -垃圾邮件训练集spamTest.mat -垃圾邮件测试集emailSample1.txt -电子邮件示例1emailSample2.txt -电子邮件示例2。
2023-06-07 15:23:52
483
原创 多分类问题
在本练习中,我们将使用逻辑回归来识别手写数字(0到9)。我们将扩展在练习2中对逻辑回归的实现,并将其应用于一对多的分类问题。在开始练习前,需要下载如下的文件进行数据上传ex3data1.mat -手写数字训练集在整个练习中,涉及如下的必做作业实现逻辑回归向量化----(40分)训练一对多的多分类器----(40分)使用多分类器进行预测----(20分)
2023-06-07 14:36:27
1165
原创 HLS入门实践
软件工具:vs2010版本(别用2019,会出现出现找不到路径并且无法添加路径使用的问题)HLS就是从高层次描述,之后综合成可用的网表文件的技术。这里的“高”指采用C、C++等编写程序,而不是传统的HDL语言。然而,实际上Vivado套件中是预先采用Vivado HLS这个软件将C程序转换成为Verilog HDL或者VHDL代码,之后进行下一步操作的,并不是直接综合C代码。本次学习了HLS的基本原理,了解了HLS基本实践流程。通过软件语言封装IP然后调用来实现硬件描述,感觉非常神奇。
2023-05-30 15:27:18
404
原创 基于FPGA的超声波测距
本篇博客主要是实现使用 DE2-115 开发板驱动 超声波检测模块(HC_SR04 ),并将所测得数据显示到开发板上的数码管上。通过本次实验,了解了HC-SR04超声波测距模块,懂得了如何通过超声波进行测距的原理,同时将测距模块与之前学习的FPGA联系起来,对数码管这些模块也更加熟练,让我能够将FPGA与实际的项目联系起来,收获很大。
2023-05-28 17:52:06
862
原创 FPGA——基于VGA协议显示彩条、图片、字符
本篇博客主要是深入了解VGA协议,理解不同显示模式下的VGA控制时序参数(行频、场频、水平/垂直同步时钟周期、显示后沿/前沿等概念和计算方式)。并通过Verilog编程,实现以下VGA显示:1、屏幕上显示彩色条纹;2、显示自定义的汉字字符;3、输出一幅彩色图像。学习VGA显示协议,首先要明白他的原理,可以把显示屏看为N*M大小的一个坐标系,为每个坐标分配一个RGB三通道的值,也就是每个像素,行场信号扫描的速度很快,就能连成一副完整的图像。图片显示只需要将数据存进ROM里,需要时取出来就能显示了。
2023-04-25 19:48:03
1696
3
原创 基于Nios-II实现流水灯显示
本篇博客主要是学习 Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。实现在DE2-115开发板上分别用Verilog和Nios软件编程两种方式完成LED流水灯显示。1、懂得了Nios II 软核的搭建方法,掌握 了Nios II 软件的特性。
2023-04-14 14:04:05
415
原创 FPGA—基于Quartus软件设计全加器
本篇博客主要是基于Quartus软件件完成一个1位全加器的设计,分别采用:1)原理图输入 以及 2)Verilog编程 这两种设计方法。开发板基于Intel DE2-115。此次学习主要是FPGA的编程入门,学习了全加器的基本原理和理论。
2023-03-25 20:40:52
2230
原创 ROS的分布式通信
本篇博客主要是在两台电脑上演示ROS的分布式通信,记录其过程。第一次体验ROS的分布式通信,成功连接了同学的电脑实现小海龟的控制,了解了其中的基本原理。
2023-03-17 22:44:39
558
原创 ROS通信——话题、服务和动作模式编程
本篇博客主要是在Ubuntu上面完成话题、服务模式的ROS程序设计,以及练习ROS动作编程:客户端发送一个运动坐标,模拟机器人运动到目标位置的过程。包括服务端和客户端的代码实现,要求带有实时位置反馈。int64 aROS通信编程是比较重要的模块,尤其是动作编程能让我们了解机器学习的基础,通过这次学习最重要的是要理解ROS通信编程的基本步骤,本篇博客内容较多,步骤较长,我在进行编译的时候通常就因为一个字母打错了而编译出错,因此编程过程中要小心细致。按照步骤一步步操作。加强理解。
2023-03-17 21:23:37
425
原创 初识线性回归(Excel-Python实现)
本篇博客主要是用excel中数据分析功能做线性回归练习。分别选取20、200、2000(或20000)组数据,进行练习。记录回归方程式、相关系数R2;用jupyter编程(不借助第三方库),用最小二乘法,重做第1题;用jupyter编程,借助skleran,重做第1题。本次对线性回归的计算练习主要使用了三种方法,其中excel表的方法比较直观,但是使用使用jupyter进行编程的话对线性回归公式的理解更加深刻,适合初学者深入理解,而使用sklearn库的话使用内置的库函数则十分方便。
2023-03-17 14:22:46
393
原创 Windows下安装Anaconda3并使用Jupyter进行基础练习
本篇博客主要是在windows下的Anaconda环境下练习创建虚拟环境,在虚拟环境下安装 jupyter 和 numpy,并运行jupyter,完成numpy的不少于10道的基础练习,熟悉矩阵运算。学习python基础知识,用Jupyter完成numpy、pandas、matplotlib三个库的例题,了解“图灵测试”。
2023-03-10 18:37:33
630
原创 Ubuntu系统安装ROS并实现小海龟画圆
本篇博客主要是在Ubuntu系统中,安装ROS软件,并记录和分析所遇到的各式问题和解决措施。熟悉ROS基本命令,并运行小海龟demo例子,通过键盘控制小海龟运动。同时用话题查看器查看两个node之间的消息传递;用C++或python写一个程序,控制小海龟走一个圆形。ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
2023-03-07 17:05:14
2118
1
原创 通过CubeMX配置Stm32+AHT20模块通过Modbus协议读取温湿度
本篇博客用stm32最小核心板+AHT20模块,完成一modbus接口的温湿度Slave设备,能够让上位机PC通过modbus协议获取温湿度。主程序采用多任务框架,比如RT-thread Nano。
2022-12-26 16:52:11
333
原创 使用c语言完成modbus协议,从云端服务器读取温湿度信息
在消化学习 server.c和client.c 套接字代码、python-modbus-over-tcp.py 代码基础上,试着用C编程完成modbus协议,从云端服务器读取温湿度数据。Modbus协议是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表的。Modbus协议是应用层协议,已经成为工业领域通信协议的业界标准,是工业电子设备之间常用的连接方式。
2022-12-26 16:10:52
793
原创 wireshark抓取网络数据包(疯狂聊天室)
本篇博客主要是练习wireshark抓取网络数据包。在两台及两台以上的电脑(已知IPv4地址)上运行 “疯狂聊天室”程序,通过wireshark抓包:(1)分析此程序网络连接采用的是哪种协议(TCP、UDP)和什么端口号?(2)试着在抓取包中找到窃取到的聊天信息 (英文字符和汉字可能经过了某种编码转换,数据包中不是明文)(3)如果是网络连接采取的是TCP,分析其建立连接时的3次握手,断开连接时的4次握手;如果是UDP,解释该程序为何能够在多台电脑之间(只有是同一个聊天室编号)同时传输聊天数据?
2022-12-26 15:16:04
1190
原创 STM32完成基于SPI协议的0.96OLED屏显
显示自己的学号和姓名;显示AHT20的温度和湿度;上下或左右的滑动显示长字符。0.96寸SPI_OLED模块配套资料包:提取码:1234取字模的工具:提取码:1234SPI(Serial Peripheral Interface)就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。
2022-11-23 17:53:10
1068
1
原创 STM32完成基于I2C协议的AHT20温湿度传感器的数据采集并通过串口输出
本篇博客主要学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。实现:每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)。I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。学习了I2C协议,了解了协议大致流程。
2022-11-23 13:22:27
748
1
原创 Quartus设计D触发器并进行仿真观察时序波形
总结:通过三种方式实现D触发器及时序仿真的过程,可以发现D触发器的基本功能是在复位信号为1的时候,CLK的上升沿会引起Q值的变化。打开QuartusII,选菜单“File”一“New”,在弹出的“New-”对话框中选择“ Design Files” 的原理图文件编辑输入项“Block block diagram/schematic File"按"OK"后将打开原理图编辑窗。对于边沿D触发器,由于在CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D端的数据状态变化,不会影响触发器的输出状态。
2022-11-14 20:54:14
2678
原创 STM32F103C8T6移植ucOS并构建三个任务
本篇博客主要是学习嵌入式实时操作系统(RTOS),以uc/OS为例,将其移植到stm32F103上,构建至少3个任务(task):其中两个task分别以1s和3s周期对LED等进行点亮-熄灭的控制;另外一个task以2s周期通过串口发送“hello uc/OS!欢迎来到RTOS多任务环境!”。记录详细的移植过程。本次实验步骤较多,较为繁琐,跟着步骤一步一步来,不能急躁,一定要细心,特别是移植的时候添加文件一定要仔细。
2022-11-08 13:04:41
680
原创 STM32使用TIME3和TIME4分别输出一个PWM波形,实现2个 LED呼吸灯
本次实验是使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。PWM(Pulse Width Modulation)即脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术;它是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。
2022-11-07 21:14:06
1309
原创 通过RTC实现STM32的日历读取、设置和输出
通过此次实验,我了解了实时时钟RTC的原理。并且知道了如何去实现STM32的日历读取、设置和输出。通过调用HAL库函数,获取时间日期,用printf函数输出。
2022-11-03 15:54:41
1822
8
原创 STM32通过定时器实现led灯闪烁和串口通信
之前的实验都是通过循环或者delay函数来实现的,通过本次实验,学习了定时器Timer来实现对时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。实现了LED灯每隔两秒闪烁一次。串口每隔5秒从串口发送“hello windows!的这样一个效果。过程其实是挺简单的,但是一定要细心,配置不能出错。参考: http://www.mcublog.cn/stm32/2021_01/stm32cubemx-dingshiqi-led/
2022-11-03 14:49:53
2806
2
原创 STM32采用串口DMA方式连续发送数据
DMA,全称Direct Memory Access,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。我们知道CPU有转移数据、计算、控制程序转移等很多功能,系统运作的核心就是CPU,CPU无时不刻的在处理着大量的事务,但有些事情却没有那么重要,比方说数据的复制和存储数据。因此:转移数据(尤其是转移大量数据)是可以不需要CPU参与。
2022-10-23 19:28:54
833
原创 STM32外部中断模式控制LED灯亮灭
本次实验进行了STM外部中断模式控制LED灯亮灭,初步理解了外部中断的用法,同时也更熟悉了用STM32CubeMX创建项目的运用。
2022-10-23 16:24:56
1031
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人