基于QC-LDPC编码的循环移位网络的FPGA实现

一、桶式移位寄存器(barrel shifter) 

        八位桶式移位寄存器的VHDL实现如下,由于每一层结构相似,于是采用生成语句for_generate实现,使用该代码实现的RTL级分析和理论的结构一致,仿真结果也符合预期。 

entity barrel_shift is
  GENERIC(DATA_WIDTH:   INTEGER:=8;
          CTRL_WIDTH:   INTEGER:=3);
  Port (DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        CTRL:       IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0)
        );
end barrel_shift;

architecture Behavioral of barrel_shift is
SIGNAL LAYER_1_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
SIGNAL LAYER_2_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
SIGNAL LAYER_3_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
begin
    LAYER_1:FOR I IN 0 TO 7 GENERATE
        G1:IF I<=3 GENERATE
            LAYER_1_TEMP(I)<=DATA_IN(I)WHEN CTRL(2)='0'ELSE DATA_IN(I+4);
        END GENERATE G1;
        G2:IF I>3 GENERATE                                              
            LAYER_1_TEMP(I)<=DATA_IN(I)WHEN CTRL(2)='0'ELSE DATA_IN(I-4);
        END GENERATE G2;                                                 
    END GENERATE LAYER_1;
    
    LAYER_2:FOR I IN 0 TO 7 GENERATE
        G3:IF I<=5 GENERATE
            LAYER_2_TEMP(I)<=LAYER_1_TEMP(I)WHEN CTRL(1)='0'ELSE LAYER_1_TEMP(I+2);
        END GENERATE G3;
        G4:IF I>5 GENERATE                                              
            LAYER_2_TEMP(I)<=LAYER_1_TEMP(I)WHEN CTRL(1)='0'ELSE LAYER_1_TEMP(I-6);
        END GENERATE G4;                                                 
    END GENERATE LAYER_2;
    
    LAYER_3:FOR I IN 0 TO 7 GENERATE
        G5:IF I<=6 GENERATE
            LAYER_3_TEMP(I)<=LAYER_2_TEMP(I)WHEN CTRL(0)='0'ELSE LAYER_2_TEMP(I+1);
        END GENERATE G5;
        G6:IF I>6 GENERATE                                              
            LAYER_3_TEMP(I)<=LAYER_2_TEMP(I)WHEN CTRL(0)='0'ELSE LAYER_2_TEMP(I-7);
        END GENERATE G6;                               
    END GENERATE LAYER_3;    
    
    DATA_OUT<=LAYER_3_TEMP;
    
end Behavioral;

二、QSN网络

 2.1LSN网络

        该网络的VHDL代码和RTL分析如下 

entity LSN_9x8_network is
  GENERIC(DATA_WIDTH:   INTEGER:=9;
          CTRL_WIDTH:   INTEGER:=4);
  Port (DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        LSN_CTRL:   IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0)
        );
end LSN_9x8_network;

