2
A
回答
2
Verilog没有任何像SV这样的内置数组方法。因此,可以使用for-loop来执行所需的功能。例如:
parameter N = 64;
integer i;
reg [7:0] array [0:N-1]
reg [N+6:0] sum; // enough bits to handle overflow
always @*
begin
sum = {(N+7){1'b0}}; // all zero
for(i = 0; i < N; i=i+1)
sum = sum + array[i];
end
0
我对这个问题的解决方案组合:
//example array
parameter cells = 8;
reg [7:0]array[cells-1:0] = {1,2,3,4,5,1,1,1};
//###############################################
genvar i;
wire [7:0] summation_steps [cells-2 : 0];//container for all sumation steps
generate
assign summation_steps[0] = array[0] + array[1];//for less cost starts witch first sum (not array[0])
for(i=0; i<cells-2; i=i+1) begin
assign summation_steps[i+1] = summation_steps[i] + array[i+2];
end
endgenerate
wire [7:0] result;
assign result = summation_steps[cells-2];
0
在批评送到这里其他的答案,也有一些意见作出。
第一个重要的事情是提供积累的空间。语句,如以下,RTL,不会那样做:
sum = sum + array[i]
因为每个表达式的右手边(RHS)创造了独特的网都被分配回同一称为“总和”的信号,导致在哪个独特的网络实际上是驾驶员(被称为多驾驶员危险)中含糊不清。为了解决这个问题,这个陈述也产生了一个组合式的循环问题,因为总和被联合使用来驱动自己 - 这不太好。什么是好的是,如果不同的东西可以用作负载,并作为循环的每个连续迭代司机....
回到说法虽然,在上述情况下,信号将被驱动到大多数模拟器工具的未知值(因为:它应该选择哪个驱动程序?所以假设它们都不是正确的,或者它们全都是正确的 - 未知的!)。这就是说,如果它能够完全通过编译器(这不太可能,而且至少在Cadence IEV中)。
正确的做法是设置以下内容。假设你是总结字节:
parameter NUM_BYTES = 4;
reg [7:0] array_of_bytes [NUM_BYTES-1:0];
reg [8+$clog2(NUM_BYTES):0] sum [NUM_BYTES-1:1];
always @* begin
for (int i=1; i<NUM_BYTES; i+=1) begin
if (i == 1) begin
sum[i] = array_of_bytes[i] + array_of_bytes[i-1];
end
else begin
sum[i] = sum[i-1] + array_of_bytes[i];
end
end
end
// The accumulated value is indexed at sum[NUM_BYTES-1]
相关问题
- 1. 数组的总和元素
- 2. 数组元素的总和
- 3. 总和数组元素
- 4. 总和多维数组元素的
- 5. 返回数组元素的总和perl
- 6. 数组元素的总和VHDL
- 7. CUDA发现数组元素的总和
- 8. 数组元素的总和java
- 9. 查找数组,等于剩余的元素的总和元素
- 10. 删除数组元素和总剩余的元素
- 11. MASM将数组中元素的总和加起来
- 12. 总和数组键的多维数组中的元素
- 13. perl的数组元素减法
- 14. 减去数组中元素的差异
- 15. 将数组减少为第一个元素和最后一个元素的元组?
- 16. 二维数组中的元素总数
- 17. jQuery数组中的元素总数
- 18. 添加数组的元素(行和列的总和)
- 19. 减去N个元素数组matlab
- 20. MongoDB的总纂$过滤数组元素
- 21. Vb.net总结相同的数组元素
- 22. 元素总数
- 23. XSL 1.0组成元素总和1.0
- 24. PHP:数组>总和所有的数字元素?
- 25. Python - 如何添加和减去数组中的元素
- 26. 比较数组中的元素,找到元素的最大总和
- 27. 的addEventListener到元素和元素的目标数组的数组
- 28. 将R中所有向量元素的相减的总和表示为
- 29. Java如何找到两个不同数组中元素总和的总和?
- 30. JavaScript复杂数组“减少元素” - 基于数组元素构建HTML表格
你可以给一个有问题的向量的例子。 – Morgan