通过位运算集成各子模块

在很多场景中会有很多模块供不同业务方调用(比如各AI功能算法),比如有A、B、C、D四个子模块供4个业务方调用,业务方1需要这四个功能即A+B+C+D,业务方2需要前面三个功能即A+B+C,业务方3只需要A一个功能,业务方4只需要B一个功能。如果给每个业务方分别开一个接口,那么势必会增加代码的重复率,所以最好都使用同一个接口。

一、一般实现

使用同一个接口的实现方式可能有人会想到给接口增加一个专门用于区分业务方的传入参数,在接口内部根据该参数走不同的运行逻辑,即类似伪代码如下:

void func_AI(inputDatas,int iFlag){
    if(1==iFlag){// 业务方1调用
        func_A(inputDatas);
        func_B(inputDatas);
        func_C(inputDatas);
        func_D(inputDatas);
    }
    else if(2==iFlag){// 业务方2调用
        func_A(inputDatas);
        func_B(inputDatas);
        func_C(inputDatas);
    }
    else if(3==iFlag){// 业务方3调用
        func_A(inputDatas);
    }
    else if(4==iFlag){// 业务方4调用
        func_B(inputDatas);
    }
}

上面这种实现方式如果场景只有几个子模块,给业务方调用的接口比较少,且代码逻辑不复杂,当然推荐这么做,这种代码可读性是比较好的。但是如果不是这种场景呢?个人推荐的实现方式是通过位运算集成这些子模块。

二、推荐的通过位运算集成

核心思想是给每个子模块定义一个开关,然后各业务方根据自己的需要传入一套开关参数(1表示打开,0表示关闭),告诉需要打开哪些功能。

用位运算实现的伪代码如下:

// 第一步,给每个子模块定义一个开关
#define MODULE_A 0x0001
#define MODULE_B (MODULE_A << 1)
#define MODULE_C (MODULE_A << 2)
#define MODULE_D (MODULE_A << 3)

// 第二步,给每个业务方定一个一套开关参数
typedef enum eFlag{
    PROC_1=0xFFF,// 会跑所有的模块
    PROC_2=(MODULE_A | MODULE_B | MODULE_C),// 业务方2的开关参数
    PROC_3=MODULE_A,
    PROC_4=MODULE_B
}

// 第三步,接口定义
void func_AI(inputDatas,eFlag proc){
    if(MODULE_A & proc){// 是否打开A模块
        func_A(inputDatas);
    }
    if(MODULE_B & proc){// 是否打开B模块
        func_B(inputDatas);
    }
    if(MODULE_C & proc){// 是否打开C模块
        func_C(inputDatas);
    }
    if(MODULE_D & proc){// 是否打开D模块
        func_D(inputDatas);
    }
}
  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Multisim 14软件的调频收音机设计可以分为以下基本模块:调频解调器、放大器、混频器、滤波器和解调器。下面是各个模块的子程序设计。 1. 调频解调器:调频解调器是将调频信号转换为基带信号的模块。首先,使用Multisim中提供的VCO(电压控制振荡器)模块生成调频信号,并将其输入到低通滤波器中进行滤波,以去除高频噪声。然后,使用PLL(锁相环)模块对调频信号进行解调,得到基带信号。 2. 放大器:放大器的作用是增加基带信号的幅度。在Multisim中,可以选择合适的放大器模块,并根据需求设置增益值来放大基带信号。 3. 混频器:混频器将基带信号与本地振荡器的频率进行混频操作,得到中频信号。在Multisim中,可以使用集成的混频器模块,并设置合适的本地振荡器频率和混频运算方式。 4. 滤波器:滤波器用于滤除混频后的中频信号中的杂散频率成分。在Multisim中,可以选择合适的滤波器模块,并根据需求设置滤波器的通带和阻带频率。 5. 解调器:解调器用于将中频信号还原为原始音频信号。在Multisim中,可以使用相应的解调器模块对中频信号进行解调操作。 在设计调频收音机时,需要先确定所需的频率范围、调频信号的频率范围和混频的本地振荡器频率。然后,选择相应的模块并进行连接,设置各个模块的参数和子程序,最后进行仿真和测试以确保设计的准确性和稳定性。 以上是基于Multisim 14的调频收音机设计的一些基本模块和子程序的简要描述,具体的设计和参数设置需要依据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值