专栏/HDLBits (64) — 256至1多路复用器

HDLBits (64) — 256至1多路复用器

2022年03月10日 00:00--浏览 · --点赞 · --评论
粉丝:3401文章:240

本题链接:

https://hdlbits.01xz.net/wiki/Mux256to1

创建一个位宽为1的256比1的多路复用器。这256个输入都被打包成一个256位的输入向量。当 sel = 0时,选择 in[0]当 sel = 1时,选择 in[1],以此类推。

预期解决方案长度:大约1行。

题目

module top_module(
    input [255:0] in,
    input [7:0] sel,
    output out );

提示:

  • 对于这么多选项,case 语句可能会未必有用。

  • 向量指针可以是可变的,只要给仿真器计算所选位的宽度是常量。使用向量指针选择向量的位将非常有用。

答案

module top_module(
    input [255:0] in,
    input [7:0] sel,
    output out );
    assign out = in[sel];
endmodule

当位宽大于 1 时,wire 或 reg 即可声明为向量的形式。Verilog 支持可变的向量域选择,可以指定某一位或若干相邻位,作为其他逻辑使用。

Verillog 还支持指定 bit 位后固定位宽的向量域选择访问。

  • [bit+: width] : 从起始 bit 位开始递增,位宽为 width。

  • [bit-: width] : 从起始 bit 位开始递减,位宽为 width。

对信号重新进行组合成新的向量时,需要借助大括号。

参考资料:

2.3 Verilog 数据类型 | 菜鸟教程:

https://www.runoob.com/w3cnote/verilog-data-type.html

投诉或建议