architecture Behavioral of LSN_9x8_network is
SIGNAL LAYER_1_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-9 DOWNTO 0);
SIGNAL LAYER_2_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-5 DOWNTO 0);
SIGNAL LAYER_3_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-3 DOWNTO 0);
SIGNAL LAYER_4_TEMP:    STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
begin
    LAYER_1:FOR I IN 0 TO 0 GENERATE
        G1:IF I=0 GENERATE
            LAYER_1_TEMP(I)<=DATA_IN(I)WHEN LSN_CTRL(3)='0'ELSE DATA_IN(I+8);
        END GENERATE G1;                                       
    END GENERATE LAYER_1;
    
    LAYER_2:FOR I IN 0 TO 4 GENERATE--5
        G2:IF I=0 GENERATE
            LAYER_2_TEMP(I)<=LAYER_1_TEMP(I)WHEN LSN_CTRL(2)='0'ELSE DATA_IN(I+4);
        END GENERATE G2; 
        G3:IF I>0 GENERATE
            LAYER_2_TEMP(I)<=DATA_IN(I)     WHEN LSN_CTRL(2)='0'ELSE DATA_IN(I+4);
        END GENERATE G3;                                               
    END GENERATE LAYER_2;
    
    LAYER_3:FOR I IN 0 TO 6 GENERATE--7
        G4:IF I<=2 GENERATE
            LAYER_3_TEMP(I)<=LAYER_2_TEMP(I)WHEN LSN_CTRL(1)='0'ELSE LAYER_2_TEMP(I+2);
        END GENERATE G4; 
        G5:IF I>2 AND I<=4 GENERATE
            LAYER_3_TEMP(I)<=LAYER_2_TEMP(I)WHEN LSN_CTRL(1)='0'ELSE DATA_IN(I+2);
        END GENERATE G5;
        G6:IF I>4 GENERATE
            LAYER_3_TEMP(I)<=DATA_IN(I)     WHEN LSN_CTRL(0)='0'ELSE DATA_IN(I+2);
        END GENERATE G6;                 
    END GENERATE LAYER_3;    
    
    LAYER_4:FOR I IN 0 TO 7 GENERATE---8
        G7:IF I<=5 GENERATE
            LAYER_4_TEMP(I)<=LAYER_3_TEMP(I)WHEN LSN_CTRL(0)='0'ELSE LAYER_3_TEMP(I+1);
        END GENERATE G7; 
        G8:IF I=6 GENERATE
            LAYER_4_TEMP(I)<=LAYER_3_TEMP(I)WHEN LSN_CTRL(0)='0'ELSE DATA_IN(I+1);
        END GENERATE G8;
        G9:IF I>6 GENERATE
            LAYER_4_TEMP(I)<=DATA_IN(I)     WHEN LSN_CTRL(0)='0'ELSE DATA_IN(I+1);
        END GENERATE G9;                         
    END GENERATE LAYER_4; 
    
    DATA_OUT<=LAYER_4_TEMP(DATA_WIDTH-2 DOWNTO 0);
    
end Behavioral;

 2.2RSN网络 

 9x9的右移网络的VHDL实现和RTL分析如下

entity RSN_9x9_network is
  GENERIC(DATA_WIDTH:   INTEGER:=9;
          CTRL_WIDTH:   INTEGER:=4);
  Port (DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        RSN_CTRL:   IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0)
        );
end RSN_9x9_network;

architecture Behavioral of RSN_9x9_network is
    COMPONENT LSN_9x8_network IS
       GENERIC(DATA_WIDTH:   INTEGER:=9;
               CTRL_WIDTH:   INTEGER:=4);
        Port (
        DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        LSN_CTRL:   IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0)
        );
    END COMPONENT;
begin
   LSN_9X8:LSN_9x8_network
    GENERIC MAP(
    DATA_WIDTH  =>  DATA_WIDTH,
    CTRL_WIDTH  =>  CTRL_WIDTH
    )
    PORT MAP(   
    DATA_IN(0)  =>  DATA_IN(8),
    DATA_IN(1)  =>  DATA_IN(7),
    DATA_IN(2)  =>  DATA_IN(6),
    DATA_IN(3)  =>  DATA_IN(5),
    DATA_IN(4)  =>  DATA_IN(4),
    DATA_IN(5)  =>  DATA_IN(3),
    DATA_IN(6)  =>  DATA_IN(2),
    DATA_IN(7)  =>  DATA_IN(1), 
    DATA_IN(8)  =>  DATA_IN(0),   
    LSN_CTRL    =>  RSN_CTRL,
    DATA_OUT(0) =>  DATA_OUT(8),
    DATA_OUT(1) =>  DATA_OUT(7),
    DATA_OUT(2) =>  DATA_OUT(6),
    DATA_OUT(3) =>  DATA_OUT(5),
    DATA_OUT(4) =>  DATA_OUT(4),
    DATA_OUT(5) =>  DATA_OUT(3),
    DATA_OUT(6) =>  DATA_OUT(2),
    DATA_OUT(7) =>  DATA_OUT(1)
    );              
    DATA_OUT(0) <=  DATA_IN(0);
end Behavioral;

  2.3MN网络

