国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持

目录

  • 1、前言
    • 免责声明
  • 2、相关方案推荐
    • 国产高云FPGA相关方案推荐
    • 国产高云FPGA基础教程
  • 3、设计思路框架
    • 视频源选择
    • OV5640摄像头配置及采集
    • 动态彩条
    • 跨时钟FIFO
    • 图像缩放模块详解
      • 设计框图
      • 代码框图
      • 2种插值算法的整合与选择
    • Video Frame Buffer 图像缓存
    • DDR3 Memory Interface
  • 4、Gowin工程1:640x480不缩放操作
  • 5、Gowin工程2:640x480缩小到300x300
  • 6、Gowin工程3:640x480缩小到100x100
  • 7、Gowin工程4:640x480缩小到300x720
  • 8、Gowin工程5:640x480缩小到1280*360
  • 9、Gowin工程6:640x480缩小到1280x720
  • 10、上板调试验证并演示
    • 准备工作
    • 静态演示
  • 11、福利:工程源码获取

国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持

1、前言

“苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;在此,请收下我一声谢谢啊!!!!!!

2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于辣鸡段位,国产FPGA仰望Xilinx情不自禁道:你以为躲在这里就找不到你吗?没用的,你那样拉轰的男人,无论在哪里,都像黑夜里的萤火虫那样的鲜明、那样的出众,你那忧郁的眼神,稀嘘的胡渣子,神乎其技的刀法,还有那杯Dry martine,都深深的迷住了我。。。然而才短短4年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,面对此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。
言归正传,目前对于国产FPGA的共识有以下几点:
1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;
2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具
3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册。。
4:采购方便,产业链自主可控,采购便捷

本文使用国产高云GW2A-LV18PG484C7/I6型号的FPGA做纯verilog实现视频图像缩放,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为640x480@60Hz,同时生成用纯verilog实现动态彩条,其分辨率为640x480@60Hz;FPGA采集到输入视频后,首先将图像送入缓冲FIFO中做跨时钟域处理,即用输出1280x720@60Hz的屏幕背景分辨率作为读FIFO的时钟,这样可以确保在各种分辨率的图像缩放操作中,送入图像缩放模块的时钟时钟是够大的,也是带宽满足的一种操作;随后将视频送入纯verilog实现的图像缩放模块做图像缩放操作,该模块很简单,只需给出输入分辨率和输出分辨率即可,不需要去管缩放比例之类的问题,一般而言,输入分辨率是不变的,只需要改变输出分辨率即可;缩放后的视频,其原有的时序已经被完全打乱,所以需要调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280x720@60Hz;缩放后的视频相当于叠加显示在1280x720的背景之上;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;

提供5套Gowin-V1.9版本的工程源码;5套工程的区别在于缩放后的输出分辨率不同,分别如下:
第一套Gowin工程:输入分辨率640x480;输出分辨率640x480;不做缩放操作;
第二套Gowin工程:输入分辨率640x480;输出分辨率300x300;做缩小操作;
第三套Gowin工程:输入分辨率640x480;输出分辨率100x100;做缩小操作;
第四套Gowin工程:输入分辨率640x480;输出分辨率300x720;做不规则的缩放操作;
第五套Gowin工程:输入分辨率640x480;输出分辨率1280x360;做不规则的缩放操作;
第六套Gowin工程:输入分辨率640x480;输出分辨率1280x720;做放大操作;

本文详细描述了国产高云FPGA图像视频采集系统的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网、国产高云FPGA官网、紫光同创FPGA官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

国产高云FPGA相关方案推荐

鉴于国产高云FPGA的优异表现和市场需求,我专门开设了一个人国产高云FPGA专栏,里面收录了基于国产高云FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:点击直接前往

国产高云FPGA基础教程

