Verilog 习题笔记_实例化模块&多路复用器

习题来源:https://hdlbits.01xz.net/wiki/Main_Page

 

习题要求: 实例化三个my_dff8模块,然后将它们链接在一起,形成一个长度为3的8位宽移位寄存器,在此基础上实现一个4:1多路复用器,根据触发器的取值来选择要输出的内容。

 

                                     

 

习题分析:

1、需要注意三条8位矢量线,这里可以定义三个wire变量;

2、多路复用器可以用case函数来实现;

3、注意位宽;

 

 1 module top_module ( 
 2     input clk,
 3     input [7:0] d,
 4     output [7:0] q 
 5 );
 6 
 7     wire [7:0] q1,q2,q3;
 8 
 9 /*实例化三个my_dff8模块*/
10     my_dff8 my_dff8_1 ( .q(q1), .clk(clk), .d(d) );
11     my_dff8 my_dff8_2 ( .q(q2), .clk(clk), .d(q1));
12     my_dff8 my_dff8_3 ( .q(q3), .clk(clk), .d(q2));
13 
14 /*实现多路复用寄存器*/
15 
16     always @(*) begin
17     case (sel)
18         1'd0 : q = d  ;
19         1'd1 : q = q1;
20         1'd2 : q = q2;
21         1'd3 : q = q3;
22     endcase
23     end
24 
25 endmodule

 

编译结果:

 

结果分析:  sel为0、1、2、3时,d分别输出对应d、q1、q2、q3的值;

posted @ 2022-04-15 16:31  Dxiaolu  阅读(242)  评论(0)    收藏  举报