HDLBits练习汇总-07-组合逻辑设计测试--选择器电路

简介: HDLBits练习汇总-07-组合逻辑设计测试--选择器电路

2选1数据选择器


创建一个 1 位宽的 2 对 1 多路复用器。当sel=0时,选择a。当 sel=1 时,选择 b。

Module Declaration

module top_module( 
    input a, b, sel,
    output out ); 

答案:

module top_module( 
    input a, b, sel,
    output out ); 
    assign out = (sel==0)?a:b;
endmodule

2选1数据选择器(向量)


创建一个 100 位宽的 2 对 1 多路复用器。当sel=0时,选择a。当 sel=1 时,选择 b。

Module Declaration

module top_module( 
    input [99:0] a, b,
    input sel,
    output [99:0] out );

答案:

module top_module( 
    input [99:0] a, b,
    input sel,
    output [99:0] out );
    assign out =(sel == 0)? a:b;
endmodule

9选1数据选择器


创建一个 16 位宽的 9 对 1 多路复用器。sel=0 选择a,sel=1 选择b,等等。对于未使用的情况(sel=9 到15),将所有输出位设置为’1’。

Module Declaration

module top_module( 
    input [15:0] a, b, c, d, e, f, g, h, i,
    input [3:0] sel,
    output [15:0] out );

答案:

module top_module( 
    input [15:0] a, b, c, d, e, f, g, h, i,
    input [3:0] sel,
    output [15:0] out );
    always @(*)begin 
        case(sel)
            0:out = a;
            1:out = b;
            2:out = c;
            3:out = d;
            4:out = e;
            5:out = f;
            6:out = g;
            7:out = h;
            8:out = i;
            default:out = 16'b1111_1111_1111_1111; 
        endcase
    end
endmodule

256选1数据选择器


创建一个 1 位宽、256 比 1 的多路复用器。256 个输入全部打包成一个 256 位的输入向量。sel=0 应该选择in[0], sel=1 选择位in[1], sel=2 选择位in[2]等。

Module Declaration

module top_module( 
    input [255:0] in,
    input [7:0] sel,
    output out );

答案:

module top_module( 
    input [255:0] in,
    input [7:0] sel,
    output out );
    assign out = in[sel];
endmodule

256选1数据选择器(向量)


创建一个4位宽,256对1的多路复用器。256个4位输入全部打包到一个1024位输入向量中。Sel =0应该选择[3:0]中的位,Sel =1选择[7:4]中的位,Sel =2选择[11:8]中的位,等等。

Module Declaration

module top_module( 
    input [1023:0] in,
    input [7:0] sel,
    output [3:0] out );

答案:

module top_module( 
    input [1023:0] in,
    input [7:0] sel,
    output [3:0] out );
    assign out = in[sel*4+3 -:4];
endmodule
目录
相关文章
|
4月前
|
存储 缓存 网络协议
dpdk课程学习之练习笔记二(arp, udp协议api测试)
dpdk课程学习之练习笔记二(arp, udp协议api测试)
146 0
|
SQL 安全 网络安全
交易所开发测试版丨交易所系统开发规则玩法/架构设计/项目步骤/方案逻辑/案例解析/源码部署
The development process of the exchange system involves multiple steps and links. The following is the detailed process and steps for the development of the exchange system:
|
27天前
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之复杂的业务逻辑设计有效的单元测试如何解决
SpringBoot单元测试快速写法问题之复杂的业务逻辑设计有效的单元测试如何解决
|
2月前
|
测试技术
详解单元测试问题之@InjectMocks注解的执行逻辑如何解决
详解单元测试问题之@InjectMocks注解的执行逻辑如何解决
30 1
|
2月前
|
测试技术 UED
软件测试的科学与艺术:从数据导向到逻辑严密的实践
本文旨在探讨软件测试领域中数据导向和逻辑严密性的重要性,并分析如何通过科学严谨的方法提升测试效率和质量。文章首先概述了软件测试的基本概念和挑战,随后深入讨论了数据在测试设计和结果分析中的关键作用,以及如何利用逻辑推理来构建有效的测试案例和识别潜在缺陷。最后,本文提出了一系列实践建议,旨在帮助测试人员更好地整合数据驱动和逻辑推理方法,以实现软件测试的最优化。
26 0
|
4月前
|
缓存 监控 网络协议
dpdk课程学习之练习笔记五(kni理解及测试)
dpdk课程学习之练习笔记五(kni理解及测试)
216 0
|
4月前
|
存储
存地址实现组包逻辑的一个测试代码。
存地址实现组包逻辑的一个测试代码。
35 0
|
测试技术 编译器
软件测试用例经典方法 | 逻辑覆盖测试法及案例
逻辑覆盖测试法是常用的一类白盒测试方法,其以程序内部逻辑结构为基础,通过对程序逻辑结构的遍历来实现程序测试的覆盖。逻辑覆盖测试法要求测试人员对程序的逻辑结构有清晰的了解。 逻辑覆盖测试法是一系列测试过程的总称,是使测试过程逐渐进行越来越完整的通路测试。从覆盖源程序语句的详尽程度,可以将其分为语句覆盖、判定覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖等。接下来将通过下面程序的逻辑覆盖测试用例一一介绍这些覆盖准则,该程序的流程图如图4-1所示,其中,a、b、c、d、e是控制流上的若干程序点。
386 0
软件测试用例经典方法 | 逻辑覆盖测试法及案例
|
11月前
|
运维 测试技术 区块链
链动2+1模式系统开发指南流程丨成熟案例丨功能设计丨测试部署丨方案项目丨逻辑需求丨源码出售
链动2+1模式系统开发方案是指一个较为复杂的系统开发模式,其中包含两个公链和一个私链的组合。
|
区块链
数字货币永续合约系统开发|测试版|逻辑规则|案例详情
永续合约采用了期货合约的特点,尤其是无需交割实际商品。同时,模仿了现货市场的行为,以缩小期货价格与标记价格之间的差距。与传统的期货合约相比,这是一个很大的进步。