数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (一)四选一多路器

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (一)四选一多路器


声明:
博主主页:王_嘻嘻的CSDN博客
未经作者允许,禁止转载
系列专栏:牛客Verilog习题集
推荐一个IC、FPGA新手入门的好网站:快 点 击 进 入 学 习 吧


  前言:应朋友之约,从今天开始一个新的专栏Verilog习题集,将整理牛客网经典Verilog习题讲解,牛客网里除了最新的Verilog题库还有其它领域的经典笔试、面试题,大家快和我一起刷起来吧点 击 跳 转



题目

首先是一道入门题:四选一多路器。


数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (一)四选一多路器_第1张图片

分析:

  首先题目要求完成的一个4输入的多路选择器,从要求的波形可以看出选择信号的对应关系如下:

sel din
2’b00 d3
2’b01 d2
2’b10 d1
2’b11 d0

  所以其本质就是一个case语句形成的并行选择电路,这里需要提醒各位新手,在写任何Verilog代码时,都需要想到其最后对应的电路形式,Verilog其实是算不上代码,而是电路描述。

  有很多朋友在完成这题时,可能还会使用assign或者if else语句,虽然这样完成的电路最后功能也是正确的,但是我们需要明白这样的电路是有优先级的,那么形成的电路其实是3个2选1的MUX串联的,那么其逻辑时延会更大,但是面积会略小于一个4选1的MUX。



题解:

module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
reg [1:0] mux_out;

always @(*)begin
    case(sel[1:0])
        2'b00: mux_out[1:0] <= d3[1:0];
        2'b01: mux_out[1:0] <= d2[1:0];
        2'b10: mux_out[1:0] <= d1[1:0];
        2'b11: mux_out[1:0] <= d0[1:0];
    endcase
end

//*************code***********//
endmodule


你可能感兴趣的:(牛客Verilog习题集,fpga开发,嵌入式硬件)