使用子模块实现三输入数的大小比较

使用子模块实现三输入数的大小比较

题目描述
在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块。在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层次性,方便后续的修改。
请编写一个子模块,将输入两个8bit位宽的变量data_a,data_b,并输出data_a,data_b之中较小的数。并在主模块中例化,实现输出三个8bit输入信号的最小值的功能。
子模块的信号接口图如下
在这里插入图片描述
主模块的信号接口图吐下
在这里插入图片描述
输入描述
clk:系统时钟
rst_n:异步复位信号,低电平有效
a,b,c:8bit位宽的无符号数
输出描述:
d:8bit位宽的无符号数,表示a,b,c中的最小值

`timescale 1ns/1ns
module main_mod(
	input clk,
	input rst_n,
	input [7:0]a,
	input [7:0]b,
	input [7:0]c,
	
	output [7:0]d
);

    wire[7:0] a_b_min;
    wire[7:0] a_c_min;
 
    savel_mod u1(
        .clk(clk),
        .rst_n(rst_n),
        .a(a),
        .b(b),
    
        .c(a_b_min)
    );
    
    savel_mod u2(
        .clk(clk),
        .rst_n(rst_n),
        .a(a),
        .b(c),
    
        .c(a_c_min)
    );
    
      savel_mod u3(
        .clk(clk),
        .rst_n(rst_n),
        .a(a_b_min),
        .b(a_c_min),
    
        .c(d)
    );

    
endmodule

module savel_mod(
    input clk,
    input rst_n,
    input [7:0] a,
    input [7:0] b,
    
    output[7:0] c
);
    reg[7:0] c_reg;
    always@(posedge clk or negedge rst_n)
        begin
            if(!rst_n)
                c_reg <= 8'b0;
            else if(a > b)
                c_reg <= b;
            else 
                c_reg <= a;
        end
    
    assign c = c_reg;
    
endmodule

知识点
模块例化可以理解成模块调用。对于一个FPGA工程,通常是由一个顶层模块与多个功能子模块组成,为了实现顶层模块与子模块的连接,需要进行模块间的例化(或说是调用)。

wire 连线a;
wire 连线b;
wire 连线out;
and_gata(模块本身的名字) my_andgate(我们例化的二输入与门的名字) (
        .模块的端口 a   (连线a),   
        .模块的端口 b   (连线b),  
        .模块的端口 out   (连线out),                   
    );

注意:端口之间的位数匹配。
“.”表示相连。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻童:CPU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值