entity MN_9x9_network is
  GENERIC(DATA_WIDTH:   INTEGER:=9);
  Port (LSN_DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
        RSN_DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        M_CTRL:         IN  STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
        DATA_OUT:       OUT STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0)
        );
end MN_9x9_network;

architecture Behavioral of MN_9x9_network is
begin
    G1:FOR I IN 0 TO DATA_WIDTH-2 GENERATE
        DATA_OUT(I)<=RSN_DATA_IN(I) WHEN M_CTRL(I)='0' ELSE LSN_DATA_IN(I);
    END GENERATE G1;
    DATA_OUT(8)<='0' WHEN FALSE ELSE RSN_DATA_IN(8);
end Behavioral;

 2.4控制模块 

 控制模块的VHDL实现和仿真波形图如下

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity CTRL is
  GENERIC(DATA_WIDTH:   INTEGER:=9;
          CTRL_WIDTH:   INTEGER:=4);
  Port (CLK:        IN  STD_LOGIC;
        RST_N:      IN  STD_LOGIC;
        EN:         IN  STD_LOGIC;
        SHIFT_NUM:  IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        M:          OUT STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
        LSN_SHIFT:  OUT STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        RSN_SHIFT:  OUT STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0); 
        VALID:      OUT STD_LOGIC  
        );
end CTRL;

architecture Behavioral of CTRL is

begin
    LSN_SHIFT_GE:PROCESS(CLK,RST_N)
    BEGIN
        IF RST_N='0'THEN
            LSN_SHIFT<=(OTHERS=>'0');
        ELSIF RISING_EDGE(CLK) THEN
            IF EN='1'THEN
                LSN_SHIFT<=SHIFT_NUM;
            END IF;
        END IF;
    END PROCESS;
    
    RSN_SHIFT_GE:PROCESS(CLK,RST_N)
    BEGIN
        IF RST_N='0'THEN
            RSN_SHIFT<=(OTHERS=>'0');
        ELSIF RISING_EDGE(CLK) THEN
            IF EN='1'THEN
                RSN_SHIFT<=9-SHIFT_NUM;
            END IF;
        END IF;
    END PROCESS;
    
    M_GE:PROCESS(CLK,RST_N)
    BEGIN
        IF RST_N='0'THEN
            M<=(OTHERS=>'0');
        ELSIF RISING_EDGE(CLK) THEN
            IF EN='1'THEN
                IF SHIFT_NUM>=9 THEN M(0)<='0';ELSE M(0)<='1';END IF;
                IF SHIFT_NUM>=8 THEN M(1)<='0';ELSE M(1)<='1';END IF;
                IF SHIFT_NUM>=7 THEN M(2)<='0';ELSE M(2)<='1';END IF;
                IF SHIFT_NUM>=6 THEN M(3)<='0';ELSE M(3)<='1';END IF;
                IF SHIFT_NUM>=5 THEN M(4)<='0';ELSE M(4)<='1';END IF;
                IF SHIFT_NUM>=4 THEN M(5)<='0';ELSE M(5)<='1';END IF;
                IF SHIFT_NUM>=3 THEN M(6)<='0';ELSE M(6)<='1';END IF;
                IF SHIFT_NUM>=2 THEN M(7)<='0';ELSE M(7)<='1';END IF;
            END IF;
        END IF;
    END PROCESS;
    
    VALID_GE:PROCESS(CLK,RST_N)
    BEGIN
        IF RST_N='0'THEN                 
            VALID<='0';            
        ELSIF RISING_EDGE(CLK) THEN      
            IF EN='1'THEN
                VALID<='1';       
            ELSE
                VALID<='0';       
            END IF;
        END IF;
    END PROCESS;
end Behavioral;

  2.5顶层

        顶层的作用是将子模块例化,VHDL实现和RTL分析如下

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity QSN_9x9_network is
  GENERIC(DATA_WIDTH:   INTEGER:=9;
          CTRL_WIDTH:   INTEGER:=4);
  Port (CLK:        IN  STD_LOGIC;
        RST_N:      IN  STD_LOGIC;
        EN:         IN  STD_LOGIC;
        SHIFT_NUM:  IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        VALID:      OUT STD_LOGIC
        );
