目录

  • 2-to-1 multiplexer
  • 2-to-1 bus multiplexer
  • 9-to-1 multiplexer
  • 256-to-1 multiplexer
  • 256-to-1 4-bit multiplexer

2-to-1 multiplexer

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

提示:三元运算符(cond?iftrue:iffalse)更易于阅读。

solution:

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

2-to-1 bus multiplexer

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

solution:

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

9-to-1 multiplexer

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

module top_module( input [15:0] a, b, c, d, e, f, g, h, i,input [3:0] sel,output [15:0] out );always @(*) begincase(sel)4'd0:out = a;4'd1:out = b;4'd2:out = c;4'd3:out = d;4'd4:out = e;4'd5:out = f;4'd6:out = g;4'd7:out = h;4'd8:out = i;default:out = {16{1'd1}};endcaseendendmodule

256-to-1 multiplexer

⭐️

创建一个1位宽的256:1多路复用器。 256个输入全部打包到单个256位输入向量中。 sel = 0应该选择in [0],sel = 1选择in [1]中的位,sel = 2选择in [2]中的位,依此类推。

提示:有这么多选项,case语句不是那么有用。向量索引可以是可变的,只要合成器可以确定所选位的宽度是恒定的即可。特别是,使用变量索引从向量中选择一位将起作用。

solution:

module top_module( input [255:0] in,input [7:0] sel,output out );// Select one bit from vector in[]. The bit being selected can be variable.assign out = in[sel];endmodule

256-to-1 4-bit multiplexer

创建一个4位宽的256:1多路复用器。256个4位输入全部打包为单个1024位输入向量。sel = 0应该选择[3:0]中的位,sel = 1选择[7:4]中的位,sel = 2选择[11:8]中的位,依此类推。

提示:有这么多选项,case语句不是那么有用。向量索引可以是可变的,只要合成器可以确定所选位的宽度是恒定的即可。这并不总是很好。比如一个常见的error"… is not a constant"表示无法证明选择宽度是常数。特别是in[ sel4+3 : sel4 ]不起作用。
位切片Bit slicing(自Verilog-2001起为“索引向量部分选择”)具有更紧凑的语法。

module top_module( input [1023:0] in,input [7:0] sel,output [3:0] out );assign out = {in[sel*4+3],in[sel*4+2],in[sel*4+1],in[sel*4]};endmodule

HDLBits-Circuits学习小结(二)解锁多路复用器(multiplexers)相关推荐

  1. JavaSE学习小结二

    JavaSE学习小结二 记录学习----------JavaSE模块三&四 其中大部分是一些工具类,会将常用方法及其功能描述整理成表格方便日后查阅 文章目录 JavaSE学习小结二 一.Obj ...

  2. 安卓系统安全学习小结(二)

    提示: 文章目录 前言 一.安卓系统小结 二.检测工具的了解与学习 1.Monkeyrunner 2.重打包技术 3.检测方法 4.安卓应用攻击类型 总结 前言 随着互联网不断发展,我们每天使用的手机 ...

  3. pthread多线程编程的学习小结

    pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 -- DevStore p ...

  4. clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结(转)

    进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...

  5. wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  6. Python - 输出格式 (学习小结)

    Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 ​关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...

  7. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

  8. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...

  9. RabbitMQ(七):常用方法说明 与 学习小结

    RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 RabbitMQ(三):Exchange交换器--fanout ...

最新文章

  1. 沉浸式小说App获得200万美元投资
  2. 一分钟详解VS中快速生成dll和lib方法
  3. 制作r710 linux系统盘,记一次云主机系统盘扩容及制作私有镜像的操作步骤
  4. 千万级、百万级数据删除优化
  5. HDU 6047 Maximum Sequence
  6. ecm工作原理 usb_“好玩具”来了!往你的USB端口里藏入一个小开发板...
  7. spring + hibernate + mysql 事务不回滚
  8. iframe页面找父页面的元素
  9. 基于JAVA+SSH+MYSQL的社区医院远程挂号系统
  10. php web服务器部署,php – 如何配置apache web服务器以部署laravel 5
  11. [PHP]算法- 二叉树的深度的PHP实现
  12. python爬虫什么意思-Python爬虫是什么意思有啥用 python爬虫原理实例介绍
  13. C代码:清理一行字串前后的无效字符
  14. qq视频转码失败怎么办_视频里提取音频的几种方法
  15. [转贴]风险管理之巴塞尔协议
  16. lettcode算法题目--玛祖游戏
  17. 如何提高你的个人价值
  18. app模式会被第三方平台模式取代吗_那些逐渐被系统功能取代的第三方APP,你知道多少?...
  19. Android Studio真机测试
  20. c语言void要用什么头文件,什么是C语言头文件?

热门文章

  1. 安居客二手房信息爬取(六安)
  2. MySQL数据库操作命令【建议收藏】
  3. Kakaotalk PC端无法登录,错误代码50151
  4. 4保安绑架轮奸女子 海口警方4小时破案
  5. [18调剂]华东交通大学软件学院软件工程、计算机软件与理论硕士点2018年考研调剂信息...
  6. 20230318英语学习
  7. mouse_event()函数控制鼠标操作
  8. 【看图解惑】知网查看期刊类别(核心?CSCD(核心C刊还是拓展版E刊?))
  9. netty粘包拆包之LengthFieldBasedFrameDecoder解码器
  10. 【读书笔记@观点】正确的认识论