高云FPGA开发软件Gowin的下载、安装、Licence共享,工程搭建、代码添加、综合、编译、下载、各种IP的调用、配置、使用等基础操作,是做高云FPGA开发的基本功,当然,如果你已是有经验的工程师,则可以省略这一步,为此,我专门开设了专栏,详细讲述国产高云FPGA基础教程,甚至可以说是保姆级的教程,专栏地址如下:
点击直接前往

3、设计思路框架

本文使用国产高云GW2A-LV18PG484C7/I6型号的FPGA做纯verilog实现视频图像缩放,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为640x480@60Hz,同时生成用纯verilog实现动态彩条,其分辨率为640x480@60Hz;FPGA采集到输入视频后,首先将图像送入缓冲FIFO中做跨时钟域处理,即用输出1280x720@60Hz的屏幕背景分辨率作为读FIFO的时钟,这样可以确保在各种分辨率的图像缩放操作中,送入图像缩放模块的时钟时钟是够大的,也是带宽满足的一种操作;随后将视频送入纯verilog实现的图像缩放模块做图像缩放操作,该模块很简单,只需给出输入分辨率和输出分辨率即可,不需要去管缩放比例之类的问题,一般而言,输入分辨率是不变的,只需要改变输出分辨率即可;缩放后的视频,其原有的时序已经被完全打乱,所以需要调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280x720@60Hz;缩放后的视频相当于叠加显示在1280x720的背景之上;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;

提供5套Gowin-V1.9版本的工程源码;5套工程的区别在于缩放后的输出分辨率不同,分别如下:
第一套Gowin工程:输入分辨率640x480;输出分辨率640x480;不做缩放操作;
第二套Gowin工程:输入分辨率640x480;输出分辨率300x300;做缩小操作;
第三套Gowin工程:输入分辨率640x480;输出分辨率100x100;做缩小操作;
第四套Gowin工程:输入分辨率640x480;输出分辨率300x720;做不规则的缩放操作;
第五套Gowin工程:输入分辨率640x480;输出分辨率1280x360;做不规则的缩放操作;
第六套Gowin工程:输入分辨率640x480;输出分辨率1280x720;做放大操作;
设计框图如下:
在这里插入图片描述
注意:框图中的数字表示数据流向的顺序;

视频源选择

视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV5640摄像头;如果你手里没有OV5640摄像头或者FPGA开发板没有摄像头输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;视频源选择如下:
在这里插入图片描述
视频源选择逻辑代码部分如下:
在这里插入图片描述
选择逻辑如下:
当(注释) define COLOR_IN时,输入源视频是OV5640;
当(不注释) define COLOR_IN时,输入源视频是动态彩条;

OV5640摄像头配置及采集

OV5640摄像头需要i2c配置才能使用,需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据,这两部分均用verilog代码模块实现,代码位置如下:
在这里插入图片描述
其中摄像头配置为分辨率1280x720,如下:
在这里插入图片描述
摄像头采集模块支持RGB565和RGB888格式的视频输出,可由参数配置,如下:
在这里插入图片描述
RGB_TYPE=0输出本RGB565格式;
RGB_TYPE=1输出本RGB888格式;
设计选择RGB888格式;

动态彩条

动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,以工程1为例,配置为辨率1280x720,动态彩条模块代码位置和顶层接口和例化如下:
在这里插入图片描述
在这里插入图片描述

跨时钟FIFO

调用高云官方的FIFO;跨时钟FIFO的作用是为了解决跨时钟域的问题,当视频不进行缩放时不存在视频跨时钟域问题,但当视频缩小或放大时就存在此问题,用FIFO缓冲可以使图像缩放模块每次读到的都是有效的输入数据,注意,原视频的输入时序在这里就已经被打乱了;
关于高云官方FIFO IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

图像缩放模块详解

因为我们的QT上位机目前只支持1280x720,所以才需要缩放,即从输入的1920x1080分辨率缩小为1280x720;用笔记本电脑模拟HDMI视频输入源;

