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

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

3天内不再提示

在线学习SystemVerilog-Problem 7-9

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-08-17 11:04 次阅读

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

网址如下:

https://hdlbits.01xz.net/

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

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

缩略词索引

  • SV:SystemVerilog

Problem 7-Xnorgate

题目说明

创建一个 XNOR 门的模块。

edf4ef42-1dd4-11ed-ba43-dac502259ad0.png
图片来自 HDLBits

这个题目的核心就是上面的图片,模块和端口已经被定义好了,黑色的框图以及箭头代表模块和端口。我们需要做的工作是完成图中绿色的部分,即完成一个XNOR 门。

模块端口声明

moduletop_module(
inputa,
inputb,
outputout);

题目解析

这个题目重点还是看懂题目的图片,还是复习一下:

ee04d542-1dd4-11ed-ba43-dac502259ad0.png

题目中的绿色部分就是上图的同或门,主要由

这里也可以利用数电逻辑来写代码,同或门的逻辑就是同或门 (XNor Gate) 是异或门 (Nor Gate) 的取反输出。异或门的输入输出可以概括为:(输入)相同(输出)为 0 ,不同为 1

moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);

assignout=~(a^b);

endmodule
ee3a4a88-1dd4-11ed-ba43-dac502259ad0.png

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

ee542656-1dd4-11ed-ba43-dac502259ad0.png

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

这一题就结束了。

Problem 3-Wire4

题目说明

创建一个具有 3 个输入和 4 个输出的模块,其行为类似于下面演示的这些连线:

a->w
b->x
b->y
c->z
ee859c36-1dd4-11ed-ba43-dac502259ad0.png
图片来自 HDLBits

这个题目的核心就是上面的图片,模块和端口已经被定义好了,黑色的框图以及箭头代表模块和端口。我们需要做的工作是完成图中绿色的部分,即完成这条连线

模块端口声明

moduletop_module(
inputa,b,c,
outputw,x,y,z);

题目解析

主要使用assign语句实现上面的连线,难度较低。

moduletop_module(
inputlogica,b,c,
outputlogicw,x,y,z
);

assignw=a;
assignx=b;
assigny=b;
assignz=c;

endmodule
ee9d8288-1dd4-11ed-ba43-dac502259ad0.png

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

eec09c96-1dd4-11ed-ba43-dac502259ad0.png

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

这一题就结束了。

Problem 4-Notgate

题目说明

创建一个实现非门(Notgate)的模块。

eef20614-1dd4-11ed-ba43-dac502259ad0.png
图片来自 HDLBits

从这个题目开始实现几个经典组合电路,非门的的核心就是上面的图片,模块和端口已经被定义好了,黑色的框图以及箭头代表模块和端口。我们需要做的工作是完成图中绿色的部分,实现一个非门。

模块端口声明

moduletop_module(inputin,outputout);

题目解析

主要使用assign语句实现非门,也很简单就一个语句“assign out = ~in;”。这里注意一个逻辑取反和逐位取反的区别。

moduletop_module(inputlogicin,
outputlogicout
);

assignout=~in;

endmodule

上面使用“assign out = ~in ;”和“assign out = !in ;”无区别,因为只有一位变量。

ef033740-1dd4-11ed-ba43-dac502259ad0.png

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

ef1de392-1dd4-11ed-ba43-dac502259ad0.png

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

这一题就结束了。

Problem 5-Andgate

题目说明

创建一个与门(Andgate)模块。。

ef357c00-1dd4-11ed-ba43-dac502259ad0.png
图片来自 HDLBits

与门的的核心就是上面的图片,模块和端口已经被定义好了,黑色的框图以及箭头代表模块和端口。我们需要做的工作是完成图中绿色的部分,实现一个与门。

模块端口声明

moduletop_module(
inputa,
inputb,
outputout);

题目解析

主要使用assign语句实现与门,也很简单就一个语句“assign out = a & b;”。值得注意的是 & 和 && 的区别。

moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);

assignout=a&b;

endmodule
ef50eef4-1dd4-11ed-ba43-dac502259ad0.png

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

ef7795c2-1dd4-11ed-ba43-dac502259ad0.png

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

这一题就结束了。

Problem 6-Norgate

题目说明

创建一个实现 NOR 门的模块。或非门(Norgate)是一个输出反相的或门。用 Verilog 编写的 NOR 门需要两个运算符。

ef8a3b64-1dd4-11ed-ba43-dac502259ad0.png
图片来自 HDLBits

或非门的的核心就是上面的图片,模块和端口已经被定义好了,黑色的框图以及箭头代表模块和端口。我们需要做的工作是完成图中绿色的部分,实现一个或非门。从图中可以看出就是一个或门输出取反,核心就是先实现一个或门,之后再输出端取反即可,可以使用两个assign语句或者一个assign语句实现。

模块端口声明

moduletop_module(
inputa,
inputb,
outputout);

题目解析

这一题的关键是看懂题目给的符号,给大家一个常用的门电路示意图:

ee04d542-1dd4-11ed-ba43-dac502259ad0.png

HDLbits网站上的使用的是国外流行图形符号一栏,从题目给定的符号,对比上一图就是典型的或非门,由或门和非门组合实现。

moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);

assignout=~(a|b);

endmodule

代码中(a|b)实现一个或门,然后取反即可~(a | b)。

efd4c6ac-1dd4-11ed-ba43-dac502259ad0.png

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

eff3c7dc-1dd4-11ed-ba43-dac502259ad0.png

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

错误示范

一开始代码写错了,写成:

moduletop_module(
inputlogica,
inputlogicb,
outputlogicout);

assignout=~a|b;

endmodule

仿真结果如下:

f00af79a-1dd4-11ed-ba43-dac502259ad0.png

造成上面结果的主要原因还是因为Verilog/SV中逻辑操作,运算符等有优先级(和数学里的加减乘除乘除一样),具体优先级如下:

f03eba1c-1dd4-11ed-ba43-dac502259ad0.png

所以上面的代码会优先做~a然后在和b或,加上括号解决。

总结

今天的5道题就结束了,整体难度不大,后面的题目难度会越来越大~

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

代码链接:

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

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

    关注

    7

    文章

    2705

    浏览量

    47463
  • 电路设计
    +关注

    关注

    6673

    文章

    2452

    浏览量

    204323

原文标题:HDLBits: 在线学习 SystemVerilog(二)-Problem 7-9

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

