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
相关推荐
推送者6 小时前
用宠物照片制作桌宠:从AI拆帧到九点标定的本地化实现笔记
笔记·宠物·用宠物照片制作桌宠
一条破秋裤6 小时前
16_TIM编码器接口测速
笔记·stm32·学习
tju新生代魔迷6 小时前
Verilog HDL 学习笔记(十)| 第10章 时序和延迟
笔记·学习·fpga开发
幼儿园蛋小黄6 小时前
嵌入式学习总结:从入门到实战的完整路径
学习
-To be number.wan6 小时前
编译原理第三章:编译器是怎么“认字“的?——词法分析全解析
学习·编辑器
zyf1044168 小时前
暑期实践日志 Day47:复盘第七章内容,规整对应成果
学习·计算机网络·剪辑·暑期实践·课题任务
传奇开心果编程8 小时前
【Rust入门知识点学与练】第10课:Option 和 Result(错误处理入门)
开发语言·学习·rust
喵的前端路8 小时前
《EDVAC》学习记录(第二部分)
学习
lee_curry8 小时前
AI Agent 工程师完整学习路线(面向生产级项目与面试)
人工智能·学习·ai·面试·agent
小毛驴8508 小时前
前端开发学习路线可以分为几个层次
学习