end QSN_9x9_network;

architecture Behavioral of QSN_9x9_network is
    COMPONENT LSN_9x8_network IS
       GENERIC(DATA_WIDTH:   INTEGER:=9;
               CTRL_WIDTH:   INTEGER:=4);
        Port (
        DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        LSN_CTRL:   IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0)
        );
    END COMPONENT;
    
    COMPONENT RSN_9x9_network IS
       GENERIC(DATA_WIDTH:   INTEGER:=9;
               CTRL_WIDTH:   INTEGER:=4);
        Port (
        DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        RSN_CTRL:   IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        DATA_OUT:   OUT STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0)
        );
    END COMPONENT;
    
    COMPONENT MN_9x9_network IS
       GENERIC(DATA_WIDTH:   INTEGER:=9);
        Port (
        LSN_DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
        RSN_DATA_IN:    IN  STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
        M_CTRL:         IN  STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
        DATA_OUT:       OUT STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0)
        );
    END COMPONENT;
    
    COMPONENT CTRL IS
        GENERIC(DATA_WIDTH:   INTEGER:=9;
                CTRL_WIDTH:   INTEGER:=4);
        Port (
        CLK:        IN  STD_LOGIC;
        RST_N:      IN  STD_LOGIC;
        EN:         IN  STD_LOGIC;
        SHIFT_NUM:  IN  STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        M:          OUT STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
        LSN_SHIFT:  OUT STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
        RSN_SHIFT:  OUT STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0); 
        VALID:      OUT STD_LOGIC  
        );
    END COMPONENT;
--CTRL
SIGNAL M_CTRL:      STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
SIGNAL LSN_SHIFT:   STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
SIGNAL RSN_SHIFT:   STD_LOGIC_VECTOR(CTRL_WIDTH-1 DOWNTO 0);
SIGNAL CTRL_EN:     STD_LOGIC;
--LSN
SIGNAL LSN_OUT:     STD_LOGIC_VECTOR(DATA_WIDTH-2 DOWNTO 0);
--RSN
SIGNAL RSN_OUT:     STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
--MN_OUT
SIGNAL OUT_REG:     STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
SIGNAL DATA_OUT_REG:STD_LOGIC_VECTOR(DATA_WIDTH-1 DOWNTO 0);
--VALID_REG
SIGNAL VALID_REG:   STD_LOGIC;
begin
    CTRL_GE:CTRL
    GENERIC MAP(
    DATA_WIDTH =>   DATA_WIDTH,
    CTRL_WIDTH =>   CTRL_WIDTH
    )
    PORT MAP(
    CLK        =>   CLK,
    RST_N      =>   RST_N,
    EN         =>   EN,
    SHIFT_NUM  =>   SHIFT_NUM,
    M          =>   M_CTRL,
    LSN_SHIFT  =>   LSN_SHIFT,
    RSN_SHIFT  =>   RSN_SHIFT,
    VALID      =>   CTRL_EN
    );
    
    LSN:LSN_9x8_network
    GENERIC MAP(
    DATA_WIDTH =>   DATA_WIDTH,
    CTRL_WIDTH =>   CTRL_WIDTH
    )
    PORT MAP(
    DATA_IN    =>   DATA_IN,  
    LSN_CTRL   =>   LSN_SHIFT,
    DATA_OUT   =>   LSN_OUT
    );
    
    RSN:RSN_9x9_network
    GENERIC MAP(
    DATA_WIDTH =>   DATA_WIDTH,
    CTRL_WIDTH =>   CTRL_WIDTH
    )
    PORT MAP(
    DATA_IN    =>   DATA_IN,  
    RSN_CTRL   =>   RSN_SHIFT,
    DATA_OUT   =>   RSN_OUT
    );
    
    MN:MN_9x9_network
    GENERIC MAP(
    DATA_WIDTH =>   DATA_WIDTH
    )
    PORT MAP(  
    LSN_DATA_IN=>   LSN_OUT,
    RSN_DATA_IN=>   RSN_OUT,
    M_CTRL     =>   M_CTRL,
    DATA_OUT   =>   OUT_REG
    );
    
    OUT_GE:PROCESS(CLK,RST_N)
    BEGIN
        IF RST_N='0'THEN
            DATA_OUT_REG<=(OTHERS=>'0');
        ELSIF RISING_EDGE(CLK)THEN
            IF CTRL_EN='1'THEN
                DATA_OUT_REG<=OUT_REG;
            END IF;
        END IF;
    END PROCESS;
    
    DATA_OUT<=DATA_OUT_REG;
    
    VALID_REG_GE:PROCESS(CLK,RST_N)
    BEGIN
        IF RST_N='0'THEN
            VALID_REG<='0';
        ELSIF RISING_EDGE(CLK)THEN
            IF CTRL_EN='1'THEN
                VALID_REG<='1';
            ELSE
                VALID_REG<='0';
            END IF;
        END IF;
    END PROCESS;
    
    VALID<=VALID_REG;