收藏 人收藏

    评论

    相关推荐

    《具身智能机器人系统》第7-9章阅读心得之具身智能机器人与大模型

    研读《具身智能机器人系统》第7-9章,我被书中对大模型与机器人技术融合的深入分析所吸引。第7章详细阐述了ChatGPT for Robotics的核心技术创新:它摒弃了传统的分层控制架构,创造性地
    发表于 12-24 15:03

    KMPHM在线监测平台实现设备高效管理#在线监测#振动监测#振动在线监测

    在线监测
    KM预测性维护专家
    发布于 :2024年12月24日 13:34:35

    KM振动在线监测系统助力设备焕新升级#振动在线监测#振动监测#在线监测

    在线监测
    KM预测性维护专家
    发布于 :2024年10月23日 14:59:48

    如何学习ARM?

    如何学习ARM? 在开始学习 ARM 处理器之前,先对计算机体系结构有一个基本的了解是很重要的。学习计算机的工作原理、CPU、内存等基础概念,可以通过阅读相关的书籍或在线教程来
    发表于 10-11 10:42

    赛盛EMC在线学习平台:揭秘学习宝典&工具秘籍!

    《赛盛在线学习及工具应用》线上发布会SESOnline【经验结晶,智启未来之路】在电磁兼容浩瀚海洋中,我们深耕近二十年,积累了丰富的EMC(电磁兼容)技术经验及培训经验。此刻,这份深厚积累汇成知识
    的头像 发表于 10-11 08:03 731次阅读
    赛盛EMC<b class='flag-5'>在线</b><b class='flag-5'>学习</b>平台:揭秘<b class='flag-5'>学习</b>宝典&amp;amp;工具秘籍!

    KMPHM振动在线监测助力企业轻装上阵#振动在线监测 #在线监测 #振动监测

    在线监测
    KM预测性维护专家
    发布于 :2024年09月29日 15:17:03

    7月问界M9交付18047辆 比亚迪宋PLUS7月热销36947辆

    陆续有车企公布了7月份的销售成绩,我们来看看大家都比较关注的问界和比亚迪。 7月问界M9交付18047辆 统计数据显示,AITO问界7月整体交付量达到41535辆。其中,问界M
    的头像 发表于 08-03 16:25 1774次阅读

    杆塔倾斜在线监测

    在线监测
    jf_96960730
    发布于 :2024年07月02日 14:38:06

    M9航空插座7针的回路电阻高吗

    德索工程师说道M9航空插座7针的回路电阻受多种因素影响,M9航空插座7针的材料选择对回路电阻具有重要影响。金属材料的导电性能直接影响回路电阻的大小。此外,绝缘材料的电阻率也会影响整个回
    的头像 发表于 05-10 15:40 238次阅读
    M<b class='flag-5'>9</b>航空插座<b class='flag-5'>7</b>针的回路电阻高吗

    M9航空接头7针的衰减系数

    德索工程师说道为了准确测量M9航空接头7针的衰减系数,通过扫描不同频率下的信号传输情况,测量出信号在通过M9航空接头7针时的功率或电压损失,从而计算出衰减系数。
    的头像 发表于 05-08 17:42 250次阅读
    M<b class='flag-5'>9</b>航空接头<b class='flag-5'>7</b>针的衰减系数

    7针M9插头会出现漏电现象吗

    德索工程师说道7针M9插头作为一种常见的插头类型,其漏电现象的可能性不容忽视。漏电现象一旦发生,不仅可能损坏用电设备,还可能对人身安全构成威胁。因此,深入了解和探讨7针M9插头漏电现象
    的头像 发表于 04-22 17:39 703次阅读
    <b class='flag-5'>7</b>针M<b class='flag-5'>9</b>插头会出现漏电现象吗

    7孔充电桩和9孔充电桩的区别

    7孔充电桩和9孔充电桩是电动汽车充电接口的两种常见类型,它们在设计、功能和使用场景上存在显著差异。
    的头像 发表于 04-16 15:40 9631次阅读

    7芯M9接头的电导率高吗

    德索工程师说道7芯M9接头的电导率受多种因素的影响,包括材料的固有电导率、接触件的设计、连接器的制造工艺等。不同的金属材料具有不同的电导率,一般来说,铜和银的电导率最高,其次是金和其他金属。7芯M
    的头像 发表于 04-16 15:23 337次阅读
    <b class='flag-5'>7</b>芯M<b class='flag-5'>9</b>接头的电导率高吗

    IEEE 1800-2023 SystemVerilog新版本正式发布了!

    2024年3月初,在美国硅谷举办的DVCon2024上,IEEE-SA和Accellera联合宣布通过IEEE Get Program可以免费获取IEEE 1800-2023 SystemVerilog语言参考手册。
    的头像 发表于 03-20 13:52 1725次阅读

    在Vivado Synthesis中怎么使用SystemVerilog接口连接逻辑呢?

    SystemVerilog 接口的开发旨在让设计中层级之间的连接变得更加轻松容易。 您可以把这类接口看作是多个模块共有的引脚集合。
    的头像 发表于 03-04 15:25 960次阅读
    在Vivado Synthesis中怎么使用<b class='flag-5'>SystemVerilog</b>接口连接逻辑呢?