0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HDLBits: 在线学习SystemVerilog-Problem

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-10-20 09:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

HDLBits 是一组小型电路设计习题集,使用 Verilog/SystemVerilog 硬件描述语言 (HDL) 练习数字硬件设计~

网址如下:

https://hdlbits.01xz.net/

关于HDLBits的Verilog实现可以查看下面专栏:

https://www.zhihu.com/column/c_1131528588117385216

缩略词索引

  • SV:SystemVerilog

从今天开始新的一章-Circuits,包括基本逻辑电路、时序电路、组合电路等。

今天更新整个多路选择器一小节题目,多路选择器也是组合电路的基本电路。

Problem 60-Mux2to1

题目说明

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

模块端口声明

moduletop_module(
inputa,b,sel,
outputout);

题目解析

这个题目没什么难度,看下面参考代码即可:

moduletop_module(
inputlogica,b,sel,
outputlogicout);

assignout=sel?b:a;


endmodule

f837d93a-5013-11ed-a3b6-dac502259ad0.png

点击Submit,等待一会就能看到下图结果:

f84fbac8-5013-11ed-a3b6-dac502259ad0.png

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 61-Mux2to1v

题目说明

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

模块端口声明

moduletop_module(
input[99:0]a,b,
inputsel,
output[99:0]out);

题目解析

这道题难度不大核心代码只有一行。

简单解答

moduletop_module(
inputlogic[99:0]a,b,
inputlogicsel,
outputlogic[99:0]out);


assignout=sel?b:a;

endmodule
f887119e-5013-11ed-a3b6-dac502259ad0.png

点击Submit,等待一会就能看到下图结果:

f8af938a-5013-11ed-a3b6-dac502259ad0.png

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 62-Mux9to1v

题目说明

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

模块端口声明

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

题目解析

这种多路选择,用条件运算显然不合适,所以我们选择使用case。

moduletop_module(
inputlogic[15:0]a,b,c,d,e,f,g,h,i,
inputlogic[3:0]sel,
outputlogic[15:0]out);

always_combbegin
case(sel)
4'd0:begin
out=a;
end
4'd1:begin
out=b;
end
4'd2:begin
out=c;
end
4'd3:begin
out=d;
end
4'd4:begin
out=e;
end
4'd5:begin
out=f;
end
4'd6:begin
out=g;
end
4'd7:begin
out=h;
end
4'd8:begin
out=i;
end
default:begin
out=16'hffff;
end
endcase
end

endmodule

f8ddef00-5013-11ed-a3b6-dac502259ad0.png

点击Submit,等待一会就能看到下图结果:

f8ee8d88-5013-11ed-a3b6-dac502259ad0.png

注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。

这一题就结束了。

Problem 63-Mux256to1

题目说明

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

模块端口声明

moduletop_module(
input[255:0]in,
input[7:0]sel,
outputout);

题目解析

题目输入是一个向量,我们在设计的时候不可能按照case或者三元运算去做设计(工作量巨大),所以我们需要观察这个题目的特点,输入是256位宽,是不是2^8次方?

根据题目提示:选择运算符的 index 可以为变量,只要变量的位宽和向量的长度匹配即可。

So?

moduletop_module(
inputlogic[255:0]in,
inputlogic[7:0]sel,
outputlogicout);
assignout=in[sel];
endmodule
f9229506-5013-11ed-a3b6-dac502259ad0.png

点击Submit,等待一会就能看到下图结果:

f93b6ea0-5013-11ed-a3b6-dac502259ad0.png

注意图中无波形。

这一题就结束了。

Problem 64-Mux256to1v

题目说明

本题中需要实现一个 256 选 1 选择器,sel 信号作为选择信号,当 sel = 0 时选择 in[3:0],sel = 1 时选择 in[7:4],以此类推。同上一题的区别在于,位宽从 1 位变到了 4 位。

模块端口声明

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

题目解析

将上一题答案稍加改造即可,选择的位跨4位并且+4。

moduletop_module(
inputlogic[1023:0]in,
inputlogic[7:0]sel,
outputlogic[3:0]out);
assignout=in[sel*4+:4];
endmodule
f945828c-5013-11ed-a3b6-dac502259ad0.png

点击Submit,等待一会就能看到下图结果:

f95fab4e-5013-11ed-a3b6-dac502259ad0.png

注意图中无波形。

这一题就结束了。

总结

今天的几道题就结束了,整体比较简单,没有复杂的代码,没有复杂的设计思路。

最后我这边做题的代码也是个人理解使用,有错误欢迎大家批评指正,祝大家学习愉快~

代码链接:

https://github.com/suisuisi/SystemVerilog/tree/main/SystemVerilogHDLBits


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 逻辑电路
    +关注

    关注

    13

    文章

    503

    浏览量

    44239
  • Verilog
    +关注

    关注

    30

    文章

    1374

    浏览量

    114709
  • 选择器
    +关注

    关注

    0

    文章

    111

    浏览量

    15155

原文标题:HDLBits: 在线学习 SystemVerilog(十一)-Problem 60-64

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    KM在线监测方案落地苏州 实现风机健康管理

    在线监测
    KM预测性维护专家
    发布于 :2026年04月09日 15:09:28

    KM在线监测厂家闪耀2026国际TnPM大会#在线监测#振动监测

    在线监测
    KM预测性维护专家
    发布于 :2026年04月03日 14:18:13

    KM在线监测方案实现智能运维

    在线监测
    KM预测性维护专家
    发布于 :2026年04月01日 10:55:20

    KM在线监测实现设备高效管理#在线监测

    在线监测
    KM预测性维护专家
    发布于 :2026年02月27日 14:24:25

    KM工业运维在线监测源头厂家#振动监测

    在线监测
    KM预测性维护专家
    发布于 :2026年02月03日 16:15:17

    KM设备在线监测方案 灵活部署 减少80%维修成本#在线监测

    在线监测
    KM预测性维护专家
    发布于 :2026年01月29日 14:49:16

    激光雪深监测站—实时在线监测积雪厚度

    在线监测
    pingao141378
    发布于 :2025年11月29日 11:55:09

    KM在线监测方案保障水泵安全生产#在线监测

    在线监测
    KM预测性维护专家
    发布于 :2025年11月28日 09:18:13

    破解平压平模切机监测难题!KMPHM在线监测方案大揭秘 #在线监测

    在线监测
    KM预测性维护专家
    发布于 :2025年09月16日 16:26:25

    KM告诉你 人工监测VS在线监测 谁才是效率王者?#在线监测

    在线监测
    KM预测性维护专家
    发布于 :2025年08月15日 10:06:36

    KM在线监测标杆计划招募中#在线监测

    在线监测
    KM预测性维护专家
    发布于 :2025年07月25日 13:41:08

    KM告诉你什么是在线监测?#

    在线监测
    KM预测性维护专家
    发布于 :2025年06月19日 14:07:22

    KMPHM在线监测系统 让设备故障无处遁形#在线监测#振动在线监测

    在线监测
    KM预测性维护专家
    发布于 :2025年05月22日 16:30:08

    #谐波在线监测装置操作界面

    在线监测
    aozhuogeng
    发布于 :2025年05月01日 09:23:46

    #谐波在线监测装置核心作用

    在线监测
    aozhuogeng
    发布于 :2025年04月22日 09:06:09