- 博客(31)
- 收藏
- 关注
原创 基于System-Verilog的FPGA设计与仿真
虽然Verilog HDL 在早期的数位电路设计中得到了广泛应用,但随着技术的发展和电路复杂度的增加,Verilog HDL 在某些方面已经显得有些不足以满足设计者和验证工程师的需求。SystemVerilog主要用于复杂的SoC(系统芯片)设计和验证,尤其是在需要高级验证技术和系统级建模的场景中。它引入了面向对象编程(OOP)的概念,如类、继承、封装和多态性,这使得设计和验证更加模块化和可重用。支持更高级的并发构造,如fork和join,以及disable语句,用于更精细的控制并发执行和同步。
2024-06-15 18:54:06
1297
原创 红外超声波雷达测距
接收端:TL074是一种四运算放大器,具有高电压双极晶体管(简称 三极管)的输入放大特性,它可以作为信号放大器,对接收到的超声波信号进行放大,以增强其幅度和信噪比(信噪比 是指一个电子设备中信号和噪声的比值,其计算单位是dB 也就是分贝数来表示,通俗地讲放大器的输出信号的功率于输出的噪声的比值,一般来讲,信噪比越大,输出的信号里面混着的噪声就越小,信号也就越好,声音的质量也就越好,因此一般信噪比用来衡量一个音频器件的好坏,比如:蓝牙耳机,音响)。由此通过发射信号到收到的回响信号时间可以计算得到距离。
2024-06-14 19:07:25
1216
原创 HLS入门
因此,在使用HLS进行硬件设计时,需要充分理解HLS的特性和限制,并结合具体的应用场景和需求来选择合适的设计方法和工具。HLS(High-Level Synthesis)是一种硬件描述语言编程技术,它可以将高级语言(如C/C++)转换为硬件描述语言(如VHDL或Verilog),以便将其用于FPGA(Field-Programmable Gate Array)或ASIC(Application-Specific Integrated Circuit)的设计中。因此,它对硬件层面的知识和经验要求较高。
2024-06-14 17:09:40
1094
原创 基于FPGA的VGA协议实现
有些不带VGA接口而带有DVI(Digital Visual Interface数字视频接口)接口的显卡,也可以通过一个简单的转接头将DVI接口转成VGA接口,通常没有VGA接口的显卡会附赠这样的转接头。大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。
2024-06-14 16:11:09
724
原创 Nios实验入门实践——用Nios软件编程方式完成LED流水灯显示并使用串口输出“Hello Nios-II”字符到笔记本电脑
1、实验目的(1)学习 Quartus Prime 、Platform Designer、Nios II SBT 的基本操作;(2)初步了解 SOPC 的开发流程,基本掌握 Nios II 软核的定制方法;(3)掌握 Nios II 软件的开发流程,软件的基本调式方法。2、实验内容(1)在DE2-115开发板上用Nios软件编程方式完成LED流水灯显示(2)用Nios软件编程通过DE2-115开发板串口输出“Hello Nios-II”字符到笔记本电脑串口助手3、实验原理。
2024-05-14 23:08:29
855
原创 ROS机器人小车建模仿真与SLAM
在xacro文件夹中新建“my_camera.urdf.xacro”"“my_car_camera.urdf.xacro”“my_laser.urdf.xacro”文件。加载robot_description时使用command属性,属性值就是调用 xacro 功能包的 xacro 程序直接解析 xacro 文件。1、在urdf文件夹中新建一个xacro文件夹,并在xacro文件夹中新建my_base.urdf.xacro文件。orbslam2+kitti数据序列图像。2、 核心:编写 urdf 文件。
2024-05-07 09:57:29
692
原创 Ubuntu系统安装opencv
开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、移动机器人、动作理解、物体识别、分割和识别、实体影像立体视觉:来自两个摄像机的深度感知、运动跟踪、增强现实等。
2024-03-16 15:35:35
8125
3
原创 ROS通信模式编程
source /home/lyy/catkin_ws/devel/setup.bash#该环境变量设置只对当前终端有效,lyy是用户名。存放工程开发相关文件的文件夹,其中主要包括src,build,devel,install文件夹。catkin_init_workspace#初始化,使其成为ROS的工作空间。二、在创建的功能包learn_action的src目录下创建CPP文件。#将上面命令放置到~/.bashrc文件中,让其对所有终端都有效。四、在CmakeLists.txt文件中添加依赖。
2024-03-15 23:02:22
600
原创 Ubuntu18.04安装ROS——实现小海龟仿真
ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。安装ROS系统需要注意安装对应ubuntu版本的型号,需要进行下载源换源,有可能会遇到安装问题,可以上网进行查找,大多数都可以解决。
2024-03-03 19:56:26
955
1
原创 FPGA编程入门
然后通过4个1位全加器的串行级联,完成一个4位全加器的 原理图设计;再改用 Verilog编程(3种模式:门电路、数据流和行为级描述),完成这个4位全加器设计,并观察Verilog代码编译综合后生成的 RTL电路,与之前电路图设计的4位全加器电路进行对比。进入4位全加器的设计环节,我先是通过4个1位全加器的串行级联,在原理图中完成了设计。然后封装这个1位全加器为自定义的一个子电路模块(比如名称为OneAdder),然后新建一个项目,用1位全加器串行级联方式完成一个4位全加器的设计,并进行功能测试。
2023-12-22 18:36:05
1118
原创 STM32F103C8移植RT_Thread
(2)打开 CubeMX,从菜单栏 help 进入 Manage embedded software packages 界面,点击 From Url 按钮,进入 User Defined Packs Manager 界面,其次点击 new,填入上述网址,然后点击 check。2、找到Middlewares/RT-Thread/RTOS/kernel文件夹下的board.c文件,修改串口USART2为USART1。2、选择 RealThread, 然后根3.1.5版本的,然后点击 OK 按钮。
2023-11-27 21:42:13
1041
原创 STM32F103C8T6基于HAL库移植uC/OS-III
MDK-ARM\uCOS-III\Ports\ARM-Cortex-M3\Generic\RealView路径下选中以下文件,Add添加。MDK-ARM\uC-LIB\Ports\ARM-Cortex-M3\RealView路径下选中下图最后一个文件,Add添加。MDK-ARM\uC-CPU\ARM-Cortex-M3\RealView路径下选中以下文件,Add添加。MDK-ARM\uCOS-III\Source路径下选中以下全部 .c .h 文件,Add添加。
2023-11-27 21:09:10
980
原创 STM32F103OLED屏显
通过本次实验,能较为熟练地使用AHT20模块和OLED模块,实现了显示温湿度数据和学号姓名的滚动显示,OLED实验较为有趣,今后使用其他模块实验,可用于显示调试。
2023-11-23 18:49:52
316
原创 点阵汉字的字模读取与显示
了解了汉字点阵的编码规则后,我们就可以在图片上显示任何我们想要的文字。撰写代码时要注意添加文字所在的位置,防止运行后图片上未显示出所加字符。在logo.txt文件当中输入你想要显示的文字的时候需要用ANSI编码进行编写,不然中文会出现乱码。
2023-11-20 16:52:40
367
1
原创 STM32F103通过IIC协议实现温湿度(AHT20)的采集
IIC通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
2023-11-14 20:44:18
435
原创 定时器&PWM应用编程
分频系数那里虽然写的是71,但系统处理的时候会自动加上1,所以实际进行的是72分频。n1,然后更改输入捕获的信号级性(上升沿或下降沿),当再次检测到ICx信号上相应的边沿后,计数器(CNT)的当前值再次被锁存到捕获/比较寄存器(TIMx_CCRx)中假设为。选中定时器2,配置定时器2的时钟源为内部时钟,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。在选定的时钟源(可以是内部的也可以是外部的)和预分频器TIMX_PSC的驱动下,根据设置的计数模式(向上、向下、中央对齐)自动。
2023-11-05 22:11:10
139
原创 基于中断/DMA的串口通信
(3)在main.c中重写USART1_IRQHandler函数,同时记得删掉stm32f1xx_it.c中的同名函数。2、添加一个USART1_SR的地址,然后将模式改为bit,最后点击close。2、选择STM32F103C8T6芯片。(4)main函数外重写中断处理函数。(2)发送“ start ”继续输出。(1)发送“ stop ”停止输出。2、使用串口调试助手观看效果。(2)main函数代码设置。3、main.c总代码。5、设置USART1。1、打开keil项目。
2023-11-02 12:27:45
105
1
原创 STM32中断LED
(7)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM,点击generate code创建keil项目。(1)打开.uvprojx文件(或者在上一步选择open project)(6)进入 code generate界面,选择生成初始化.c/.h文件。(5)设置引脚,A1,B3, B5, B9(B9 设置为EXTI)(1)回到STMCubeMX的主界面,创建新项目。(2)在main.c中main函数外创建函数。(2)在part name里选择自己的芯片。
2023-10-30 20:21:23
52
1
原创 stm32cubeMX使用HAL库点亮LED流水灯
(7)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM,点击generate code创建keil项目。引脚为低电平的灯亮,高电平的灯不亮,高低电平转换周期(LED闪烁周期)为1s左右。(1)打开.uvprojx文件(或者在上一步选择open project)(2)选择需要安装的型号,点击“Install Now” 直到安装成功。(1)回到STMCubeMX的主界面,创建新项目。(3)线路连接,灯插在前面选择的引脚处。(5)设置引脚,A7,B9,C13。
2023-10-30 16:24:18
109
1
原创 HAL库中断方式进行串口通信
2、添加一个USART1_SR的地址,然后将模式改为bit,最后点击close。2、选择STM32F103C8T6芯片。(3)main函数外重写中断处理函数。2、使用串口调试助手观看效果。(1)发送“ # ”停止输出。(2)发送“ * ”继续输出。(2)main函数代码设置。5、设置USART1。1、打开keil项目。
2023-10-29 20:25:36
80
1
原创 基于标准外设库的STM32流水灯
STM32F10X_HD,USE_STDPERIPH_DRIVER 中的逗号是英文逗号。输入GPIOA_ODR.0,回车。Display Type选择 Bit。②、复制相关库文件到对应文件夹。①、在User文件夹中创建。点击魔法棒旁边的三个正方体。右下角红框添加头文件路径。完成后点击OK退出。
2023-10-17 22:57:55
55
原创 STM32基于寄存器的LED流水灯实验
这次试验,我学会了使用keil编译文件并烧录到STM32上进行实验,完成流水灯实验,虽然过程中遇到许多问题,但在网络的帮助下成功解决,让我受益良多。
2023-10-16 22:43:48
96
1
原创 Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址
1、全局常量:在程序中定义的全局范围内不可改变的常量,它们的值在整个程序执行过程中都保持不变。2、全局变量:在程序中定义的全局范围内可改变的变量,它们可以在程序的任何位置被访问和修改。3、局部变量:在函数或代码块中定义的变量,它们的作用域仅限于函数或代码块内部,在外部无法访问。4、静态变量:在函数内或代码块内用 static 关键字修饰的变量,它们的生存期会延长到整个程序的执行过程中,但作用域仍然限于所在的函数或代码块内部。
2023-10-06 22:36:57
145
1
原创 gcc编译工具集中各软件的用途及ELF文件介绍
(一)准备工作编辑一个简单的c语言程序hello.c\n");return 0;(二)编译过程1、预处理将.c文件处理生成.i文件hello.i代码片段2、编译将.i文件编译生成.s 文件hello.s代码片段3、汇编将目标 hello.s 文件汇编生成目标文件 hello.ohello.o目标文件为ELF格式的可重定向文件。4、链接可生成可执行程序使用size查看大小使用ldd查看可执行文件链接的其他动态库。
2023-10-05 23:35:43
180
原创 用gcc生成静态库和动态库和静态库.a与.so库文件的生成与使用
在两个案例的练习下,能初步使用静态库和动态库,了解了两者之间的差别,实验过程较为顺利,通过网络能较快的解决其中的问题,但想要完全熟练使用还需要更多的练习和努力。
2023-10-05 19:53:36
858
原创 register和volatile 关键字的作用
volatile用于告诉编译器,这个变量可能会被难以预见的外部因素改变,因此每次使用它时,都需要从内存中读取它的实际值,而不是使用保存在寄存器中的拷贝。register用于提示编译器,这个变量可能会频繁地使用,将其储存在寄存器中可以更快地访问。在C语言中,register和volatile是两种特殊的变量修饰符,它们在嵌入式编程中经常被使用,而在一般的PC编程中可能不常见。在这个例子中,input被声明为volatile,意味着它可能会被外部硬件随时改变,因此每次使用它时,都需要从内存中读取它的实际值。
2023-09-25 21:24:41
121
1
原创 STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤
1、寄存器的基本含义寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。2、地址映射和寄存器映射原理。
2023-09-25 21:10:09
279
1
原创 熟悉Proteus ,完成C51程序仿真
通过本章学习,我更加深入了解到Proteus的使用,了解了程序仿真的整个过程,绘制一个简单的原理图,使用keil运行一个程序。实验中也让我看到许多自己的问题,需要不断查找资料完善自我。
2023-09-24 20:07:47
273
1
原创 Ubuntu系统使用gcc和makefile编译文件
从本次实验中,我们可以看出Windows系统的Vscode具有简单易用的优势,使得编译过程更加便捷。而在Ubuntu系统中,虽然gcc和makefile的组合也能够完成编译任务,但相对于Windows系统来说,步骤更加繁琐。在实际工作中,我们可以根据项目的需求来选择合适的编译环境。如果项目较小且需要快速上手,那么Windows系统下的Vscode可能是个不错的选择;如果项目较大且需要更多的自定义配置,那么Ubuntu系统下的gcc和makefile可能更加适合。
2023-09-14 21:45:19
264
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人