刚开始没看见在sel==0 的时候,输入是有效的,所以这是时候需要缓存一下。题干描述不清楚`timescale 1ns/1nsmodule data_cal(input clk,input rst,input [15:0]d,input [1:0]sel,output  [4:0]out,output  validout);//**code//parameter IDLE = 0;parameter add1 = 1;parameter add2 = 2;parameter add3 = 3;reg [4:0] out;reg validout;reg [15:0] data_lock;//输入是时序逻辑always@(posedge clk or negedge rst) begin    if (!rst) begin    data_lock <= 0;     out <= 5'b0;    validout <= 1'b0;    end     else if(!sel)    data_lock <= d; end// 输出是组合逻辑always @(*) begin           case (sel)            IDLE : begin                out <= 5'b0;                validout <= 1'b0;            end             add1 : begin                 out <= {1'b0,data_lock[3:0]}+{1'b0,data_lock[7:4]};                validout <= 1'b1;            end            add2 : begin                out <= {1'b0,data_lock[3:0]}+{1'b0,data_lock[11:8]};                validout <= 1'b1;            end            add3 : begin                out <= {1'b0,data_lock[3:0]}+{1'b0,data_lock[15:12]};                validout <= 1'b1;            end            default : begin                  out <=5'bx;                validout <= 1'bx;            end                    endcase                    end                //**code//endmodule
点赞 0
评论 0
全部评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务