end Behavioral;

        使用时钟CLK和复位信号RST_N控制时序,并加入输入输出使能信号。最后实现的结果如下,可以看到左循环移位1~9的结果均正确。 

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

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

相关文章

【RT-DETR有效改进】反向残差块网络EMO | 一种轻量级的CNN架构(轻量化网络,参数量下降约700W)

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

文件上传之大文件分块上传进度控制处理

在分块上传内容结束以后的事件监听&#xff0c;我们会实现 unlinkSync 删除临时文件操作&#xff0c;那么试想一下&#xff0c;在这个事件监听中&#xff0c;我们是否可以通过totalChunks以及currentChunk获取当前上传的进度情况呢&#xff1f; 后端 upload上传接口&#xff…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-友情链接管理实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

在 React 组件中使用 JSON 数据文件,怎么去读取请求数据呢?

要在 React 组件中使用 JSON 数据&#xff0c;有多种方法。 常用的有以下几种方法&#xff1a; 1、直接将 JSON 数据作为一个变量或常量引入组件中。 import jsonData from ./data.json;function MyComponent() {return (<div><h1>{jsonData.title}</h1>&…

openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板

文章目录 openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板概述笔记工程中需要的openssl的库实现END openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板 概述 openssl3.2 - 测试程序的学习 整了几个test.c, 每开一个新的测试工程, 总要改这改那的. …

Maven入门及其使用

目录 一、Maven入门 1.1 初识Maven 1.2 Maven的作用 1.2.1 依赖管理 1.2.2 统一项目结构 1.2.3 项目构建 1.3 Maven坐标 1.4 Maven仓库 1.4.1 Maven仓库概述 二、Maven的下载与安装 2.1 安装步骤 2.1.1 解压安装&#xff08;建议解压到没有中文、特殊字符的路径下。&#xff09…

【JavaScript】ECMA6Script es6

文章目录 一、 es6的介绍二、 es6的变量和模板字符串2.1 let 与 var2.2 const 与 var2.3 模板字符串 三、 es6的解构表达式四、 es6的箭头函数4.1 声明和特点4.2 实践和应用场景4.3 rest和spread 五、es6的对象创建和拷贝5.1 对象创建的语法糖5.2 对象的深拷贝和浅拷贝 六、es6…

STM32 PWM驱动设计

单片机学习&#xff01; 目录 文章目录 前言 一、PWM驱动配置步骤 二、代码示例及注意事项 2.1 RCC开启时钟 2.2 配置时基单元 2.3 配置输出比较单元 2.4 配置GPIO 2.5 运行控制 三、PWM周期和占空比计算 总结 前言 PWM本质是利用面积等效原理来改变波形的有效值。 一、PWM驱动…

【electron】打包问题处理

目录 项目无法在win7执行场景尝试处理 项目无法在win7执行 场景 使用electron25.0.1、electron-builder24.2.1&#xff0c;打出来的项目在win7系统上跑不起来&#xff0c;报错无法定位程序输入点DiscardVirtualMemoty于动态链接库KERNEL32.dll上。 尝试处理 通过百度发现ele…

编曲学习:和声音程 调式体系 唱名法 调式调性

