资讯动态

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

发布时间:2026/8/13 11:27:08 来源:尧图企业网站定制
2 选1多路选择器设计一位宽2选1多路选择器。选择信号sel为0时输出信号a选择信号sel为1时输出信号b。参考答案// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称top_module// 功能概述二选一多路选择器MUX2_1通过sel选择通路输出a或b// 逻辑规则选择端sel0输出asel1输出b纯组合逻辑实时切换//-----------------------------------------------------------------------------moduletop_module(input a,// 输入通路0信号input b,// 输入通路1信号input sel,// 通路选择控制端0选a、1选boutput out// 多路选择结果输出);// 三元运算符实现二选一sel成立取b反之取aassign outsel?b:a;endmodule输出结果100位位宽 2 选 1 多路选择器搭建一个 100 位宽的二选一多路选择器。sel0 输出选输入asel1输出选输入b。参考答案// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称top_module// 功能概述100位总线型2选1多路选择器sel控制两组宽位总线整体切换输出// 逻辑规则sel0输出总线asel1输出总线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 outsel?b:a;endmodule输出结果9 选 1 多路选择器设计一个16位宽、9选1多路选择器。选择信号sel等于0时选择输入asel等于1时选择输入bsel等于2时选择输入c以此类推。对于未使用的选择情况sel 取值 9 至 15将输出所有位全部置为1。参考答案// synthesis verilog_input_version verilog_2001//-----------------------------------------------------------------------------// 模块名称top_module// 功能概述9路16bit总线9选1多路选择器4位选择端sel寻址通路// 逻辑规则sel0~8依次选通a~i共9组输入总线sel9~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)4d0:outa;4d1:outb;4d2:outc;4d3:outd;4d4:oute;4d5:outf;4d6:outg;4d7:outh;4d8:outi;// 剩余7个未使用寻址值统一兜底输出16位全1default:out{16{1b1}};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 outin[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*43:sel*4]作为out输出// 位宽验算sel取值0~255256组×4bit1024bit刚好匹配输入总线总长//-----------------------------------------------------------------------------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*40];assign out[1]in[sel*41];assign out[2]in[sel*42];assign out[3]in[sel*43];endmodule输出结果

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价