verilog学习笔记(1)module实例化2

移位寄存器+多路选择器

我的代码:

复制代码
module top_module ( 
    input clk, 
    input [7:0] d, 
    input [1:0] sel, 
    output [7:0] q 
);
    wire [7:0] w1;
    wire [7:0] w2;
    wire [7:0] w3;
    
    my_dff8 my_dff8_1(
        .clk(clk),
        .d(d),
        .q(w1)
    );
    
    my_dff8 my_dff8_2(
        .clk(clk),
        .d(w1),
        .q(w2)
    );
    
    my_dff8 my_dff8_3(
        .clk(clk),
        .d(w2),
        .q(w3)
    );
    
    always@(d or w1 or w2 or w3 or sel)
        begin
            if(sel == 2'b00 )
                q <= d;
            else if(sel == 2'b01 )
               q <= w1;
            else if(sel == 2'b10 )
               q <= w2;
            else
               q <= w3;
        end

endmodule

答案:

复制代码
module top_module (
	input clk,
	input [7:0] d,
	input [1:0] sel,
	output reg [7:0] q
);

	wire [7:0] o1, o2, o3;		// output of each my_dff8
	
	// Instantiate three my_dff8s
	my_dff8 d1 ( clk, d, o1 );
	my_dff8 d2 ( clk, o1, o2 );
	my_dff8 d3 ( clk, o2, o3 );

	// This is one way to make a 4-to-1 multiplexer
	always @(*)		// Combinational always block
		case(sel)
			2'h0: q = d;
			2'h1: q = o1;
			2'h2: q = o2;
			2'h3: q = o3;
		endcase

endmodule
相关推荐
YuforiaCode4 分钟前
神领物流v2.0-day3-运费微服务笔记(个人记录、含练习答案、仅供参考)
笔记
民乐团扒谱机34 分钟前
实验室安全教育与管理平台学习记录(九)消防安全
学习·安全·实验室·常识·火灾·防护·救护
zhangrelay1 小时前
如何使用AI快速编程实现标注ROS2中sensor_msgs/msg/Image图像色彩webots2025a
人工智能·笔记·opencv·学习·计算机视觉·机器人视觉
m0_598250001 小时前
电源完整性07-如何确定PDN网络中的大电容
笔记·单片机·嵌入式硬件·硬件工程
universe_012 小时前
前端学习css
前端·css·学习
海边夕阳20062 小时前
【每天一个AI小知识】:什么是自监督学习?
人工智能·经验分享·学习
摇滚侠2 小时前
Spring Boot3零基础教程,Reactive-Stream 规范核心接口,笔记103
java·spring boot·笔记
weixin_514221853 小时前
FDTD代码学习-1
学习·算法·lumerical·fdtd
兔兔爱学习兔兔爱学习3 小时前
Spring Al学习9:模型上下文协议(MCP)
java·学习·spring
!!!!!!!!!!!!!!!!.3 小时前
CTF WEB入门 命令执行篇29-49
笔记·安全