三输入数的大小比较

首先看题:

其次,这里按题目的意思,一个重点内容就是数据比较的时序问题,完成整个过程需要3个clk,不能直接使用纯组合逻辑进行比较,或者直接,a,b比较完得到的数据与c直接比,这会造成时序问题,所以是先ab比,ac比,然后下一个clk,两个比较结果再次比较才得到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
);
    
    reg [7:0] e ;
    reg [7:0] f ;
    reg [7:0] d_reg ;
    assign d = d_reg ;
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            e<=8'b0;
        end
        else begin
            e <=(a<=b)?a:b ;
        end
    end
        
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            f<=8'b0;
        end
        else begin
            f <=(a<=c)?a:c ;
        end
    end
    
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            d_reg<=8'b0;
        end
        else begin
            d_reg <=(e<=f)?e:f ;
        end
    end
    
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值