设计框图

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某一种算法;代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;代码以ram和fifo为核心进行数据缓存和插值实现,设计架构如下:
在这里插入图片描述
视频输入时序要求如下:
在这里插入图片描述
输入像素数据在dInValid和nextDin同时为高时方可改变;
视频输出时序要求如下:
在这里插入图片描述
输出像素数据在dOutValid 和nextdOut同时为高时才能输出;

代码框图

代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;
图像缩放的实现方式很多,最简单的莫过于Xilinx的HLS方式实现,用opencv的库,以c++语言几行代码即可完成,关于HLS实现图像缩放请参考我之前写的文章HLS实现图像缩放
网上也有其他图像缩放例程代码,但大多使用了IP,导致在其他FPGA器件上移植变得困难,通用性不好;相比之下,本设计代码就具有通用性;代码架构如图;
在这里插入图片描述
其中顶层接口部分如下:
在这里插入图片描述

2种插值算法的整合与选择

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某一种算法;
具体选择参数如下:

input  wire i_scaler_type //0-->bilinear;1-->neighbor

通过输入i_scaler_type 的值即可选择;

输入0选择双线性插值算法;
输入1选择邻域插值算法;

关于这两种算法的数学差异,请参考我之前写的文章HLS实现图像缩放

Video Frame Buffer 图像缓存

调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;该部分是图像采集显示系统的重点核难点,如果是其他FPGA,则需要写一大堆代码才能实现,还要调试,花费时间和精力很多,但高云FPGA则轻松实现了改功能,因为人家直接做成了IP,即Video Frame Buffer;这里简单介绍一下该IP,因为高云有详细的中文手册说明该IP的使用,手册我也放在了资料包里;
我对该IP的配置只适用于我的设计,如果你要修改IP的配置的话,可以按照如下方式修改,然后重新生成IP:
在这里插入图片描述
Video Frame Buffer IP配置如下:
在这里插入图片描述
关于Video Frame Buffer IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

DDR3 Memory Interface

调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作,类似于Xilinx的MIG;DDR3 Memory Interface IP配置如下:
在这里插入图片描述
关于DDR3 Memory Interface IP的更多详细讲解,请参考我的专栏:高云FPGA开发基础教程,专栏地址如下:
点击直接前往

4、Gowin工程1:640x480不缩放操作

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:640x480;
输出:HDMI,在1280x720的背景下叠在缩放后的640x480视频;
工程作用:视频经过缩放模块,但不进行缩放操作,即一比一缩放;
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述
我发布的工程均已编译通过,如下:
在这里插入图片描述

5、Gowin工程2:640x480缩小到300x300

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:300x300;
输出:HDMI,在1280x720的背景下叠在缩放后的300x300视频;
工程作用:视频缩小操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

6、Gowin工程3:640x480缩小到100x100

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:100x100;
输出:HDMI,在1280x720的背景下叠在缩放后的100x100视频;
工程作用:视频缩小操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

7、Gowin工程4:640x480缩小到300x720

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:300x720;
输出:HDMI,在1280x720的背景下叠在缩放后的300x720视频;
工程作用:视频做不规则的缩放操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

8、Gowin工程5:640x480缩小到1280*360

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:1280360;
输出:HDMI,在1280x720的背景下叠在缩放后的1280
360视频;
工程作用:视频做不规则的缩放操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

9、Gowin工程6:640x480缩小到1280x720

开发板FPGA型号:国产高云–GW2A-LV18PG484C7/I6;
开发环境:Gowin-V1.9
输入:OV5640摄像头或动态彩条,分辨率640x480;
缩放前的视频分辨率:640x480;
缩放后的视频分辨率:1280x720;
输出:HDMI,在1280x720的背景下叠在缩放后的1280x720视频;
工程作用:视频做放大操作;
工程代码架构、工程的资源消耗和功耗等与第4章节的内容基本一致;

10、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:
1:FPGA开发板;
2:OV5640摄像头,如果没有也可以,就选择动态彩条;
3:HDMI传输线;
4:HDMI显示,要求分辨率支持1280x720;
连接如下:
在这里插入图片描述

静态演示

