题解 | #求最小公倍数#

求最小公倍数

https://www.nowcoder.com/practice/ce067d6beee2413c8a26d37ca1a9431f

`timescale 1ns/1ns

module lcm#(

parameter DATA_W = 8)

(

input [DATA_W-1:0] A,

input [DATA_W-1:0] B,

input           vld_in,

input           rst_n,

input           clk,

output  wire    [DATA_W*2-1:0]  lcm_out,

output  wire    [DATA_W-1:0]    mcd_out,

output  reg                 vld_out

);

reg [DATA_W-1:0] C;

reg [DATA_W-1:0] A_reg;

reg [DATA_W-1:0] B_reg;

reg flag;

reg     [DATA_W-1:0]    mcd_out_reg;

reg     [DATA_W*2-1:0]  lcm_out_reg;

always@((487950916)posedge clk or negedge rst_n)begin

    if(!rst_n)begin

        A_reg<=0;

        B_reg<=0;

        flag<=0;

        mcd_out_reg<=0;

    end

    else begin

        if(vld_in==1) begin

            if(A>=B)begin

                flag<=0;

                A_reg<=A;

                B_reg<=B;

            end

            else begin

                A_reg<=B;

                B_reg<=A;

            end

        end

        else if((A_reg-B_reg)>B_reg)begin

            A_reg<=A_reg-B_reg;

            B_reg<=B_reg;

        end

        else if((A_reg-B_reg)<B_reg)begin

            A_reg<=B_reg;

            B_reg<=A_reg-B_reg;

        end

        else if((A_reg-B_reg)==B_reg)begin

            mcd_out_reg<=B_reg;

            flag<=1;

        end

        else

            mcd_out_reg<=mcd_out_reg;

    end

end

assign lcm_out=A*B/mcd_out_reg;

assign mcd_out=mcd_out_reg;

endmodule

全部评论

相关推荐

牛客10001:问就是六个月,全国可飞,给钱就干
点赞 评论 收藏
分享
04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务