- 博客(36)
- 问答 (1)
- 收藏
- 关注
原创 System Verilog实现流水灯
SystemVerilog既是硬件描述语言(rtl(Register Transfer Level)级),也是硬件验证语言用于为ASIC和FPGA/SoC算法和系统建模、设计、仿真、验证、测试和实现。SystemVerilog基于Verilog语言并进行了大量扩张,并在2009年与Verilog一样称为了同一IEEE标准的一部分。支持有约束随机验证、断言和功能覆盖率,并且支持面向对象的编程。//使用//错误使用light1 = 0;//将reg[7:0] 定义为opreg_t//使用。
2024-06-09 01:33:06
1146
原创 pyspark中使用mysql jdbc报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决
报错信息:我的解决方法:我的mysql最开始是8.0.36,发现没有这个jar包所以就卸载了这个mysql然后重装了8.0.33,安装教程都安装完成后,将jar包拖进你下就开始解决这个报错。
2024-06-06 13:20:41
449
原创 基于FPGA的VGA协议实现
以下内容来源百度以及博客,详细内容可参考原文!!!百度:VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。VGA显示图像使用扫描的方式,从左上角到右下角逐渐填充,通过这种方式形成一帧完整的图像。
2024-05-22 11:49:21
908
原创 HLS入门(实验过程记录)
HLS(High Level Synthesis):一款高层次综合工具,能够将 C/C++ 或者 system C 等高级语言转化为 RTL (底层硬件描述语言)电路,降低开发时间。提供了常见的库(例如图像处理相关的 OpenCv 库和其它的数学库)。可以创建IP并通过例化或者使用 BlockDesign 的方式应用到项目中。
2024-05-19 23:22:50
710
原创 基于FPGA的超声波测距
从实验结果观察发现测量距离同实际还是具有一定的误差,可能是由传感器本身的噪声、回波的多路径传播、环境的干扰等原因造成。
2024-05-18 15:18:07
1399
原创 树莓派对FPGA板子上的流水灯程序的控制
这次实验初步使用了树莓派,了解了其创始人,是一个很伟大的人…本次串口的实验,效果不是特别好,代码多点几个灯是下载进去了,但是流水灯的效果不明显,感觉是时序上出现了一些问题。那个灯到处乱跳。但是收获挺大的,树莓派确实是个好东西。
2024-05-14 00:10:09
762
1
原创 Nios-II编程入门实验
verilog和nios-II比较下来,verilog编程的时候可以选择性的编程,比如我现在要串口传送,我可以只写一个串口传送就可以传出去,但是在细节方面比如时序很容易搞混,简洁但是要很细心,否则就是bug。Nios-II是添加ip核,使用已有的模块去建立程序逻辑,相当于模拟一个电脑,大致了解一下是能上手的。但是要深究还是有点难度的。相比较下来,nios-ii确实方便了一点点,并且它有点像拼图,把模块拼起来,然后软件编程实现。
2024-05-12 17:07:55
933
原创 orbslam2+kitti数据集序列图像
经过本次实验,了解了ORB_SLAM2的调用方法,进一步见识到了SLAM的魅力,同时在实验过程中,遇到特别多的bug,最终还是解决了。一定要多尝试,学会搜索,学好English。
2024-04-23 01:11:00
1345
2
原创 ROS摄像机标定
在本实验中,操作了在Ubuntu 20.04上安装ROS并使用相机标定包对摄像头进行标定,了解了具体操作过程。通过进行标定,获取摄像头的内部参数和畸变系数,提高测量精度。
2024-04-21 23:53:22
1463
原创 ROS下机器人系统仿真及部分SLAM建图
文章目录一、 Launch文件使用二、 参考资料三、 遇到的问题四、 效果演示五、相关代码5.1 一些简介5.2 机器人模型5.2.1 机器人底盘5.2.2 摄像头5.2.3 雷达5.3 惯性矩阵六、代码传送门实验结果及分析温馨提示:如果有幸看到这个文章,不要看里面的内容,因为只是实验的记录,你看这个文章只会头疼。如果要了解,主要看后面的参考资料和以及这篇文章遇到的某些问题的解决可能对你帮助更大。一、 Launch文件使用launch文件的作用是,将你要启动的节点配置编写进launch文件中,然
2024-04-21 02:01:12
1348
原创 ROS通信编程+OpenCV
其中的---是上面是请求数据,下面是响应数据。ros根据这个符号解析数据。package.xml文件中加上:编译时需要message_generation依赖,运行时需要message_runtime依赖。作用是把msg、srv文件转化成c++,py格式可编译执行。ROS自带的消息结构CMakeLists.txt文件中使用find_package()查找包catkin的所有依赖项。添加运行时的依赖message_runtime添加自定义的文件。
2024-03-12 00:12:42
1426
原创 Ubuntu20.04安装ROS
ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”。ROS 运行时的“蓝图”是一种基于ROS通信基础结构的松耦合点对点进程网络。
2024-03-02 13:33:22
3607
1
原创 第15周实验--FPGA编程入门
再改用 Verilog编程(3种模式:门电路、数据流和行为级描述),完成这个4位全加器设计,并观察Verilog代码编译综合后生成的 RTL电路,与之前电路图设计的4位全加器电路进行对比。首先安装Logisim软件,新建一个项目,采用门电路组合电路方式完成一个1位全加器的设计,并在Logisim中进行测试。然后封装这个1位全加器为自定义的一个子电路模块(比如名称为OneAdder),然后新建一个项目,用1位全加器串行级联方式完成一个4位全加器的设计,并进行功能测试。
2023-12-19 21:55:26
375
原创 嵌入式RTOS多任务程序设计
本次实验分别使用了两种方法进行多任务程序,经过比较可以发现移植ucos的过程比较繁杂但不难,只是需要注意细节问题,不然就会出现报错。使用RT-Thread Nano 开启多任务,只需要下载即可,过程比较简单,也更容易理解。
2023-11-25 09:53:14
1566
原创 汉字点阵与OLED屏显示
在实验过程中,会有遇到sprintf卡死的情况,经过查找原因发现是不能使用char*,必须要给一个确定的空间,所以后面使用字符数组代替,至于为什么,暂时还没有搞清楚。还有关于结合模块代码的使用,发现模块源码中还有一部分没有搞清楚,但是大致了解了程序执行的逻辑。在显示温湿度的实验中,发现串口一直没有输出数据,经过长时间才发现,竟然是没有选择use microlib!!!所以一定要细心。总之,本次实验加深了对iic和spi协议的理解,学会使用主从机间的通信。
2023-11-19 10:38:17
136
原创 IIC协议采集温湿度
I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。其分为两层,即物理层和协议层。物理层规定了电气特性,协议层规定了通讯的顺序格式逻辑等。经过本次实验,学会单片机结合模块的使用,了解了什么是I2C协议,进一步加强了对keil软件的操作,如何合并文件,如何查错等。
2023-11-13 15:59:02
75
原创 定时器&PWM应用编程
经过本次实验,发现并没有很熟练的掌握定时器板块,有一部分实验没有做成功,比如输入捕获这里,还需要后续进一步完善,暂时没有找到原因。但呼吸灯以及定时控制亮灭都成功完成,对定时器有了初步的了解,以及如何控制PWM。
2023-11-11 16:19:50
154
1
原创 基于中断/DMA的串口通信
使用HAL库(或标准库)方式,设置USART1 波特率为115200,1位停止位,无校验位,分别采用中断方式、DMA方式完成下列任务:TM32系统给上位机(win10)连续发送“hello windows!当上位机给stm32发送字符“stop”后,stm32暂停发送“hello windows!发送一个字符“start”后,stm32继续发送;
2023-10-30 14:19:51
146
1
原创 STM32简单串口通信(HAL)
RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。USB主机检测到USB转串口设备插入后,首先会对设备复位,然后开始USB枚举过程。USB虚拟串口的实现在系统上依赖于USB转串口驱动,一般由厂家直接提供,也可以使用操作系统自带的CDC类串口驱动等。驱动主要分为2个功能,其一注册USB设备驱动,完成对USB设备的控制与数据通讯,其二注册串口驱动,为串口应用层提供相应的实现方法。一个char型为8bit,起始位1bit,结束未1bit,故一个数据帧有10bit。
2023-10-28 16:50:08
497
1
原创 使用Cube实现流水灯,并采用中断控制流水灯亮灭
实验软件:CubeMx,KeilMDK,mcuisp实验管脚:PA1,PB1,PB10实验材料:若干LED,若干跳线,一个面包板,一个F103C8T6,一个USB转TTL。
2023-10-25 22:53:44
289
1
原创 STM32寄存器和标准库点流水灯
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。请用此功能观察GPIO端口的输出波形,并分析时序状态正确与否、高低电平转换周期(LED闪烁周期)实际为多少。此时出现了一个很奇怪的现象,就是PC13管脚和内置LED(PC13)的状态是相反的。不看电路,按照最开始的想法,置1为高电平,置0为低电平,这时会发生什么呢?LED灯的亮/灭周期是通过软件循环延时完成的,其准确周期大致是多少呢?要点亮流水灯,就需要让灯依次亮灭,故分三个状态。
2023-10-15 01:48:18
205
1
原创 嵌入式作业3
三. 编写一个C程序,重温全局常量、全局变量、局部变量、静态变量、堆、栈等概念,在Ubuntu(x86)系统和STM32(Keil)中分别进行编程、验证(STM32 通过串口printf 信息到上位机串口助手)。1)归纳出Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址,进行对比分析;2)加深对ARM Cortex-M/stm32F10x的存储器地址映射的理解。下图是一个Cortex-M4的存储器地址映射示意图(与Cortex-M3/stm32F10x基本相同,只存在微小差异)
2023-10-01 10:55:26
53
原创 GCC背后的故事&C程序常量变量的地址分配
GCC(GNU C Compiler)是编译工具。将C/C++程序转化为处理器可执行的二进制代码一组二进制程序处理工具,包括:addr2line、ar、objcopy、objdump、as、ld、ldd、readelf、size等。是开发和调试不可缺少的工具名称作用addr2line将程序地址转换成其对应的程序源文件及所对应的代码行,也可以得到所对应的函数。帮助调试器在调试的过程中定位对于的源代码位置as主要用于汇编ld主要用于链接ar主要用于创建静态库ldd。
2023-09-27 18:40:28
188
1
原创 register和volatile
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,告诉编译器对该变量不做优化,都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问。用register关键字修饰变量,就是编译程序时希望把该变量放到寄存器中,这样可以提高对该变量的访问速度,不必通过内存寻址来访问变量。a和b的值就一定会相等,但如果在某些特殊情况,改变了temp的值,使得b和a值不同,就需要volatile关键字。
2023-09-24 01:56:38
109
1
原创 STM32F103学习笔记
(理论概念-常见嵌入式岗位面试题) 通过点灯实践,结合阅读ARM、STM32技术手册,深入思考STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤。回答:1)嵌入式C程序代码对内存(RAM)中的各变量的修改操作,与对外部设备(寄存器—>对应相关管脚)的操作有哪些相同与差别?2)为什么51单片机的LED点灯编程要比STM32的简单?
2023-09-24 01:38:09
76
1
原创 stm32寄存器方式点亮LED仿真
模式名称性质特征浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定上拉输入数字输入可读取引脚电平,内部链接上拉电阻,悬空时默认高电平下拉输入数字输入可读取引脚电平,内部链接下拉电阻,悬空时默认低电平模拟输入模拟输入GPIO无效,引脚直接接入内部ADC开漏输出数字输出可输出引脚电平,高电平为高阻态,低电平接VSS推挽输出数字输出可输出引脚电平,高电平接VDD,低电平接VSS复用开漏输出数字输出由片上外设控制,高电平为高阻态,低电平接VSS复用推挽输出。
2023-09-21 17:50:24
183
原创 【嵌入式系统】Proteus电路仿真C51流水灯程序
MDK和C51不是同一个东西。MDK是用于stm32,C51是用于51单片机的。如果后续需要下载历史版本的keil可以参考这篇文章【Keil科普教程 | Keil历史版本的几种下载方法-哔哩哔哩】1)、创建新项目Project->New *Vision Project…接下来新建main.c文件,编写代码File->New。点击AT89C51,选中刚才生成的hex文件,ok。ctrl+s保存,文件名为main.c。需要借助Keil C51,下载地址为。选择之后点击ok,弹窗选择是。
2023-09-16 22:48:49
417
2
原创 makefile使用
任务4、请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。2) 请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。任务5、在任务一基础上,在ubuntu系统下用Makefile方式编程主程序。
2023-09-09 17:24:52
67
1
原创 Ubuntu(18.04desktop)安装
虚拟机大小按情况分类,下面两种选项都可选,这里选择存储为单个文件。自行查阅三种网络类型的区别,这里选择桥接网络,点击下一步。根据你下载的vmware版本选择,点击下一步。根据实际需求选择处理器,内核。创建新的虚拟机,选择自定义,点击下一步。选择稍后安装操作系统,下一步。选择中文简体,安装,继续。选择自定义硬件,配置。
2023-09-09 08:50:21
335
1
原创 JS&TypeScript学习笔记
TypeScript是JavaScript的超集,具有可选的类型并可以编译为纯JavaScript。从技术上讲TypeScript就是具有静态类型的 JavaScript。JavaScript无法合并类型以及编译时缺乏错误检查。类型是在我们运行程序之前通过在代码中描述我们计划如何使用数据来区分正确程序的方法。它们可以从简单的类型(如数字和字符串) 到为我们的问题域完美建模的复杂结构。编程语言分为两类:静态类型或动态类型。静态类型的语言中,变量的类型在编译时必须是已知的。
2023-07-02 13:47:51
159
1
原创 CSS学习笔记
justify-items 属性在网格容器上进行设置,使子元素(网格项)在行内方向对齐。弹性盒子能够帮助我们在某个方向上排列元素,还能控制他们的尺寸,对齐方式,外观顺序等。需要至少两个元素,一个父元素(flex container),以及至少一个子元素(flex item)。CSS是级联样式表的缩写,HTML用于撰写页面内容,CSS则用于呈现内容,涉及到页面布局,元素位置、距离、颜色、大小、是否显示、是否浮动、透明度等。,会使父变成弹性容器,只有其直接子元素才能成为弹性项,弹性项目的子项不受影响。
2023-06-27 00:10:23
52
原创 HTML学习笔记
在HTML中,某些字符是预留的。如果要正确显示,则需要在HTML源代码中使用字符实体,可参考。标签用于输入,type属性可以定义为text,password,submit,reset,date等,根据实际需要进行定义。属性当获取图片出现问题是显示的文字(占位符),还可为图片指定高宽度(可能导致图片变形)当需要类似书签的功能,即当前位置,跳转回某个指定位置,可采用。属性要显示为图片文件的位置URL,即图片文件的路径,块级元素在浏览器显示时,通常会以新行开始,比如。开始,每个自定义列表项的定义以。
2023-06-27 00:06:23
48
TA创建的收藏夹 TA关注的收藏夹
TA关注的人