题目
目前遇到一个问题可以抽象以下描述:
有一个含有8个元素,每个元素是8bit位宽的数组A,
求数组前1-8个元素的累加和S,
S数组的元素内容如下:
S[0]=A[0];
S[1]=A[0]+A[1];
S[2]=A[0]+A[1]+A[2];
S[3]=A[0]+A[1]+A[2]+A[3];
S[4]=A[0]+A[1]+A[2]+A[3]+A[4];
S[5]=A[0]+A[1]+A[2]+A[3]+A[4]+A[5];
S[6]=A[0]+A[1]+A[2]+A[3]+A[4]+A[5]+A[6];
S[7]=A[0]+A[1]+A[2]+A[3]+A[4]+A[5]+A[6]+A[7];
module addsum (
input clk,
input rst,
input [7:0] A[0:7],//输入为8个单Byte数据
output [10:0]S [0:7]//输出为8个累加和
)
endmodule
目前我能想到的思路:图中是12个元素
请各位大神指点~多谢!
应用
计算UDP校验和
网上大部分都说的不准确:
伪头部
源IP地址 4B
目的IP地址 4B
协议值 {8'h00,8'h11} 2B
UDP报文总长度 2B UDP头部8B+payload总长度
udp头部的长度字段是:UDP头部8B+payload总长度。
256bit位宽的ipv4报文只有两拍,
IPV4/6第一拍是固定的位置和,计算方便。
最后一拍是只要计算高位有效的字节,不要的字节填充0