unsigned char cal_table_high_first(unsigned char value)
{
unsigned char i ;
unsigned char checksum = value ;
for (i=8;i>0;--i)
{
if (check_sum & 0x80)
{
check_sum = (check_sum<<1) ^ 0x31;
}
else
{
check_sum = (check_sum << 1);
}
}
return check_sum;
}
module loop(
input clk,
input rst_n,
input [7:0] value,
output reg [7:0] check_sum
);
wire [7:0] check_sum_nxt = value;
integer i;
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
check_sum <= 'b0;
else begin
check_sum <= check_sum_nxt ;
end
end
always@(*) begin
for(i=8;i>0;i=i-1) begin
if(check_sum_nxt [7])
check_sum_nxt = {check_sum_nxt [6:0],1'b0} ^ 8'h31;
else
check_sum_nxt = {check_sum_nxt [6:0],1'b0};
end
end
endmodule