news 2026/8/13 11:27:04

3.2 HDLBits —— 组合逻辑电路之多路选择器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.2 HDLBits —— 组合逻辑电路之多路选择器

2 选1多路选择器

设计一位宽2选1多路选择器。选择信号sel为0时,输出信号a;选择信号sel为1时,输出信号b。

参考答案

// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称:top_module// 功能概述:二选一多路选择器(MUX2_1),通过sel选择通路输出a或b// 逻辑规则:选择端sel=0输出a;sel=1输出b,纯组合逻辑实时切换//-----------------------------------------------------------------------------moduletop_module(input a,// 输入通路0信号input b,// 输入通路1信号input sel,// 通路选择控制端:0选a、1选boutput out// 多路选择结果输出);// 三元运算符实现二选一:sel成立取b,反之取aassign out=sel?b:a;endmodule

输出结果

100位位宽 2 选 1 多路选择器

搭建一个 100 位宽的二选一多路选择器。sel=0 输出选输入a,sel=1输出选输入b。

参考答案

// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称:top_module// 功能概述:100位总线型2选1多路选择器,sel控制两组宽位总线整体切换输出// 逻辑规则:sel=0输出总线a;sel=1输出总线b,整位宽同步选择,纯组合逻辑实时响应//-----------------------------------------------------------------------------moduletop_module(input[99:0]a,// 第1路100位并行输入总线input[99:0]b,// 第2路100位并行输入总线input sel,// 通路选择控制端:0选a总线、1选b总线output[99:0]out// 选中的100位总线输出);// 条件运算符批量选通整条总线,所有比特同步切换通路assign out=sel?b:a;endmodule

输出结果

9 选 1 多路选择器

设计一个16位宽、9选1多路选择器。选择信号sel等于0时选择输入a,sel等于1时选择输入b,sel等于2时选择输入c,以此类推。对于未使用的选择情况(sel 取值 9 至 15),将输出所有位全部置为1。

参考答案

// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称:top_module// 功能概述:9路16bit总线9选1多路选择器,4位选择端sel寻址通路// 逻辑规则:sel=0~8依次选通a~i共9组输入总线;sel=9~15默认输出16bit全高电平// 设计特性:组合逻辑case分支实现,所有输入位宽统一16位,共用一组选择信号//-----------------------------------------------------------------------------moduletop_module(input[15:0]a,b,c,d,e,f,g,h,i,// 9路待选16位并行输入总线input[3:0]sel,// 4位选择控制端,寻址选中通路output reg[15:0]out// 16位选择结果输出,reg型适配always赋值);// 组合逻辑case分支多路选通,*敏感列表覆盖所有输入变化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;// 剩余7个未使用寻址值统一兜底输出16位全1default:out={16{1'b1}};endcase end endmodule

输出结果

256 选 1 多路选择器

设计一个1位宽、256选1的数据选择器。256路输入全部整合为一个256位输入向量。选择信号sel等于0时选取输入向量第0位in[0],sel等于1时选取输入向量第1位in[1],sel等于2时选取输入向量第2位in[2],以此类推。

参考答案

// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称:top_module// 功能概述:256选1单比特多路选择器,8位选择端sel寻址256bit向量指定位输出// 逻辑规则:sel取值0~255作为动态索引,直接读取in对应下标比特输出,纯组合逻辑//-----------------------------------------------------------------------------moduletop_module(input[255:0]in,// 256路单比特整合的并行输入总线,位序in[255]高位~in[0]低位input[7:0]sel,// 8位选择控制端,寻址范围0~255,完整覆盖全部输入下标output out// 单比特输出,输出sel索引选中的总线比特);// 动态下标寻址:sel直接作为索引,提取in对应位置的单路信号输出assign out=in[sel];endmodule

输出结果

区间切片遇到信号做索引时,可以转换为:把要截取的连续 W 位,拆成 W 个单独单 bit 变量索引,分别赋值给输出向量每一位

4 位位宽 256 选 1 多路选择器

设计一个4位位宽、256选1的数据选择器。256组4位输入全部整合在一个1024位的输入向量中。选择信号sel为0时选取输入向量的第0至3位,sel为1时选取第4至7位,sel为2时选取第8至11位,以此类推。

参考答案

// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称:top_module// 功能概述:分段式4位宽多路选择器,1024bit输入按连续4bit分组,sel选中一组整体输出// 逻辑规则:sel为组编号,每组固定4比特偏移0~3,读取in[sel*4+3:sel*4]作为out输出// 位宽验算:sel取值0~255,256组×4bit=1024bit,刚好匹配输入总线总长//-----------------------------------------------------------------------------moduletop_module(input[1023:0]in,// 1024位超长输入总线,按每4位划分为独立数据组input[7:0]sel,// 8位组选择索引,范围0~255,选中对应4bit分组output[3:0]out// 4bit分组并行输出端口);// 按组内固定偏移逐位索引:同一sel对应连续4个下标,拼接成完整4bit输出assign out[0]=in[sel*4+0];assign out[1]=in[sel*4+1];assign out[2]=in[sel*4+2];assign out[3]=in[sel*4+3];endmodule

输出结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 11:24:42

个人散户选国内量化工具:代码、盯盘时间与账户权限三道分流

国内个人散户挑量化工具,可以先回答三道题:愿不愿意写代码、每天能花多少时间复核、当前是否真的需要账户级程序化。牛股王股票这类面向普通投资者的股票量化辅助软件适合低门槛规则、回测、智能盯盘和风控复盘;聚宽适合Python学习与研究&…

作者头像 李华
网站建设 2026/8/13 11:24:03

KMS_VL_ALL_AIO怎么用?Windows和Office智能激活脚本完整上手指南

KMS_VL_ALL_AIO怎么用?Windows和Office智能激活脚本完整上手指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 本文要介绍的 KMS_VL_ALL_AIO,是一款把 Windows 激活 与…

作者头像 李华
网站建设 2026/8/13 11:23:26

5步掌握Ryzen SDT:免费开源AMD处理器硬件调试工具完整指南

5步掌握Ryzen SDT:免费开源AMD处理器硬件调试工具完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…

作者头像 李华
网站建设 2026/8/13 11:23:05

滴滴Java基础专项面经:HashMap红黑树、ConcurrentHashMap、ThreadLocal、WeakReference

上篇聊完架构师技术决策,这篇进入滴滴Java基础专项。Java基础是Android面试的必考内容——HashMap底层实现(红黑树转换)、ConcurrentHashMap并发安全、ThreadLocal线程隔离、WeakReference内存管理。 今天8道题覆盖滴滴Java基础面试核心考点。 Q1:HashMap什么时候链表转红…

作者头像 李华
网站建设 2026/8/13 11:23:04

滴滴网络编程专项面经:TCP三次握手、HTTPS加密流程、DNS解析优化、网络状态监听

上篇聊完Java基础,这篇进入滴滴网络编程专项。滴滴出行高度依赖网络——叫车请求、实时定位上报、行程同步。网络编程面试考TCP原理、HTTPS加密、DNS优化、网络状态监听。 今天8道题覆盖滴滴网络编程面试核心考点。 Q1:TCP三次握手的过程和原因? 过程:客户端发送SYN(se…

作者头像 李华