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
相关推荐
viperrrrrrrrrr737 分钟前
大数据学习(105)-Hbase
大数据·学习·hbase
IT _oA43 分钟前
Active Directory 域服务
运维·服务器·网络·windows·笔记
袖清暮雨1 小时前
Python刷题笔记
笔记·python·算法
六bring个六2 小时前
QT上位机笔记
开发语言·笔记·qt
熬夜造bug2 小时前
LeetCode Hot100 刷题笔记(1)—— 哈希、双指针、滑动窗口
笔记·leetcode·hot100
行思理3 小时前
go语言应该如何学习
开发语言·学习·golang
oceanweave4 小时前
【k8s学习之CSI】理解 LVM 存储概念和相关操作
学习·容器·kubernetes
花之亡灵5 小时前
.net6 中实现邮件发送
笔记·c#·.net·代码规范
LuoYaFu5 小时前
文件上传做题记录
笔记
吴梓穆6 小时前
UE5学习笔记 FPS游戏制作43 UI材质
笔记·学习·ue5