第一套Gowin工程:输入分辨率640x480;输出分辨率640x480;不做缩放操作;输出如下:
在这里插入图片描述
第二套Gowin工程:输入分辨率640x480;输出分辨率300x300;做缩小操作;
在这里插入图片描述
第三套Gowin工程:输入分辨率640x480;输出分辨率100x100;做缩小操作;
在这里插入图片描述
第四套Gowin工程:输入分辨率640x480;输出分辨率300x720;做不规则的缩放操作;
在这里插入图片描述
第五套Gowin工程:输入分辨率640x480;输出分辨率1280x360;做不规则的缩放操作;
在这里插入图片描述
第六套Gowin工程:输入分辨率640x480;输出分辨率1280x720;做放大操作;
在这里插入图片描述

11、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/169912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cadence layout lvs时出现error

Error:Schematic export failed or was cancelled.Please consult the transcript in the viewer window. 解决办法同下: cadence layout lvs时出现error-CSDN博客

Ps:陷印

在准备图像进行专业印刷之前,陷印 Trap是一个重要的步骤。 在彩色印刷中,多种颜色的墨水通常分别印刷。陷印是一种叠印技术,它可避免打印时印版的微小偏差或移动而使打印图像出现微小的缝隙。 进行陷印处理以纠正未对齐现象 A. 未对齐现象&am…

一个完备的手游地形实现方案

一、地形几何方案:Terrain 与 Mesh 1.1 目前手游主流地形几何方案分析 先不考虑 LOD 等优化手段,目前地形的几何方案选择有如下几种: 使用 Unity 自带的 Terrain使用 Unity 自带的 Terrain,但是等美术资产完成后使用工具转为 M…

Day36力扣打卡

打卡记录 T 秒后青蛙的位置(DFS) 链接 class Solution:def frogPosition(self, n: int, edges: List[List[int]], t: int, target: int) -> float:g [[] for _ in range(n 1)]for x, y in edges:g[x].append(y)g[y].append(x)g[1].append(0)ans …

Uniapp矩阵评分组件

uniapp矩阵评分组件支持自定义图标、选择颜色、评分等级。 <template><view style"width: 100%;overflow: hidden;"><view class"flex-sub flex-table flex flex-direction-column":style"{ --table-border-color: tableBorderColor…

Swifit学习第一天

学到了什么&#xff1a; 布局&#xff1a;ZStack 、HStack、VStack、Image 其它&#xff1a;点击事件、属性包装器ClampedValue、三目运算 1、图片缩放 2、属性包装器

Arcgis 日常天坑问题2——三维场景不能不能加载kml图层,着手解决这个问题

arcgis js api官网介绍kml图层的地址&#xff1a; https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-KMLLayer.html从文档里看到kml图层有诸多限制&#xff0c;比较重要的两点是&#xff1a; 1、不能在三维场景&#xff08;SceneView&#xff09…

【Rust 日报】2023-11-19 solars:可视化太阳系

eyre 0.6.9发布 Eyre是一个可定制的应用程序错误报告库&#xff0c;通过诸如tracing等集成&#xff0c;允许进行可配置的格式化和上下文聚合。本次更新如下。 组织一个由共同决策驱动的异步维护团队。添加一个贡献指南。修复在丢弃已抹除的错误报告时发生的堆叠借用违规。修复由…

(动手学习深度学习)第13章 实战kaggle竞赛:CIFAR-10

