当前位置:首页 > 新闻资讯 > FPGA之家动态 >

数字IC设计、验证、FPGA笔试必会 - 位拆分与运算

时间:2024-08-10      来源:网络搜集 关于我们 0

继续整理牛客网经典Verilog习题讲解,牛客网里除了最新的Verilog题库还有其它领域的经典笔试、面试题,大家快和我一起刷起来吧(「链接」)。

题目

现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12],

请按照sel选择输出四个数据的相加结果,并输出valid_out信号(在不输出时候拉低)

0: 不输出且只有此时的输入有效

1:输出[3:0]+[7:4]

2:输出[3:0]+[11:8]

3:输出[3:0]+[15:12]

分析:

本题其实就是第一题的扩展版,根据sel信号对输入进行不同的操作并输出。唯一需要注意的是,题目要求sel为‘0’时不输出结果,且仅当时的输入有效。

  这就需要我们在sel为‘0’时,对d采样,并记录。而validout信号在sel非‘0’常为‘1’。 所以整个代码分为三个部分:d的采样逻辑、validout随sel变化的逻辑、out根据sel完成不同操作

题解:

本题比较简单,在代码层面没有需要特别注意的问题,不过新手朋友可能不清楚out信号5-bits的由来,或者说是计算结果的位宽该如何确定

通常来说n bits+n bits = n+1 bits;n bits*n bits = 2n bits;但其实有一个最简单的办法,将等号左边所有变量以最大值计算,就可以知道等号右侧最大需要多少位宽了

注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言