有没有大佬可以帮我优化一下这块代码啊
module gen_prod1(
input [7:0] A,
input neg,
input zero,
input one,
input two,
output [10:0] prod1
);
reg [7:0] D;
reg [10:0] prod_pre;
wire [3:0] m;
assign m={{neg},{zero},{one},{two}};
always @ (*) begin
casex(m)
4'b01xx: prod_pre <={{1{1'b1}},{!neg},{9{1'b0}}};
4'b0x1x: prod_pre <= {{1'b1} ,{{!neg}},{1'b0}, A};
4'b0xx1: prod_pre <= {{1'b1} ,{{!neg}}, A, {1'b0}};
4'b1x1x:begin
D[0]=A[0];
D[1]=A[1]^A[0];
D[2]=A[2]^(A[1]||A[0]);
D[3]=A[3]^(A[2]||A[1]||A[0]);
D[4]=A[4]^(A[3]||A[2]||A[1]||A[0]);
D[5]=A[5]^(A[4]||A[3]||A[2]||A[1]||A[0]);
D[6]=A[6]^(A[5]||A[4]||A[3]||A[2]||A[1]||A[0]);
D[7]=A[7]^(A[6]||A[5]||A[4]||A[3]||A[2]||A[1]||A[0]);
prod_pre <= {{1'b1} ,{{!neg}},{1'b1}, D};
end
4'b1xx1:begin
D[0]=1'b0;
D[1]=A[0]^{1'b0};
D[2]=A[1]^A[0];
D[3]=A[2]^(A[1]||A[0]);
D[4]=A[3]^(A[2]||A[1]||A[0]);
input [7:0] A,
input neg,
input zero,
input one,
input two,
output [10:0] prod1
);
reg [7:0] D;
reg [10:0] prod_pre;
wire [3:0] m;
assign m={{neg},{zero},{one},{two}};
always @ (*) begin
casex(m)
4'b01xx: prod_pre <={{1{1'b1}},{!neg},{9{1'b0}}};
4'b0x1x: prod_pre <= {{1'b1} ,{{!neg}},{1'b0}, A};
4'b0xx1: prod_pre <= {{1'b1} ,{{!neg}}, A, {1'b0}};
4'b1x1x:begin
D[0]=A[0];
D[1]=A[1]^A[0];
D[2]=A[2]^(A[1]||A[0]);
D[3]=A[3]^(A[2]||A[1]||A[0]);
D[4]=A[4]^(A[3]||A[2]||A[1]||A[0]);
D[5]=A[5]^(A[4]||A[3]||A[2]||A[1]||A[0]);
D[6]=A[6]^(A[5]||A[4]||A[3]||A[2]||A[1]||A[0]);
D[7]=A[7]^(A[6]||A[5]||A[4]||A[3]||A[2]||A[1]||A[0]);
prod_pre <= {{1'b1} ,{{!neg}},{1'b1}, D};
end
4'b1xx1:begin
D[0]=1'b0;
D[1]=A[0]^{1'b0};
D[2]=A[1]^A[0];
D[3]=A[2]^(A[1]||A[0]);
D[4]=A[3]^(A[2]||A[1]||A[0]);
全部评论
相关推荐


点赞 评论 收藏
分享
点赞 评论 收藏
分享