导入相关库 import collections import math import os import shutil import pandas as pd import torch import torchvision from torch import nn from d2l import torch as d2l下载数据集 d2l.DATA_HUB[cifar10_tiny] (d2l.DATA_URL kaggle_cifar10_tiny.zip,2068874e4…

解决证书加密问题:OpenSSL与urllib3的兼容性与优化

在使用客户端证书进行加密通信时&#xff0c;用户可能会遇到一些问题。特别是当客户端证书被加密并需要密码保护时&#xff0c;OpenSSL会要求用户输入密码。这对于包含多个调用的大型会话来说并不方便&#xff0c;因为密码无法在连接的多个调用之间进行缓存和重复使用。用户希望…

【mediasoup】TransportCongestionControlClient 1: 代码走读

TransportCongestionControlClient 基于m77版本的libwebrtc ,但是TransportCongestionControlClient 并不是libwebrt中的,是mediasoup自己封装实现:TransportCongestionControlClient 用于发送端D:\XTRANS\soup\mediasoup-sfu-cpp\worker\src\RTC\TransportCongestionContro…

HarmonyOS开发(四):UIAbility组件

1、UIAbility概述 UIAbility 一种包含用户界面的应用组件用于与用户进行交互系统调度的单元为应用提供窗口在其中绘制界同 注&#xff1a;每一个UIAbility实例&#xff0c;都对应一个最近任务列表中的任务。 一个应用可以有一个UIAbility也可以有多个UIAbility。 如一般的…

BLIP-2:冻结现有视觉模型和大语言模型的预训练模型

Li J, Li D, Savarese S, et al. Blip-2: Bootstrapping language-image pre-training with frozen image encoders and large language models[J]. arXiv preprint arXiv:2301.12597, 2023. BLIP-2&#xff0c;是 BLIP 系列的第二篇&#xff0c;同样出自 Salesforce 公司&…

力扣贪心——跳跃游戏I和II

1 跳跃游戏 利用边界进行判断&#xff0c;核心就是判定边界&#xff0c;边界内所有步数一定是最小的&#xff0c;然后在这个边界里找能到达的最远地方。 1.1 跳跃游戏I class Solution {public boolean canJump(int[] nums) {int len nums.length;int maxDistance 0;int te…

C/C++多级指针与多维数组

使用指针访问数组 指针类型的加减运算可以使指针内保存的首地址移动。 指针类型加n后。首地址向后移动 n * 步长 字节。 指针类型减n后。首地址向前移动 n * 步长 字节。 步长为指针所指向的类型所占空间大小。 例如&#xff1a; int *p (int *)100;p 1&#xff0c;结果为首…

[机缘参悟-119] :反者道之动与阴阳太极

目录 一、阴阳对立、二元对立的规律 1.1 二元对立 1.2 矛盾的对立与统一 二、阴阳互转、阴阳变化、变化无常 》无序变化和有序趋势的规律 三、阴阳合一、佛魔一体、善恶同源 四、看到积极的一面 五、反者道之动 5.1 概述 5.2 "否极泰来" 5.3 “乐极生悲”…

科大讯飞 vue.js 语音听写流式实现 全网首发

组件下载 还是最近的需求&#xff0c;页面表单输入元素过多&#xff0c;需要实现语音识别来由用户通过朗读的方式向表单中填写数据&#xff0c;尽量快的、高效的完成表单数据采集及输入。 国内科大讯飞在语音识别方面的建树还是有目共睹&#xff0c;于是还是选择了科大讯飞的平…

让别人访问电脑本地

查看本地IP地址&#xff1a; 使用ipconfig&#xff08;Windows&#xff09;或ifconfig&#xff08;Linux/macOS&#xff09;命令来查看你的计算机本地网络的IP地址。确保*****是你的本地IP地址。 防火墙设置&#xff1a; 确保你的防火墙允许从外部访问*****。你可能需要在防火…

leetcode:504. 七进制数

一、题目&#xff1a; 链接&#xff1a; 504. 七进制数 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; char* convertToBase7(int num) 二、思路 本题要将十进制数转换为二进制数&#xff0c;只要将十进制num数模7再除7&#xff0c;直到num等于0 每次将模7的结…

React整理总结(五、Redux)

1.Redux核心概念 纯函数 确定的输入&#xff0c;一定会产生确定的输出&#xff1b;函数在执行过程中&#xff0c;不能产生副作用 store 存储数据 action 更改数据 reducer 连接store和action的纯函数 将传入的state和action结合&#xff0c;生成一个新的state dispatc…