34届和声音程 调式体系 唱名法 调式调性https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65af994be4b064a8cb1c3a5f?course_idcourse_2XLKtQnQx9GrQHac7OPmHD9tqbv 34届独立音乐人编曲训练营https://app8epdhy0u9502.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/camp_p…

Tomcat 简介安装

目录 1、概念介绍 Tomcat 组件 HTTP 请求过程 Tomcat 目录结构 Tomcat 命令 配置文件说明 2、安装环境 安装JDK 安装Tomcat 创建管理用户 3、搭建虚拟主机 1、概念介绍 端口&#xff1a;8080 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器, 按照 Sun 提供…

DevOps系列文章之 GitLabCI汇总

GitlabCI环境搭建 前提 先安装 docker Docker容器化安装 docker pull gitlab/gitlab-ee:12.4.0-ee.0 创建挂载目录 mkdir -p /srv/gitlab mkdir -p /srv/gitlab/config # 映射到 Glitlab 容器中的配置目录 mkdir -p /srv/gitlab/logs # 映射到 Glitlab 容器中的日志目录 m…

ArXiv| Graph-Toolformer: 基于ChatGPT增强提示以赋予大语言模型图数据推理能力

ArXiv| Graph-Toolformer: 基于ChatGPT增强提示以赋予大语言模型图数据推理能力. 来自加利福利亚大学戴维斯分校计算机科学系的IFM实验室发表在arXiv上的文章:“Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT”。 文章的…

P1045 [NOIP2003 普及组] 麦森数题解

题目 形如的素数称为麦森数&#xff0c;这时P一定也是个素数。但反过来不一定&#xff0c;即如果P是个素数&#xff0c;不一定也是素数。到1998年底&#xff0c;人们已找到了37个麦森数。最大的一个是P3021377&#xff0c;它有909526位。麦森数有许多重要应用&#xff0c;它与…

pcl之滤波器(三)

pcl滤波器 pcl一共是有十二个主要模块&#xff0c;详细了解可以查看官网。https://pcl.readthedocs.io/projects/tutorials/en/latest/#basic-usage 今天学习一下pcl的滤波器模块。 滤波器模块&#xff0c;官网一共是提供了6个例程&#xff0c;今天看第五个、第六个。 从一…

P2246 SAC#1 - Hello World(升级版)

网址如下&#xff1a; P2246 SAC#1 - Hello World&#xff08;升级版&#xff09; - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 刚开始是用递归做的&#xff0c;虽然用了哈希表优化&#xff0c;但是超时&#xff0c;只得了50 后面想到了一个新的算法&#xff0c;时间复杂度…

Java笔记 --- 三、方法引用

三、方法引用 概述 分类 引用静态方法 引用成员方法 本类中注意&#xff0c;静态方法中没有this&#xff0c;需要创建本类的对象 引用构造方法 其他的调用方式 使用类名引用成员方法 引用数组的构造方法

【遥感专题系列】影像信息提取之——基于专家知识的决策树分类

可以将多源数据用于影像分类当中&#xff0c;这就是专家知识的决策树分类器&#xff0c;本专题以ENVI中Decision Tree为例来叙述这一分类器。 本专题包括以下内容&#xff1a; 专家知识分类器概述知识&#xff08;规则&#xff09;定义ENVI中Decision Tree的使用 概述 基于知…

微信小程序(二十)Vant组件库的配置

教程很详细&#xff0c;直接上过程 上一篇 官方文档也有&#xff0c;但是因为版本的更新&#xff0c;官方文档并没有跟着改变&#xff0c;这里我写一份最新版能用的教程 &#xff08;口头禅还是不能少的&#x1f923;&#x1f923;&#x1f923;&#xff09; 灵魂拷问&#xf…

jsp原理与EL,JSTL表达式基础内容整理

2024年了&#xff0c;vue都到了灌篮高手的版本&#xff0c;真的没想到我还会在这个时间整理一篇关于jsp页面操作的文章。技术就是一个不用就忘的东西&#xff0c;既然工作中还有用武之地&#xff0c;那就整理一下以备不时之需。 长话短说&#xff0c;不展开叙述&#xff0c;只记…